chatgram-widget 1.0.0 → 1.0.2
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 +38 -22
- package/dist/chatgram-widget.cjs.js +1 -1
- package/dist/chatgram-widget.cjs.js.map +1 -1
- package/dist/chatgram-widget.esm.js +1 -1
- package/dist/chatgram-widget.esm.js.map +1 -1
- package/dist/chatgram-widget.umd.js +1 -1
- package/dist/chatgram-widget.umd.js.map +1 -1
- package/dist/types/core/types.d.ts +3 -9
- package/dist/types/index.d.ts +1 -3
- package/package.json +2 -8
package/README.md
CHANGED
|
@@ -26,6 +26,12 @@ npm install chatgram-widget
|
|
|
26
26
|
|
|
27
27
|
### CDN
|
|
28
28
|
|
|
29
|
+
```html
|
|
30
|
+
<script src="https://cdn.jsdelivr.net/npm/chatgram-widget"></script>
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
or
|
|
34
|
+
|
|
29
35
|
```html
|
|
30
36
|
<script src="https://unpkg.com/chatgram-widget"></script>
|
|
31
37
|
```
|
|
@@ -34,12 +40,17 @@ npm install chatgram-widget
|
|
|
34
40
|
|
|
35
41
|
## Quick Start
|
|
36
42
|
|
|
37
|
-
### Vanilla JS
|
|
43
|
+
### Vanilla JS (CDN)
|
|
38
44
|
|
|
39
45
|
```html
|
|
40
|
-
<script src="https://
|
|
46
|
+
<script src="https://cdn.jsdelivr.net/npm/chatgram-widget"></script>
|
|
41
47
|
<script>
|
|
42
|
-
ChatgramWidget.init({
|
|
48
|
+
ChatgramWidget.init({
|
|
49
|
+
theme: {
|
|
50
|
+
primaryColor: '#EE6055',
|
|
51
|
+
secondaryColor: '#D94F44',
|
|
52
|
+
},
|
|
53
|
+
});
|
|
43
54
|
</script>
|
|
44
55
|
```
|
|
45
56
|
|
|
@@ -48,19 +59,30 @@ npm install chatgram-widget
|
|
|
48
59
|
```js
|
|
49
60
|
import { init, open } from 'chatgram-widget';
|
|
50
61
|
|
|
51
|
-
init({
|
|
62
|
+
init({
|
|
63
|
+
theme: {
|
|
64
|
+
primaryColor: '#EE6055',
|
|
65
|
+
secondaryColor: '#D94F44',
|
|
66
|
+
},
|
|
67
|
+
});
|
|
68
|
+
|
|
52
69
|
document.querySelector('#contact-btn').addEventListener('click', open);
|
|
53
70
|
```
|
|
54
71
|
|
|
55
72
|
### React
|
|
56
73
|
|
|
57
|
-
```
|
|
74
|
+
```jsx
|
|
58
75
|
import { useEffect } from 'react';
|
|
59
76
|
import { init, open, destroy } from 'chatgram-widget';
|
|
60
77
|
|
|
61
78
|
function App() {
|
|
62
79
|
useEffect(() => {
|
|
63
|
-
init({
|
|
80
|
+
init({
|
|
81
|
+
theme: {
|
|
82
|
+
primaryColor: '#2563EB',
|
|
83
|
+
secondaryColor: '#1D4ED8',
|
|
84
|
+
},
|
|
85
|
+
});
|
|
64
86
|
return () => destroy();
|
|
65
87
|
}, []);
|
|
66
88
|
|
|
@@ -75,7 +97,14 @@ function App() {
|
|
|
75
97
|
import { onMounted, onUnmounted } from 'vue';
|
|
76
98
|
import { init, open, destroy } from 'chatgram-widget';
|
|
77
99
|
|
|
78
|
-
onMounted(() =>
|
|
100
|
+
onMounted(() => {
|
|
101
|
+
init({
|
|
102
|
+
theme: {
|
|
103
|
+
primaryColor: '#EE6055',
|
|
104
|
+
secondaryColor: '#D94F44',
|
|
105
|
+
},
|
|
106
|
+
});
|
|
107
|
+
});
|
|
79
108
|
onUnmounted(() => destroy());
|
|
80
109
|
</script>
|
|
81
110
|
|
|
@@ -90,7 +119,7 @@ onUnmounted(() => destroy());
|
|
|
90
119
|
|
|
91
120
|
| Method | Description |
|
|
92
121
|
|--------|-------------|
|
|
93
|
-
| `init(config)` | Initialize the widget.
|
|
122
|
+
| `init(config)` | Initialize the widget. |
|
|
94
123
|
| `open()` | Open the modal |
|
|
95
124
|
| `close()` | Close the modal |
|
|
96
125
|
| `destroy()` | Remove widget from DOM entirely |
|
|
@@ -108,10 +137,6 @@ onUnmounted(() => destroy());
|
|
|
108
137
|
|
|
109
138
|
```ts
|
|
110
139
|
init({
|
|
111
|
-
// ── Required ──────────────────────────────────
|
|
112
|
-
apiKey: 'your-api-key',
|
|
113
|
-
|
|
114
|
-
// ── Optional ──────────────────────────────────
|
|
115
140
|
domain: 'mysite.com', // Default: auto-detected
|
|
116
141
|
apiBaseUrl: 'https://custom-api.com', // Default: chatgram-server.brandid.app
|
|
117
142
|
|
|
@@ -145,13 +170,10 @@ init({
|
|
|
145
170
|
},
|
|
146
171
|
|
|
147
172
|
// Form behavior
|
|
148
|
-
categories: ['feedback', 'bug', 'feature', 'support'],
|
|
149
|
-
defaultCategory: 'support',
|
|
150
173
|
maxMessageLength: 5000,
|
|
151
174
|
showTriggerButton: true,
|
|
152
175
|
triggerPosition: 'bottom-right',
|
|
153
176
|
showNameField: true,
|
|
154
|
-
showCategories: true,
|
|
155
177
|
zIndex: 999999,
|
|
156
178
|
closeOnOverlayClick: true,
|
|
157
179
|
closeOnEscape: true,
|
|
@@ -252,11 +274,6 @@ chatgram-widget/
|
|
|
252
274
|
│ │ ├── widget-css.ts # CSS-in-JS for Shadow DOM injection
|
|
253
275
|
│ │ └── widget.css # External CSS entry point
|
|
254
276
|
│ └── index.ts # Public API (init/open/close/destroy/on/off)
|
|
255
|
-
├── tests/ # Vitest test suite
|
|
256
|
-
├── examples/
|
|
257
|
-
│ ├── vanilla/ # Script tag example
|
|
258
|
-
│ ├── react/ # React hook + component
|
|
259
|
-
│ └── vue/ # Vue 3 Composition API
|
|
260
277
|
├── dist/ # Build output
|
|
261
278
|
│ ├── chatgram-widget.esm.js
|
|
262
279
|
│ ├── chatgram-widget.cjs.js
|
|
@@ -265,8 +282,7 @@ chatgram-widget/
|
|
|
265
282
|
│ └── types/
|
|
266
283
|
├── package.json
|
|
267
284
|
├── tsconfig.json
|
|
268
|
-
|
|
269
|
-
└── vitest.config.ts
|
|
285
|
+
└── rollup.config.mjs
|
|
270
286
|
```
|
|
271
287
|
|
|
272
288
|
---
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});class t extends Error{constructor(t,e,n){super(t),this.name="ChatgramError",this.code=e,this.statusCode=n}}const e={primaryColor:"#EE6055",secondaryColor:"#D94F44",backgroundColor:"#FFFFFF",headerBackgroundColor:"#2C3345",headerTextColor:"#FFFFFF",textColor:"#6B7280",inputBackgroundColor:"#1E2535",inputTextColor:"#FFFFFF",inputPlaceholderColor:"#9CA3AF",borderRadius:"8px",modalBorderRadius:"16px",fontFamily:"-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Helvetica Neue', sans-serif",boxShadow:"0 25px 60px rgba(0, 0, 0, 0.3)"},n={title:"Contact Support",subtitle:"We're here to help you succeed",categoryLabel:"What can we help with?",emailLabel:"Your Email",emailPlaceholder:"email@example.com",nameLabel:"Your Name",namePlaceholder:"John Doe",subjectLabel:"Subject",subjectPlaceholder:"Brief subject of your request",messageLabel:"Message",messagePlaceholder:"Tell us what you think...",submitButtonText:"Submit",submittingText:"Sending...",successTitle:"Message Sent!",successMessage:"We've received your message and will get back to you as soon as possible.",successButtonText:"Close",errorTitle:"Oops!",errorMessage:"Something went wrong. Please try again.",errorButtonText:"Try Again",requiredFieldError:"This field is required",invalidEmailError:"Please enter a valid email address",messageTooLongError:"Message exceeds the maximum length",networkError:"Network error. Please check your internet connection.",timeoutError:"Request timed out. Please try again.",rateLimitError:"Too many submissions. Please wait a moment.",categories:{feedback:"Feedback",bug:"Bug Report",feature:"Feature",support:"Support"}},i=["feedback","bug","feature","support"];function o(t,e){if(!e)return{...t};const n={...t};for(const i of Object.keys(e)){const o=e[i],s=t[i];void 0!==o&&(n[i]=null===o||"object"!=typeof o||Array.isArray(o)||null===s||"object"!=typeof s||Array.isArray(s)?o:{...s,...o})}return n}function s(t){var s,a,l,c,d,h,u,g,p,m,f,b,x,v;if(!t.apiKey||"string"!=typeof t.apiKey)throw new Error("[chatgram-widget] `apiKey` is required. Get yours at https://brandid.app/chatgram");return{apiKey:t.apiKey.trim(),domain:t.domain||("undefined"!=typeof window&&window.location?window.location.hostname:"localhost"),apiBaseUrl:(t.apiBaseUrl||"https://chatgram-server.brandid.app").replace(/\/+$/,""),theme:o(e,t.theme),texts:o(n,t.texts),categories:t.categories&&t.categories.length>0?t.categories:i,defaultCategory:t.defaultCategory||"support",maxMessageLength:r(null!==(s=t.maxMessageLength)&&void 0!==s?s:5e3,100,5e4),showTriggerButton:null===(a=t.showTriggerButton)||void 0===a||a,triggerPosition:t.triggerPosition||"bottom-right",showNameField:null===(l=t.showNameField)||void 0===l||l,showCategories:null===(c=t.showCategories)||void 0===c||c,zIndex:null!==(d=t.zIndex)&&void 0!==d?d:999999,closeOnOverlayClick:null===(h=t.closeOnOverlayClick)||void 0===h||h,closeOnEscape:null===(u=t.closeOnEscape)||void 0===u||u,enableHoneypot:null===(g=t.enableHoneypot)||void 0===g||g,minSubmitDelay:r(null!==(p=t.minSubmitDelay)&&void 0!==p?p:2,0,30),rateLimitMax:r(null!==(m=t.rateLimitMax)&&void 0!==m?m:3,1,100),rateLimitWindow:r(null!==(f=t.rateLimitWindow)&&void 0!==f?f:3e5,1e4,36e5),requestTimeout:r(null!==(b=t.requestTimeout)&&void 0!==b?b:15e3,3e3,6e4),retryAttempts:r(null!==(x=t.retryAttempts)&&void 0!==x?x:2,0,5),autoResetDelay:Math.max(null!==(v=t.autoResetDelay)&&void 0!==v?v:0,0),defaultEmail:t.defaultEmail,defaultName:t.defaultName,onSuccess:t.onSuccess,onError:t.onError,onOpen:t.onOpen,onClose:t.onClose,onSubmit:t.onSubmit}}function r(t,e,n){return Math.min(Math.max(t,e),n)}class a{constructor(){this.listeners=new Map}on(t,e){this.listeners.has(t)||this.listeners.set(t,new Set),this.listeners.get(t).add(e)}off(t,e){var n;null===(n=this.listeners.get(t))||void 0===n||n.delete(e)}once(t,e){const n=i=>{this.off(t,n),e(i)};this.on(t,n)}emit(t,e){const n=this.listeners.get(t);if(n)for(const i of n)try{i(e)}catch(e){console.error(`[chatgram-widget] Error in "${t}" handler:`,e)}}removeAllListeners(){this.listeners.clear()}}async function l(e,n,i){const o=new AbortController,s=setTimeout(()=>o.abort(),i);try{const i=`${e}/api/tickets`,r=await fetch(i,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify(n),signal:o.signal});clearTimeout(s);let a={};try{a=await r.json()}catch(t){}if(!r.ok){const e="string"==typeof a.message?a.message:`Server error (${r.status})`;if(429===r.status)throw new t(e,"RATE_LIMITED",429);if(r.status>=400&&r.status<500)throw new t(e,"VALIDATION_ERROR",r.status);throw new t(e,"SERVER_ERROR",r.status)}return{success:!0,ticketId:a.ticketId||a.id||a._id||void 0,message:a.message||"Ticket created successfully"}}catch(e){if(clearTimeout(s),e instanceof t)throw e;if(e instanceof DOMException&&"AbortError"===e.name)throw new t("Request timed out. Please check your connection and try again.","TIMEOUT");if(e instanceof TypeError)throw new t("Network error. Please check your internet connection.","NETWORK_ERROR");throw new t(e instanceof Error?e.message:"An unexpected error occurred","UNKNOWN")}}function c(t){return new Promise(e=>setTimeout(e,t))}function d(e){return e instanceof t?e:e instanceof Error?new t(e.message,"UNKNOWN"):new t(String(e),"UNKNOWN")}class h{constructor(t,e){this.timestamps=[],this.maxRequests=t,this.windowMs=e}tryConsume(){const t=Date.now();return this.timestamps=this.timestamps.filter(e=>t-e<this.windowMs),!(this.timestamps.length>=this.maxRequests||(this.timestamps.push(t),0))}getRetryAfter(){if(this.timestamps.length<this.maxRequests)return 0;const t=this.timestamps[0],e=this.windowMs-(Date.now()-t);return Math.max(Math.ceil(e/1e3),1)}reset(){this.timestamps=[]}}function u(t){return"string"!=typeof t?"":t.replace(/\0/g,"").trim()}function g(t){return"string"==typeof t&&t.trim().length>0}function p(t){return function(t){return"string"==typeof t&&!/expression\s*\(|url\s*\(|javascript:|data:/i.test(t)}(t)?t:""}function m(t,e,n){const i=document.createElement(t);if(e)for(const[t,n]of Object.entries(e))"className"===t?i.className=n:"textContent"===t?i.textContent=n:"innerHTML"===t?i.innerHTML=n:i.setAttribute(t,n);return i}const f=["a[href]","button:not([disabled])",'input:not([disabled]):not([type="hidden"])',"select:not([disabled])","textarea:not([disabled])",'[tabindex]:not([tabindex="-1"])'].join(", ");let b=0,x=0,v="",y="",w=0;const E={feedback:'<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"/></svg>',bug:'<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="m8 2 1.88 1.88"/><path d="M14.12 3.88 16 2"/><path d="M9 7.13v-1a3.003 3.003 0 1 1 6 0v1"/><path d="M12 20c-3.3 0-6-2.7-6-6v-3a4 4 0 0 1 4-4h4a4 4 0 0 1 4 4v3c0 3.3-2.7 6-6 6"/><path d="M12 20v-9"/><path d="M6.53 9C4.6 8.8 3 7.1 3 5"/><path d="M6 13H2"/><path d="M3 21c0-2.1 1.7-3.9 3.8-4"/><path d="M20.97 5c0 2.1-1.6 3.8-3.5 4"/><path d="M22 13h-4"/><path d="M17.2 17c2.1.1 3.8 1.9 3.8 4"/></svg>',feature:'<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="3"/><path d="M12 1v2"/><path d="M12 21v2"/><path d="M4.22 4.22l1.42 1.42"/><path d="M18.36 18.36l1.42 1.42"/><path d="M1 12h2"/><path d="M21 12h2"/><path d="M4.22 19.78l1.42-1.42"/><path d="M18.36 5.64l1.42-1.42"/></svg>',support:'<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><path d="M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3"/><path d="M12 17h.01"/></svg>',close:'<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="18" y1="6" x2="6" y2="18"/><line x1="6" y1="6" x2="18" y2="18"/></svg>',email:'<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect width="20" height="16" x="2" y="4" rx="2"/><path d="m22 7-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7"/></svg>',user:'<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2"/><circle cx="12" cy="7" r="4"/></svg>',subject:'<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M14.5 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7.5L14.5 2z"/><polyline points="14 2 14 8 20 8"/></svg>',send:'<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="22" y1="2" x2="11" y2="13"/><polygon points="22 2 15 22 11 13 2 9 22 2"/></svg>',success:'<svg xmlns="http://www.w3.org/2000/svg" width="52" height="52" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M22 11.08V12a10 10 0 1 1-5.93-9.14"/><polyline points="22 4 12 14.01 9 11.01"/></svg>',error:'<svg xmlns="http://www.w3.org/2000/svg" width="52" height="52" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><line x1="12" y1="8" x2="12" y2="12"/><line x1="12" y1="16" x2="12.01" y2="16"/></svg>',spinner:'<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round"><path d="M21 12a9 9 0 1 1-6.219-8.56"/></svg>',trigger:'<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"/></svg>',warning:'<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3Z"/><line x1="12" y1="9" x2="12" y2="13"/><line x1="12" y1="17" x2="12.01" y2="17"/></svg>'};function C(t){return E[t]||E.support}class F{constructor(t,e){this.hostEl=null,this.shadow=null,this.overlay=null,this.modalEl=null,this.bodyContainer=null,this.isOpen=!1,this.state="idle",this.mountTime=0,this.destroyFocusTrap=null,this.boundEscapeHandler=null,this.emailInput=null,this.nameInput=null,this.subjectInput=null,this.messageInput=null,this.honeypotInput=null,this.charCountText=null,this.charCountFill=null,this.submitBtn=null,this.categoryBtns=[],this.config=s(t),this.events=e,this.selectedCategory=this.config.defaultCategory,this.instanceId=function(t="cg"){return`${t}-${++w}-${Date.now().toString(36)}`}("cg-modal"),this.rateLimiter=new h(this.config.rateLimitMax,this.config.rateLimitWindow)}open(){var t,e,n;this.isOpen||(this.hostEl||this.mount(),this.isOpen=!0,this.mountTime=Date.now(),requestAnimationFrame(()=>{var t;null===(t=this.overlay)||void 0===t||t.classList.add("cg-overlay--visible")}),b++,b>1||(x=window.innerWidth-document.documentElement.clientWidth,y=document.body.style.overflow,v=document.body.style.paddingRight,document.body.style.overflow="hidden",x>0&&(document.body.style.paddingRight=`${x}px`)),this.modalEl&&(this.destroyFocusTrap=function(t){const e=document.activeElement;function n(){return Array.from(t.querySelectorAll(f)).filter(t=>{const e=window.getComputedStyle(t);return"none"!==e.display&&"hidden"!==e.visibility})}function i(e){if("Tab"!==e.key)return;const i=n();if(0===i.length)return void e.preventDefault();const o=i[0],s=i[i.length-1];e.shiftKey?document.activeElement!==o&&t.contains(document.activeElement)||(e.preventDefault(),s.focus()):document.activeElement!==s&&t.contains(document.activeElement)||(e.preventDefault(),o.focus())}return t.addEventListener("keydown",i),requestAnimationFrame(()=>{const t=n();t.length>0&&t[0].focus()}),()=>{if(t.removeEventListener("keydown",i),e&&"function"==typeof e.focus)try{e.focus()}catch(t){}}}(this.modalEl)),this.config.closeOnEscape&&(this.boundEscapeHandler=t=>{"Escape"===t.key&&this.close()},document.addEventListener("keydown",this.boundEscapeHandler)),null===(t=this.overlay)||void 0===t||t.setAttribute("aria-hidden","false"),this.events.emit("open"),null===(n=(e=this.config).onOpen)||void 0===n||n.call(e))}close(){var t,e,n;this.isOpen&&this.overlay&&(this.isOpen=!1,this.overlay.classList.remove("cg-overlay--visible"),this.overlay.setAttribute("aria-hidden","true"),b=Math.max(0,b-1),b>0||(document.body.style.overflow=y,document.body.style.paddingRight=v),null===(t=this.destroyFocusTrap)||void 0===t||t.call(this),this.destroyFocusTrap=null,this.boundEscapeHandler&&(document.removeEventListener("keydown",this.boundEscapeHandler),this.boundEscapeHandler=null),this.events.emit("close"),null===(n=(e=this.config).onClose)||void 0===n||n.call(e),setTimeout(()=>{"idle"!==this.state&&this.setState("idle")},300))}destroy(){this.close(),this.hostEl&&(this.hostEl.remove(),this.hostEl=null,this.shadow=null,this.overlay=null,this.modalEl=null,this.bodyContainer=null)}updateConfig(t){this.config=s(t),this.shadow&&this.applyTheme()}updateTheme(t){t&&(this.config=s({...this.config,theme:{...this.config.theme,...t}}),this.shadow&&this.applyTheme(),this.events.emit("theme-change",t))}getState(){return this.state}isVisible(){return this.isOpen}mount(){this.hostEl=m("div",{id:this.instanceId}),this.hostEl.style.cssText="position:fixed;top:0;left:0;width:0;height:0;overflow:visible;z-index:"+this.config.zIndex,this.shadow=this.hostEl.attachShadow({mode:"open"});const t=document.createElement("style");t.textContent="\n/* ═══ Reset ═══ */\n*, *::before, *::after {\n box-sizing: border-box;\n margin: 0;\n padding: 0;\n}\n\n/* ═══ Overlay ═══ */\n.cg-overlay {\n position: fixed;\n inset: 0;\n background: rgba(0, 0, 0, 0.5);\n backdrop-filter: blur(4px);\n -webkit-backdrop-filter: blur(4px);\n z-index: var(--cg-z, 999999);\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 16px;\n opacity: 0;\n visibility: hidden;\n transition: opacity 0.25s ease, visibility 0.25s ease;\n font-family: var(--cg-font);\n color: var(--cg-text);\n line-height: 1.5;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\n.cg-overlay--visible {\n opacity: 1;\n visibility: visible;\n}\n\n/* ═══ Modal Shell ═══ */\n.cg-modal {\n background: var(--cg-bg, #FFFFFF);\n border-radius: var(--cg-modal-radius, 16px);\n box-shadow: var(--cg-shadow, 0 25px 60px rgba(0,0,0,0.3));\n width: 100%;\n max-width: 520px;\n max-height: 90vh;\n overflow: hidden;\n display: flex;\n flex-direction: column;\n transform: translateY(20px) scale(0.97);\n opacity: 0;\n transition:\n transform 0.3s cubic-bezier(0.16, 1, 0.3, 1),\n opacity 0.3s cubic-bezier(0.16, 1, 0.3, 1);\n}\n\n.cg-overlay--visible .cg-modal {\n transform: translateY(0) scale(1);\n opacity: 1;\n}\n\n/* ═══ Header ═══ */\n.cg-header {\n background: var(--cg-header-bg, #2C3345);\n color: var(--cg-header-text, #FFFFFF);\n padding: 20px 24px;\n display: flex;\n align-items: center;\n gap: 14px;\n position: relative;\n flex-shrink: 0;\n}\n\n.cg-header__icon {\n width: 40px;\n height: 40px;\n background: rgba(255, 255, 255, 0.12);\n border-radius: 10px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n}\n.cg-header__icon svg { stroke: var(--cg-header-text, #FFFFFF); }\n\n.cg-header__info { flex: 1; min-width: 0; }\n\n.cg-header__title {\n font-size: 17px;\n font-weight: 600;\n letter-spacing: -0.01em;\n color: inherit;\n}\n\n.cg-header__subtitle {\n font-size: 13px;\n opacity: 0.75;\n margin-top: 2px;\n color: inherit;\n}\n\n/* ── Close Button ── */\n.cg-close-btn {\n position: absolute;\n top: 16px;\n right: 16px;\n width: 32px;\n height: 32px;\n background: rgba(255, 255, 255, 0.1);\n border: none;\n border-radius: 8px;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: background 0.2s;\n color: var(--cg-header-text, #FFFFFF);\n padding: 0;\n}\n.cg-close-btn:hover { background: rgba(255, 255, 255, 0.2); }\n.cg-close-btn:focus-visible {\n outline: 2px solid rgba(255, 255, 255, 0.6);\n outline-offset: 2px;\n}\n.cg-close-btn svg { stroke: var(--cg-header-text, #FFFFFF); }\n\n/* ═══ Body (scrollable) ═══ */\n.cg-body {\n padding: 24px;\n overflow-y: auto;\n flex: 1;\n scrollbar-width: thin;\n scrollbar-color: rgba(0,0,0,0.15) transparent;\n}\n.cg-body::-webkit-scrollbar { width: 6px; }\n.cg-body::-webkit-scrollbar-track { background: transparent; }\n.cg-body::-webkit-scrollbar-thumb {\n background: rgba(0,0,0,0.15);\n border-radius: 3px;\n}\n\n/* ═══ Labels ═══ */\n.cg-label {\n display: block;\n font-size: 13px;\n font-weight: 500;\n color: var(--cg-primary, #EE6055);\n margin-bottom: 6px;\n}\n.cg-label--required::after {\n content: ' *';\n color: var(--cg-primary, #EE6055);\n}\n.cg-label--optional::after {\n content: '(Optional)';\n color: var(--cg-text, #6B7280);\n font-weight: 400;\n margin-left: 4px;\n font-size: 12px;\n}\n\n/* ═══ Categories ═══ */\n.cg-categories {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 8px;\n margin-bottom: 20px;\n}\n\n.cg-cat-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n padding: 10px 12px;\n border: 1.5px solid #E5E7EB;\n border-radius: var(--cg-radius, 8px);\n background: transparent;\n font-size: 13px;\n font-weight: 500;\n color: var(--cg-text, #6B7280);\n cursor: pointer;\n transition: all 0.2s;\n font-family: inherit;\n outline: none;\n}\n.cg-cat-btn:hover {\n border-color: var(--cg-primary, #EE6055);\n color: var(--cg-primary, #EE6055);\n}\n.cg-cat-btn:focus-visible {\n outline: 2px solid var(--cg-primary, #EE6055);\n outline-offset: 2px;\n}\n.cg-cat-btn--active {\n background: var(--cg-primary, #EE6055);\n border-color: var(--cg-primary, #EE6055);\n color: #FFFFFF;\n}\n.cg-cat-btn--active svg { stroke: #FFFFFF; }\n\n/* ═══ Form Fields ═══ */\n.cg-field {\n margin-bottom: 16px;\n}\n\n.cg-input-wrap {\n position: relative;\n display: flex;\n align-items: center;\n}\n\n.cg-input-wrap__icon {\n position: absolute;\n left: 14px;\n display: flex;\n align-items: center;\n pointer-events: none;\n color: var(--cg-input-placeholder, #9CA3AF);\n}\n.cg-input-wrap__icon svg {\n stroke: var(--cg-input-placeholder, #9CA3AF);\n}\n\n.cg-input {\n width: 100%;\n padding: 12px 14px 12px 42px;\n background: var(--cg-input-bg, #1E2535);\n color: var(--cg-input-text, #FFFFFF);\n border: 1.5px solid transparent;\n border-radius: var(--cg-radius, 8px);\n font-size: 14px;\n font-family: inherit;\n outline: none;\n transition: border-color 0.2s, box-shadow 0.2s;\n}\n.cg-input::placeholder {\n color: var(--cg-input-placeholder, #9CA3AF);\n}\n.cg-input:focus {\n border-color: var(--cg-primary, #EE6055);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--cg-primary, #EE6055) 15%, transparent);\n}\n.cg-input--error {\n border-color: #EF4444 !important;\n box-shadow: 0 0 0 3px rgba(239, 68, 68, 0.15) !important;\n}\n\n/* ═══ Textarea ═══ */\n.cg-textarea {\n width: 100%;\n padding: 14px;\n background: var(--cg-input-bg, #1E2535);\n color: var(--cg-input-text, #FFFFFF);\n border: 1.5px solid transparent;\n border-radius: var(--cg-radius, 8px);\n font-size: 14px;\n font-family: inherit;\n outline: none;\n resize: vertical;\n min-height: 120px;\n max-height: 240px;\n transition: border-color 0.2s, box-shadow 0.2s;\n}\n.cg-textarea::placeholder {\n color: var(--cg-input-placeholder, #9CA3AF);\n}\n.cg-textarea:focus {\n border-color: var(--cg-primary, #EE6055);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--cg-primary, #EE6055) 15%, transparent);\n}\n.cg-textarea--error {\n border-color: #EF4444 !important;\n box-shadow: 0 0 0 3px rgba(239, 68, 68, 0.15) !important;\n}\n\n/* ═══ Character Counter ═══ */\n.cg-counter {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-top: 6px;\n}\n.cg-counter__bar {\n flex: 1;\n height: 3px;\n background: #E5E7EB;\n border-radius: 2px;\n overflow: hidden;\n}\n.cg-counter__fill {\n height: 100%;\n background: var(--cg-primary, #EE6055);\n border-radius: 2px;\n transition: width 0.2s;\n}\n.cg-counter__fill--warn { background: #F59E0B; }\n.cg-counter__fill--danger { background: #EF4444; }\n.cg-counter__text {\n font-size: 12px;\n color: var(--cg-text, #6B7280);\n white-space: nowrap;\n}\n\n/* ═══ Field Errors ═══ */\n.cg-error {\n font-size: 12px;\n color: #EF4444;\n margin-top: 4px;\n min-height: 0;\n overflow: hidden;\n max-height: 0;\n opacity: 0;\n transition: max-height 0.2s, opacity 0.2s, margin 0.2s;\n}\n.cg-error--visible {\n max-height: 40px;\n opacity: 1;\n margin-top: 4px;\n}\n\n/* ═══ Honeypot (hidden from humans) ═══ */\n.cg-hp {\n position: absolute;\n left: -9999px;\n top: -9999px;\n width: 1px;\n height: 1px;\n overflow: hidden;\n opacity: 0;\n pointer-events: none;\n tab-index: -1;\n}\n\n/* ═══ Submit Button ═══ */\n.cg-submit {\n width: 100%;\n padding: 14px;\n background: var(--cg-primary, #EE6055);\n color: #FFFFFF;\n border: none;\n border-radius: var(--cg-radius, 8px);\n font-size: 15px;\n font-weight: 600;\n font-family: inherit;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n transition: background 0.2s, transform 0.1s, box-shadow 0.2s;\n margin-top: 8px;\n outline: none;\n}\n.cg-submit svg { stroke: #FFFFFF; }\n.cg-submit:hover:not(:disabled) {\n background: var(--cg-secondary, #D94F44);\n}\n.cg-submit:active:not(:disabled) {\n transform: scale(0.98);\n}\n.cg-submit:focus-visible {\n outline: 2px solid var(--cg-primary, #EE6055);\n outline-offset: 2px;\n}\n.cg-submit:disabled {\n opacity: 0.65;\n cursor: not-allowed;\n}\n\n/* ═══ Spinner ═══ */\n.cg-spinner {\n display: inline-flex;\n animation: cg-spin 0.8s linear infinite;\n}\n.cg-spinner svg { stroke: #FFFFFF; }\n\n/* ═══ Success & Error State Views ═══ */\n.cg-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n text-align: center;\n padding: 40px 24px;\n min-height: 320px;\n animation: cg-fade-in 0.3s ease;\n}\n\n.cg-state__icon {\n margin-bottom: 20px;\n}\n.cg-state__icon--success svg { stroke: #10B981; }\n.cg-state__icon--error svg { stroke: #EF4444; }\n\n.cg-state__title {\n font-size: 20px;\n font-weight: 700;\n color: #1F2937;\n margin-bottom: 8px;\n}\n\n.cg-state__msg {\n font-size: 14px;\n color: var(--cg-text, #6B7280);\n max-width: 320px;\n line-height: 1.6;\n}\n\n.cg-state__btn {\n margin-top: 24px;\n padding: 10px 28px;\n background: var(--cg-primary, #EE6055);\n color: #FFFFFF;\n border: none;\n border-radius: var(--cg-radius, 8px);\n font-size: 14px;\n font-weight: 500;\n font-family: inherit;\n cursor: pointer;\n transition: background 0.2s;\n outline: none;\n}\n.cg-state__btn:hover {\n background: var(--cg-secondary, #D94F44);\n}\n.cg-state__btn:focus-visible {\n outline: 2px solid var(--cg-primary, #EE6055);\n outline-offset: 2px;\n}\n\n/* ═══ Animations ═══ */\n@keyframes cg-spin {\n from { transform: rotate(0deg); }\n to { transform: rotate(360deg); }\n}\n\n@keyframes cg-fade-in {\n from { opacity: 0; transform: translateY(8px); }\n to { opacity: 1; transform: translateY(0); }\n}\n\n/* ═══ Responsive ═══ */\n@media (max-width: 480px) {\n .cg-overlay { padding: 0; }\n .cg-modal {\n max-width: 100%;\n max-height: 100%;\n height: 100%;\n border-radius: 0;\n }\n .cg-body { padding: 16px; }\n .cg-categories { gap: 6px; }\n .cg-cat-btn { font-size: 12px; padding: 8px; gap: 5px; }\n .cg-header { padding: 16px 20px; }\n}\n\n/* ═══ Reduced Motion ═══ */\n@media (prefers-reduced-motion: reduce) {\n .cg-overlay,\n .cg-modal,\n .cg-spinner,\n .cg-state,\n .cg-submit,\n .cg-cat-btn,\n .cg-input,\n .cg-textarea,\n .cg-counter__fill,\n .cg-error {\n transition-duration: 0.01ms !important;\n animation-duration: 0.01ms !important;\n }\n}\n\n/* ═══ High Contrast Mode ═══ */\n@media (forced-colors: active) {\n .cg-cat-btn { border: 2px solid ButtonText; }\n .cg-cat-btn--active { background: Highlight; color: HighlightText; }\n .cg-input, .cg-textarea { border: 1px solid ButtonText; }\n .cg-submit { border: 2px solid ButtonText; }\n}\n",this.shadow.appendChild(t),this.overlay=m("div",{className:"cg-overlay",role:"dialog","aria-modal":"true","aria-label":this.config.texts.title,"aria-hidden":"true"}),this.config.closeOnOverlayClick&&this.overlay.addEventListener("click",t=>{t.target===this.overlay&&this.close()}),this.modalEl=m("div",{className:"cg-modal"}),this.modalEl.addEventListener("click",t=>t.stopPropagation()),this.modalEl.appendChild(this.buildHeader()),this.bodyContainer=m("div",{className:"cg-body"}),this.buildFormView(),this.modalEl.appendChild(this.bodyContainer),this.overlay.appendChild(this.modalEl),this.shadow.appendChild(this.overlay),this.applyTheme(),document.body.appendChild(this.hostEl)}applyTheme(){var t;const e=this.overlay||(null===(t=this.shadow)||void 0===t?void 0:t.host);if(!e)return;const n=this.config.theme;!function(t,e){for(const[n,i]of Object.entries(e)){const e=p(i);e&&t.style.setProperty(n,e)}}(e,{"--cg-primary":n.primaryColor,"--cg-secondary":n.secondaryColor,"--cg-bg":n.backgroundColor,"--cg-header-bg":n.headerBackgroundColor,"--cg-header-text":n.headerTextColor,"--cg-text":n.textColor,"--cg-input-bg":n.inputBackgroundColor,"--cg-input-text":n.inputTextColor,"--cg-input-placeholder":n.inputPlaceholderColor,"--cg-radius":n.borderRadius,"--cg-modal-radius":n.modalBorderRadius,"--cg-font":n.fontFamily,"--cg-shadow":n.boxShadow,"--cg-z":String(this.config.zIndex)})}buildHeader(){const t=this.config.texts,e=m("div",{className:"cg-header"}),n=m("div",{className:"cg-header__icon",innerHTML:E.feedback}),i=m("div",{className:"cg-header__info"});i.appendChild(m("h2",{className:"cg-header__title",textContent:t.title,id:`${this.instanceId}-title`})),i.appendChild(m("p",{className:"cg-header__subtitle",textContent:t.subtitle}));const o=m("button",{className:"cg-close-btn","aria-label":"Close dialog",type:"button",innerHTML:E.close});return o.addEventListener("click",()=>this.close()),e.append(n,i,o),e}buildFormView(){if(!this.bodyContainer)return;this.bodyContainer.innerHTML="",this.categoryBtns=[];const t=this.config.texts;if(this.config.showCategories&&this.config.categories.length>1){const e=m("div",{className:"cg-label",textContent:t.categoryLabel,id:`${this.instanceId}-cat-label`});this.bodyContainer.appendChild(e);const n=m("div",{className:"cg-categories",role:"radiogroup","aria-labelledby":`${this.instanceId}-cat-label`});for(let e=0;e<this.config.categories.length;e++){const i=this.config.categories[e],o=t.categories[i]||i,s=i===this.selectedCategory,r=m("button",{className:"cg-cat-btn"+(s?" cg-cat-btn--active":""),type:"button",role:"radio","aria-checked":String(s),tabindex:s?"0":"-1"});r.innerHTML=C(i),r.appendChild(document.createTextNode(" "+o)),r.dataset.type=i,r.addEventListener("click",()=>this.selectCategory(i)),r.addEventListener("keydown",t=>{const n=this.categoryBtns.length;if("ArrowRight"===t.key||"ArrowDown"===t.key){t.preventDefault();const i=this.categoryBtns[(e+1)%n];this.selectCategory(i.dataset.type),i.focus()}else if("ArrowLeft"===t.key||"ArrowUp"===t.key){t.preventDefault();const i=this.categoryBtns[(e-1+n)%n];this.selectCategory(i.dataset.type),i.focus()}}),this.categoryBtns.push(r),n.appendChild(r)}this.bodyContainer.appendChild(n)}const e=this.buildField({label:t.emailLabel,placeholder:t.emailPlaceholder,type:"email",icon:E.email,required:!0,id:`${this.instanceId}-email`,autocomplete:"email"});if(this.emailInput=e.querySelector("input"),this.config.defaultEmail&&(this.emailInput.value=this.config.defaultEmail),this.bodyContainer.appendChild(e),this.config.showNameField){const e=this.buildField({label:t.nameLabel,placeholder:t.namePlaceholder,type:"text",icon:E.user,required:!1,id:`${this.instanceId}-name`,autocomplete:"name"});this.nameInput=e.querySelector("input"),this.config.defaultName&&(this.nameInput.value=this.config.defaultName),this.bodyContainer.appendChild(e)}else this.nameInput=null;const n=this.buildField({label:t.subjectLabel,placeholder:t.subjectPlaceholder,type:"text",icon:E.subject,required:!0,id:`${this.instanceId}-subject`,autocomplete:"off"});this.subjectInput=n.querySelector("input"),this.bodyContainer.appendChild(n);const i=m("div",{className:"cg-field"}),o=m("label",{className:"cg-label cg-label--required",textContent:t.messageLabel});o.setAttribute("for",`${this.instanceId}-msg`),i.appendChild(o),this.messageInput=document.createElement("textarea"),this.messageInput.className="cg-textarea",this.messageInput.id=`${this.instanceId}-msg`,this.messageInput.placeholder=t.messagePlaceholder,this.messageInput.setAttribute("maxlength",String(this.config.maxMessageLength)),this.messageInput.setAttribute("aria-required","true"),this.messageInput.setAttribute("aria-describedby",`${this.instanceId}-char-count`),i.appendChild(this.messageInput);const s=m("div",{className:"cg-counter",id:`${this.instanceId}-char-count`}),r=m("div",{className:"cg-counter__bar"});this.charCountFill=m("div",{className:"cg-counter__fill"}),this.charCountFill.style.width="0%",r.appendChild(this.charCountFill),this.charCountText=m("span",{className:"cg-counter__text",textContent:`0 / ${this.config.maxMessageLength}`,"aria-live":"polite"}),s.append(r,this.charCountText),i.appendChild(s);const a=m("div",{className:"cg-error",role:"alert","aria-live":"polite"});if(i.appendChild(a),this.messageInput.addEventListener("input",()=>this.updateCharCount()),i.dataset.fieldName="message",this.bodyContainer.appendChild(i),this.config.enableHoneypot){const t=m("div",{className:"cg-hp","aria-hidden":"true"});this.honeypotInput=document.createElement("input"),this.honeypotInput.type="text",this.honeypotInput.name="website",this.honeypotInput.tabIndex=-1,this.honeypotInput.autocomplete="off",t.appendChild(this.honeypotInput),this.bodyContainer.appendChild(t)}else this.honeypotInput=null;this.submitBtn=document.createElement("button"),this.submitBtn.className="cg-submit",this.submitBtn.type="button",this.submitBtn.setAttribute("aria-label",t.submitButtonText),this.submitBtn.innerHTML=`${E.send} <span>${t.submitButtonText}</span>`,this.submitBtn.addEventListener("click",()=>this.handleSubmit()),this.bodyContainer.appendChild(this.submitBtn)}buildField(t){const e=m("div",{className:"cg-field"});e.dataset.fieldName=t.id;const n=m("label",{className:t.required?"cg-label cg-label--required":"cg-label cg-label--optional",textContent:t.label});n.setAttribute("for",t.id),e.appendChild(n);const i=m("div",{className:"cg-input-wrap"}),o=m("span",{className:"cg-input-wrap__icon",innerHTML:t.icon,"aria-hidden":"true"}),s=document.createElement("input");s.className="cg-input",s.type=t.type,s.id=t.id,s.placeholder=t.placeholder,s.setAttribute("autocomplete",t.autocomplete),t.required&&(s.setAttribute("aria-required","true"),s.required=!0),s.addEventListener("input",()=>{this.clearFieldError(e)}),i.append(o,s),e.appendChild(i);const r=m("div",{className:"cg-error",role:"alert","aria-live":"polite"});return e.appendChild(r),e}selectCategory(t){this.selectedCategory=t;for(const e of this.categoryBtns){const n=e.dataset.type===t;e.classList.toggle("cg-cat-btn--active",n),e.setAttribute("aria-checked",String(n)),e.tabIndex=n?0:-1}}updateCharCount(){if(!this.messageInput||!this.charCountText||!this.charCountFill)return;const t=this.messageInput.value.length,e=this.config.maxMessageLength,n=Math.min(t/e*100,100);this.charCountFill.style.width=`${n}%`,this.charCountText.textContent=`${t} / ${e}`,this.charCountFill.classList.remove("cg-counter__fill--warn","cg-counter__fill--danger"),n>=95?this.charCountFill.classList.add("cg-counter__fill--danger"):n>=80&&this.charCountFill.classList.add("cg-counter__fill--warn");const i=this.messageInput.closest(".cg-field");i&&this.clearFieldError(i)}validate(){const t=this.config.texts;let e=!0;return!!this.emailInput&&(function(t){if("string"!=typeof t)return!1;const e=t.trim();return!(0===e.length||e.length>254)&&!/[\r\n]/.test(e)&&/^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+$/.test(e)}(this.emailInput.value.trim())||(this.showFieldError(this.emailInput,t.invalidEmailError),e&&this.emailInput.focus(),e=!1),!!this.subjectInput&&(g(this.subjectInput.value)||(this.showFieldError(this.subjectInput,t.requiredFieldError),e&&this.subjectInput.focus(),e=!1),!!this.messageInput&&(g(this.messageInput.value)?"string"==typeof(n=this.messageInput.value)&&n.length<=this.config.maxMessageLength||(this.showTextareaError(this.messageInput,t.messageTooLongError),e&&this.messageInput.focus(),e=!1):(this.showTextareaError(this.messageInput,t.requiredFieldError),e&&this.messageInput.focus(),e=!1),e)));var n}showFieldError(t,e){const n=t.closest(".cg-field");if(!n)return;t.classList.add("cg-input--error"),t.setAttribute("aria-invalid","true");const i=n.querySelector(".cg-error");i&&(i.textContent=e,i.classList.add("cg-error--visible"))}showTextareaError(t,e){const n=t.closest(".cg-field");if(!n)return;t.classList.add("cg-textarea--error"),t.setAttribute("aria-invalid","true");const i=n.querySelector(".cg-error");i&&(i.textContent=e,i.classList.add("cg-error--visible"))}clearFieldError(t){const e=t.querySelector("input, textarea");e&&(e.classList.remove("cg-input--error","cg-textarea--error"),e.removeAttribute("aria-invalid"));const n=t.querySelector(".cg-error");n&&(n.textContent="",n.classList.remove("cg-error--visible"))}setState(t){this.state=t,this.events.emit("state-change",t),"idle"===t&&this.bodyContainer&&this.buildFormView()}showStateView(t,e,n){if(!this.bodyContainer)return;this.bodyContainer.innerHTML="";const i=this.config.texts,o=m("div",{className:"cg-state",role:"status","aria-live":"polite"}),s=m("div",{className:`cg-state__icon cg-state__icon--${t}`,innerHTML:"success"===t?E.success:E.error,"aria-hidden":"true"}),r=m("h3",{className:"cg-state__title",textContent:e}),a=m("p",{className:"cg-state__msg",textContent:n}),l=m("button",{className:"cg-state__btn",type:"button",textContent:"success"===t?i.successButtonText:i.errorButtonText});l.addEventListener("click",()=>{"success"===t?this.close():this.setState("idle")}),o.append(s,r,a,l),this.bodyContainer.appendChild(o),requestAnimationFrame(()=>l.focus())}async handleSubmit(){var e,n,i,o,s,r,a;if("loading"===this.state)return;if(!this.validate())return;if(this.config.enableHoneypot&&(null===(e=this.honeypotInput)||void 0===e?void 0:e.value))return this.setState("success"),void this.showStateView("success",this.config.texts.successTitle,this.config.texts.successMessage);if((Date.now()-this.mountTime)/1e3<this.config.minSubmitDelay)return this.setState("success"),void this.showStateView("success",this.config.texts.successTitle,this.config.texts.successMessage);if(!this.rateLimiter.tryConsume()){const e=this.rateLimiter.getRetryAfter(),o=new t(`${this.config.texts.rateLimitError} Try again in ${e}s.`,"RATE_LIMITED");return this.setState("error"),this.showStateView("error",this.config.texts.errorTitle,o.message),null===(i=(n=this.config).onError)||void 0===i||i.call(n,o),void this.events.emit("error",o)}const h={domain:this.config.domain,apiKey:this.config.apiKey,email:u(this.emailInput.value),name:this.nameInput&&u(this.nameInput.value)||void 0,title:u(this.subjectInput.value),type:this.selectedCategory,messageText:u(this.messageInput.value)};if(!this.config.onSubmit||!1!==this.config.onSubmit(h)){this.events.emit("submit",h),this.state="loading",this.events.emit("state-change","loading"),this.submitBtn.disabled=!0,this.submitBtn.innerHTML=`<span class="cg-spinner">${E.spinner}</span> <span>${this.config.texts.submittingText}</span>`;try{const e=await async function(e,n,i){var o;const{timeout:s,retries:r}=i;let a=null;for(let t=0;t<=r;t++){if(t>0){const e=Math.min(1e3*Math.pow(2,t-1),8e3);await c(e)}try{return await l(e,n,s)}catch(e){if(a=d(e),!("NETWORK_ERROR"===a.code||"TIMEOUT"===a.code||"SERVER_ERROR"===a.code&&(null!==(o=a.statusCode)&&void 0!==o?o:0)>=500)||t===r)throw a}}throw a||new t("Unknown error","UNKNOWN")}(this.config.apiBaseUrl,h,{timeout:this.config.requestTimeout,retries:this.config.retryAttempts});this.setState("success"),this.showStateView("success",this.config.texts.successTitle,this.config.texts.successMessage),null===(s=(o=this.config).onSuccess)||void 0===s||s.call(o,e),this.events.emit("success",e),this.config.autoResetDelay>0&&setTimeout(()=>{"success"===this.state&&this.close()},this.config.autoResetDelay)}catch(e){const n=e instanceof t?e:new t(e instanceof Error?e.message:"An unexpected error occurred","UNKNOWN");this.setState("error");let i=this.config.texts.errorMessage;"TIMEOUT"===n.code?i=this.config.texts.timeoutError:"NETWORK_ERROR"===n.code?i=this.config.texts.networkError:"RATE_LIMITED"===n.code?i=this.config.texts.rateLimitError:"VALIDATION_ERROR"===n.code&&n.message&&(i=n.message),this.showStateView("error",this.config.texts.errorTitle,i),null===(a=(r=this.config).onError)||void 0===a||a.call(r,n),this.events.emit("error",n)}}}}class k{constructor(t,e){this.el=null,this.hostEl=null,this.shadow=null,this.config=t,this.onClick=e}mount(){if(this.el)return;this.hostEl=document.createElement("div"),this.hostEl.style.cssText="position:fixed;bottom:0;left:0;width:0;height:0;overflow:visible;z-index:"+(this.config.zIndex-1),this.shadow=this.hostEl.attachShadow({mode:"open"});const t=this.config.triggerPosition,e=this.config.theme,n=document.createElement("style");n.textContent=`\n .cg-trigger {\n position: fixed;\n bottom: 20px;\n ${"bottom-left"===t?"left: 20px;":"right: 20px;"}\n width: 56px;\n height: 56px;\n border-radius: 50%;\n background: ${e.primaryColor};\n color: #FFFFFF;\n border: none;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n box-shadow: 0 4px 14px rgba(0,0,0,0.25);\n transition: transform 0.2s ease, box-shadow 0.2s ease, opacity 0.25s ease;\n z-index: ${this.config.zIndex-1};\n padding: 0;\n outline: none;\n }\n .cg-trigger:hover {\n transform: scale(1.08);\n box-shadow: 0 6px 20px rgba(0,0,0,0.35);\n }\n .cg-trigger:focus-visible {\n outline: 2px solid ${e.primaryColor};\n outline-offset: 3px;\n }\n .cg-trigger:active {\n transform: scale(0.95);\n }\n .cg-trigger svg {\n stroke: #FFFFFF;\n }\n .cg-trigger--hidden {\n opacity: 0;\n pointer-events: none;\n transform: scale(0.8);\n }\n .cg-trigger__label {\n position: absolute;\n ${"bottom-left"===t?"left: 64px;":"right: 64px;"}\n background: #1F2937;\n color: #FFFFFF;\n font-family: ${e.fontFamily};\n font-size: 13px;\n font-weight: 500;\n padding: 6px 12px;\n border-radius: 6px;\n white-space: nowrap;\n pointer-events: none;\n opacity: 0;\n transition: opacity 0.2s;\n box-shadow: 0 2px 8px rgba(0,0,0,0.2);\n }\n .cg-trigger:hover .cg-trigger__label {\n opacity: 1;\n }\n `,this.shadow.appendChild(n),this.el=document.createElement("button"),this.el.className="cg-trigger",this.el.setAttribute("aria-label","Need Help? Contact Support"),this.el.setAttribute("type","button"),this.el.innerHTML=E.trigger;const i=document.createElement("span");i.className="cg-trigger__label",i.textContent="Need Help?",this.el.appendChild(i),this.el.addEventListener("click",this.onClick),this.shadow.appendChild(this.el),document.body.appendChild(this.hostEl)}destroy(){this.el&&this.el.removeEventListener("click",this.onClick),this.hostEl&&(this.hostEl.remove(),this.hostEl=null,this.shadow=null,this.el=null)}show(){var t;null===(t=this.el)||void 0===t||t.classList.remove("cg-trigger--hidden")}hide(){var t;null===(t=this.el)||void 0===t||t.classList.add("cg-trigger--hidden")}updateTheme(t){this.el&&(this.el.style.background=t)}}let T=null,_=null,I=null,L=null;function M(t){T&&A(),"undefined"!=typeof window&&"undefined"!=typeof document?(L=s(t),I=new a,L.onOpen&&I.on("open",L.onOpen),L.onClose&&I.on("close",L.onClose),L.onSuccess&&I.on("success",L.onSuccess),L.onError&&I.on("error",L.onError),T=new F(t,I),L.showTriggerButton&&(_=new k(L,()=>N()),_.mount())):console.warn("[chatgram-widget] Cannot initialize in a non-browser environment.")}function N(){if(!T)throw new t("Call init() before open(). See: https://brandid.app/chatgram","NOT_INITIALIZED");T.open(),null==_||_.hide()}function S(){T&&(T.close(),null==_||_.show())}function A(){null==T||T.destroy(),T=null,null==_||_.destroy(),_=null,null==I||I.removeAllListeners(),I=null,L=null}function B(e){if(!T)throw new t("Call init() before updateTheme().","NOT_INITIALIZED");T.updateTheme(e),e.primaryColor&&(null==_||_.updateTheme(e.primaryColor))}function O(t,e){null==I||I.on(t,e)}function R(t,e){null==I||I.off(t,e)}function j(t,e){null==I||I.once(t,e)}function z(){var t;return null!==(t=null==T?void 0:T.isVisible())&&void 0!==t&&t}function H(){var t;return null!==(t=null==T?void 0:T.getState())&&void 0!==t?t:"uninitialized"}function $(){return"1.0.0"}var q={init:M,open:N,close:S,destroy:A,updateTheme:B,on:O,off:R,once:j,isOpen:z,getState:H,getVersion:$,ChatgramError:t};exports.ChatgramError=t,exports.close=S,exports.default=q,exports.destroy=A,exports.getState=H,exports.getVersion=$,exports.init=M,exports.isOpen=z,exports.off=R,exports.on=O,exports.once=j,exports.open=N,exports.updateTheme=B;
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});class t extends Error{constructor(t,e,n){super(t),this.name="ChatgramError",this.code=e,this.statusCode=n}}const e={primaryColor:"#EE6055",secondaryColor:"#D94F44",backgroundColor:"#FFFFFF",headerBackgroundColor:"#2C3345",headerTextColor:"#FFFFFF",textColor:"#6B7280",inputBackgroundColor:"#1E2535",inputTextColor:"#FFFFFF",inputPlaceholderColor:"#9CA3AF",borderRadius:"8px",modalBorderRadius:"16px",fontFamily:"-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Helvetica Neue', sans-serif",boxShadow:"0 25px 60px rgba(0, 0, 0, 0.3)"},n={title:"Contact Support",subtitle:"We're here to help you succeed",categoryLabel:"What can we help with?",emailLabel:"Your Email",emailPlaceholder:"email@example.com",nameLabel:"Your Name",namePlaceholder:"John Doe",subjectLabel:"Subject",subjectPlaceholder:"Brief subject of your request",messageLabel:"Message",messagePlaceholder:"Tell us what you think...",submitButtonText:"Submit",submittingText:"Sending...",successTitle:"Message Sent!",successMessage:"We've received your message and will get back to you as soon as possible.",successButtonText:"Close",errorTitle:"Oops!",errorMessage:"Something went wrong. Please try again.",errorButtonText:"Try Again",requiredFieldError:"This field is required",invalidEmailError:"Please enter a valid email address",messageTooLongError:"Message exceeds the maximum length",networkError:"Network error. Please check your internet connection.",timeoutError:"Request timed out. Please try again.",rateLimitError:"Too many submissions. Please wait a moment.",categories:{feedback:"Feedback",bug:"Bug Report",feature:"Feature",support:"Support"}},i=["feedback","bug","feature","support"];function o(t,e){if(!e)return{...t};const n={...t};for(const i of Object.keys(e)){const o=e[i],s=t[i];void 0!==o&&(n[i]=null===o||"object"!=typeof o||Array.isArray(o)||null===s||"object"!=typeof s||Array.isArray(s)?o:{...s,...o})}return n}function s(t){var s,a,l,c,d,h,u,g,p,m,f,b,x;return{domain:t.domain||("undefined"!=typeof window&&window.location?window.location.hostname:"localhost"),apiBaseUrl:(t.apiBaseUrl||"https://chatgram-server.brandid.app").replace(/\/+$/,""),theme:o(e,t.theme),texts:o(n,t.texts),categories:i,defaultCategory:"support",showCategories:!0,maxMessageLength:r(null!==(s=t.maxMessageLength)&&void 0!==s?s:5e3,100,5e4),showTriggerButton:null===(a=t.showTriggerButton)||void 0===a||a,triggerPosition:t.triggerPosition||"bottom-right",showNameField:null===(l=t.showNameField)||void 0===l||l,zIndex:null!==(c=t.zIndex)&&void 0!==c?c:999999,closeOnOverlayClick:null===(d=t.closeOnOverlayClick)||void 0===d||d,closeOnEscape:null===(h=t.closeOnEscape)||void 0===h||h,enableHoneypot:null===(u=t.enableHoneypot)||void 0===u||u,minSubmitDelay:r(null!==(g=t.minSubmitDelay)&&void 0!==g?g:2,0,30),rateLimitMax:r(null!==(p=t.rateLimitMax)&&void 0!==p?p:3,1,100),rateLimitWindow:r(null!==(m=t.rateLimitWindow)&&void 0!==m?m:3e5,1e4,36e5),requestTimeout:r(null!==(f=t.requestTimeout)&&void 0!==f?f:15e3,3e3,6e4),retryAttempts:r(null!==(b=t.retryAttempts)&&void 0!==b?b:2,0,5),autoResetDelay:Math.max(null!==(x=t.autoResetDelay)&&void 0!==x?x:0,0),defaultEmail:t.defaultEmail,defaultName:t.defaultName,onSuccess:t.onSuccess,onError:t.onError,onOpen:t.onOpen,onClose:t.onClose,onSubmit:t.onSubmit}}function r(t,e,n){return Math.min(Math.max(t,e),n)}class a{constructor(){this.listeners=new Map}on(t,e){this.listeners.has(t)||this.listeners.set(t,new Set),this.listeners.get(t).add(e)}off(t,e){var n;null===(n=this.listeners.get(t))||void 0===n||n.delete(e)}once(t,e){const n=i=>{this.off(t,n),e(i)};this.on(t,n)}emit(t,e){const n=this.listeners.get(t);if(n)for(const i of n)try{i(e)}catch(e){console.error(`[chatgram-widget] Error in "${t}" handler:`,e)}}removeAllListeners(){this.listeners.clear()}}async function l(e,n,i){const o=new AbortController,s=setTimeout(()=>o.abort(),i);try{const i=`${e}/api/tickets`,r=await fetch(i,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify(n),signal:o.signal});clearTimeout(s);let a={};try{a=await r.json()}catch(t){}if(!r.ok){const e="string"==typeof a.message?a.message:`Server error (${r.status})`;if(429===r.status)throw new t(e,"RATE_LIMITED",429);if(r.status>=400&&r.status<500)throw new t(e,"VALIDATION_ERROR",r.status);throw new t(e,"SERVER_ERROR",r.status)}return{success:!0,ticketId:a.ticketId||a.id||a._id||void 0,message:a.message||"Ticket created successfully"}}catch(e){if(clearTimeout(s),e instanceof t)throw e;if(e instanceof DOMException&&"AbortError"===e.name)throw new t("Request timed out. Please check your connection and try again.","TIMEOUT");if(e instanceof TypeError)throw new t("Network error. Please check your internet connection.","NETWORK_ERROR");throw new t(e instanceof Error?e.message:"An unexpected error occurred","UNKNOWN")}}function c(t){return new Promise(e=>setTimeout(e,t))}function d(e){return e instanceof t?e:e instanceof Error?new t(e.message,"UNKNOWN"):new t(String(e),"UNKNOWN")}class h{constructor(t,e){this.timestamps=[],this.maxRequests=t,this.windowMs=e}tryConsume(){const t=Date.now();return this.timestamps=this.timestamps.filter(e=>t-e<this.windowMs),!(this.timestamps.length>=this.maxRequests||(this.timestamps.push(t),0))}getRetryAfter(){if(this.timestamps.length<this.maxRequests)return 0;const t=this.timestamps[0],e=this.windowMs-(Date.now()-t);return Math.max(Math.ceil(e/1e3),1)}reset(){this.timestamps=[]}}function u(t){return"string"!=typeof t?"":t.replace(/\0/g,"").trim()}function g(t){return"string"==typeof t&&t.trim().length>0}function p(t){return function(t){return"string"==typeof t&&!/expression\s*\(|url\s*\(|javascript:|data:/i.test(t)}(t)?t:""}function m(t,e,n){const i=document.createElement(t);if(e)for(const[t,n]of Object.entries(e))"className"===t?i.className=n:"textContent"===t?i.textContent=n:"innerHTML"===t?i.innerHTML=n:i.setAttribute(t,n);return i}const f=["a[href]","button:not([disabled])",'input:not([disabled]):not([type="hidden"])',"select:not([disabled])","textarea:not([disabled])",'[tabindex]:not([tabindex="-1"])'].join(", ");let b=0,x=0,v="",y="",w=0;const E={feedback:'<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"/></svg>',bug:'<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="m8 2 1.88 1.88"/><path d="M14.12 3.88 16 2"/><path d="M9 7.13v-1a3.003 3.003 0 1 1 6 0v1"/><path d="M12 20c-3.3 0-6-2.7-6-6v-3a4 4 0 0 1 4-4h4a4 4 0 0 1 4 4v3c0 3.3-2.7 6-6 6"/><path d="M12 20v-9"/><path d="M6.53 9C4.6 8.8 3 7.1 3 5"/><path d="M6 13H2"/><path d="M3 21c0-2.1 1.7-3.9 3.8-4"/><path d="M20.97 5c0 2.1-1.6 3.8-3.5 4"/><path d="M22 13h-4"/><path d="M17.2 17c2.1.1 3.8 1.9 3.8 4"/></svg>',feature:'<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="3"/><path d="M12 1v2"/><path d="M12 21v2"/><path d="M4.22 4.22l1.42 1.42"/><path d="M18.36 18.36l1.42 1.42"/><path d="M1 12h2"/><path d="M21 12h2"/><path d="M4.22 19.78l1.42-1.42"/><path d="M18.36 5.64l1.42-1.42"/></svg>',support:'<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><path d="M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3"/><path d="M12 17h.01"/></svg>',close:'<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="18" y1="6" x2="6" y2="18"/><line x1="6" y1="6" x2="18" y2="18"/></svg>',email:'<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect width="20" height="16" x="2" y="4" rx="2"/><path d="m22 7-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7"/></svg>',user:'<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2"/><circle cx="12" cy="7" r="4"/></svg>',subject:'<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M14.5 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7.5L14.5 2z"/><polyline points="14 2 14 8 20 8"/></svg>',send:'<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="22" y1="2" x2="11" y2="13"/><polygon points="22 2 15 22 11 13 2 9 22 2"/></svg>',success:'<svg xmlns="http://www.w3.org/2000/svg" width="52" height="52" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M22 11.08V12a10 10 0 1 1-5.93-9.14"/><polyline points="22 4 12 14.01 9 11.01"/></svg>',error:'<svg xmlns="http://www.w3.org/2000/svg" width="52" height="52" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><line x1="12" y1="8" x2="12" y2="12"/><line x1="12" y1="16" x2="12.01" y2="16"/></svg>',spinner:'<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round"><path d="M21 12a9 9 0 1 1-6.219-8.56"/></svg>',trigger:'<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"/></svg>',warning:'<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3Z"/><line x1="12" y1="9" x2="12" y2="13"/><line x1="12" y1="17" x2="12.01" y2="17"/></svg>'};function C(t){return E[t]||E.support}class F{constructor(t,e){this.hostEl=null,this.shadow=null,this.overlay=null,this.modalEl=null,this.bodyContainer=null,this.isOpen=!1,this.state="idle",this.mountTime=0,this.destroyFocusTrap=null,this.boundEscapeHandler=null,this.emailInput=null,this.nameInput=null,this.subjectInput=null,this.messageInput=null,this.honeypotInput=null,this.charCountText=null,this.charCountFill=null,this.submitBtn=null,this.categoryBtns=[],this.config=s(t),this.events=e,this.selectedCategory=this.config.defaultCategory,this.instanceId=function(t="cg"){return`${t}-${++w}-${Date.now().toString(36)}`}("cg-modal"),this.rateLimiter=new h(this.config.rateLimitMax,this.config.rateLimitWindow)}open(){var t,e,n;this.isOpen||(this.hostEl||this.mount(),this.isOpen=!0,this.mountTime=Date.now(),requestAnimationFrame(()=>{var t;null===(t=this.overlay)||void 0===t||t.classList.add("cg-overlay--visible")}),b++,b>1||(x=window.innerWidth-document.documentElement.clientWidth,y=document.body.style.overflow,v=document.body.style.paddingRight,document.body.style.overflow="hidden",x>0&&(document.body.style.paddingRight=`${x}px`)),this.modalEl&&(this.destroyFocusTrap=function(t){const e=document.activeElement;function n(){return Array.from(t.querySelectorAll(f)).filter(t=>{const e=window.getComputedStyle(t);return"none"!==e.display&&"hidden"!==e.visibility})}function i(e){if("Tab"!==e.key)return;const i=n();if(0===i.length)return void e.preventDefault();const o=i[0],s=i[i.length-1];e.shiftKey?document.activeElement!==o&&t.contains(document.activeElement)||(e.preventDefault(),s.focus()):document.activeElement!==s&&t.contains(document.activeElement)||(e.preventDefault(),o.focus())}return t.addEventListener("keydown",i),requestAnimationFrame(()=>{const t=n();t.length>0&&t[0].focus()}),()=>{if(t.removeEventListener("keydown",i),e&&"function"==typeof e.focus)try{e.focus()}catch(t){}}}(this.modalEl)),this.config.closeOnEscape&&(this.boundEscapeHandler=t=>{"Escape"===t.key&&this.close()},document.addEventListener("keydown",this.boundEscapeHandler)),null===(t=this.overlay)||void 0===t||t.setAttribute("aria-hidden","false"),this.events.emit("open"),null===(n=(e=this.config).onOpen)||void 0===n||n.call(e))}close(){var t,e,n;this.isOpen&&this.overlay&&(this.isOpen=!1,this.overlay.classList.remove("cg-overlay--visible"),this.overlay.setAttribute("aria-hidden","true"),b=Math.max(0,b-1),b>0||(document.body.style.overflow=y,document.body.style.paddingRight=v),null===(t=this.destroyFocusTrap)||void 0===t||t.call(this),this.destroyFocusTrap=null,this.boundEscapeHandler&&(document.removeEventListener("keydown",this.boundEscapeHandler),this.boundEscapeHandler=null),this.events.emit("close"),null===(n=(e=this.config).onClose)||void 0===n||n.call(e),setTimeout(()=>{"idle"!==this.state&&this.setState("idle")},300))}destroy(){this.close(),this.hostEl&&(this.hostEl.remove(),this.hostEl=null,this.shadow=null,this.overlay=null,this.modalEl=null,this.bodyContainer=null)}updateConfig(t){this.config=s(t),this.shadow&&this.applyTheme()}updateTheme(t){t&&(this.config=s({...this.config,theme:{...this.config.theme,...t}}),this.shadow&&this.applyTheme(),this.events.emit("theme-change",t))}getState(){return this.state}isVisible(){return this.isOpen}mount(){this.hostEl=m("div",{id:this.instanceId}),this.hostEl.style.cssText="position:fixed;top:0;left:0;width:0;height:0;overflow:visible;z-index:"+this.config.zIndex,this.shadow=this.hostEl.attachShadow({mode:"open"});const t=document.createElement("style");t.textContent="\n/* ═══ Reset ═══ */\n*, *::before, *::after {\n box-sizing: border-box;\n margin: 0;\n padding: 0;\n}\n\n/* ═══ Overlay ═══ */\n.cg-overlay {\n position: fixed;\n inset: 0;\n background: rgba(0, 0, 0, 0.5);\n backdrop-filter: blur(4px);\n -webkit-backdrop-filter: blur(4px);\n z-index: var(--cg-z, 999999);\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 16px;\n opacity: 0;\n visibility: hidden;\n transition: opacity 0.25s ease, visibility 0.25s ease;\n font-family: var(--cg-font);\n color: var(--cg-text);\n line-height: 1.5;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\n.cg-overlay--visible {\n opacity: 1;\n visibility: visible;\n}\n\n/* ═══ Modal Shell ═══ */\n.cg-modal {\n background: var(--cg-bg, #FFFFFF);\n border-radius: var(--cg-modal-radius, 16px);\n box-shadow: var(--cg-shadow, 0 25px 60px rgba(0,0,0,0.3));\n width: 100%;\n max-width: 520px;\n max-height: 90vh;\n overflow: hidden;\n display: flex;\n flex-direction: column;\n transform: translateY(20px) scale(0.97);\n opacity: 0;\n transition:\n transform 0.3s cubic-bezier(0.16, 1, 0.3, 1),\n opacity 0.3s cubic-bezier(0.16, 1, 0.3, 1);\n}\n\n.cg-overlay--visible .cg-modal {\n transform: translateY(0) scale(1);\n opacity: 1;\n}\n\n/* ═══ Header ═══ */\n.cg-header {\n background: var(--cg-header-bg, #2C3345);\n color: var(--cg-header-text, #FFFFFF);\n padding: 20px 24px;\n display: flex;\n align-items: center;\n gap: 14px;\n position: relative;\n flex-shrink: 0;\n}\n\n.cg-header__icon {\n width: 40px;\n height: 40px;\n background: rgba(255, 255, 255, 0.12);\n border-radius: 10px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n}\n.cg-header__icon svg { stroke: var(--cg-header-text, #FFFFFF); }\n\n.cg-header__info { flex: 1; min-width: 0; }\n\n.cg-header__title {\n font-size: 17px;\n font-weight: 600;\n letter-spacing: -0.01em;\n color: inherit;\n}\n\n.cg-header__subtitle {\n font-size: 13px;\n opacity: 0.75;\n margin-top: 2px;\n color: inherit;\n}\n\n/* ── Close Button ── */\n.cg-close-btn {\n position: absolute;\n top: 16px;\n right: 16px;\n width: 32px;\n height: 32px;\n background: rgba(255, 255, 255, 0.1);\n border: none;\n border-radius: 8px;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: background 0.2s;\n color: var(--cg-header-text, #FFFFFF);\n padding: 0;\n}\n.cg-close-btn:hover { background: rgba(255, 255, 255, 0.2); }\n.cg-close-btn:focus-visible {\n outline: 2px solid rgba(255, 255, 255, 0.6);\n outline-offset: 2px;\n}\n.cg-close-btn svg { stroke: var(--cg-header-text, #FFFFFF); }\n\n/* ═══ Body (scrollable) ═══ */\n.cg-body {\n padding: 24px;\n overflow-y: auto;\n flex: 1;\n scrollbar-width: thin;\n scrollbar-color: rgba(0,0,0,0.15) transparent;\n}\n.cg-body::-webkit-scrollbar { width: 6px; }\n.cg-body::-webkit-scrollbar-track { background: transparent; }\n.cg-body::-webkit-scrollbar-thumb {\n background: rgba(0,0,0,0.15);\n border-radius: 3px;\n}\n\n/* ═══ Labels ═══ */\n.cg-label {\n display: block;\n font-size: 13px;\n font-weight: 500;\n color: var(--cg-primary, #EE6055);\n margin-bottom: 6px;\n}\n.cg-label--required::after {\n content: ' *';\n color: var(--cg-primary, #EE6055);\n}\n.cg-label--optional::after {\n content: '(Optional)';\n color: var(--cg-text, #6B7280);\n font-weight: 400;\n margin-left: 4px;\n font-size: 12px;\n}\n\n/* ═══ Categories ═══ */\n.cg-categories {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 8px;\n margin-bottom: 20px;\n}\n\n.cg-cat-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n padding: 10px 12px;\n border: 1.5px solid #E5E7EB;\n border-radius: var(--cg-radius, 8px);\n background: transparent;\n font-size: 13px;\n font-weight: 500;\n color: var(--cg-text, #6B7280);\n cursor: pointer;\n transition: all 0.2s;\n font-family: inherit;\n outline: none;\n}\n.cg-cat-btn:hover {\n border-color: var(--cg-primary, #EE6055);\n color: var(--cg-primary, #EE6055);\n}\n.cg-cat-btn:focus-visible {\n outline: 2px solid var(--cg-primary, #EE6055);\n outline-offset: 2px;\n}\n.cg-cat-btn--active {\n background: var(--cg-primary, #EE6055);\n border-color: var(--cg-primary, #EE6055);\n color: #FFFFFF;\n}\n.cg-cat-btn--active svg { stroke: #FFFFFF; }\n\n/* ═══ Form Fields ═══ */\n.cg-field {\n margin-bottom: 16px;\n}\n\n.cg-input-wrap {\n position: relative;\n display: flex;\n align-items: center;\n}\n\n.cg-input-wrap__icon {\n position: absolute;\n left: 14px;\n display: flex;\n align-items: center;\n pointer-events: none;\n color: var(--cg-input-placeholder, #9CA3AF);\n}\n.cg-input-wrap__icon svg {\n stroke: var(--cg-input-placeholder, #9CA3AF);\n}\n\n.cg-input {\n width: 100%;\n padding: 12px 14px 12px 42px;\n background: var(--cg-input-bg, #1E2535);\n color: var(--cg-input-text, #FFFFFF);\n border: 1.5px solid transparent;\n border-radius: var(--cg-radius, 8px);\n font-size: 14px;\n font-family: inherit;\n outline: none;\n transition: border-color 0.2s, box-shadow 0.2s;\n}\n.cg-input::placeholder {\n color: var(--cg-input-placeholder, #9CA3AF);\n}\n.cg-input:focus {\n border-color: var(--cg-primary, #EE6055);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--cg-primary, #EE6055) 15%, transparent);\n}\n.cg-input--error {\n border-color: #EF4444 !important;\n box-shadow: 0 0 0 3px rgba(239, 68, 68, 0.15) !important;\n}\n\n/* ═══ Textarea ═══ */\n.cg-textarea {\n width: 100%;\n padding: 14px;\n background: var(--cg-input-bg, #1E2535);\n color: var(--cg-input-text, #FFFFFF);\n border: 1.5px solid transparent;\n border-radius: var(--cg-radius, 8px);\n font-size: 14px;\n font-family: inherit;\n outline: none;\n resize: vertical;\n min-height: 120px;\n max-height: 240px;\n transition: border-color 0.2s, box-shadow 0.2s;\n}\n.cg-textarea::placeholder {\n color: var(--cg-input-placeholder, #9CA3AF);\n}\n.cg-textarea:focus {\n border-color: var(--cg-primary, #EE6055);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--cg-primary, #EE6055) 15%, transparent);\n}\n.cg-textarea--error {\n border-color: #EF4444 !important;\n box-shadow: 0 0 0 3px rgba(239, 68, 68, 0.15) !important;\n}\n\n/* ═══ Character Counter ═══ */\n.cg-counter {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-top: 6px;\n}\n.cg-counter__bar {\n flex: 1;\n height: 3px;\n background: #E5E7EB;\n border-radius: 2px;\n overflow: hidden;\n}\n.cg-counter__fill {\n height: 100%;\n background: var(--cg-primary, #EE6055);\n border-radius: 2px;\n transition: width 0.2s;\n}\n.cg-counter__fill--warn { background: #F59E0B; }\n.cg-counter__fill--danger { background: #EF4444; }\n.cg-counter__text {\n font-size: 12px;\n color: var(--cg-text, #6B7280);\n white-space: nowrap;\n}\n\n/* ═══ Field Errors ═══ */\n.cg-error {\n font-size: 12px;\n color: #EF4444;\n margin-top: 4px;\n min-height: 0;\n overflow: hidden;\n max-height: 0;\n opacity: 0;\n transition: max-height 0.2s, opacity 0.2s, margin 0.2s;\n}\n.cg-error--visible {\n max-height: 40px;\n opacity: 1;\n margin-top: 4px;\n}\n\n/* ═══ Honeypot (hidden from humans) ═══ */\n.cg-hp {\n position: absolute;\n left: -9999px;\n top: -9999px;\n width: 1px;\n height: 1px;\n overflow: hidden;\n opacity: 0;\n pointer-events: none;\n tab-index: -1;\n}\n\n/* ═══ Submit Button ═══ */\n.cg-submit {\n width: 100%;\n padding: 14px;\n background: var(--cg-primary, #EE6055);\n color: #FFFFFF;\n border: none;\n border-radius: var(--cg-radius, 8px);\n font-size: 15px;\n font-weight: 600;\n font-family: inherit;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n transition: background 0.2s, transform 0.1s, box-shadow 0.2s;\n margin-top: 8px;\n outline: none;\n}\n.cg-submit svg { stroke: #FFFFFF; }\n.cg-submit:hover:not(:disabled) {\n background: var(--cg-secondary, #D94F44);\n}\n.cg-submit:active:not(:disabled) {\n transform: scale(0.98);\n}\n.cg-submit:focus-visible {\n outline: 2px solid var(--cg-primary, #EE6055);\n outline-offset: 2px;\n}\n.cg-submit:disabled {\n opacity: 0.65;\n cursor: not-allowed;\n}\n\n/* ═══ Spinner ═══ */\n.cg-spinner {\n display: inline-flex;\n animation: cg-spin 0.8s linear infinite;\n}\n.cg-spinner svg { stroke: #FFFFFF; }\n\n/* ═══ Success & Error State Views ═══ */\n.cg-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n text-align: center;\n padding: 40px 24px;\n min-height: 320px;\n animation: cg-fade-in 0.3s ease;\n}\n\n.cg-state__icon {\n margin-bottom: 20px;\n}\n.cg-state__icon--success svg { stroke: #10B981; }\n.cg-state__icon--error svg { stroke: #EF4444; }\n\n.cg-state__title {\n font-size: 20px;\n font-weight: 700;\n color: #1F2937;\n margin-bottom: 8px;\n}\n\n.cg-state__msg {\n font-size: 14px;\n color: var(--cg-text, #6B7280);\n max-width: 320px;\n line-height: 1.6;\n}\n\n.cg-state__btn {\n margin-top: 24px;\n padding: 10px 28px;\n background: var(--cg-primary, #EE6055);\n color: #FFFFFF;\n border: none;\n border-radius: var(--cg-radius, 8px);\n font-size: 14px;\n font-weight: 500;\n font-family: inherit;\n cursor: pointer;\n transition: background 0.2s;\n outline: none;\n}\n.cg-state__btn:hover {\n background: var(--cg-secondary, #D94F44);\n}\n.cg-state__btn:focus-visible {\n outline: 2px solid var(--cg-primary, #EE6055);\n outline-offset: 2px;\n}\n\n/* ═══ Animations ═══ */\n@keyframes cg-spin {\n from { transform: rotate(0deg); }\n to { transform: rotate(360deg); }\n}\n\n@keyframes cg-fade-in {\n from { opacity: 0; transform: translateY(8px); }\n to { opacity: 1; transform: translateY(0); }\n}\n\n/* ═══ Responsive ═══ */\n@media (max-width: 480px) {\n .cg-overlay { padding: 0; }\n .cg-modal {\n max-width: 100%;\n max-height: 100%;\n height: 100%;\n border-radius: 0;\n }\n .cg-body { padding: 16px; }\n .cg-categories { gap: 6px; }\n .cg-cat-btn { font-size: 12px; padding: 8px; gap: 5px; }\n .cg-header { padding: 16px 20px; }\n}\n\n/* ═══ Reduced Motion ═══ */\n@media (prefers-reduced-motion: reduce) {\n .cg-overlay,\n .cg-modal,\n .cg-spinner,\n .cg-state,\n .cg-submit,\n .cg-cat-btn,\n .cg-input,\n .cg-textarea,\n .cg-counter__fill,\n .cg-error {\n transition-duration: 0.01ms !important;\n animation-duration: 0.01ms !important;\n }\n}\n\n/* ═══ High Contrast Mode ═══ */\n@media (forced-colors: active) {\n .cg-cat-btn { border: 2px solid ButtonText; }\n .cg-cat-btn--active { background: Highlight; color: HighlightText; }\n .cg-input, .cg-textarea { border: 1px solid ButtonText; }\n .cg-submit { border: 2px solid ButtonText; }\n}\n",this.shadow.appendChild(t),this.overlay=m("div",{className:"cg-overlay",role:"dialog","aria-modal":"true","aria-label":this.config.texts.title,"aria-hidden":"true"}),this.config.closeOnOverlayClick&&this.overlay.addEventListener("click",t=>{t.target===this.overlay&&this.close()}),this.modalEl=m("div",{className:"cg-modal"}),this.modalEl.addEventListener("click",t=>t.stopPropagation()),this.modalEl.appendChild(this.buildHeader()),this.bodyContainer=m("div",{className:"cg-body"}),this.buildFormView(),this.modalEl.appendChild(this.bodyContainer),this.overlay.appendChild(this.modalEl),this.shadow.appendChild(this.overlay),this.applyTheme(),document.body.appendChild(this.hostEl)}applyTheme(){var t;const e=this.overlay||(null===(t=this.shadow)||void 0===t?void 0:t.host);if(!e)return;const n=this.config.theme;!function(t,e){for(const[n,i]of Object.entries(e)){const e=p(i);e&&t.style.setProperty(n,e)}}(e,{"--cg-primary":n.primaryColor,"--cg-secondary":n.secondaryColor,"--cg-bg":n.backgroundColor,"--cg-header-bg":n.headerBackgroundColor,"--cg-header-text":n.headerTextColor,"--cg-text":n.textColor,"--cg-input-bg":n.inputBackgroundColor,"--cg-input-text":n.inputTextColor,"--cg-input-placeholder":n.inputPlaceholderColor,"--cg-radius":n.borderRadius,"--cg-modal-radius":n.modalBorderRadius,"--cg-font":n.fontFamily,"--cg-shadow":n.boxShadow,"--cg-z":String(this.config.zIndex)})}buildHeader(){const t=this.config.texts,e=m("div",{className:"cg-header"}),n=m("div",{className:"cg-header__icon",innerHTML:E.feedback}),i=m("div",{className:"cg-header__info"});i.appendChild(m("h2",{className:"cg-header__title",textContent:t.title,id:`${this.instanceId}-title`})),i.appendChild(m("p",{className:"cg-header__subtitle",textContent:t.subtitle}));const o=m("button",{className:"cg-close-btn","aria-label":"Close dialog",type:"button",innerHTML:E.close});return o.addEventListener("click",()=>this.close()),e.append(n,i,o),e}buildFormView(){if(!this.bodyContainer)return;this.bodyContainer.innerHTML="",this.categoryBtns=[];const t=this.config.texts;if(this.config.showCategories&&this.config.categories.length>1){const e=m("div",{className:"cg-label",textContent:t.categoryLabel,id:`${this.instanceId}-cat-label`});this.bodyContainer.appendChild(e);const n=m("div",{className:"cg-categories",role:"radiogroup","aria-labelledby":`${this.instanceId}-cat-label`});for(let e=0;e<this.config.categories.length;e++){const i=this.config.categories[e],o=t.categories[i]||i,s=i===this.selectedCategory,r=m("button",{className:"cg-cat-btn"+(s?" cg-cat-btn--active":""),type:"button",role:"radio","aria-checked":String(s),tabindex:s?"0":"-1"});r.innerHTML=C(i),r.appendChild(document.createTextNode(" "+o)),r.dataset.type=i,r.addEventListener("click",()=>this.selectCategory(i)),r.addEventListener("keydown",t=>{const n=this.categoryBtns.length;if("ArrowRight"===t.key||"ArrowDown"===t.key){t.preventDefault();const i=this.categoryBtns[(e+1)%n];this.selectCategory(i.dataset.type),i.focus()}else if("ArrowLeft"===t.key||"ArrowUp"===t.key){t.preventDefault();const i=this.categoryBtns[(e-1+n)%n];this.selectCategory(i.dataset.type),i.focus()}}),this.categoryBtns.push(r),n.appendChild(r)}this.bodyContainer.appendChild(n)}const e=this.buildField({label:t.emailLabel,placeholder:t.emailPlaceholder,type:"email",icon:E.email,required:!0,id:`${this.instanceId}-email`,autocomplete:"email"});if(this.emailInput=e.querySelector("input"),this.config.defaultEmail&&(this.emailInput.value=this.config.defaultEmail),this.bodyContainer.appendChild(e),this.config.showNameField){const e=this.buildField({label:t.nameLabel,placeholder:t.namePlaceholder,type:"text",icon:E.user,required:!1,id:`${this.instanceId}-name`,autocomplete:"name"});this.nameInput=e.querySelector("input"),this.config.defaultName&&(this.nameInput.value=this.config.defaultName),this.bodyContainer.appendChild(e)}else this.nameInput=null;const n=this.buildField({label:t.subjectLabel,placeholder:t.subjectPlaceholder,type:"text",icon:E.subject,required:!0,id:`${this.instanceId}-subject`,autocomplete:"off"});this.subjectInput=n.querySelector("input"),this.bodyContainer.appendChild(n);const i=m("div",{className:"cg-field"}),o=m("label",{className:"cg-label cg-label--required",textContent:t.messageLabel});o.setAttribute("for",`${this.instanceId}-msg`),i.appendChild(o),this.messageInput=document.createElement("textarea"),this.messageInput.className="cg-textarea",this.messageInput.id=`${this.instanceId}-msg`,this.messageInput.placeholder=t.messagePlaceholder,this.messageInput.setAttribute("maxlength",String(this.config.maxMessageLength)),this.messageInput.setAttribute("aria-required","true"),this.messageInput.setAttribute("aria-describedby",`${this.instanceId}-char-count`),i.appendChild(this.messageInput);const s=m("div",{className:"cg-counter",id:`${this.instanceId}-char-count`}),r=m("div",{className:"cg-counter__bar"});this.charCountFill=m("div",{className:"cg-counter__fill"}),this.charCountFill.style.width="0%",r.appendChild(this.charCountFill),this.charCountText=m("span",{className:"cg-counter__text",textContent:`0 / ${this.config.maxMessageLength}`,"aria-live":"polite"}),s.append(r,this.charCountText),i.appendChild(s);const a=m("div",{className:"cg-error",role:"alert","aria-live":"polite"});if(i.appendChild(a),this.messageInput.addEventListener("input",()=>this.updateCharCount()),i.dataset.fieldName="message",this.bodyContainer.appendChild(i),this.config.enableHoneypot){const t=m("div",{className:"cg-hp","aria-hidden":"true"});this.honeypotInput=document.createElement("input"),this.honeypotInput.type="text",this.honeypotInput.name="website",this.honeypotInput.tabIndex=-1,this.honeypotInput.autocomplete="off",t.appendChild(this.honeypotInput),this.bodyContainer.appendChild(t)}else this.honeypotInput=null;this.submitBtn=document.createElement("button"),this.submitBtn.className="cg-submit",this.submitBtn.type="button",this.submitBtn.setAttribute("aria-label",t.submitButtonText),this.submitBtn.innerHTML=`${E.send} <span>${t.submitButtonText}</span>`,this.submitBtn.addEventListener("click",()=>this.handleSubmit()),this.bodyContainer.appendChild(this.submitBtn)}buildField(t){const e=m("div",{className:"cg-field"});e.dataset.fieldName=t.id;const n=m("label",{className:t.required?"cg-label cg-label--required":"cg-label cg-label--optional",textContent:t.label});n.setAttribute("for",t.id),e.appendChild(n);const i=m("div",{className:"cg-input-wrap"}),o=m("span",{className:"cg-input-wrap__icon",innerHTML:t.icon,"aria-hidden":"true"}),s=document.createElement("input");s.className="cg-input",s.type=t.type,s.id=t.id,s.placeholder=t.placeholder,s.setAttribute("autocomplete",t.autocomplete),t.required&&(s.setAttribute("aria-required","true"),s.required=!0),s.addEventListener("input",()=>{this.clearFieldError(e)}),i.append(o,s),e.appendChild(i);const r=m("div",{className:"cg-error",role:"alert","aria-live":"polite"});return e.appendChild(r),e}selectCategory(t){this.selectedCategory=t;for(const e of this.categoryBtns){const n=e.dataset.type===t;e.classList.toggle("cg-cat-btn--active",n),e.setAttribute("aria-checked",String(n)),e.tabIndex=n?0:-1}}updateCharCount(){if(!this.messageInput||!this.charCountText||!this.charCountFill)return;const t=this.messageInput.value.length,e=this.config.maxMessageLength,n=Math.min(t/e*100,100);this.charCountFill.style.width=`${n}%`,this.charCountText.textContent=`${t} / ${e}`,this.charCountFill.classList.remove("cg-counter__fill--warn","cg-counter__fill--danger"),n>=95?this.charCountFill.classList.add("cg-counter__fill--danger"):n>=80&&this.charCountFill.classList.add("cg-counter__fill--warn");const i=this.messageInput.closest(".cg-field");i&&this.clearFieldError(i)}validate(){const t=this.config.texts;let e=!0;return!!this.emailInput&&(function(t){if("string"!=typeof t)return!1;const e=t.trim();return!(0===e.length||e.length>254)&&!/[\r\n]/.test(e)&&/^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+$/.test(e)}(this.emailInput.value.trim())||(this.showFieldError(this.emailInput,t.invalidEmailError),e&&this.emailInput.focus(),e=!1),!!this.subjectInput&&(g(this.subjectInput.value)||(this.showFieldError(this.subjectInput,t.requiredFieldError),e&&this.subjectInput.focus(),e=!1),!!this.messageInput&&(g(this.messageInput.value)?"string"==typeof(n=this.messageInput.value)&&n.length<=this.config.maxMessageLength||(this.showTextareaError(this.messageInput,t.messageTooLongError),e&&this.messageInput.focus(),e=!1):(this.showTextareaError(this.messageInput,t.requiredFieldError),e&&this.messageInput.focus(),e=!1),e)));var n}showFieldError(t,e){const n=t.closest(".cg-field");if(!n)return;t.classList.add("cg-input--error"),t.setAttribute("aria-invalid","true");const i=n.querySelector(".cg-error");i&&(i.textContent=e,i.classList.add("cg-error--visible"))}showTextareaError(t,e){const n=t.closest(".cg-field");if(!n)return;t.classList.add("cg-textarea--error"),t.setAttribute("aria-invalid","true");const i=n.querySelector(".cg-error");i&&(i.textContent=e,i.classList.add("cg-error--visible"))}clearFieldError(t){const e=t.querySelector("input, textarea");e&&(e.classList.remove("cg-input--error","cg-textarea--error"),e.removeAttribute("aria-invalid"));const n=t.querySelector(".cg-error");n&&(n.textContent="",n.classList.remove("cg-error--visible"))}setState(t){this.state=t,this.events.emit("state-change",t),"idle"===t&&this.bodyContainer&&this.buildFormView()}showStateView(t,e,n){if(!this.bodyContainer)return;this.bodyContainer.innerHTML="";const i=this.config.texts,o=m("div",{className:"cg-state",role:"status","aria-live":"polite"}),s=m("div",{className:`cg-state__icon cg-state__icon--${t}`,innerHTML:"success"===t?E.success:E.error,"aria-hidden":"true"}),r=m("h3",{className:"cg-state__title",textContent:e}),a=m("p",{className:"cg-state__msg",textContent:n}),l=m("button",{className:"cg-state__btn",type:"button",textContent:"success"===t?i.successButtonText:i.errorButtonText});l.addEventListener("click",()=>{"success"===t?this.close():this.setState("idle")}),o.append(s,r,a,l),this.bodyContainer.appendChild(o),requestAnimationFrame(()=>l.focus())}async handleSubmit(){var e,n,i,o,s,r,a;if("loading"===this.state)return;if(!this.validate())return;if(this.config.enableHoneypot&&(null===(e=this.honeypotInput)||void 0===e?void 0:e.value))return this.setState("success"),void this.showStateView("success",this.config.texts.successTitle,this.config.texts.successMessage);if((Date.now()-this.mountTime)/1e3<this.config.minSubmitDelay)return this.setState("success"),void this.showStateView("success",this.config.texts.successTitle,this.config.texts.successMessage);if(!this.rateLimiter.tryConsume()){const e=this.rateLimiter.getRetryAfter(),o=new t(`${this.config.texts.rateLimitError} Try again in ${e}s.`,"RATE_LIMITED");return this.setState("error"),this.showStateView("error",this.config.texts.errorTitle,o.message),null===(i=(n=this.config).onError)||void 0===i||i.call(n,o),void this.events.emit("error",o)}const h={domain:this.config.domain,email:u(this.emailInput.value),name:this.nameInput&&u(this.nameInput.value)||void 0,title:u(this.subjectInput.value),type:this.selectedCategory,messageText:u(this.messageInput.value)};if(!this.config.onSubmit||!1!==this.config.onSubmit(h)){this.events.emit("submit",h),this.state="loading",this.events.emit("state-change","loading"),this.submitBtn.disabled=!0,this.submitBtn.innerHTML=`<span class="cg-spinner">${E.spinner}</span> <span>${this.config.texts.submittingText}</span>`;try{const e=await async function(e,n,i){var o;const{timeout:s,retries:r}=i;let a=null;for(let t=0;t<=r;t++){if(t>0){const e=Math.min(1e3*Math.pow(2,t-1),8e3);await c(e)}try{return await l(e,n,s)}catch(e){if(a=d(e),!("NETWORK_ERROR"===a.code||"TIMEOUT"===a.code||"SERVER_ERROR"===a.code&&(null!==(o=a.statusCode)&&void 0!==o?o:0)>=500)||t===r)throw a}}throw a||new t("Unknown error","UNKNOWN")}(this.config.apiBaseUrl,h,{timeout:this.config.requestTimeout,retries:this.config.retryAttempts});this.setState("success"),this.showStateView("success",this.config.texts.successTitle,this.config.texts.successMessage),null===(s=(o=this.config).onSuccess)||void 0===s||s.call(o,e),this.events.emit("success",e),this.config.autoResetDelay>0&&setTimeout(()=>{"success"===this.state&&this.close()},this.config.autoResetDelay)}catch(e){const n=e instanceof t?e:new t(e instanceof Error?e.message:"An unexpected error occurred","UNKNOWN");this.setState("error");let i=this.config.texts.errorMessage;"TIMEOUT"===n.code?i=this.config.texts.timeoutError:"NETWORK_ERROR"===n.code?i=this.config.texts.networkError:"RATE_LIMITED"===n.code?i=this.config.texts.rateLimitError:"VALIDATION_ERROR"===n.code&&n.message&&(i=n.message),this.showStateView("error",this.config.texts.errorTitle,i),null===(a=(r=this.config).onError)||void 0===a||a.call(r,n),this.events.emit("error",n)}}}}class k{constructor(t,e){this.el=null,this.hostEl=null,this.shadow=null,this.config=t,this.onClick=e}mount(){if(this.el)return;this.hostEl=document.createElement("div"),this.hostEl.style.cssText="position:fixed;bottom:0;left:0;width:0;height:0;overflow:visible;z-index:"+(this.config.zIndex-1),this.shadow=this.hostEl.attachShadow({mode:"open"});const t=this.config.triggerPosition,e=this.config.theme,n=document.createElement("style");n.textContent=`\n .cg-trigger {\n position: fixed;\n bottom: 20px;\n ${"bottom-left"===t?"left: 20px;":"right: 20px;"}\n width: 56px;\n height: 56px;\n border-radius: 50%;\n background: ${e.primaryColor};\n color: #FFFFFF;\n border: none;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n box-shadow: 0 4px 14px rgba(0,0,0,0.25);\n transition: transform 0.2s ease, box-shadow 0.2s ease, opacity 0.25s ease;\n z-index: ${this.config.zIndex-1};\n padding: 0;\n outline: none;\n }\n .cg-trigger:hover {\n transform: scale(1.08);\n box-shadow: 0 6px 20px rgba(0,0,0,0.35);\n }\n .cg-trigger:focus-visible {\n outline: 2px solid ${e.primaryColor};\n outline-offset: 3px;\n }\n .cg-trigger:active {\n transform: scale(0.95);\n }\n .cg-trigger svg {\n stroke: #FFFFFF;\n }\n .cg-trigger--hidden {\n opacity: 0;\n pointer-events: none;\n transform: scale(0.8);\n }\n .cg-trigger__label {\n position: absolute;\n ${"bottom-left"===t?"left: 64px;":"right: 64px;"}\n background: #1F2937;\n color: #FFFFFF;\n font-family: ${e.fontFamily};\n font-size: 13px;\n font-weight: 500;\n padding: 6px 12px;\n border-radius: 6px;\n white-space: nowrap;\n pointer-events: none;\n opacity: 0;\n transition: opacity 0.2s;\n box-shadow: 0 2px 8px rgba(0,0,0,0.2);\n }\n .cg-trigger:hover .cg-trigger__label {\n opacity: 1;\n }\n `,this.shadow.appendChild(n),this.el=document.createElement("button"),this.el.className="cg-trigger",this.el.setAttribute("aria-label","Need Help? Contact Support"),this.el.setAttribute("type","button"),this.el.innerHTML=E.trigger;const i=document.createElement("span");i.className="cg-trigger__label",i.textContent="Need Help?",this.el.appendChild(i),this.el.addEventListener("click",this.onClick),this.shadow.appendChild(this.el),document.body.appendChild(this.hostEl)}destroy(){this.el&&this.el.removeEventListener("click",this.onClick),this.hostEl&&(this.hostEl.remove(),this.hostEl=null,this.shadow=null,this.el=null)}show(){var t;null===(t=this.el)||void 0===t||t.classList.remove("cg-trigger--hidden")}hide(){var t;null===(t=this.el)||void 0===t||t.classList.add("cg-trigger--hidden")}updateTheme(t){this.el&&(this.el.style.background=t)}}let T=null,_=null,I=null,L=null;function M(t){T&&A(),"undefined"!=typeof window&&"undefined"!=typeof document?(L=s(t),I=new a,L.onOpen&&I.on("open",L.onOpen),L.onClose&&I.on("close",L.onClose),L.onSuccess&&I.on("success",L.onSuccess),L.onError&&I.on("error",L.onError),T=new F(t,I),L.showTriggerButton&&(_=new k(L,()=>N()),_.mount())):console.warn("[chatgram-widget] Cannot initialize in a non-browser environment.")}function N(){if(!T)throw new t("Call init() before open(). See: https://brandid.app/chatgram","NOT_INITIALIZED");T.open(),null==_||_.hide()}function S(){T&&(T.close(),null==_||_.show())}function A(){null==T||T.destroy(),T=null,null==_||_.destroy(),_=null,null==I||I.removeAllListeners(),I=null,L=null}function B(e){if(!T)throw new t("Call init() before updateTheme().","NOT_INITIALIZED");T.updateTheme(e),e.primaryColor&&(null==_||_.updateTheme(e.primaryColor))}function O(t,e){null==I||I.on(t,e)}function R(t,e){null==I||I.off(t,e)}function j(t,e){null==I||I.once(t,e)}function z(){var t;return null!==(t=null==T?void 0:T.isVisible())&&void 0!==t&&t}function H(){var t;return null!==(t=null==T?void 0:T.getState())&&void 0!==t?t:"uninitialized"}function $(){return"1.0.2"}var q={init:M,open:N,close:S,destroy:A,updateTheme:B,on:O,off:R,once:j,isOpen:z,getState:H,getVersion:$,ChatgramError:t};exports.ChatgramError=t,exports.close=S,exports.default=q,exports.destroy=A,exports.getState=H,exports.getVersion=$,exports.init=M,exports.isOpen=z,exports.off=R,exports.on=O,exports.once=j,exports.open=N,exports.updateTheme=B;
|
|
2
2
|
//# sourceMappingURL=chatgram-widget.cjs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chatgram-widget.cjs.js","sources":["../src/core/types.ts","../src/core/config.ts","../src/core/events.ts","../src/core/api.ts","../src/core/rate-limiter.ts","../src/utils/sanitize.ts","../src/utils/dom.ts","../src/ui/icons.ts","../src/ui/modal.ts","../src/styles/widget-css.ts","../src/ui/trigger.ts","../src/index.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null],"names":["ChatgramError","Error","constructor","message","code","statusCode","super","this","name","DEFAULT_THEME","primaryColor","secondaryColor","backgroundColor","headerBackgroundColor","headerTextColor","textColor","inputBackgroundColor","inputTextColor","inputPlaceholderColor","borderRadius","modalBorderRadius","fontFamily","boxShadow","DEFAULT_TEXTS","title","subtitle","categoryLabel","emailLabel","emailPlaceholder","nameLabel","namePlaceholder","subjectLabel","subjectPlaceholder","messageLabel","messagePlaceholder","submitButtonText","submittingText","successTitle","successMessage","successButtonText","errorTitle","errorMessage","errorButtonText","requiredFieldError","invalidEmailError","messageTooLongError","networkError","timeoutError","rateLimitError","categories","feedback","bug","feature","support","ALL_CATEGORIES","deepMerge","defaults","overrides","result","key","Object","keys","overrideVal","defaultVal","undefined","Array","isArray","resolveConfig","userConfig","apiKey","trim","domain","window","location","hostname","apiBaseUrl","replace","theme","texts","length","defaultCategory","maxMessageLength","clamp","_a","showTriggerButton","_b","triggerPosition","showNameField","_c","showCategories","_d","zIndex","_e","closeOnOverlayClick","_f","closeOnEscape","_g","enableHoneypot","_h","minSubmitDelay","_j","rateLimitMax","_k","rateLimitWindow","_l","requestTimeout","_m","retryAttempts","_o","autoResetDelay","Math","max","_p","defaultEmail","defaultName","onSuccess","onError","onOpen","onClose","onSubmit","value","min","EventEmitter","listeners","Map","on","event","handler","has","set","Set","get","add","off","delete","once","wrapper","data","emit","handlers","err","console","error","removeAllListeners","clear","async","doRequest","baseUrl","payload","timeout","controller","AbortController","timeoutId","setTimeout","abort","url","response","fetch","method","headers","Accept","body","JSON","stringify","signal","clearTimeout","json","ok","status","success","ticketId","id","_id","DOMException","TypeError","sleep","ms","Promise","resolve","toChatgramError","String","RateLimiter","maxRequests","windowMs","timestamps","tryConsume","now","Date","filter","t","push","getRetryAfter","oldest","retryMs","ceil","reset","sanitizeForPayload","input","isNonEmpty","sanitizeThemeValue","test","isSafeCssValue","el","tag","attrs","children","elem","document","createElement","entries","className","textContent","innerHTML","setAttribute","FOCUSABLE_SELECTOR","join","scrollLockCount","savedScrollbarWidth","savedBodyPaddingRight","savedBodyOverflow","idCounter","ICONS","close","email","user","subject","send","spinner","trigger","warning","getCategoryIcon","type","Modal","config","events","hostEl","shadow","overlay","modalEl","bodyContainer","isOpen","state","mountTime","destroyFocusTrap","boundEscapeHandler","emailInput","nameInput","subjectInput","messageInput","honeypotInput","charCountText","charCountFill","submitBtn","categoryBtns","selectedCategory","instanceId","prefix","toString","uid","rateLimiter","open","mount","requestAnimationFrame","classList","innerWidth","documentElement","clientWidth","style","overflow","paddingRight","container","previouslyFocused","activeElement","getFocusableElements","from","querySelectorAll","getComputedStyle","display","visibility","handleKeyDown","e","focusable","preventDefault","first","last","shiftKey","contains","focus","addEventListener","removeEventListener","createFocusTrap","remove","call","setState","destroy","updateConfig","newConfig","applyTheme","updateTheme","getState","isVisible","cssText","attachShadow","mode","appendChild","role","target","stopPropagation","buildHeader","buildFormView","host","element","vars","prop","safe","setProperty","applyThemeVars","header","iconWrap","textWrap","closeBtn","append","catLabel","catGrid","i","cat","label","isActive","btn","tabindex","createTextNode","dataset","selectCategory","len","next","prev","emailField","buildField","placeholder","icon","required","autocomplete","querySelector","nameField","subjectField","msgField","msgLabel","counter","counterBar","width","msgError","updateCharCount","fieldName","honeypotField","tabIndex","handleSubmit","opts","field","clearFieldError","errorEl","toggle","pct","closest","validate","valid","trimmed","isValidEmail","showFieldError","showTextareaError","textarea","removeAttribute","newState","showStateView","view","titleEl","msgEl","retryAfter","messageText","disabled","options","retries","lastError","attempt","delay","pow","submitTicket","chatgramErr","userMessage","TriggerButton","onClick","pos","tooltip","show","hide","background","modal","resolvedConfig","init","warn","getVersion","index"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"chatgram-widget.cjs.js","sources":["../src/core/types.ts","../src/core/config.ts","../src/core/events.ts","../src/core/api.ts","../src/core/rate-limiter.ts","../src/utils/sanitize.ts","../src/utils/dom.ts","../src/ui/icons.ts","../src/ui/modal.ts","../src/styles/widget-css.ts","../src/ui/trigger.ts","../src/index.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null],"names":["ChatgramError","Error","constructor","message","code","statusCode","super","this","name","DEFAULT_THEME","primaryColor","secondaryColor","backgroundColor","headerBackgroundColor","headerTextColor","textColor","inputBackgroundColor","inputTextColor","inputPlaceholderColor","borderRadius","modalBorderRadius","fontFamily","boxShadow","DEFAULT_TEXTS","title","subtitle","categoryLabel","emailLabel","emailPlaceholder","nameLabel","namePlaceholder","subjectLabel","subjectPlaceholder","messageLabel","messagePlaceholder","submitButtonText","submittingText","successTitle","successMessage","successButtonText","errorTitle","errorMessage","errorButtonText","requiredFieldError","invalidEmailError","messageTooLongError","networkError","timeoutError","rateLimitError","categories","feedback","bug","feature","support","ALL_CATEGORIES","deepMerge","defaults","overrides","result","key","Object","keys","overrideVal","defaultVal","undefined","Array","isArray","resolveConfig","userConfig","domain","window","location","hostname","apiBaseUrl","replace","theme","texts","defaultCategory","showCategories","maxMessageLength","clamp","_a","showTriggerButton","_b","triggerPosition","showNameField","_c","zIndex","_d","closeOnOverlayClick","_e","closeOnEscape","_f","enableHoneypot","_g","minSubmitDelay","_h","rateLimitMax","_j","rateLimitWindow","_k","requestTimeout","_l","retryAttempts","_m","autoResetDelay","Math","max","_o","defaultEmail","defaultName","onSuccess","onError","onOpen","onClose","onSubmit","value","min","EventEmitter","listeners","Map","on","event","handler","has","set","Set","get","add","off","delete","once","wrapper","data","emit","handlers","err","console","error","removeAllListeners","clear","async","doRequest","baseUrl","payload","timeout","controller","AbortController","timeoutId","setTimeout","abort","url","response","fetch","method","headers","Accept","body","JSON","stringify","signal","clearTimeout","json","ok","status","success","ticketId","id","_id","DOMException","TypeError","sleep","ms","Promise","resolve","toChatgramError","String","RateLimiter","maxRequests","windowMs","timestamps","tryConsume","now","Date","filter","t","length","push","getRetryAfter","oldest","retryMs","ceil","reset","sanitizeForPayload","input","trim","isNonEmpty","sanitizeThemeValue","test","isSafeCssValue","el","tag","attrs","children","elem","document","createElement","entries","className","textContent","innerHTML","setAttribute","FOCUSABLE_SELECTOR","join","scrollLockCount","savedScrollbarWidth","savedBodyPaddingRight","savedBodyOverflow","idCounter","ICONS","close","email","user","subject","send","spinner","trigger","warning","getCategoryIcon","type","Modal","config","events","hostEl","shadow","overlay","modalEl","bodyContainer","isOpen","state","mountTime","destroyFocusTrap","boundEscapeHandler","emailInput","nameInput","subjectInput","messageInput","honeypotInput","charCountText","charCountFill","submitBtn","categoryBtns","selectedCategory","instanceId","prefix","toString","uid","rateLimiter","open","mount","requestAnimationFrame","classList","innerWidth","documentElement","clientWidth","style","overflow","paddingRight","container","previouslyFocused","activeElement","getFocusableElements","from","querySelectorAll","getComputedStyle","display","visibility","handleKeyDown","e","focusable","preventDefault","first","last","shiftKey","contains","focus","addEventListener","removeEventListener","createFocusTrap","remove","call","setState","destroy","updateConfig","newConfig","applyTheme","updateTheme","getState","isVisible","cssText","attachShadow","mode","appendChild","role","target","stopPropagation","buildHeader","buildFormView","host","element","vars","prop","safe","setProperty","applyThemeVars","header","iconWrap","textWrap","closeBtn","append","catLabel","catGrid","i","cat","label","isActive","btn","tabindex","createTextNode","dataset","selectCategory","len","next","prev","emailField","buildField","placeholder","icon","required","autocomplete","querySelector","nameField","subjectField","msgField","msgLabel","counter","counterBar","width","msgError","updateCharCount","fieldName","honeypotField","tabIndex","handleSubmit","opts","field","clearFieldError","errorEl","toggle","pct","closest","validate","valid","trimmed","isValidEmail","showFieldError","showTextareaError","textarea","removeAttribute","newState","showStateView","view","titleEl","msgEl","retryAfter","messageText","disabled","options","retries","lastError","attempt","delay","pow","submitTicket","chatgramErr","userMessage","TriggerButton","onClick","pos","tooltip","show","hide","background","modal","resolvedConfig","init","warn","getVersion","index"],"mappings":"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"}
|