@product7/feedback-sdk 1.0.8 → 1.0.9
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/dist/feedback-sdk.js +21 -38
- package/dist/feedback-sdk.js.map +1 -1
- package/dist/feedback-sdk.min.js +1 -1
- package/dist/feedback-sdk.min.js.map +1 -1
- package/package.json +1 -1
- package/src/styles/styles.js +15 -24
- package/src/widgets/ButtonWidget.js +6 -14
package/dist/feedback-sdk.js
CHANGED
|
@@ -970,12 +970,10 @@
|
|
|
970
970
|
const button = document.createElement('div');
|
|
971
971
|
button.className = `feedback-widget feedback-widget-button theme-${this.options.theme} position-${this.options.position}`;
|
|
972
972
|
button.innerHTML = `
|
|
973
|
-
<button class="feedback-trigger-btn" type="button">
|
|
974
|
-
<svg width="
|
|
975
|
-
<path d="
|
|
976
|
-
<path d="M18 8.118l-8 4-8-4V14a2 2 0 002 2h12a2 2 0 002-2V8.118z"/>
|
|
973
|
+
<button class="feedback-trigger-btn" type="button" aria-label="Send feedback">
|
|
974
|
+
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
|
975
|
+
<path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"/>
|
|
977
976
|
</svg>
|
|
978
|
-
Feedback
|
|
979
977
|
</button>
|
|
980
978
|
`;
|
|
981
979
|
|
|
@@ -992,23 +990,17 @@
|
|
|
992
990
|
|
|
993
991
|
button.addEventListener('mouseenter', () => {
|
|
994
992
|
if (!this.state.isSubmitting) {
|
|
995
|
-
button.style.transform = '
|
|
993
|
+
button.style.transform = 'scale(1.1)';
|
|
996
994
|
}
|
|
997
995
|
});
|
|
998
996
|
|
|
999
997
|
button.addEventListener('mouseleave', () => {
|
|
1000
|
-
button.style.transform = '
|
|
998
|
+
button.style.transform = 'scale(1)';
|
|
1001
999
|
});
|
|
1002
1000
|
}
|
|
1003
1001
|
|
|
1004
1002
|
updateText(text) {
|
|
1005
|
-
|
|
1006
|
-
if (button) {
|
|
1007
|
-
const textNode = button.childNodes[button.childNodes.length - 1];
|
|
1008
|
-
if (textNode && textNode.nodeType === Node.TEXT_NODE) {
|
|
1009
|
-
textNode.textContent = text;
|
|
1010
|
-
}
|
|
1011
|
-
}
|
|
1003
|
+
console.warn('ButtonWidget: Text display is disabled for circular design');
|
|
1012
1004
|
}
|
|
1013
1005
|
|
|
1014
1006
|
updatePosition(position) {
|
|
@@ -1574,40 +1566,31 @@
|
|
|
1574
1566
|
left: 20px;
|
|
1575
1567
|
}
|
|
1576
1568
|
|
|
1569
|
+
/* Circular button design */
|
|
1577
1570
|
.feedback-trigger-btn {
|
|
1578
|
-
|
|
1571
|
+
width: 56px;
|
|
1572
|
+
height: 56px;
|
|
1573
|
+
border-radius: 50%; /* Makes it circular */
|
|
1574
|
+
border: none;
|
|
1575
|
+
cursor: pointer;
|
|
1579
1576
|
display: flex;
|
|
1580
1577
|
align-items: center;
|
|
1581
1578
|
justify-content: center;
|
|
1582
|
-
|
|
1583
|
-
|
|
1584
|
-
|
|
1585
|
-
border-radius: 0.5rem;
|
|
1586
|
-
border: none;
|
|
1587
|
-
padding: 10px 16px;
|
|
1588
|
-
font-size: 14px;
|
|
1589
|
-
font-weight: 500;
|
|
1590
|
-
font-family: inherit;
|
|
1591
|
-
cursor: pointer;
|
|
1592
|
-
transition: all 0.3s ease;
|
|
1593
|
-
color: white;
|
|
1594
|
-
background: #155EEF;
|
|
1595
|
-
box-shadow: 0 1px 2px 0 rgba(16, 24, 40, 0.05);
|
|
1579
|
+
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
|
|
1580
|
+
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
|
|
1581
|
+
padding: 0;
|
|
1596
1582
|
}
|
|
1597
1583
|
|
|
1598
|
-
.feedback-trigger-btn:hover
|
|
1599
|
-
|
|
1600
|
-
box-shadow: 0 1px 2px 0 rgba(16, 24, 40, 0.1);
|
|
1584
|
+
.feedback-trigger-btn:hover {
|
|
1585
|
+
box-shadow: 0 6px 20px rgba(0, 0, 0, 0.2);
|
|
1601
1586
|
}
|
|
1602
1587
|
|
|
1603
|
-
.feedback-trigger-btn:
|
|
1604
|
-
|
|
1605
|
-
cursor: not-allowed;
|
|
1588
|
+
.feedback-trigger-btn:active {
|
|
1589
|
+
transform: scale(0.95);
|
|
1606
1590
|
}
|
|
1607
1591
|
|
|
1608
|
-
.feedback-trigger-btn
|
|
1609
|
-
|
|
1610
|
-
outline-offset: 2px;
|
|
1592
|
+
.feedback-trigger-btn svg {
|
|
1593
|
+
flex-shrink: 0;
|
|
1611
1594
|
}
|
|
1612
1595
|
|
|
1613
1596
|
/* Side Panel Styles */
|
package/dist/feedback-sdk.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"feedback-sdk.js","sources":["../src/utils/errors.js","../src/core/APIService.js","../src/core/EventBus.js","../src/utils/helpers.js","../src/widgets/BaseWidget.js","../src/widgets/ButtonWidget.js","../src/widgets/InlineWidget.js","../src/widgets/TabWidget.js","../src/widgets/WidgetFactory.js","../src/core/FeedbackSDK.js","../src/styles/styles.js","../src/index.js"],"sourcesContent":["export class SDKError extends Error {\n\tconstructor(message, cause) {\n\t\tsuper(message);\n\t\tthis.name = 'SDKError';\n\t\tthis.cause = cause;\n\n\t\tif (Error.captureStackTrace) {\n\t\t\tError.captureStackTrace(this, SDKError);\n\t\t}\n\t}\n}\n\nexport class APIError extends Error {\n\tconstructor(status, message, response) {\n\t\tsuper(message);\n\t\tthis.name = 'APIError';\n\t\tthis.status = status;\n\t\tthis.response = response;\n\n\t\tif (Error.captureStackTrace) {\n\t\t\tError.captureStackTrace(this, APIError);\n\t\t}\n\t}\n\n\tisNetworkError() {\n\t\treturn this.status === 0;\n\t}\n\n\tisClientError() {\n\t\treturn this.status >= 400 && this.status < 500;\n\t}\n\n\tisServerError() {\n\t\treturn this.status >= 500 && this.status < 600;\n\t}\n}\n\nexport class WidgetError extends Error {\n\tconstructor(message, widgetType, widgetId) {\n\t\tsuper(message);\n\t\tthis.name = 'WidgetError';\n\t\tthis.widgetType = widgetType;\n\t\tthis.widgetId = widgetId;\n\n\t\tif (Error.captureStackTrace) {\n\t\t\tError.captureStackTrace(this, WidgetError);\n\t\t}\n\t}\n}\n\nexport class ConfigError extends Error {\n\tconstructor(message, configKey) {\n\t\tsuper(message);\n\t\tthis.name = 'ConfigError';\n\t\tthis.configKey = configKey;\n\n\t\tif (Error.captureStackTrace) {\n\t\t\tError.captureStackTrace(this, ConfigError);\n\t\t}\n\t}\n}\n\nexport class ValidationError extends Error {\n\tconstructor(message, field, value) {\n\t\tsuper(message);\n\t\tthis.name = 'ValidationError';\n\t\tthis.field = field;\n\t\tthis.value = value;\n\n\t\tif (Error.captureStackTrace) {\n\t\t\tError.captureStackTrace(this, ValidationError);\n\t\t}\n\t}\n}\n\nexport class ErrorHandler {\n\tconstructor(debug = false) {\n\t\tthis.debug = debug;\n\t}\n\n\thandle(error, context = '') {\n\t\tconst errorInfo = {\n\t\t\tname: error.name,\n\t\t\tmessage: error.message,\n\t\t\tcontext,\n\t\t\ttimestamp: new Date().toISOString(),\n\t\t};\n\n\t\tif (error instanceof APIError) {\n\t\t\terrorInfo.status = error.status;\n\t\t\terrorInfo.type = 'api';\n\t\t} else if (error instanceof WidgetError) {\n\t\t\terrorInfo.widgetType = error.widgetType;\n\t\t\terrorInfo.widgetId = error.widgetId;\n\t\t\terrorInfo.type = 'widget';\n\t\t} else if (error instanceof ConfigError) {\n\t\t\terrorInfo.configKey = error.configKey;\n\t\t\terrorInfo.type = 'config';\n\t\t} else if (error instanceof ValidationError) {\n\t\t\terrorInfo.field = error.field;\n\t\t\terrorInfo.value = error.value;\n\t\t\terrorInfo.type = 'validation';\n\t\t} else {\n\t\t\terrorInfo.type = 'unknown';\n\t\t}\n\n\t\tif (this.debug) {\n\t\t\tconsole.error('[FeedbackSDK Error]', errorInfo, error);\n\t\t} else {\n\t\t\tconsole.error('[FeedbackSDK Error]', error.message);\n\t\t}\n\n\t\treturn errorInfo;\n\t}\n\n\tgetUserMessage(error) {\n\t\tif (error instanceof APIError) {\n\t\t\tif (error.isNetworkError()) {\n\t\t\t\treturn 'Network error. Please check your connection and try again.';\n\t\t\t} else if (error.isClientError()) {\n\t\t\t\treturn 'Invalid request. Please check your input and try again.';\n\t\t\t} else if (error.isServerError()) {\n\t\t\t\treturn 'Server error. Please try again later.';\n\t\t\t}\n\t\t\treturn 'Failed to submit feedback. Please try again.';\n\t\t}\n\n\t\tif (error instanceof ValidationError) {\n\t\t\treturn `Please check your ${error.field}: ${error.message}`;\n\t\t}\n\n\t\tif (error instanceof ConfigError) {\n\t\t\treturn 'Configuration error. Please check your SDK setup.';\n\t\t}\n\n\t\tif (error instanceof WidgetError) {\n\t\t\treturn 'Widget error. Please try refreshing the page.';\n\t\t}\n\n\t\treturn 'An unexpected error occurred. Please try again.';\n\t}\n}\n","import { APIError } from '../utils/errors.js';\n\nexport class APIService {\n\tconstructor(config = {}) {\n\t\tthis.workspace = config.workspace;\n\t\tthis.sessionToken = null;\n\t\tthis.sessionExpiry = null;\n\t\tthis.userContext = config.userContext || null;\n\n\t\tif (config.apiUrl) {\n\t\t\tthis.baseURL = config.apiUrl;\n\t\t} else if (this.workspace) {\n\t\t\tthis.baseURL = `https://${this.workspace}.staging.api.product7.io/api/v1`;\n\t\t} else {\n\t\t\tthis.baseURL = 'https://staging.api.product7.io/api/v1';\n\t\t}\n\n\t\tthis._loadStoredSession();\n\t}\n\n\tasync init(userContext = null) {\n\t\tif (userContext) {\n\t\t\tthis.userContext = userContext;\n\t\t}\n\n\t\tif (this.isSessionValid()) {\n\t\t\treturn { sessionToken: this.sessionToken };\n\t\t}\n\n\t\tif (!this.userContext || !this.workspace) {\n\t\t\tconst error = `Missing ${!this.workspace ? 'workspace' : 'user context'} for initialization`;\n\t\t\tthrow new APIError(400, error);\n\t\t}\n\n\t\tconst payload = {\n\t\t\tworkspace: this.workspace,\n\t\t\tuser: this.userContext,\n\t\t};\n\n\t\ttry {\n\t\t\tconst response = await this._makeRequest('/widget/init', {\n\t\t\t\tmethod: 'POST',\n\t\t\t\tbody: JSON.stringify(payload),\n\t\t\t\theaders: {\n\t\t\t\t\t'Content-Type': 'application/json',\n\t\t\t\t},\n\t\t\t});\n\n\t\t\tthis.sessionToken = response.session_token;\n\t\t\tthis.sessionExpiry = new Date(Date.now() + response.expires_in * 1000);\n\t\t\tthis._storeSession();\n\n\t\t\treturn {\n\t\t\t\tsessionToken: this.sessionToken,\n\t\t\t\tconfig: response.config || {},\n\t\t\t\texpiresIn: response.expires_in,\n\t\t\t};\n\t\t} catch (error) {\n\t\t\tthrow new APIError(\n\t\t\t\terror.status || 500,\n\t\t\t\t`Failed to initialize widget: ${error.message}`,\n\t\t\t\terror.response\n\t\t\t);\n\t\t}\n\t}\n\n\tasync submitFeedback(feedbackData) {\n\t\tif (!this.isSessionValid()) {\n\t\t\tawait this.init();\n\t\t}\n\n\t\tif (!this.sessionToken) {\n\t\t\tthrow new APIError(401, 'No valid session token available');\n\t\t}\n\n\t\tconst payload = {\n\t\t\tboard: feedbackData.board_id || feedbackData.board || feedbackData.boardId,\n\t\t\ttitle: feedbackData.title,\n\t\t\tcontent: feedbackData.content,\n\t\t\tattachments: feedbackData.attachments || [],\n\t\t};\n\n\t\ttry {\n\t\t\tconst response = await this._makeRequest('/widget/feedback', {\n\t\t\t\tmethod: 'POST',\n\t\t\t\tbody: JSON.stringify(payload),\n\t\t\t\theaders: {\n\t\t\t\t\t'Content-Type': 'application/json',\n\t\t\t\t\tAuthorization: `Bearer ${this.sessionToken}`,\n\t\t\t\t},\n\t\t\t});\n\n\t\t\treturn response;\n\t\t} catch (error) {\n\t\t\tif (error.status === 401) {\n\t\t\t\tthis.sessionToken = null;\n\t\t\t\tthis.sessionExpiry = null;\n\t\t\t\tawait this.init();\n\t\t\t\treturn this.submitFeedback(feedbackData);\n\t\t\t}\n\n\t\t\tthrow new APIError(\n\t\t\t\terror.status || 500,\n\t\t\t\t`Failed to submit feedback: ${error.message}`,\n\t\t\t\terror.response\n\t\t\t);\n\t\t}\n\t}\n\n\tisSessionValid() {\n\t\treturn (\n\t\t\tthis.sessionToken && this.sessionExpiry && new Date() < this.sessionExpiry\n\t\t);\n\t}\n\n\tsetUserContext(userContext) {\n\t\tthis.userContext = userContext;\n\t\tif (typeof localStorage !== 'undefined') {\n\t\t\tlocalStorage.setItem('feedbackSDK_userContext', JSON.stringify(userContext));\n\t\t}\n\t}\n\n\tgetUserContext() {\n\t\treturn this.userContext;\n\t}\n\n\tclearSession() {\n\t\tthis.sessionToken = null;\n\t\tthis.sessionExpiry = null;\n\t\tif (typeof localStorage !== 'undefined') {\n\t\t\tlocalStorage.removeItem('feedbackSDK_session');\n\t\t\tlocalStorage.removeItem('feedbackSDK_userContext');\n\t\t}\n\t}\n\n\t_storeSession() {\n\t\tif (typeof localStorage === 'undefined') return;\n\n\t\ttry {\n\t\t\tconst sessionData = {\n\t\t\t\ttoken: this.sessionToken,\n\t\t\t\texpiry: this.sessionExpiry.toISOString(),\n\t\t\t\tworkspace: this.workspace,\n\t\t\t};\n\t\t\tlocalStorage.setItem('feedbackSDK_session', JSON.stringify(sessionData));\n\t\t} catch (error) {\n\t\t\t// Silently fail if localStorage is not available\n\t\t}\n\t}\n\n\t_loadStoredSession() {\n\t\tif (typeof localStorage === 'undefined') return false;\n\n\t\ttry {\n\t\t\tconst stored = localStorage.getItem('feedbackSDK_session');\n\t\t\tif (!stored) return false;\n\n\t\t\tconst sessionData = JSON.parse(stored);\n\t\t\tthis.sessionToken = sessionData.token;\n\t\t\tthis.sessionExpiry = new Date(sessionData.expiry);\n\n\t\t\treturn this.isSessionValid();\n\t\t} catch (error) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tasync _makeRequest(endpoint, options = {}) {\n\t\tconst url = `${this.baseURL}${endpoint}`;\n\n\t\ttry {\n\t\t\tconst response = await fetch(url, options);\n\n\t\t\tif (!response.ok) {\n\t\t\t\tlet errorMessage = `HTTP ${response.status}`;\n\t\t\t\tlet responseData = null;\n\n\t\t\t\ttry {\n\t\t\t\t\tresponseData = await response.json();\n\t\t\t\t\terrorMessage = responseData.message || responseData.error || errorMessage;\n\t\t\t\t} catch (e) {\n\t\t\t\t\terrorMessage = (await response.text()) || errorMessage;\n\t\t\t\t}\n\n\t\t\t\tthrow new APIError(response.status, errorMessage, responseData);\n\t\t\t}\n\n\t\t\tconst contentType = response.headers.get('content-type');\n\t\t\tif (contentType && contentType.includes('application/json')) {\n\t\t\t\treturn await response.json();\n\t\t\t}\n\n\t\t\treturn await response.text();\n\t\t} catch (error) {\n\t\t\tif (error instanceof APIError) {\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t\tthrow new APIError(0, error.message, null);\n\t\t}\n\t}\n}","export class EventBus {\n\tconstructor() {\n\t\tthis.events = new Map();\n\t}\n\n\ton(event, callback) {\n\t\tif (!this.events.has(event)) {\n\t\t\tthis.events.set(event, []);\n\t\t}\n\t\tthis.events.get(event).push(callback);\n\n\t\treturn () => this.off(event, callback);\n\t}\n\n\toff(event, callback) {\n\t\tconst callbacks = this.events.get(event);\n\t\tif (callbacks) {\n\t\t\tconst index = callbacks.indexOf(callback);\n\t\t\tif (index > -1) {\n\t\t\t\tcallbacks.splice(index, 1);\n\t\t\t}\n\t\t}\n\t}\n\n\temit(event, data) {\n\t\tconst callbacks = this.events.get(event);\n\t\tif (callbacks) {\n\t\t\tcallbacks.forEach((callback) => {\n\t\t\t\ttry {\n\t\t\t\t\tcallback(data);\n\t\t\t\t} catch (error) {\n\t\t\t\t\tconsole.error('[FeedbackSDK] Event callback error:', error);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\tonce(event, callback) {\n\t\tconst unsubscribe = this.on(event, (data) => {\n\t\t\tcallback(data);\n\t\t\tunsubscribe();\n\t\t});\n\t\treturn unsubscribe;\n\t}\n\n\tclear() {\n\t\tthis.events.clear();\n\t}\n\n\tgetListenerCount(event) {\n\t\tconst callbacks = this.events.get(event);\n\t\treturn callbacks ? callbacks.length : 0;\n\t}\n}\n","export function generateId(prefix = 'feedback') {\n\tconst timestamp = Date.now();\n\tconst random = Math.random().toString(36).substring(2, 9);\n\treturn `${prefix}_${timestamp}_${random}`;\n}\n\nexport function deepMerge(target, source) {\n\tconst result = { ...target };\n\n\tfor (const key in source) {\n\t\tif (source.hasOwnProperty(key)) {\n\t\t\tif (\n\t\t\t\tsource[key] &&\n\t\t\t\ttypeof source[key] === 'object' &&\n\t\t\t\t!Array.isArray(source[key])\n\t\t\t) {\n\t\t\t\tresult[key] = deepMerge(target[key] || {}, source[key]);\n\t\t\t} else {\n\t\t\t\tresult[key] = source[key];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn result;\n}\n\nexport function debounce(func, wait) {\n\tlet timeout;\n\treturn function executedFunction(...args) {\n\t\tconst later = () => {\n\t\t\tclearTimeout(timeout);\n\t\t\tfunc(...args);\n\t\t};\n\t\tclearTimeout(timeout);\n\t\ttimeout = setTimeout(later, wait);\n\t};\n}\n\nexport function throttle(func, limit) {\n\tlet lastFunc;\n\tlet lastRan;\n\treturn function (...args) {\n\t\tif (!lastRan) {\n\t\t\tfunc(...args);\n\t\t\tlastRan = Date.now();\n\t\t} else {\n\t\t\tclearTimeout(lastFunc);\n\t\t\tlastFunc = setTimeout(\n\t\t\t\t() => {\n\t\t\t\t\tif (Date.now() - lastRan >= limit) {\n\t\t\t\t\t\tfunc(...args);\n\t\t\t\t\t\tlastRan = Date.now();\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tlimit - (Date.now() - lastRan)\n\t\t\t);\n\t\t}\n\t};\n}\n\nexport function isValidEmail(email) {\n\tif (!email || typeof email !== 'string') return false;\n\n\tconst emailRegex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\n\treturn emailRegex.test(email.trim());\n}\n\nexport function sanitizeHTML(str) {\n\tif (!str || typeof str !== 'string') return '';\n\n\tconst div = document.createElement('div');\n\tdiv.textContent = str;\n\treturn div.innerHTML;\n}\n\nexport function getCSSProperty(element, property, fallback = '') {\n\tif (!element || !property) return fallback;\n\n\ttry {\n\t\tconst style = window.getComputedStyle(element);\n\t\treturn style.getPropertyValue(property) || fallback;\n\t} catch (error) {\n\t\treturn fallback;\n\t}\n}\n\nexport function isInViewport(element) {\n\tif (!element) return false;\n\n\tconst rect = element.getBoundingClientRect();\n\treturn (\n\t\trect.top >= 0 &&\n\t\trect.left >= 0 &&\n\t\trect.bottom <=\n\t\t\t(window.innerHeight || document.documentElement.clientHeight) &&\n\t\trect.right <= (window.innerWidth || document.documentElement.clientWidth)\n\t);\n}\n\nexport function scrollToElement(element, options = {}) {\n\tif (!element) return;\n\n\tconst defaultOptions = {\n\t\tbehavior: 'smooth',\n\t\tblock: 'center',\n\t\tinline: 'nearest',\n\t};\n\n\telement.scrollIntoView({ ...defaultOptions, ...options });\n}\n\nexport function getBrowserInfo() {\n\tconst userAgent = navigator.userAgent;\n\tconst platform = navigator.platform;\n\n\treturn {\n\t\tuserAgent,\n\t\tplatform,\n\t\tlanguage: navigator.language || navigator.userLanguage,\n\t\tcookieEnabled: navigator.cookieEnabled,\n\t\tscreenResolution: `${screen.width}x${screen.height}`,\n\t\twindowSize: `${window.innerWidth}x${window.innerHeight}`,\n\t\ttimezone: Intl.DateTimeFormat().resolvedOptions().timeZone,\n\t};\n}\n\nexport function formatFileSize(bytes) {\n\tif (bytes === 0) return '0 Bytes';\n\n\tconst k = 1024;\n\tconst sizes = ['Bytes', 'KB', 'MB', 'GB'];\n\tconst i = Math.floor(Math.log(bytes) / Math.log(k));\n\n\treturn parseFloat((bytes / Math.pow(k, i)).toFixed(2)) + ' ' + sizes[i];\n}\n\nexport function delay(ms) {\n\treturn new Promise((resolve) => setTimeout(resolve, ms));\n}\n\nexport function safeJsonParse(str, fallback = null) {\n\ttry {\n\t\treturn JSON.parse(str);\n\t} catch (error) {\n\t\treturn fallback;\n\t}\n}\n\nexport function escapeRegex(string) {\n\treturn string.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n}\n\nexport function getNestedProperty(obj, path, defaultValue = undefined) {\n\tif (!obj || !path) return defaultValue;\n\n\tconst keys = path.split('.');\n\tlet current = obj;\n\n\tfor (const key of keys) {\n\t\tif (current === null || current === undefined || !(key in current)) {\n\t\t\treturn defaultValue;\n\t\t}\n\t\tcurrent = current[key];\n\t}\n\n\treturn current;\n}\n\nexport function setNestedProperty(obj, path, value) {\n\tif (!obj || !path) return obj;\n\n\tconst keys = path.split('.');\n\tconst lastKey = keys.pop();\n\tlet current = obj;\n\n\tfor (const key of keys) {\n\t\tif (!(key in current) || typeof current[key] !== 'object') {\n\t\t\tcurrent[key] = {};\n\t\t}\n\t\tcurrent = current[key];\n\t}\n\n\tcurrent[lastKey] = value;\n\treturn obj;\n}\n\nexport function isBrowser() {\n\treturn typeof window !== 'undefined' && typeof document !== 'undefined';\n}\n\nexport function isMobile() {\n\tif (!isBrowser()) return false;\n\n\treturn (\n\t\t/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(\n\t\t\tnavigator.userAgent\n\t\t) || window.innerWidth <= 768\n\t);\n}\n\nexport function getCurrentTimestamp() {\n\treturn new Date().toISOString();\n}\n\nexport function validateConfig(config, required = []) {\n\tconst missing = [];\n\n\tfor (const key of required) {\n\t\tif (!config[key]) {\n\t\t\tmissing.push(key);\n\t\t}\n\t}\n\n\tif (missing.length > 0) {\n\t\tthrow new Error(`Missing required configuration: ${missing.join(', ')}`);\n\t}\n\n\treturn true;\n}\n","export class BaseWidget {\n\tconstructor(options = {}) {\n\t\tthis.id = options.id;\n\t\tthis.sdk = options.sdk;\n\t\tthis.apiService = options.apiService;\n\t\tthis.type = options.type || 'base';\n\n\t\tthis.options = {\n\t\t\tcontainer: null,\n\t\t\tposition: this.sdk.config.position,\n\t\t\ttheme: this.sdk.config.theme,\n\t\t\tboardId: this.sdk.config.boardId,\n\t\t\tautoShow: false,\n\t\t\tshowBackdrop: true,\n\t\t\tcustomStyles: {},\n\t\t\t...options,\n\t\t};\n\n\t\tthis.element = null;\n\t\tthis.panelElement = null;\n\t\tthis.backdropElement = null;\n\t\tthis.mounted = false;\n\t\tthis.destroyed = false;\n\n\t\tthis.state = {\n\t\t\tisOpen: false,\n\t\t\tisSubmitting: false,\n\t\t\ttitle: '',\n\t\t\tcontent: '',\n\t\t\temail: '',\n\t\t\tattachments: [],\n\t\t\terrors: {},\n\t\t};\n\n\t\tthis._bindMethods();\n\t}\n\n\tmount(container) {\n\t\tif (this.mounted || this.destroyed) return this;\n\n\t\tif (typeof container === 'string') {\n\t\t\tcontainer = document.querySelector(container);\n\t\t}\n\n\t\tif (!container) {\n\t\t\tcontainer = document.body;\n\t\t}\n\n\t\tthis.container = container;\n\t\tthis.element = this._render();\n\t\tthis.container.appendChild(this.element);\n\n\t\tthis.mounted = true;\n\t\tthis._attachEvents();\n\t\tthis.onMount();\n\n\t\tif (this.options.autoShow) {\n\t\t\tthis.show();\n\t\t}\n\n\t\tthis.sdk.eventBus.emit('widget:mounted', { widget: this });\n\t\treturn this;\n\t}\n\n\tshow() {\n\t\tif (this.element) {\n\t\t\tthis.element.style.display = 'block';\n\t\t}\n\t\treturn this;\n\t}\n\n\thide() {\n\t\tif (this.element) {\n\t\t\tthis.element.style.display = 'none';\n\t\t}\n\t\treturn this;\n\t}\n\n\topenPanel() {\n\t\tthis.state.isOpen = true;\n\t\tthis._renderPanel();\n\t\t\n\t\trequestAnimationFrame(() => {\n\t\t\tif (this.panelElement) {\n\t\t\t\tthis.panelElement.classList.add('open');\n\t\t\t}\n\t\t\tif (this.backdropElement) {\n\t\t\t\tthis.backdropElement.classList.add('show');\n\t\t\t}\n\t\t});\n\t}\n\n\tclosePanel() {\n\t\tif (this.panelElement) {\n\t\t\tthis.panelElement.classList.remove('open');\n\t\t}\n\t\tif (this.backdropElement) {\n\t\t\tthis.backdropElement.classList.remove('show');\n\t\t}\n\n\t\tsetTimeout(() => {\n\t\t\tthis.state.isOpen = false;\n\t\t\tif (this.panelElement && this.panelElement.parentNode) {\n\t\t\t\tthis.panelElement.parentNode.removeChild(this.panelElement);\n\t\t\t\tthis.panelElement = null;\n\t\t\t}\n\t\t\tif (this.backdropElement && this.backdropElement.parentNode) {\n\t\t\t\tthis.backdropElement.parentNode.removeChild(this.backdropElement);\n\t\t\t\tthis.backdropElement = null;\n\t\t\t}\n\t\t\tthis._resetForm();\n\t\t}, 300);\n\t}\n\n\tasync submitFeedback() {\n\t\tif (this.state.isSubmitting) return;\n\n\t\tthis._hideError();\n\n\t\ttry {\n\t\t\tthis.state.isSubmitting = true;\n\t\t\tthis._updateSubmitButton();\n\n\t\t\tconst payload = {\n\t\t\t\ttitle: this.state.title || 'Feedback',\n\t\t\t\tcontent: this.state.content,\n\t\t\t\temail: this.state.email,\n\t\t\t\tboard_id: this.options.boardId,\n\t\t\t\tattachments: this.state.attachments,\n\t\t\t};\n\n\t\t\tif (!this.state.content.trim()) {\n\t\t\t\tthis._showError('Please enter your feedback message.');\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst response = await this.apiService.submitFeedback(payload);\n\n\t\t\tthis._showSuccessMessage();\n\t\t\tthis.closePanel();\n\n\t\t\tthis.sdk.eventBus.emit('feedback:submitted', {\n\t\t\t\twidget: this,\n\t\t\t\tfeedback: response,\n\t\t\t});\n\t\t} catch (error) {\n\t\t\tthis._showError('Failed to submit feedback. Please try again.');\n\t\t\tthis.sdk.eventBus.emit('feedback:error', { widget: this, error });\n\t\t} finally {\n\t\t\tthis.state.isSubmitting = false;\n\t\t\tthis._updateSubmitButton();\n\t\t}\n\t}\n\n\thandleConfigUpdate(newConfig) {\n\t\tthis.options.theme = newConfig.theme;\n\t\tif (this.element) {\n\t\t\tthis._updateTheme();\n\t\t}\n\t}\n\n\tdestroy() {\n\t\tif (this.destroyed) return;\n\n\t\tthis.onDestroy();\n\t\tthis.closePanel();\n\n\t\tif (this.element && this.element.parentNode) {\n\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t}\n\n\t\tthis.destroyed = true;\n\t\tthis.mounted = false;\n\t\tthis.sdk.eventBus.emit('widget:destroyed', { widget: this });\n\t}\n\n\tonMount() {}\n\tonDestroy() {}\n\n\t_render() {\n\t\tthrow new Error('_render() must be implemented by concrete widget');\n\t}\n\n\t_attachEvents() {\n\t\t// Override in concrete widgets\n\t}\n\n\t_bindMethods() {\n\t\tthis.openPanel = this.openPanel.bind(this);\n\t\tthis.closePanel = this.closePanel.bind(this);\n\t\tthis.submitFeedback = this.submitFeedback.bind(this);\n\t}\n\n\t_renderPanel() {\n\t\tif (this.panelElement) return;\n\n\t\tif (this.options.showBackdrop) {\n\t\t\tthis.backdropElement = document.createElement('div');\n\t\t\tthis.backdropElement.className = 'feedback-panel-backdrop';\n\t\t\tdocument.body.appendChild(this.backdropElement);\n\n\t\t\tthis.backdropElement.addEventListener('click', this.closePanel);\n\t\t}\n\n\t\tthis.panelElement = document.createElement('div');\n\t\tthis.panelElement.className = `feedback-panel theme-${this.options.theme}`;\n\t\tthis.panelElement.innerHTML = this._getPanelHTML();\n\n\t\tdocument.body.appendChild(this.panelElement);\n\t\tthis._attachPanelEvents();\n\n\t\tconst firstInput = this.panelElement.querySelector('input, textarea');\n\t\tif (firstInput) {\n\t\t\tsetTimeout(() => firstInput.focus(), 350);\n\t\t}\n\t}\n\n\t_getPanelHTML() {\n\t\treturn `\n <div class=\"feedback-panel-content\">\n <div class=\"feedback-panel-header\">\n <h3>Send Feedback</h3>\n <button class=\"feedback-panel-close\" type=\"button\" aria-label=\"Close\">×</button>\n </div>\n <div class=\"feedback-panel-body\">\n <form class=\"feedback-form\">\n <div class=\"feedback-form-group\">\n <label for=\"feedback-title-${this.id}\">Title (optional)</label>\n <input \n type=\"text\" \n id=\"feedback-title-${this.id}\" \n name=\"title\" \n placeholder=\"Brief description of your feedback\"\n value=\"${this.state.title}\"\n />\n </div>\n <div class=\"feedback-form-group\">\n <label for=\"feedback-content-${this.id}\">Message *</label>\n <textarea \n id=\"feedback-content-${this.id}\" \n name=\"content\" \n placeholder=\"Tell us what you think...\"\n required\n >${this.state.content}</textarea>\n </div>\n <div class=\"feedback-error\" role=\"alert\"></div>\n <div class=\"feedback-form-actions\">\n <button type=\"submit\" class=\"feedback-btn feedback-btn-submit\">\n ${this.state.isSubmitting ? 'Sending...' : 'Send Feedback'}\n </button>\n </div>\n </form>\n </div>\n </div>\n `;\n\t}\n\n\t_attachPanelEvents() {\n\t\tconst panel = this.panelElement;\n\n\t\tpanel\n\t\t\t.querySelector('.feedback-panel-close')\n\t\t\t.addEventListener('click', this.closePanel);\n\n\t\tconst form = panel.querySelector('.feedback-form');\n\t\tform.addEventListener('submit', (e) => {\n\t\t\te.preventDefault();\n\t\t\tthis.submitFeedback();\n\t\t});\n\n\t\tpanel\n\t\t\t.querySelector('input[name=\"title\"]')\n\t\t\t.addEventListener('input', (e) => {\n\t\t\t\tthis.state.title = e.target.value;\n\t\t\t});\n\n\t\tpanel\n\t\t\t.querySelector('textarea[name=\"content\"]')\n\t\t\t.addEventListener('input', (e) => {\n\t\t\t\tthis.state.content = e.target.value;\n\t\t\t});\n\n\t\tconst handleEscape = (e) => {\n\t\t\tif (e.key === 'Escape') {\n\t\t\t\tthis.closePanel();\n\t\t\t\tdocument.removeEventListener('keydown', handleEscape);\n\t\t\t}\n\t\t};\n\t\tdocument.addEventListener('keydown', handleEscape);\n\t}\n\n\t_updateSubmitButton() {\n\t\tif (this.panelElement) {\n\t\t\tconst submitBtn = this.panelElement.querySelector('.feedback-btn-submit');\n\t\t\tif (submitBtn) {\n\t\t\t\tsubmitBtn.textContent = this.state.isSubmitting\n\t\t\t\t\t? 'Sending...'\n\t\t\t\t\t: 'Send Feedback';\n\t\t\t\tsubmitBtn.disabled = this.state.isSubmitting;\n\t\t\t}\n\t\t}\n\t}\n\n\t_showError(message) {\n\t\tif (this.panelElement) {\n\t\t\tconst errorElement = this.panelElement.querySelector('.feedback-error');\n\t\t\tif (errorElement) {\n\t\t\t\terrorElement.textContent = message;\n\t\t\t\terrorElement.classList.add('show');\n\t\t\t}\n\t\t}\n\t}\n\n\t_hideError() {\n\t\tif (this.panelElement) {\n\t\t\tconst errorElement = this.panelElement.querySelector('.feedback-error');\n\t\t\tif (errorElement) {\n\t\t\t\terrorElement.classList.remove('show');\n\t\t\t}\n\t\t}\n\t}\n\n\t_showSuccessMessage() {\n\t\tconst notification = document.createElement('div');\n\t\tnotification.className = 'feedback-success-notification';\n\t\tnotification.innerHTML = `\n <div class=\"feedback-success-content\">\n <div class=\"feedback-success-icon\">✓</div>\n <span>Feedback submitted successfully!</span>\n <button class=\"feedback-success-close\" aria-label=\"Close\">×</button>\n </div>\n `;\n\n\t\tdocument.body.appendChild(notification);\n\n\t\tconst closeBtn = notification.querySelector('.feedback-success-close');\n\t\tconst closeNotification = () => {\n\t\t\tif (notification.parentNode) {\n\t\t\t\tnotification.style.opacity = '0';\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tif (notification.parentNode) {\n\t\t\t\t\t\tnotification.parentNode.removeChild(notification);\n\t\t\t\t\t}\n\t\t\t\t}, 300);\n\t\t\t}\n\t\t};\n\n\t\tcloseBtn.addEventListener('click', closeNotification);\n\n\t\tsetTimeout(closeNotification, 4000);\n\t}\n\n\t_resetForm() {\n\t\tthis.state.title = '';\n\t\tthis.state.content = '';\n\t\tthis.state.email = '';\n\t\tthis.state.errors = {};\n\t}\n\n\t_updateTheme() {\n\t\tif (this.element) {\n\t\t\tthis.element.className = this.element.className.replace(\n\t\t\t\t/theme-\\w+/,\n\t\t\t\t`theme-${this.options.theme}`\n\t\t\t);\n\t\t}\n\t\tif (this.panelElement) {\n\t\t\tthis.panelElement.className = this.panelElement.className.replace(\n\t\t\t\t/theme-\\w+/,\n\t\t\t\t`theme-${this.options.theme}`\n\t\t\t);\n\t\t}\n\t}\n\n\topenModal() {\n\t\tthis.openPanel();\n\t}\n\n\tcloseModal() {\n\t\tthis.closePanel();\n\t}\n}","import { BaseWidget } from './BaseWidget.js';\n\nexport class ButtonWidget extends BaseWidget {\n\tconstructor(options) {\n\t\tsuper({ ...options, type: 'button' });\n\t}\n\n\t_render() {\n\t\tconst button = document.createElement('div');\n\t\tbutton.className = `feedback-widget feedback-widget-button theme-${this.options.theme} position-${this.options.position}`;\n\t\tbutton.innerHTML = `\n <button class=\"feedback-trigger-btn\" type=\"button\">\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"currentColor\">\n <path d=\"M2.003 5.884L10 9.882l7.997-3.998A2 2 0 0016 4H4a2 2 0 00-1.997 1.884z\"/>\n <path d=\"M18 8.118l-8 4-8-4V14a2 2 0 002 2h12a2 2 0 002-2V8.118z\"/>\n </svg>\n Feedback\n </button>\n `;\n\n\t\tif (this.options.customStyles) {\n\t\t\tObject.assign(button.style, this.options.customStyles);\n\t\t}\n\n\t\treturn button;\n\t}\n\n\t_attachEvents() {\n\t\tconst button = this.element.querySelector('.feedback-trigger-btn');\n\t\tbutton.addEventListener('click', this.openPanel);\n\n\t\tbutton.addEventListener('mouseenter', () => {\n\t\t\tif (!this.state.isSubmitting) {\n\t\t\t\tbutton.style.transform = 'translateY(-2px)';\n\t\t\t}\n\t\t});\n\n\t\tbutton.addEventListener('mouseleave', () => {\n\t\t\tbutton.style.transform = 'translateY(0)';\n\t\t});\n\t}\n\n\tupdateText(text) {\n\t\tconst button = this.element?.querySelector('.feedback-trigger-btn');\n\t\tif (button) {\n\t\t\tconst textNode = button.childNodes[button.childNodes.length - 1];\n\t\t\tif (textNode && textNode.nodeType === Node.TEXT_NODE) {\n\t\t\t\ttextNode.textContent = text;\n\t\t\t}\n\t\t}\n\t}\n\n\tupdatePosition(position) {\n\t\tthis.options.position = position;\n\t\tif (this.element) {\n\t\t\tthis.element.className = this.element.className.replace(\n\t\t\t\t/position-\\w+-\\w+/,\n\t\t\t\t`position-${position}`\n\t\t\t);\n\t\t}\n\t}\n}","import { BaseWidget } from './BaseWidget.js';\n\nexport class InlineWidget extends BaseWidget {\n\tconstructor(options) {\n\t\tsuper({ ...options, type: 'inline' });\n\t}\n\n\t_render() {\n\t\tconst widget = document.createElement('div');\n\t\twidget.className = `feedback-widget feedback-widget-inline theme-${this.options.theme}`;\n\t\twidget.innerHTML = `\n <div class=\"feedback-inline-content\">\n <h3>Send us your feedback</h3>\n <form class=\"feedback-inline-form\">\n <div class=\"feedback-form-group\">\n <input \n type=\"text\" \n name=\"title\" \n placeholder=\"Title (optional)\"\n value=\"${this.state.title}\"\n />\n </div>\n <div class=\"feedback-form-group\">\n <textarea \n name=\"content\" \n placeholder=\"Your feedback...\"\n required\n >${this.state.content}</textarea>\n </div>\n <div class=\"feedback-form-group\">\n <input \n type=\"email\" \n name=\"email\" \n placeholder=\"Email (optional)\"\n value=\"${this.state.email}\"\n />\n </div>\n <button type=\"submit\" class=\"feedback-btn feedback-btn-submit\">\n Send Feedback\n </button>\n <div class=\"feedback-error\" style=\"display: none;\"></div>\n </form>\n </div>\n `;\n\n\t\tif (this.options.customStyles) {\n\t\t\tObject.assign(widget.style, this.options.customStyles);\n\t\t}\n\n\t\treturn widget;\n\t}\n\n\t_attachEvents() {\n\t\tconst form = this.element.querySelector('.feedback-inline-form');\n\n\t\tform.addEventListener('submit', (e) => {\n\t\t\te.preventDefault();\n\t\t\tthis.submitFeedback();\n\t\t});\n\n\t\tform.querySelector('input[name=\"title\"]').addEventListener('input', (e) => {\n\t\t\tthis.state.title = e.target.value;\n\t\t});\n\n\t\tform\n\t\t\t.querySelector('textarea[name=\"content\"]')\n\t\t\t.addEventListener('input', (e) => {\n\t\t\t\tthis.state.content = e.target.value;\n\t\t\t});\n\n\t\tform.querySelector('input[name=\"email\"]').addEventListener('input', (e) => {\n\t\t\tthis.state.email = e.target.value;\n\t\t});\n\t}\n\n\topenModal() {\n\t\tconst textarea = this.element.querySelector('textarea[name=\"content\"]');\n\t\tif (textarea) {\n\t\t\ttextarea.focus();\n\t\t}\n\t}\n\n\tcloseModal() {\n\t\t// Inline widget doesn't use modal\n\t}\n\n\t_showSuccessMessage() {\n\t\tconst widget = this.element.querySelector('.feedback-inline-content');\n\t\tconst originalContent = widget.innerHTML;\n\n\t\twidget.innerHTML = `\n <div class=\"feedback-success\">\n <div class=\"feedback-success-icon\">✓</div>\n <h3>Thank you!</h3>\n <p>Your feedback has been submitted successfully.</p>\n <button class=\"feedback-btn feedback-btn-reset\">Send Another</button>\n </div>\n `;\n\n\t\tconst resetBtn = widget.querySelector('.feedback-btn-reset');\n\t\tresetBtn.addEventListener('click', () => {\n\t\t\twidget.innerHTML = originalContent;\n\t\t\tthis._attachEvents();\n\t\t\tthis._resetForm();\n\t\t});\n\t}\n\n\t_showError(message) {\n\t\tconst errorElement = this.element.querySelector('.feedback-error');\n\t\tif (errorElement) {\n\t\t\terrorElement.textContent = message;\n\t\t\terrorElement.style.display = 'block';\n\n\t\t\tsetTimeout(() => {\n\t\t\t\tif (errorElement) {\n\t\t\t\t\terrorElement.style.display = 'none';\n\t\t\t\t}\n\t\t\t}, 5000);\n\t\t}\n\t}\n\n\t_updateSubmitButton() {\n\t\tconst submitBtn = this.element.querySelector('.feedback-btn-submit');\n\t\tif (submitBtn) {\n\t\t\tsubmitBtn.textContent = this.state.isSubmitting\n\t\t\t\t? 'Sending...'\n\t\t\t\t: 'Send Feedback';\n\t\t\tsubmitBtn.disabled = this.state.isSubmitting;\n\t\t}\n\t}\n\n\tupdateTitle(title) {\n\t\tconst titleElement = this.element?.querySelector('h3');\n\t\tif (titleElement) {\n\t\t\ttitleElement.textContent = title;\n\t\t}\n\t}\n\n\tsetPlaceholder(field, placeholder) {\n\t\tconst input = this.element?.querySelector(`[name=\"${field}\"]`);\n\t\tif (input) {\n\t\t\tinput.placeholder = placeholder;\n\t\t}\n\t}\n}\n","import { BaseWidget } from './BaseWidget.js';\n\nexport class TabWidget extends BaseWidget {\n\tconstructor(options) {\n\t\tsuper({ ...options, type: 'tab' });\n\t}\n\n\t_render() {\n\t\tconst tab = document.createElement('div');\n\t\ttab.className = `feedback-widget feedback-widget-tab theme-${this.options.theme} position-${this.options.position}`;\n\t\ttab.innerHTML = `\n <div class=\"feedback-tab-trigger\">\n <span class=\"feedback-tab-text\">Feedback</span>\n </div>\n `;\n\n\t\tif (this.options.customStyles) {\n\t\t\tObject.assign(tab.style, this.options.customStyles);\n\t\t}\n\n\t\treturn tab;\n\t}\n\n\t_attachEvents() {\n\t\tconst tab = this.element.querySelector('.feedback-tab-trigger');\n\t\ttab.addEventListener('click', this.openModal);\n\n\t\ttab.addEventListener('mouseenter', () => {\n\t\t\tif (!this.state.isSubmitting) {\n\t\t\t\ttab.style.transform = this._getHoverTransform();\n\t\t\t}\n\t\t});\n\n\t\ttab.addEventListener('mouseleave', () => {\n\t\t\ttab.style.transform = 'none';\n\t\t});\n\t}\n\n\t_getHoverTransform() {\n\t\tconst position = this.options.position;\n\t\tif (position.includes('right')) {\n\t\t\treturn 'translateX(-5px)';\n\t\t} else if (position.includes('left')) {\n\t\t\treturn 'translateX(5px)';\n\t\t}\n\t\treturn 'none';\n\t}\n\n\tupdateText(text) {\n\t\tconst textElement = this.element?.querySelector('.feedback-tab-text');\n\t\tif (textElement) {\n\t\t\ttextElement.textContent = text;\n\t\t}\n\t}\n\n\tupdatePosition(position) {\n\t\tthis.options.position = position;\n\t\tif (this.element) {\n\t\t\tthis.element.className = this.element.className.replace(\n\t\t\t\t/position-\\w+-\\w+/,\n\t\t\t\t`position-${position}`\n\t\t\t);\n\t\t}\n\t}\n}\n","import { SDKError } from '../utils/errors.js';\nimport { ButtonWidget } from './ButtonWidget.js';\nimport { InlineWidget } from './InlineWidget.js';\nimport { TabWidget } from './TabWidget.js';\n\nexport class WidgetFactory {\n\tstatic widgets = new Map([\n\t\t['button', ButtonWidget],\n\t\t['tab', TabWidget],\n\t\t['inline', InlineWidget],\n\t]);\n\n\tstatic register(type, WidgetClass) {\n\t\tif (typeof type !== 'string' || !type.trim()) {\n\t\t\tthrow new SDKError('Widget type must be a non-empty string');\n\t\t}\n\n\t\tif (typeof WidgetClass !== 'function') {\n\t\t\tthrow new SDKError('Widget class must be a constructor function');\n\t\t}\n\n\t\tthis.widgets.set(type, WidgetClass);\n\t}\n\n\tstatic create(type, options = {}) {\n\t\tconst WidgetClass = this.widgets.get(type);\n\n\t\tif (!WidgetClass) {\n\t\t\tconst availableTypes = Array.from(this.widgets.keys()).join(', ');\n\t\t\tthrow new SDKError(\n\t\t\t\t`Unknown widget type: ${type}. Available types: ${availableTypes}`\n\t\t\t);\n\t\t}\n\n\t\ttry {\n\t\t\treturn new WidgetClass(options);\n\t\t} catch (error) {\n\t\t\tthrow new SDKError(\n\t\t\t\t`Failed to create widget of type '${type}': ${error.message}`,\n\t\t\t\terror\n\t\t\t);\n\t\t}\n\t}\n\n\tstatic getAvailableTypes() {\n\t\treturn Array.from(this.widgets.keys());\n\t}\n\n\tstatic isTypeRegistered(type) {\n\t\treturn this.widgets.has(type);\n\t}\n\n\tstatic unregister(type) {\n\t\treturn this.widgets.delete(type);\n\t}\n\n\tstatic clear() {\n\t\tthis.widgets.clear();\n\t}\n\n\tstatic getWidgetClass(type) {\n\t\treturn this.widgets.get(type);\n\t}\n}\n","import { ConfigError, SDKError } from '../utils/errors.js';\nimport { deepMerge, generateId } from '../utils/helpers.js';\nimport { WidgetFactory } from '../widgets/WidgetFactory.js';\nimport { APIService } from './APIService.js';\nimport { EventBus } from './EventBus.js';\n\nexport class FeedbackSDK {\n\tconstructor(config = {}) {\n\t\tthis.config = this._validateAndMergeConfig(config);\n\t\tthis.initialized = false;\n\t\tthis.widgets = new Map();\n\t\tthis.eventBus = new EventBus();\n\n\t\tthis.apiService = new APIService({\n\t\t\tapiUrl: this.config.apiUrl,\n\t\t\tworkspace: this.config.workspace,\n\t\t\tuserContext: this.config.userContext,\n\t\t});\n\n\t\tthis._bindMethods();\n\t}\n\n\tasync init() {\n\t\tif (this.initialized) {\n\t\t\treturn { alreadyInitialized: true };\n\t\t}\n\n\t\ttry {\n\t\t\tconst initData = await this.apiService.init(this.config.userContext);\n\n\t\t\tif (initData.config) {\n\t\t\t\tthis.config = deepMerge(this.config, initData.config);\n\t\t\t}\n\n\t\t\tthis.initialized = true;\n\t\t\tthis.eventBus.emit('sdk:initialized', {\n\t\t\t\tconfig: this.config,\n\t\t\t\tsessionToken: initData.sessionToken,\n\t\t\t});\n\n\t\t\treturn {\n\t\t\t\tinitialized: true,\n\t\t\t\tconfig: initData.config || {},\n\t\t\t\tsessionToken: initData.sessionToken,\n\t\t\t\texpiresIn: initData.expiresIn,\n\t\t\t};\n\t\t} catch (error) {\n\t\t\tthis.eventBus.emit('sdk:error', { error });\n\t\t\tthrow new SDKError(`Failed to initialize SDK: ${error.message}`, error);\n\t\t}\n\t}\n\n\tcreateWidget(type = 'button', options = {}) {\n\t\tif (!this.initialized) {\n\t\t\tthrow new SDKError('SDK must be initialized before creating widgets. Call init() first.');\n\t\t}\n\n\t\tconst widgetId = generateId('widget');\n\t\tconst widgetOptions = {\n\t\t\tid: widgetId,\n\t\t\tsdk: this,\n\t\t\tapiService: this.apiService,\n\t\t\t...this.config,\n\t\t\t...options,\n\t\t};\n\n\t\ttry {\n\t\t\tconst widget = WidgetFactory.create(type, widgetOptions);\n\t\t\tthis.widgets.set(widgetId, widget);\n\t\t\tthis.eventBus.emit('widget:created', { widget, type });\n\t\t\treturn widget;\n\t\t} catch (error) {\n\t\t\tthrow new SDKError(`Failed to create widget: ${error.message}`, error);\n\t\t}\n\t}\n\n\tgetWidget(id) {\n\t\treturn this.widgets.get(id);\n\t}\n\n\tgetAllWidgets() {\n\t\treturn Array.from(this.widgets.values());\n\t}\n\n\tdestroyWidget(id) {\n\t\tconst widget = this.widgets.get(id);\n\t\tif (widget) {\n\t\t\twidget.destroy();\n\t\t\tthis.widgets.delete(id);\n\t\t\tthis.eventBus.emit('widget:removed', { widgetId: id });\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\tdestroyAllWidgets() {\n\t\tfor (const widget of this.widgets.values()) {\n\t\t\twidget.destroy();\n\t\t}\n\t\tthis.widgets.clear();\n\t\tthis.eventBus.emit('widgets:cleared');\n\t}\n\n\tupdateConfig(newConfig) {\n\t\tconst oldConfig = { ...this.config };\n\t\tthis.config = this._validateAndMergeConfig(newConfig, this.config);\n\n\t\tfor (const widget of this.widgets.values()) {\n\t\t\twidget.handleConfigUpdate(this.config);\n\t\t}\n\n\t\tthis.eventBus.emit('config:updated', {\n\t\t\toldConfig,\n\t\t\tnewConfig: this.config,\n\t\t});\n\t}\n\n\tsetUserContext(userContext) {\n\t\tthis.config.userContext = userContext;\n\t\tif (this.apiService) {\n\t\t\tthis.apiService.setUserContext(userContext);\n\t\t}\n\t\tthis.eventBus.emit('user:updated', { userContext });\n\t}\n\n\tgetUserContext() {\n\t\treturn this.config.userContext || (this.apiService ? this.apiService.getUserContext() : null);\n\t}\n\n\tasync reinitialize(newUserContext = null) {\n\t\tthis.apiService.clearSession();\n\t\tthis.initialized = false;\n\n\t\tif (newUserContext) {\n\t\t\tthis.setUserContext(newUserContext);\n\t\t}\n\n\t\treturn this.init();\n\t}\n\n\ton(event, callback) {\n\t\tthis.eventBus.on(event, callback);\n\t\treturn this;\n\t}\n\n\toff(event, callback) {\n\t\tthis.eventBus.off(event, callback);\n\t\treturn this;\n\t}\n\n\tonce(event, callback) {\n\t\tthis.eventBus.once(event, callback);\n\t\treturn this;\n\t}\n\n\temit(event, data) {\n\t\tthis.eventBus.emit(event, data);\n\t\treturn this;\n\t}\n\n\tdestroy() {\n\t\tthis.destroyAllWidgets();\n\t\tthis.eventBus.removeAllListeners();\n\t\tthis.apiService.clearSession();\n\t\tthis.initialized = false;\n\t\tthis.eventBus.emit('sdk:destroyed');\n\t}\n\n\t_validateAndMergeConfig(newConfig, existingConfig = {}) {\n\t\tconst defaultConfig = {\n\t\t\tapiUrl: null,\n\t\t\tworkspace: null,\n\t\t\tuserContext: null,\n\t\t\tposition: 'bottom-right',\n\t\t\ttheme: 'light',\n\t\t\tboardId: 'general',\n\t\t\tautoShow: true,\n\t\t\tdebug: false,\n\t\t};\n\n\t\tconst mergedConfig = deepMerge(deepMerge(defaultConfig, existingConfig), newConfig);\n\n\t\tif (!mergedConfig.workspace) {\n\t\t\tthrow new ConfigError('Missing required configuration: workspace');\n\t\t}\n\n\t\tif (mergedConfig.userContext) {\n\t\t\tthis._validateUserContext(mergedConfig.userContext);\n\t\t}\n\n\t\treturn mergedConfig;\n\t}\n\n\t_validateUserContext(userContext) {\n\t\tif (!userContext.user_id && !userContext.email) {\n\t\t\tthrow new ConfigError('User context must include at least user_id or email');\n\t\t}\n\n\t\tconst validStructure = {\n\t\t\tuser_id: 'string',\n\t\t\temail: 'string',\n\t\t\tname: 'string',\n\t\t\tcustom_fields: 'object',\n\t\t\tcompany: 'object',\n\t\t};\n\n\t\tfor (const [key, expectedType] of Object.entries(validStructure)) {\n\t\t\tif (userContext[key] && typeof userContext[key] !== expectedType) {\n\t\t\t\tthrow new ConfigError(`User context field '${key}' must be of type '${expectedType}'`);\n\t\t\t}\n\t\t}\n\t}\n\n\t_bindMethods() {\n\t\tthis.createWidget = this.createWidget.bind(this);\n\t\tthis.destroyWidget = this.destroyWidget.bind(this);\n\t\tthis.updateConfig = this.updateConfig.bind(this);\n\t}\n\n\tstatic create(config) {\n\t\treturn new FeedbackSDK(config);\n\t}\n\n\tstatic async createAndInit(config) {\n\t\tconst sdk = new FeedbackSDK(config);\n\t\tawait sdk.init();\n\t\treturn sdk;\n\t}\n\n\tstatic extractUserContextFromAuth(authData) {\n\t\tif (!authData) return null;\n\n\t\treturn {\n\t\t\tuser_id: authData.sub || authData.id || authData.user_id,\n\t\t\temail: authData.email,\n\t\t\tname: authData.name || authData.display_name || authData.full_name,\n\t\t\tcustom_fields: {\n\t\t\t\trole: authData.role,\n\t\t\t\tplan: authData.plan || authData.subscription?.plan,\n\t\t\t\t...(authData.custom_fields || {}),\n\t\t\t},\n\t\t\tcompany: authData.company || authData.organization ? {\n\t\t\t\tid: authData.company?.id || authData.organization?.id,\n\t\t\t\tname: authData.company?.name || authData.organization?.name,\n\t\t\t\tmonthly_spend: authData.company?.monthly_spend,\n\t\t\t} : undefined,\n\t\t};\n\t}\n}\n","export const CSS_STYLES = `\n.feedback-widget {\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', Oxygen, Ubuntu, Cantarell, sans-serif;\n font-size: 14px;\n line-height: 1.4;\n z-index: 999999;\n box-sizing: border-box;\n}\n\n.feedback-widget *,\n.feedback-widget *::before,\n.feedback-widget *::after {\n box-sizing: border-box;\n}\n\n.feedback-widget-button {\n position: fixed;\n z-index: 999999;\n}\n\n.feedback-widget-button.position-bottom-right {\n bottom: 20px;\n right: 20px;\n}\n\n.feedback-widget-button.position-bottom-left {\n bottom: 20px;\n left: 20px;\n}\n\n.feedback-widget-button.position-top-right {\n top: 20px;\n right: 20px;\n}\n\n.feedback-widget-button.position-top-left {\n top: 20px;\n left: 20px;\n}\n\n.feedback-trigger-btn {\n position: relative;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 12px;\n height: 44px;\n overflow: hidden;\n border-radius: 0.5rem;\n border: none;\n padding: 10px 16px;\n font-size: 14px;\n font-weight: 500;\n font-family: inherit;\n cursor: pointer;\n transition: all 0.3s ease;\n color: white;\n background: #155EEF;\n box-shadow: 0 1px 2px 0 rgba(16, 24, 40, 0.05);\n}\n\n.feedback-trigger-btn:hover:not(:disabled) {\n background: #004EEB;\n box-shadow: 0 1px 2px 0 rgba(16, 24, 40, 0.1);\n}\n\n.feedback-trigger-btn:disabled {\n opacity: 0.7;\n cursor: not-allowed;\n}\n\n.feedback-trigger-btn:focus-visible {\n outline: 2px solid #155EEF;\n outline-offset: 2px;\n}\n\n/* Side Panel Styles */\n.feedback-panel {\n position: fixed;\n bottom: 80px;\n right: 24px;\n width: 420px;\n max-height: 500px;\n z-index: 1000000;\n transform: translateX(calc(100% + 24px));\n transition: transform 0.35s cubic-bezier(0.4, 0, 0.2, 1);\n font-family: inherit;\n}\n\n.feedback-panel.open {\n transform: translateX(0);\n}\n\n.feedback-panel-backdrop {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(0, 0, 0, 0.1);\n opacity: 0;\n transition: opacity 0.3s ease;\n pointer-events: none;\n z-index: 999999;\n}\n\n.feedback-panel-backdrop.show {\n opacity: 1;\n pointer-events: auto;\n}\n\n.feedback-panel-content {\n background: white;\n height: 100%;\n display: flex;\n flex-direction: column;\n border-radius: 16px;\n box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), \n 0 10px 10px -5px rgba(0, 0, 0, 0.04),\n 0 0 0 1px rgba(0, 0, 0, 0.05);\n}\n\n.feedback-panel.theme-dark .feedback-panel-content {\n background: #1F2937;\n color: white;\n}\n\n.feedback-panel-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 24px;\n border-bottom: 1px solid #E5E7EB;\n flex-shrink: 0;\n}\n\n.feedback-panel.theme-dark .feedback-panel-header {\n border-bottom-color: #374151;\n}\n\n.feedback-panel-header h3 {\n margin: 0;\n font-size: 18px;\n font-weight: 600;\n color: #111827;\n}\n\n.feedback-panel.theme-dark .feedback-panel-header h3 {\n color: white;\n}\n\n.feedback-panel-close {\n background: none;\n border: none;\n font-size: 24px;\n cursor: pointer;\n color: #6B7280;\n padding: 4px;\n width: 32px;\n height: 32px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 6px;\n transition: all 0.2s ease;\n}\n\n.feedback-panel-close:hover {\n background: #F3F4F6;\n color: #111827;\n}\n\n.feedback-panel-close:focus-visible {\n outline: 2px solid #155EEF;\n outline-offset: 2px;\n}\n\n.feedback-panel.theme-dark .feedback-panel-close {\n color: #9CA3AF;\n}\n\n.feedback-panel.theme-dark .feedback-panel-close:hover {\n background: #374151;\n color: white;\n}\n\n.feedback-panel-body {\n flex: 1;\n overflow-y: auto;\n padding: 24px;\n}\n\n.feedback-form {\n display: flex;\n flex-direction: column;\n height: 100%;\n}\n\n.feedback-form-group {\n display: flex;\n flex-direction: column;\n gap: 8px;\n margin-bottom: 20px;\n}\n\n.feedback-form-group:last-child {\n margin-bottom: 0;\n}\n\n.feedback-form-group label {\n font-size: 14px;\n font-weight: 500;\n line-height: 1.25;\n color: #374151;\n}\n\n.feedback-panel.theme-dark .feedback-form-group label {\n color: #D1D5DB;\n}\n\n.feedback-form-group input {\n height: 44px;\n width: 100%;\n border-radius: 8px;\n border: 1px solid #D1D5DB;\n padding: 10px 14px;\n font-size: 15px;\n font-weight: 400;\n line-height: 1.5;\n color: #1F2937;\n font-family: inherit;\n outline: none;\n transition: all 0.2s ease;\n}\n\n.feedback-form-group input::placeholder {\n font-size: 15px;\n color: #9CA3AF;\n}\n\n.feedback-form-group input:focus {\n border-color: #155EEF;\n box-shadow: 0 0 0 3px rgba(21, 94, 239, 0.1);\n}\n\n.feedback-form-group input:focus-visible {\n outline: none;\n}\n\n.feedback-form-group textarea {\n min-height: 200px;\n width: 100%;\n resize: vertical;\n border-radius: 8px;\n border: 1px solid #D1D5DB;\n padding: 10px 14px;\n font-size: 15px;\n font-weight: 400;\n line-height: 1.5;\n color: #1F2937;\n font-family: inherit;\n outline: none;\n transition: all 0.2s ease;\n}\n\n.feedback-form-group textarea::placeholder {\n font-size: 15px;\n color: #9CA3AF;\n}\n\n.feedback-form-group textarea:focus {\n border-color: #155EEF;\n box-shadow: 0 0 0 3px rgba(21, 94, 239, 0.1);\n}\n\n.feedback-form-group textarea:focus-visible {\n outline: none;\n}\n\n.feedback-panel.theme-dark .feedback-form-group input,\n.feedback-panel.theme-dark .feedback-form-group textarea {\n background: #374151;\n border-color: #4B5563;\n color: white;\n}\n\n.feedback-panel.theme-dark .feedback-form-group input::placeholder,\n.feedback-panel.theme-dark .feedback-form-group textarea::placeholder {\n color: #6B7280;\n}\n\n.feedback-btn {\n position: relative;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n overflow: hidden;\n border-radius: 8px;\n border: none;\n height: 44px;\n padding: 10px 18px;\n font-size: 15px;\n font-weight: 500;\n font-family: inherit;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.feedback-btn:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n}\n\n.feedback-btn:focus-visible {\n outline: 2px solid #155EEF;\n outline-offset: 2px;\n}\n\n.feedback-btn-submit {\n background: #155EEF;\n color: white;\n width: 100%;\n}\n\n.feedback-btn-submit:hover:not(:disabled) {\n background: #1A56DB;\n}\n\n.feedback-btn-submit:active:not(:disabled) {\n background: #1E429F;\n}\n\n.feedback-btn-cancel {\n background: transparent;\n color: #6B7280;\n border: 1px solid #D1D5DB;\n}\n\n.feedback-btn-cancel:hover:not(:disabled) {\n background: #F9FAFB;\n border-color: #9CA3AF;\n color: #374151;\n}\n\n.feedback-panel.theme-dark .feedback-btn-cancel {\n color: #D1D5DB;\n border-color: #4B5563;\n}\n\n.feedback-panel.theme-dark .feedback-btn-cancel:hover:not(:disabled) {\n background: #374151;\n}\n\n.feedback-form-actions {\n display: flex;\n flex-direction: column;\n gap: 12px;\n margin-top: auto;\n padding-top: 24px;\n}\n\n.feedback-error {\n color: #DC2626;\n font-size: 14px;\n font-weight: 400;\n margin-top: 8px;\n padding: 12px;\n background: #FEE2E2;\n border: 1px solid #FECACA;\n border-radius: 8px;\n display: none;\n}\n\n.feedback-error.show {\n display: block;\n}\n\n.feedback-panel.theme-dark .feedback-error {\n background: #7F1D1D;\n border-color: #991B1B;\n color: #FCA5A5;\n}\n\n.feedback-success-notification {\n position: fixed;\n top: 24px;\n right: 24px;\n z-index: 1000002;\n background: white;\n border: 1px solid #D1FAE5;\n border-radius: 12px;\n box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);\n animation: slideInRight 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n min-width: 320px;\n}\n\n.feedback-success-content {\n display: flex;\n align-items: center;\n padding: 16px 20px;\n gap: 12px;\n}\n\n.feedback-success-icon {\n width: 20px;\n height: 20px;\n border-radius: 50%;\n background: #10B981;\n color: white;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 12px;\n font-weight: 600;\n flex-shrink: 0;\n}\n\n.feedback-success-content span {\n color: #065F46;\n font-weight: 500;\n font-size: 14px;\n flex: 1;\n}\n\n.feedback-success-close {\n background: none;\n border: none;\n color: #6B7280;\n cursor: pointer;\n font-size: 20px;\n padding: 0;\n width: 24px;\n height: 24px;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: all 0.2s ease;\n border-radius: 4px;\n flex-shrink: 0;\n}\n\n.feedback-success-close:hover {\n background: #F3F4F6;\n color: #374151;\n}\n\n.feedback-success-close:focus-visible {\n outline: 2px solid #155EEF;\n outline-offset: 2px;\n}\n\n@keyframes slideInRight {\n from {\n transform: translateX(400px);\n opacity: 0;\n }\n to {\n transform: translateX(0);\n opacity: 1;\n }\n}\n\n@keyframes fadeIn {\n from { opacity: 0; }\n to { opacity: 1; }\n}\n\n.feedback-panel-backdrop {\n animation: fadeIn 0.3s ease;\n}\n\n@media (max-width: 768px) {\n .feedback-panel {\n width: 100%;\n top: auto;\n bottom: 0;\n right: 0;\n left: 0;\n height: 85vh;\n max-height: 85vh;\n transform: translateY(100%);\n border-radius: 20px 20px 0 0;\n }\n \n .feedback-panel.open {\n transform: translateY(0);\n }\n \n .feedback-panel-content {\n border-radius: 20px 20px 0 0;\n }\n \n .feedback-panel-header {\n padding: 20px;\n position: relative;\n }\n \n .feedback-panel-header::before {\n content: '';\n position: absolute;\n top: 8px;\n left: 50%;\n transform: translateX(-50%);\n width: 40px;\n height: 4px;\n background: #D1D5DB;\n border-radius: 2px;\n }\n \n .feedback-panel.theme-dark .feedback-panel-header::before {\n background: #4B5563;\n }\n \n .feedback-panel-body {\n padding: 20px;\n }\n \n .feedback-form-group textarea {\n min-height: 150px;\n }\n \n .feedback-widget-button {\n bottom: 16px;\n right: 16px;\n }\n \n .feedback-widget-button.position-bottom-left {\n left: 16px;\n }\n \n .feedback-success-notification {\n top: 16px;\n right: 16px;\n left: 16px;\n min-width: auto;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .feedback-trigger-btn,\n .feedback-btn,\n .feedback-panel,\n .feedback-panel-backdrop,\n .feedback-success-notification {\n transition: none;\n animation: none;\n }\n}\n\n@media print {\n .feedback-widget,\n .feedback-panel,\n .feedback-panel-backdrop,\n .feedback-success-notification {\n display: none !important;\n }\n}\n`;","import { APIService } from './core/APIService.js';\nimport { EventBus } from './core/EventBus.js';\nimport { FeedbackSDK } from './core/FeedbackSDK.js';\nimport { CSS_STYLES } from './styles/styles.js';\nimport {\n\tAPIError,\n\tConfigError,\n\tSDKError,\n\tValidationError,\n\tWidgetError,\n} from './utils/errors.js';\nimport * as helpers from './utils/helpers.js';\nimport { BaseWidget } from './widgets/BaseWidget.js';\nimport { ButtonWidget } from './widgets/ButtonWidget.js';\nimport { InlineWidget } from './widgets/InlineWidget.js';\nimport { TabWidget } from './widgets/TabWidget.js';\nimport { WidgetFactory } from './widgets/WidgetFactory.js';\n\nfunction injectStyles() {\n\tif (typeof document !== 'undefined' && !document.querySelector('#feedback-sdk-styles')) {\n\t\tconst style = document.createElement('style');\n\t\tstyle.id = 'feedback-sdk-styles';\n\t\tstyle.textContent = CSS_STYLES;\n\t\tdocument.head.appendChild(style);\n\t}\n}\n\nfunction autoInit() {\n\tif (typeof window !== 'undefined' && window.FeedbackSDKConfig) {\n\t\tinjectStyles();\n\n\t\tconst config = { ...window.FeedbackSDKConfig };\n\t\tconst sdk = new FeedbackSDK(config);\n\n\t\tsdk\n\t\t\t.init()\n\t\t\t.then((initData) => {\n\t\t\t\twindow.FeedbackSDK.instance = sdk;\n\n\t\t\t\tif (window.FeedbackSDKConfig.autoCreate) {\n\t\t\t\t\tconst widgets = Array.isArray(window.FeedbackSDKConfig.autoCreate)\n\t\t\t\t\t\t? window.FeedbackSDKConfig.autoCreate\n\t\t\t\t\t\t: [window.FeedbackSDKConfig.autoCreate];\n\n\t\t\t\t\twidgets.forEach((widgetConfig) => {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tconst widget = sdk.createWidget(\n\t\t\t\t\t\t\t\twidgetConfig.type || 'button',\n\t\t\t\t\t\t\t\twidgetConfig\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\twidget.mount(widgetConfig.container);\n\t\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t\tconsole.error('[FeedbackSDK] Failed to create widget:', error);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tif (typeof CustomEvent !== 'undefined') {\n\t\t\t\t\tconst event = new CustomEvent('FeedbackSDKReady', {\n\t\t\t\t\t\tdetail: { sdk, config, initData },\n\t\t\t\t\t});\n\t\t\t\t\twindow.dispatchEvent(event);\n\t\t\t\t}\n\t\t\t})\n\t\t\t.catch((error) => {\n\t\t\t\tconsole.error('[FeedbackSDK] Auto-initialization failed:', error);\n\n\t\t\t\tif (typeof CustomEvent !== 'undefined') {\n\t\t\t\t\tconst event = new CustomEvent('FeedbackSDKError', {\n\t\t\t\t\t\tdetail: { error, config, phase: 'initialization' },\n\t\t\t\t\t});\n\t\t\t\t\twindow.dispatchEvent(event);\n\t\t\t\t}\n\t\t\t});\n\t}\n}\n\nfunction handleDOMReady() {\n\tif (typeof document !== 'undefined') {\n\t\tif (document.readyState === 'loading') {\n\t\t\tdocument.addEventListener('DOMContentLoaded', autoInit);\n\t\t} else {\n\t\t\tsetTimeout(autoInit, 0);\n\t\t}\n\t}\n}\n\nconst FeedbackSDKExport = {\n\tFeedbackSDK,\n\tBaseWidget,\n\tButtonWidget,\n\tTabWidget,\n\tInlineWidget,\n\tWidgetFactory,\n\tEventBus,\n\tAPIService,\n\tSDKError,\n\tAPIError,\n\tWidgetError,\n\tConfigError,\n\tValidationError,\n\thelpers,\n\tcreate: (config) => {\n\t\tinjectStyles();\n\t\treturn new FeedbackSDK(config);\n\t},\n\tversion: '1.0.0',\n\tinstance: null,\n\n\tisReady: () => Boolean(FeedbackSDKExport.instance),\n\tgetInstance: () => FeedbackSDKExport.instance,\n\n\tsetUserContext: (userContext) => {\n\t\tif (FeedbackSDKExport.instance) {\n\t\t\tFeedbackSDKExport.instance.setUserContext(userContext);\n\t\t} else {\n\t\t\tif (typeof window !== 'undefined') {\n\t\t\t\twindow.FeedbackSDKUserContext = userContext;\n\t\t\t}\n\t\t}\n\t},\n\n\tinitWithUser: async (config, userContext) => {\n\t\tinjectStyles();\n\t\tconst fullConfig = { ...config, userContext };\n\t\tconst sdk = new FeedbackSDK(fullConfig);\n\t\tawait sdk.init();\n\n\t\tif (typeof window !== 'undefined') {\n\t\t\twindow.FeedbackSDK.instance = sdk;\n\t\t}\n\n\t\treturn sdk;\n\t},\n\n\tonReady: (callback) => {\n\t\tif (typeof window !== 'undefined') {\n\t\t\tif (FeedbackSDKExport.isReady()) {\n\t\t\t\tcallback(FeedbackSDKExport.instance);\n\t\t\t} else {\n\t\t\t\twindow.addEventListener(\n\t\t\t\t\t'FeedbackSDKReady',\n\t\t\t\t\t(event) => {\n\t\t\t\t\t\tcallback(event.detail.sdk, event.detail);\n\t\t\t\t\t},\n\t\t\t\t\t{ once: true }\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t},\n\n\tonError: (callback) => {\n\t\tif (typeof window !== 'undefined') {\n\t\t\twindow.addEventListener('FeedbackSDKError', (event) => {\n\t\t\t\tcallback(event.detail.error, event.detail);\n\t\t\t});\n\t\t}\n\t},\n\n\textractUserContext: FeedbackSDK.extractUserContextFromAuth,\n};\n\nif (typeof window !== 'undefined') {\n\twindow.FeedbackSDK = FeedbackSDKExport;\n\thandleDOMReady();\n}\n\nexport default FeedbackSDKExport;\n\nexport {\n\tAPIError,\n\tAPIService,\n\tBaseWidget,\n\tButtonWidget,\n\tConfigError,\n\tEventBus,\n\tFeedbackSDK,\n\thelpers,\n\tInlineWidget,\n\tSDKError,\n\tTabWidget,\n\tValidationError,\n\tWidgetError,\n\tWidgetFactory,\n};"],"names":[],"mappings":"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CAAC,OAAO,EAAE,IAAI,IAAI,QAAQ,CAAC,YAAY,EAAE,IAAI;CAC/D,IAAI,aAAa,EAAE,QAAQ,CAAC,OAAO,EAAE,aAAa;CAClD,IAAI,GAAG,SAAS;CAChB,GAAG;CACH,CAAC;CACD;;CCxPO,MAAM,UAAU,GAAG;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC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"}
|
|
1
|
+
{"version":3,"file":"feedback-sdk.js","sources":["../src/utils/errors.js","../src/core/APIService.js","../src/core/EventBus.js","../src/utils/helpers.js","../src/widgets/BaseWidget.js","../src/widgets/ButtonWidget.js","../src/widgets/InlineWidget.js","../src/widgets/TabWidget.js","../src/widgets/WidgetFactory.js","../src/core/FeedbackSDK.js","../src/styles/styles.js","../src/index.js"],"sourcesContent":["export class SDKError extends Error {\n\tconstructor(message, cause) {\n\t\tsuper(message);\n\t\tthis.name = 'SDKError';\n\t\tthis.cause = cause;\n\n\t\tif (Error.captureStackTrace) {\n\t\t\tError.captureStackTrace(this, SDKError);\n\t\t}\n\t}\n}\n\nexport class APIError extends Error {\n\tconstructor(status, message, response) {\n\t\tsuper(message);\n\t\tthis.name = 'APIError';\n\t\tthis.status = status;\n\t\tthis.response = response;\n\n\t\tif (Error.captureStackTrace) {\n\t\t\tError.captureStackTrace(this, APIError);\n\t\t}\n\t}\n\n\tisNetworkError() {\n\t\treturn this.status === 0;\n\t}\n\n\tisClientError() {\n\t\treturn this.status >= 400 && this.status < 500;\n\t}\n\n\tisServerError() {\n\t\treturn this.status >= 500 && this.status < 600;\n\t}\n}\n\nexport class WidgetError extends Error {\n\tconstructor(message, widgetType, widgetId) {\n\t\tsuper(message);\n\t\tthis.name = 'WidgetError';\n\t\tthis.widgetType = widgetType;\n\t\tthis.widgetId = widgetId;\n\n\t\tif (Error.captureStackTrace) {\n\t\t\tError.captureStackTrace(this, WidgetError);\n\t\t}\n\t}\n}\n\nexport class ConfigError extends Error {\n\tconstructor(message, configKey) {\n\t\tsuper(message);\n\t\tthis.name = 'ConfigError';\n\t\tthis.configKey = configKey;\n\n\t\tif (Error.captureStackTrace) {\n\t\t\tError.captureStackTrace(this, ConfigError);\n\t\t}\n\t}\n}\n\nexport class ValidationError extends Error {\n\tconstructor(message, field, value) {\n\t\tsuper(message);\n\t\tthis.name = 'ValidationError';\n\t\tthis.field = field;\n\t\tthis.value = value;\n\n\t\tif (Error.captureStackTrace) {\n\t\t\tError.captureStackTrace(this, ValidationError);\n\t\t}\n\t}\n}\n\nexport class ErrorHandler {\n\tconstructor(debug = false) {\n\t\tthis.debug = debug;\n\t}\n\n\thandle(error, context = '') {\n\t\tconst errorInfo = {\n\t\t\tname: error.name,\n\t\t\tmessage: error.message,\n\t\t\tcontext,\n\t\t\ttimestamp: new Date().toISOString(),\n\t\t};\n\n\t\tif (error instanceof APIError) {\n\t\t\terrorInfo.status = error.status;\n\t\t\terrorInfo.type = 'api';\n\t\t} else if (error instanceof WidgetError) {\n\t\t\terrorInfo.widgetType = error.widgetType;\n\t\t\terrorInfo.widgetId = error.widgetId;\n\t\t\terrorInfo.type = 'widget';\n\t\t} else if (error instanceof ConfigError) {\n\t\t\terrorInfo.configKey = error.configKey;\n\t\t\terrorInfo.type = 'config';\n\t\t} else if (error instanceof ValidationError) {\n\t\t\terrorInfo.field = error.field;\n\t\t\terrorInfo.value = error.value;\n\t\t\terrorInfo.type = 'validation';\n\t\t} else {\n\t\t\terrorInfo.type = 'unknown';\n\t\t}\n\n\t\tif (this.debug) {\n\t\t\tconsole.error('[FeedbackSDK Error]', errorInfo, error);\n\t\t} else {\n\t\t\tconsole.error('[FeedbackSDK Error]', error.message);\n\t\t}\n\n\t\treturn errorInfo;\n\t}\n\n\tgetUserMessage(error) {\n\t\tif (error instanceof APIError) {\n\t\t\tif (error.isNetworkError()) {\n\t\t\t\treturn 'Network error. Please check your connection and try again.';\n\t\t\t} else if (error.isClientError()) {\n\t\t\t\treturn 'Invalid request. Please check your input and try again.';\n\t\t\t} else if (error.isServerError()) {\n\t\t\t\treturn 'Server error. Please try again later.';\n\t\t\t}\n\t\t\treturn 'Failed to submit feedback. Please try again.';\n\t\t}\n\n\t\tif (error instanceof ValidationError) {\n\t\t\treturn `Please check your ${error.field}: ${error.message}`;\n\t\t}\n\n\t\tif (error instanceof ConfigError) {\n\t\t\treturn 'Configuration error. Please check your SDK setup.';\n\t\t}\n\n\t\tif (error instanceof WidgetError) {\n\t\t\treturn 'Widget error. Please try refreshing the page.';\n\t\t}\n\n\t\treturn 'An unexpected error occurred. Please try again.';\n\t}\n}\n","import { APIError } from '../utils/errors.js';\n\nexport class APIService {\n\tconstructor(config = {}) {\n\t\tthis.workspace = config.workspace;\n\t\tthis.sessionToken = null;\n\t\tthis.sessionExpiry = null;\n\t\tthis.userContext = config.userContext || null;\n\n\t\tif (config.apiUrl) {\n\t\t\tthis.baseURL = config.apiUrl;\n\t\t} else if (this.workspace) {\n\t\t\tthis.baseURL = `https://${this.workspace}.staging.api.product7.io/api/v1`;\n\t\t} else {\n\t\t\tthis.baseURL = 'https://staging.api.product7.io/api/v1';\n\t\t}\n\n\t\tthis._loadStoredSession();\n\t}\n\n\tasync init(userContext = null) {\n\t\tif (userContext) {\n\t\t\tthis.userContext = userContext;\n\t\t}\n\n\t\tif (this.isSessionValid()) {\n\t\t\treturn { sessionToken: this.sessionToken };\n\t\t}\n\n\t\tif (!this.userContext || !this.workspace) {\n\t\t\tconst error = `Missing ${!this.workspace ? 'workspace' : 'user context'} for initialization`;\n\t\t\tthrow new APIError(400, error);\n\t\t}\n\n\t\tconst payload = {\n\t\t\tworkspace: this.workspace,\n\t\t\tuser: this.userContext,\n\t\t};\n\n\t\ttry {\n\t\t\tconst response = await this._makeRequest('/widget/init', {\n\t\t\t\tmethod: 'POST',\n\t\t\t\tbody: JSON.stringify(payload),\n\t\t\t\theaders: {\n\t\t\t\t\t'Content-Type': 'application/json',\n\t\t\t\t},\n\t\t\t});\n\n\t\t\tthis.sessionToken = response.session_token;\n\t\t\tthis.sessionExpiry = new Date(Date.now() + response.expires_in * 1000);\n\t\t\tthis._storeSession();\n\n\t\t\treturn {\n\t\t\t\tsessionToken: this.sessionToken,\n\t\t\t\tconfig: response.config || {},\n\t\t\t\texpiresIn: response.expires_in,\n\t\t\t};\n\t\t} catch (error) {\n\t\t\tthrow new APIError(\n\t\t\t\terror.status || 500,\n\t\t\t\t`Failed to initialize widget: ${error.message}`,\n\t\t\t\terror.response\n\t\t\t);\n\t\t}\n\t}\n\n\tasync submitFeedback(feedbackData) {\n\t\tif (!this.isSessionValid()) {\n\t\t\tawait this.init();\n\t\t}\n\n\t\tif (!this.sessionToken) {\n\t\t\tthrow new APIError(401, 'No valid session token available');\n\t\t}\n\n\t\tconst payload = {\n\t\t\tboard: feedbackData.board_id || feedbackData.board || feedbackData.boardId,\n\t\t\ttitle: feedbackData.title,\n\t\t\tcontent: feedbackData.content,\n\t\t\tattachments: feedbackData.attachments || [],\n\t\t};\n\n\t\ttry {\n\t\t\tconst response = await this._makeRequest('/widget/feedback', {\n\t\t\t\tmethod: 'POST',\n\t\t\t\tbody: JSON.stringify(payload),\n\t\t\t\theaders: {\n\t\t\t\t\t'Content-Type': 'application/json',\n\t\t\t\t\tAuthorization: `Bearer ${this.sessionToken}`,\n\t\t\t\t},\n\t\t\t});\n\n\t\t\treturn response;\n\t\t} catch (error) {\n\t\t\tif (error.status === 401) {\n\t\t\t\tthis.sessionToken = null;\n\t\t\t\tthis.sessionExpiry = null;\n\t\t\t\tawait this.init();\n\t\t\t\treturn this.submitFeedback(feedbackData);\n\t\t\t}\n\n\t\t\tthrow new APIError(\n\t\t\t\terror.status || 500,\n\t\t\t\t`Failed to submit feedback: ${error.message}`,\n\t\t\t\terror.response\n\t\t\t);\n\t\t}\n\t}\n\n\tisSessionValid() {\n\t\treturn (\n\t\t\tthis.sessionToken && this.sessionExpiry && new Date() < this.sessionExpiry\n\t\t);\n\t}\n\n\tsetUserContext(userContext) {\n\t\tthis.userContext = userContext;\n\t\tif (typeof localStorage !== 'undefined') {\n\t\t\tlocalStorage.setItem('feedbackSDK_userContext', JSON.stringify(userContext));\n\t\t}\n\t}\n\n\tgetUserContext() {\n\t\treturn this.userContext;\n\t}\n\n\tclearSession() {\n\t\tthis.sessionToken = null;\n\t\tthis.sessionExpiry = null;\n\t\tif (typeof localStorage !== 'undefined') {\n\t\t\tlocalStorage.removeItem('feedbackSDK_session');\n\t\t\tlocalStorage.removeItem('feedbackSDK_userContext');\n\t\t}\n\t}\n\n\t_storeSession() {\n\t\tif (typeof localStorage === 'undefined') return;\n\n\t\ttry {\n\t\t\tconst sessionData = {\n\t\t\t\ttoken: this.sessionToken,\n\t\t\t\texpiry: this.sessionExpiry.toISOString(),\n\t\t\t\tworkspace: this.workspace,\n\t\t\t};\n\t\t\tlocalStorage.setItem('feedbackSDK_session', JSON.stringify(sessionData));\n\t\t} catch (error) {\n\t\t\t// Silently fail if localStorage is not available\n\t\t}\n\t}\n\n\t_loadStoredSession() {\n\t\tif (typeof localStorage === 'undefined') return false;\n\n\t\ttry {\n\t\t\tconst stored = localStorage.getItem('feedbackSDK_session');\n\t\t\tif (!stored) return false;\n\n\t\t\tconst sessionData = JSON.parse(stored);\n\t\t\tthis.sessionToken = sessionData.token;\n\t\t\tthis.sessionExpiry = new Date(sessionData.expiry);\n\n\t\t\treturn this.isSessionValid();\n\t\t} catch (error) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tasync _makeRequest(endpoint, options = {}) {\n\t\tconst url = `${this.baseURL}${endpoint}`;\n\n\t\ttry {\n\t\t\tconst response = await fetch(url, options);\n\n\t\t\tif (!response.ok) {\n\t\t\t\tlet errorMessage = `HTTP ${response.status}`;\n\t\t\t\tlet responseData = null;\n\n\t\t\t\ttry {\n\t\t\t\t\tresponseData = await response.json();\n\t\t\t\t\terrorMessage = responseData.message || responseData.error || errorMessage;\n\t\t\t\t} catch (e) {\n\t\t\t\t\terrorMessage = (await response.text()) || errorMessage;\n\t\t\t\t}\n\n\t\t\t\tthrow new APIError(response.status, errorMessage, responseData);\n\t\t\t}\n\n\t\t\tconst contentType = response.headers.get('content-type');\n\t\t\tif (contentType && contentType.includes('application/json')) {\n\t\t\t\treturn await response.json();\n\t\t\t}\n\n\t\t\treturn await response.text();\n\t\t} catch (error) {\n\t\t\tif (error instanceof APIError) {\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t\tthrow new APIError(0, error.message, null);\n\t\t}\n\t}\n}","export class EventBus {\n\tconstructor() {\n\t\tthis.events = new Map();\n\t}\n\n\ton(event, callback) {\n\t\tif (!this.events.has(event)) {\n\t\t\tthis.events.set(event, []);\n\t\t}\n\t\tthis.events.get(event).push(callback);\n\n\t\treturn () => this.off(event, callback);\n\t}\n\n\toff(event, callback) {\n\t\tconst callbacks = this.events.get(event);\n\t\tif (callbacks) {\n\t\t\tconst index = callbacks.indexOf(callback);\n\t\t\tif (index > -1) {\n\t\t\t\tcallbacks.splice(index, 1);\n\t\t\t}\n\t\t}\n\t}\n\n\temit(event, data) {\n\t\tconst callbacks = this.events.get(event);\n\t\tif (callbacks) {\n\t\t\tcallbacks.forEach((callback) => {\n\t\t\t\ttry {\n\t\t\t\t\tcallback(data);\n\t\t\t\t} catch (error) {\n\t\t\t\t\tconsole.error('[FeedbackSDK] Event callback error:', error);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\tonce(event, callback) {\n\t\tconst unsubscribe = this.on(event, (data) => {\n\t\t\tcallback(data);\n\t\t\tunsubscribe();\n\t\t});\n\t\treturn unsubscribe;\n\t}\n\n\tclear() {\n\t\tthis.events.clear();\n\t}\n\n\tgetListenerCount(event) {\n\t\tconst callbacks = this.events.get(event);\n\t\treturn callbacks ? callbacks.length : 0;\n\t}\n}\n","export function generateId(prefix = 'feedback') {\n\tconst timestamp = Date.now();\n\tconst random = Math.random().toString(36).substring(2, 9);\n\treturn `${prefix}_${timestamp}_${random}`;\n}\n\nexport function deepMerge(target, source) {\n\tconst result = { ...target };\n\n\tfor (const key in source) {\n\t\tif (source.hasOwnProperty(key)) {\n\t\t\tif (\n\t\t\t\tsource[key] &&\n\t\t\t\ttypeof source[key] === 'object' &&\n\t\t\t\t!Array.isArray(source[key])\n\t\t\t) {\n\t\t\t\tresult[key] = deepMerge(target[key] || {}, source[key]);\n\t\t\t} else {\n\t\t\t\tresult[key] = source[key];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn result;\n}\n\nexport function debounce(func, wait) {\n\tlet timeout;\n\treturn function executedFunction(...args) {\n\t\tconst later = () => {\n\t\t\tclearTimeout(timeout);\n\t\t\tfunc(...args);\n\t\t};\n\t\tclearTimeout(timeout);\n\t\ttimeout = setTimeout(later, wait);\n\t};\n}\n\nexport function throttle(func, limit) {\n\tlet lastFunc;\n\tlet lastRan;\n\treturn function (...args) {\n\t\tif (!lastRan) {\n\t\t\tfunc(...args);\n\t\t\tlastRan = Date.now();\n\t\t} else {\n\t\t\tclearTimeout(lastFunc);\n\t\t\tlastFunc = setTimeout(\n\t\t\t\t() => {\n\t\t\t\t\tif (Date.now() - lastRan >= limit) {\n\t\t\t\t\t\tfunc(...args);\n\t\t\t\t\t\tlastRan = Date.now();\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tlimit - (Date.now() - lastRan)\n\t\t\t);\n\t\t}\n\t};\n}\n\nexport function isValidEmail(email) {\n\tif (!email || typeof email !== 'string') return false;\n\n\tconst emailRegex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\n\treturn emailRegex.test(email.trim());\n}\n\nexport function sanitizeHTML(str) {\n\tif (!str || typeof str !== 'string') return '';\n\n\tconst div = document.createElement('div');\n\tdiv.textContent = str;\n\treturn div.innerHTML;\n}\n\nexport function getCSSProperty(element, property, fallback = '') {\n\tif (!element || !property) return fallback;\n\n\ttry {\n\t\tconst style = window.getComputedStyle(element);\n\t\treturn style.getPropertyValue(property) || fallback;\n\t} catch (error) {\n\t\treturn fallback;\n\t}\n}\n\nexport function isInViewport(element) {\n\tif (!element) return false;\n\n\tconst rect = element.getBoundingClientRect();\n\treturn (\n\t\trect.top >= 0 &&\n\t\trect.left >= 0 &&\n\t\trect.bottom <=\n\t\t\t(window.innerHeight || document.documentElement.clientHeight) &&\n\t\trect.right <= (window.innerWidth || document.documentElement.clientWidth)\n\t);\n}\n\nexport function scrollToElement(element, options = {}) {\n\tif (!element) return;\n\n\tconst defaultOptions = {\n\t\tbehavior: 'smooth',\n\t\tblock: 'center',\n\t\tinline: 'nearest',\n\t};\n\n\telement.scrollIntoView({ ...defaultOptions, ...options });\n}\n\nexport function getBrowserInfo() {\n\tconst userAgent = navigator.userAgent;\n\tconst platform = navigator.platform;\n\n\treturn {\n\t\tuserAgent,\n\t\tplatform,\n\t\tlanguage: navigator.language || navigator.userLanguage,\n\t\tcookieEnabled: navigator.cookieEnabled,\n\t\tscreenResolution: `${screen.width}x${screen.height}`,\n\t\twindowSize: `${window.innerWidth}x${window.innerHeight}`,\n\t\ttimezone: Intl.DateTimeFormat().resolvedOptions().timeZone,\n\t};\n}\n\nexport function formatFileSize(bytes) {\n\tif (bytes === 0) return '0 Bytes';\n\n\tconst k = 1024;\n\tconst sizes = ['Bytes', 'KB', 'MB', 'GB'];\n\tconst i = Math.floor(Math.log(bytes) / Math.log(k));\n\n\treturn parseFloat((bytes / Math.pow(k, i)).toFixed(2)) + ' ' + sizes[i];\n}\n\nexport function delay(ms) {\n\treturn new Promise((resolve) => setTimeout(resolve, ms));\n}\n\nexport function safeJsonParse(str, fallback = null) {\n\ttry {\n\t\treturn JSON.parse(str);\n\t} catch (error) {\n\t\treturn fallback;\n\t}\n}\n\nexport function escapeRegex(string) {\n\treturn string.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n}\n\nexport function getNestedProperty(obj, path, defaultValue = undefined) {\n\tif (!obj || !path) return defaultValue;\n\n\tconst keys = path.split('.');\n\tlet current = obj;\n\n\tfor (const key of keys) {\n\t\tif (current === null || current === undefined || !(key in current)) {\n\t\t\treturn defaultValue;\n\t\t}\n\t\tcurrent = current[key];\n\t}\n\n\treturn current;\n}\n\nexport function setNestedProperty(obj, path, value) {\n\tif (!obj || !path) return obj;\n\n\tconst keys = path.split('.');\n\tconst lastKey = keys.pop();\n\tlet current = obj;\n\n\tfor (const key of keys) {\n\t\tif (!(key in current) || typeof current[key] !== 'object') {\n\t\t\tcurrent[key] = {};\n\t\t}\n\t\tcurrent = current[key];\n\t}\n\n\tcurrent[lastKey] = value;\n\treturn obj;\n}\n\nexport function isBrowser() {\n\treturn typeof window !== 'undefined' && typeof document !== 'undefined';\n}\n\nexport function isMobile() {\n\tif (!isBrowser()) return false;\n\n\treturn (\n\t\t/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(\n\t\t\tnavigator.userAgent\n\t\t) || window.innerWidth <= 768\n\t);\n}\n\nexport function getCurrentTimestamp() {\n\treturn new Date().toISOString();\n}\n\nexport function validateConfig(config, required = []) {\n\tconst missing = [];\n\n\tfor (const key of required) {\n\t\tif (!config[key]) {\n\t\t\tmissing.push(key);\n\t\t}\n\t}\n\n\tif (missing.length > 0) {\n\t\tthrow new Error(`Missing required configuration: ${missing.join(', ')}`);\n\t}\n\n\treturn true;\n}\n","export class BaseWidget {\n\tconstructor(options = {}) {\n\t\tthis.id = options.id;\n\t\tthis.sdk = options.sdk;\n\t\tthis.apiService = options.apiService;\n\t\tthis.type = options.type || 'base';\n\n\t\tthis.options = {\n\t\t\tcontainer: null,\n\t\t\tposition: this.sdk.config.position,\n\t\t\ttheme: this.sdk.config.theme,\n\t\t\tboardId: this.sdk.config.boardId,\n\t\t\tautoShow: false,\n\t\t\tshowBackdrop: true,\n\t\t\tcustomStyles: {},\n\t\t\t...options,\n\t\t};\n\n\t\tthis.element = null;\n\t\tthis.panelElement = null;\n\t\tthis.backdropElement = null;\n\t\tthis.mounted = false;\n\t\tthis.destroyed = false;\n\n\t\tthis.state = {\n\t\t\tisOpen: false,\n\t\t\tisSubmitting: false,\n\t\t\ttitle: '',\n\t\t\tcontent: '',\n\t\t\temail: '',\n\t\t\tattachments: [],\n\t\t\terrors: {},\n\t\t};\n\n\t\tthis._bindMethods();\n\t}\n\n\tmount(container) {\n\t\tif (this.mounted || this.destroyed) return this;\n\n\t\tif (typeof container === 'string') {\n\t\t\tcontainer = document.querySelector(container);\n\t\t}\n\n\t\tif (!container) {\n\t\t\tcontainer = document.body;\n\t\t}\n\n\t\tthis.container = container;\n\t\tthis.element = this._render();\n\t\tthis.container.appendChild(this.element);\n\n\t\tthis.mounted = true;\n\t\tthis._attachEvents();\n\t\tthis.onMount();\n\n\t\tif (this.options.autoShow) {\n\t\t\tthis.show();\n\t\t}\n\n\t\tthis.sdk.eventBus.emit('widget:mounted', { widget: this });\n\t\treturn this;\n\t}\n\n\tshow() {\n\t\tif (this.element) {\n\t\t\tthis.element.style.display = 'block';\n\t\t}\n\t\treturn this;\n\t}\n\n\thide() {\n\t\tif (this.element) {\n\t\t\tthis.element.style.display = 'none';\n\t\t}\n\t\treturn this;\n\t}\n\n\topenPanel() {\n\t\tthis.state.isOpen = true;\n\t\tthis._renderPanel();\n\t\t\n\t\trequestAnimationFrame(() => {\n\t\t\tif (this.panelElement) {\n\t\t\t\tthis.panelElement.classList.add('open');\n\t\t\t}\n\t\t\tif (this.backdropElement) {\n\t\t\t\tthis.backdropElement.classList.add('show');\n\t\t\t}\n\t\t});\n\t}\n\n\tclosePanel() {\n\t\tif (this.panelElement) {\n\t\t\tthis.panelElement.classList.remove('open');\n\t\t}\n\t\tif (this.backdropElement) {\n\t\t\tthis.backdropElement.classList.remove('show');\n\t\t}\n\n\t\tsetTimeout(() => {\n\t\t\tthis.state.isOpen = false;\n\t\t\tif (this.panelElement && this.panelElement.parentNode) {\n\t\t\t\tthis.panelElement.parentNode.removeChild(this.panelElement);\n\t\t\t\tthis.panelElement = null;\n\t\t\t}\n\t\t\tif (this.backdropElement && this.backdropElement.parentNode) {\n\t\t\t\tthis.backdropElement.parentNode.removeChild(this.backdropElement);\n\t\t\t\tthis.backdropElement = null;\n\t\t\t}\n\t\t\tthis._resetForm();\n\t\t}, 300);\n\t}\n\n\tasync submitFeedback() {\n\t\tif (this.state.isSubmitting) return;\n\n\t\tthis._hideError();\n\n\t\ttry {\n\t\t\tthis.state.isSubmitting = true;\n\t\t\tthis._updateSubmitButton();\n\n\t\t\tconst payload = {\n\t\t\t\ttitle: this.state.title || 'Feedback',\n\t\t\t\tcontent: this.state.content,\n\t\t\t\temail: this.state.email,\n\t\t\t\tboard_id: this.options.boardId,\n\t\t\t\tattachments: this.state.attachments,\n\t\t\t};\n\n\t\t\tif (!this.state.content.trim()) {\n\t\t\t\tthis._showError('Please enter your feedback message.');\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst response = await this.apiService.submitFeedback(payload);\n\n\t\t\tthis._showSuccessMessage();\n\t\t\tthis.closePanel();\n\n\t\t\tthis.sdk.eventBus.emit('feedback:submitted', {\n\t\t\t\twidget: this,\n\t\t\t\tfeedback: response,\n\t\t\t});\n\t\t} catch (error) {\n\t\t\tthis._showError('Failed to submit feedback. Please try again.');\n\t\t\tthis.sdk.eventBus.emit('feedback:error', { widget: this, error });\n\t\t} finally {\n\t\t\tthis.state.isSubmitting = false;\n\t\t\tthis._updateSubmitButton();\n\t\t}\n\t}\n\n\thandleConfigUpdate(newConfig) {\n\t\tthis.options.theme = newConfig.theme;\n\t\tif (this.element) {\n\t\t\tthis._updateTheme();\n\t\t}\n\t}\n\n\tdestroy() {\n\t\tif (this.destroyed) return;\n\n\t\tthis.onDestroy();\n\t\tthis.closePanel();\n\n\t\tif (this.element && this.element.parentNode) {\n\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t}\n\n\t\tthis.destroyed = true;\n\t\tthis.mounted = false;\n\t\tthis.sdk.eventBus.emit('widget:destroyed', { widget: this });\n\t}\n\n\tonMount() {}\n\tonDestroy() {}\n\n\t_render() {\n\t\tthrow new Error('_render() must be implemented by concrete widget');\n\t}\n\n\t_attachEvents() {\n\t\t// Override in concrete widgets\n\t}\n\n\t_bindMethods() {\n\t\tthis.openPanel = this.openPanel.bind(this);\n\t\tthis.closePanel = this.closePanel.bind(this);\n\t\tthis.submitFeedback = this.submitFeedback.bind(this);\n\t}\n\n\t_renderPanel() {\n\t\tif (this.panelElement) return;\n\n\t\tif (this.options.showBackdrop) {\n\t\t\tthis.backdropElement = document.createElement('div');\n\t\t\tthis.backdropElement.className = 'feedback-panel-backdrop';\n\t\t\tdocument.body.appendChild(this.backdropElement);\n\n\t\t\tthis.backdropElement.addEventListener('click', this.closePanel);\n\t\t}\n\n\t\tthis.panelElement = document.createElement('div');\n\t\tthis.panelElement.className = `feedback-panel theme-${this.options.theme}`;\n\t\tthis.panelElement.innerHTML = this._getPanelHTML();\n\n\t\tdocument.body.appendChild(this.panelElement);\n\t\tthis._attachPanelEvents();\n\n\t\tconst firstInput = this.panelElement.querySelector('input, textarea');\n\t\tif (firstInput) {\n\t\t\tsetTimeout(() => firstInput.focus(), 350);\n\t\t}\n\t}\n\n\t_getPanelHTML() {\n\t\treturn `\n <div class=\"feedback-panel-content\">\n <div class=\"feedback-panel-header\">\n <h3>Send Feedback</h3>\n <button class=\"feedback-panel-close\" type=\"button\" aria-label=\"Close\">×</button>\n </div>\n <div class=\"feedback-panel-body\">\n <form class=\"feedback-form\">\n <div class=\"feedback-form-group\">\n <label for=\"feedback-title-${this.id}\">Title (optional)</label>\n <input \n type=\"text\" \n id=\"feedback-title-${this.id}\" \n name=\"title\" \n placeholder=\"Brief description of your feedback\"\n value=\"${this.state.title}\"\n />\n </div>\n <div class=\"feedback-form-group\">\n <label for=\"feedback-content-${this.id}\">Message *</label>\n <textarea \n id=\"feedback-content-${this.id}\" \n name=\"content\" \n placeholder=\"Tell us what you think...\"\n required\n >${this.state.content}</textarea>\n </div>\n <div class=\"feedback-error\" role=\"alert\"></div>\n <div class=\"feedback-form-actions\">\n <button type=\"submit\" class=\"feedback-btn feedback-btn-submit\">\n ${this.state.isSubmitting ? 'Sending...' : 'Send Feedback'}\n </button>\n </div>\n </form>\n </div>\n </div>\n `;\n\t}\n\n\t_attachPanelEvents() {\n\t\tconst panel = this.panelElement;\n\n\t\tpanel\n\t\t\t.querySelector('.feedback-panel-close')\n\t\t\t.addEventListener('click', this.closePanel);\n\n\t\tconst form = panel.querySelector('.feedback-form');\n\t\tform.addEventListener('submit', (e) => {\n\t\t\te.preventDefault();\n\t\t\tthis.submitFeedback();\n\t\t});\n\n\t\tpanel\n\t\t\t.querySelector('input[name=\"title\"]')\n\t\t\t.addEventListener('input', (e) => {\n\t\t\t\tthis.state.title = e.target.value;\n\t\t\t});\n\n\t\tpanel\n\t\t\t.querySelector('textarea[name=\"content\"]')\n\t\t\t.addEventListener('input', (e) => {\n\t\t\t\tthis.state.content = e.target.value;\n\t\t\t});\n\n\t\tconst handleEscape = (e) => {\n\t\t\tif (e.key === 'Escape') {\n\t\t\t\tthis.closePanel();\n\t\t\t\tdocument.removeEventListener('keydown', handleEscape);\n\t\t\t}\n\t\t};\n\t\tdocument.addEventListener('keydown', handleEscape);\n\t}\n\n\t_updateSubmitButton() {\n\t\tif (this.panelElement) {\n\t\t\tconst submitBtn = this.panelElement.querySelector('.feedback-btn-submit');\n\t\t\tif (submitBtn) {\n\t\t\t\tsubmitBtn.textContent = this.state.isSubmitting\n\t\t\t\t\t? 'Sending...'\n\t\t\t\t\t: 'Send Feedback';\n\t\t\t\tsubmitBtn.disabled = this.state.isSubmitting;\n\t\t\t}\n\t\t}\n\t}\n\n\t_showError(message) {\n\t\tif (this.panelElement) {\n\t\t\tconst errorElement = this.panelElement.querySelector('.feedback-error');\n\t\t\tif (errorElement) {\n\t\t\t\terrorElement.textContent = message;\n\t\t\t\terrorElement.classList.add('show');\n\t\t\t}\n\t\t}\n\t}\n\n\t_hideError() {\n\t\tif (this.panelElement) {\n\t\t\tconst errorElement = this.panelElement.querySelector('.feedback-error');\n\t\t\tif (errorElement) {\n\t\t\t\terrorElement.classList.remove('show');\n\t\t\t}\n\t\t}\n\t}\n\n\t_showSuccessMessage() {\n\t\tconst notification = document.createElement('div');\n\t\tnotification.className = 'feedback-success-notification';\n\t\tnotification.innerHTML = `\n <div class=\"feedback-success-content\">\n <div class=\"feedback-success-icon\">✓</div>\n <span>Feedback submitted successfully!</span>\n <button class=\"feedback-success-close\" aria-label=\"Close\">×</button>\n </div>\n `;\n\n\t\tdocument.body.appendChild(notification);\n\n\t\tconst closeBtn = notification.querySelector('.feedback-success-close');\n\t\tconst closeNotification = () => {\n\t\t\tif (notification.parentNode) {\n\t\t\t\tnotification.style.opacity = '0';\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tif (notification.parentNode) {\n\t\t\t\t\t\tnotification.parentNode.removeChild(notification);\n\t\t\t\t\t}\n\t\t\t\t}, 300);\n\t\t\t}\n\t\t};\n\n\t\tcloseBtn.addEventListener('click', closeNotification);\n\n\t\tsetTimeout(closeNotification, 4000);\n\t}\n\n\t_resetForm() {\n\t\tthis.state.title = '';\n\t\tthis.state.content = '';\n\t\tthis.state.email = '';\n\t\tthis.state.errors = {};\n\t}\n\n\t_updateTheme() {\n\t\tif (this.element) {\n\t\t\tthis.element.className = this.element.className.replace(\n\t\t\t\t/theme-\\w+/,\n\t\t\t\t`theme-${this.options.theme}`\n\t\t\t);\n\t\t}\n\t\tif (this.panelElement) {\n\t\t\tthis.panelElement.className = this.panelElement.className.replace(\n\t\t\t\t/theme-\\w+/,\n\t\t\t\t`theme-${this.options.theme}`\n\t\t\t);\n\t\t}\n\t}\n\n\topenModal() {\n\t\tthis.openPanel();\n\t}\n\n\tcloseModal() {\n\t\tthis.closePanel();\n\t}\n}","import { BaseWidget } from './BaseWidget.js';\n\nexport class ButtonWidget extends BaseWidget {\n\tconstructor(options) {\n\t\tsuper({ ...options, type: 'button' });\n\t}\n\n\t_render() {\n\t\tconst button = document.createElement('div');\n\t\tbutton.className = `feedback-widget feedback-widget-button theme-${this.options.theme} position-${this.options.position}`;\n\t\tbutton.innerHTML = `\n <button class=\"feedback-trigger-btn\" type=\"button\" aria-label=\"Send feedback\">\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <path d=\"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z\"/>\n </svg>\n </button>\n `;\n\n\t\tif (this.options.customStyles) {\n\t\t\tObject.assign(button.style, this.options.customStyles);\n\t\t}\n\n\t\treturn button;\n\t}\n\n\t_attachEvents() {\n\t\tconst button = this.element.querySelector('.feedback-trigger-btn');\n\t\tbutton.addEventListener('click', this.openPanel);\n\n\t\tbutton.addEventListener('mouseenter', () => {\n\t\t\tif (!this.state.isSubmitting) {\n\t\t\t\tbutton.style.transform = 'scale(1.1)';\n\t\t\t}\n\t\t});\n\n\t\tbutton.addEventListener('mouseleave', () => {\n\t\t\tbutton.style.transform = 'scale(1)';\n\t\t});\n\t}\n\n\tupdateText(text) {\n\t\tconsole.warn('ButtonWidget: Text display is disabled for circular design');\n\t}\n\n\tupdatePosition(position) {\n\t\tthis.options.position = position;\n\t\tif (this.element) {\n\t\t\tthis.element.className = this.element.className.replace(\n\t\t\t\t/position-\\w+-\\w+/,\n\t\t\t\t`position-${position}`\n\t\t\t);\n\t\t}\n\t}\n}","import { BaseWidget } from './BaseWidget.js';\n\nexport class InlineWidget extends BaseWidget {\n\tconstructor(options) {\n\t\tsuper({ ...options, type: 'inline' });\n\t}\n\n\t_render() {\n\t\tconst widget = document.createElement('div');\n\t\twidget.className = `feedback-widget feedback-widget-inline theme-${this.options.theme}`;\n\t\twidget.innerHTML = `\n <div class=\"feedback-inline-content\">\n <h3>Send us your feedback</h3>\n <form class=\"feedback-inline-form\">\n <div class=\"feedback-form-group\">\n <input \n type=\"text\" \n name=\"title\" \n placeholder=\"Title (optional)\"\n value=\"${this.state.title}\"\n />\n </div>\n <div class=\"feedback-form-group\">\n <textarea \n name=\"content\" \n placeholder=\"Your feedback...\"\n required\n >${this.state.content}</textarea>\n </div>\n <div class=\"feedback-form-group\">\n <input \n type=\"email\" \n name=\"email\" \n placeholder=\"Email (optional)\"\n value=\"${this.state.email}\"\n />\n </div>\n <button type=\"submit\" class=\"feedback-btn feedback-btn-submit\">\n Send Feedback\n </button>\n <div class=\"feedback-error\" style=\"display: none;\"></div>\n </form>\n </div>\n `;\n\n\t\tif (this.options.customStyles) {\n\t\t\tObject.assign(widget.style, this.options.customStyles);\n\t\t}\n\n\t\treturn widget;\n\t}\n\n\t_attachEvents() {\n\t\tconst form = this.element.querySelector('.feedback-inline-form');\n\n\t\tform.addEventListener('submit', (e) => {\n\t\t\te.preventDefault();\n\t\t\tthis.submitFeedback();\n\t\t});\n\n\t\tform.querySelector('input[name=\"title\"]').addEventListener('input', (e) => {\n\t\t\tthis.state.title = e.target.value;\n\t\t});\n\n\t\tform\n\t\t\t.querySelector('textarea[name=\"content\"]')\n\t\t\t.addEventListener('input', (e) => {\n\t\t\t\tthis.state.content = e.target.value;\n\t\t\t});\n\n\t\tform.querySelector('input[name=\"email\"]').addEventListener('input', (e) => {\n\t\t\tthis.state.email = e.target.value;\n\t\t});\n\t}\n\n\topenModal() {\n\t\tconst textarea = this.element.querySelector('textarea[name=\"content\"]');\n\t\tif (textarea) {\n\t\t\ttextarea.focus();\n\t\t}\n\t}\n\n\tcloseModal() {\n\t\t// Inline widget doesn't use modal\n\t}\n\n\t_showSuccessMessage() {\n\t\tconst widget = this.element.querySelector('.feedback-inline-content');\n\t\tconst originalContent = widget.innerHTML;\n\n\t\twidget.innerHTML = `\n <div class=\"feedback-success\">\n <div class=\"feedback-success-icon\">✓</div>\n <h3>Thank you!</h3>\n <p>Your feedback has been submitted successfully.</p>\n <button class=\"feedback-btn feedback-btn-reset\">Send Another</button>\n </div>\n `;\n\n\t\tconst resetBtn = widget.querySelector('.feedback-btn-reset');\n\t\tresetBtn.addEventListener('click', () => {\n\t\t\twidget.innerHTML = originalContent;\n\t\t\tthis._attachEvents();\n\t\t\tthis._resetForm();\n\t\t});\n\t}\n\n\t_showError(message) {\n\t\tconst errorElement = this.element.querySelector('.feedback-error');\n\t\tif (errorElement) {\n\t\t\terrorElement.textContent = message;\n\t\t\terrorElement.style.display = 'block';\n\n\t\t\tsetTimeout(() => {\n\t\t\t\tif (errorElement) {\n\t\t\t\t\terrorElement.style.display = 'none';\n\t\t\t\t}\n\t\t\t}, 5000);\n\t\t}\n\t}\n\n\t_updateSubmitButton() {\n\t\tconst submitBtn = this.element.querySelector('.feedback-btn-submit');\n\t\tif (submitBtn) {\n\t\t\tsubmitBtn.textContent = this.state.isSubmitting\n\t\t\t\t? 'Sending...'\n\t\t\t\t: 'Send Feedback';\n\t\t\tsubmitBtn.disabled = this.state.isSubmitting;\n\t\t}\n\t}\n\n\tupdateTitle(title) {\n\t\tconst titleElement = this.element?.querySelector('h3');\n\t\tif (titleElement) {\n\t\t\ttitleElement.textContent = title;\n\t\t}\n\t}\n\n\tsetPlaceholder(field, placeholder) {\n\t\tconst input = this.element?.querySelector(`[name=\"${field}\"]`);\n\t\tif (input) {\n\t\t\tinput.placeholder = placeholder;\n\t\t}\n\t}\n}\n","import { BaseWidget } from './BaseWidget.js';\n\nexport class TabWidget extends BaseWidget {\n\tconstructor(options) {\n\t\tsuper({ ...options, type: 'tab' });\n\t}\n\n\t_render() {\n\t\tconst tab = document.createElement('div');\n\t\ttab.className = `feedback-widget feedback-widget-tab theme-${this.options.theme} position-${this.options.position}`;\n\t\ttab.innerHTML = `\n <div class=\"feedback-tab-trigger\">\n <span class=\"feedback-tab-text\">Feedback</span>\n </div>\n `;\n\n\t\tif (this.options.customStyles) {\n\t\t\tObject.assign(tab.style, this.options.customStyles);\n\t\t}\n\n\t\treturn tab;\n\t}\n\n\t_attachEvents() {\n\t\tconst tab = this.element.querySelector('.feedback-tab-trigger');\n\t\ttab.addEventListener('click', this.openModal);\n\n\t\ttab.addEventListener('mouseenter', () => {\n\t\t\tif (!this.state.isSubmitting) {\n\t\t\t\ttab.style.transform = this._getHoverTransform();\n\t\t\t}\n\t\t});\n\n\t\ttab.addEventListener('mouseleave', () => {\n\t\t\ttab.style.transform = 'none';\n\t\t});\n\t}\n\n\t_getHoverTransform() {\n\t\tconst position = this.options.position;\n\t\tif (position.includes('right')) {\n\t\t\treturn 'translateX(-5px)';\n\t\t} else if (position.includes('left')) {\n\t\t\treturn 'translateX(5px)';\n\t\t}\n\t\treturn 'none';\n\t}\n\n\tupdateText(text) {\n\t\tconst textElement = this.element?.querySelector('.feedback-tab-text');\n\t\tif (textElement) {\n\t\t\ttextElement.textContent = text;\n\t\t}\n\t}\n\n\tupdatePosition(position) {\n\t\tthis.options.position = position;\n\t\tif (this.element) {\n\t\t\tthis.element.className = this.element.className.replace(\n\t\t\t\t/position-\\w+-\\w+/,\n\t\t\t\t`position-${position}`\n\t\t\t);\n\t\t}\n\t}\n}\n","import { SDKError } from '../utils/errors.js';\nimport { ButtonWidget } from './ButtonWidget.js';\nimport { InlineWidget } from './InlineWidget.js';\nimport { TabWidget } from './TabWidget.js';\n\nexport class WidgetFactory {\n\tstatic widgets = new Map([\n\t\t['button', ButtonWidget],\n\t\t['tab', TabWidget],\n\t\t['inline', InlineWidget],\n\t]);\n\n\tstatic register(type, WidgetClass) {\n\t\tif (typeof type !== 'string' || !type.trim()) {\n\t\t\tthrow new SDKError('Widget type must be a non-empty string');\n\t\t}\n\n\t\tif (typeof WidgetClass !== 'function') {\n\t\t\tthrow new SDKError('Widget class must be a constructor function');\n\t\t}\n\n\t\tthis.widgets.set(type, WidgetClass);\n\t}\n\n\tstatic create(type, options = {}) {\n\t\tconst WidgetClass = this.widgets.get(type);\n\n\t\tif (!WidgetClass) {\n\t\t\tconst availableTypes = Array.from(this.widgets.keys()).join(', ');\n\t\t\tthrow new SDKError(\n\t\t\t\t`Unknown widget type: ${type}. Available types: ${availableTypes}`\n\t\t\t);\n\t\t}\n\n\t\ttry {\n\t\t\treturn new WidgetClass(options);\n\t\t} catch (error) {\n\t\t\tthrow new SDKError(\n\t\t\t\t`Failed to create widget of type '${type}': ${error.message}`,\n\t\t\t\terror\n\t\t\t);\n\t\t}\n\t}\n\n\tstatic getAvailableTypes() {\n\t\treturn Array.from(this.widgets.keys());\n\t}\n\n\tstatic isTypeRegistered(type) {\n\t\treturn this.widgets.has(type);\n\t}\n\n\tstatic unregister(type) {\n\t\treturn this.widgets.delete(type);\n\t}\n\n\tstatic clear() {\n\t\tthis.widgets.clear();\n\t}\n\n\tstatic getWidgetClass(type) {\n\t\treturn this.widgets.get(type);\n\t}\n}\n","import { ConfigError, SDKError } from '../utils/errors.js';\nimport { deepMerge, generateId } from '../utils/helpers.js';\nimport { WidgetFactory } from '../widgets/WidgetFactory.js';\nimport { APIService } from './APIService.js';\nimport { EventBus } from './EventBus.js';\n\nexport class FeedbackSDK {\n\tconstructor(config = {}) {\n\t\tthis.config = this._validateAndMergeConfig(config);\n\t\tthis.initialized = false;\n\t\tthis.widgets = new Map();\n\t\tthis.eventBus = new EventBus();\n\n\t\tthis.apiService = new APIService({\n\t\t\tapiUrl: this.config.apiUrl,\n\t\t\tworkspace: this.config.workspace,\n\t\t\tuserContext: this.config.userContext,\n\t\t});\n\n\t\tthis._bindMethods();\n\t}\n\n\tasync init() {\n\t\tif (this.initialized) {\n\t\t\treturn { alreadyInitialized: true };\n\t\t}\n\n\t\ttry {\n\t\t\tconst initData = await this.apiService.init(this.config.userContext);\n\n\t\t\tif (initData.config) {\n\t\t\t\tthis.config = deepMerge(this.config, initData.config);\n\t\t\t}\n\n\t\t\tthis.initialized = true;\n\t\t\tthis.eventBus.emit('sdk:initialized', {\n\t\t\t\tconfig: this.config,\n\t\t\t\tsessionToken: initData.sessionToken,\n\t\t\t});\n\n\t\t\treturn {\n\t\t\t\tinitialized: true,\n\t\t\t\tconfig: initData.config || {},\n\t\t\t\tsessionToken: initData.sessionToken,\n\t\t\t\texpiresIn: initData.expiresIn,\n\t\t\t};\n\t\t} catch (error) {\n\t\t\tthis.eventBus.emit('sdk:error', { error });\n\t\t\tthrow new SDKError(`Failed to initialize SDK: ${error.message}`, error);\n\t\t}\n\t}\n\n\tcreateWidget(type = 'button', options = {}) {\n\t\tif (!this.initialized) {\n\t\t\tthrow new SDKError('SDK must be initialized before creating widgets. Call init() first.');\n\t\t}\n\n\t\tconst widgetId = generateId('widget');\n\t\tconst widgetOptions = {\n\t\t\tid: widgetId,\n\t\t\tsdk: this,\n\t\t\tapiService: this.apiService,\n\t\t\t...this.config,\n\t\t\t...options,\n\t\t};\n\n\t\ttry {\n\t\t\tconst widget = WidgetFactory.create(type, widgetOptions);\n\t\t\tthis.widgets.set(widgetId, widget);\n\t\t\tthis.eventBus.emit('widget:created', { widget, type });\n\t\t\treturn widget;\n\t\t} catch (error) {\n\t\t\tthrow new SDKError(`Failed to create widget: ${error.message}`, error);\n\t\t}\n\t}\n\n\tgetWidget(id) {\n\t\treturn this.widgets.get(id);\n\t}\n\n\tgetAllWidgets() {\n\t\treturn Array.from(this.widgets.values());\n\t}\n\n\tdestroyWidget(id) {\n\t\tconst widget = this.widgets.get(id);\n\t\tif (widget) {\n\t\t\twidget.destroy();\n\t\t\tthis.widgets.delete(id);\n\t\t\tthis.eventBus.emit('widget:removed', { widgetId: id });\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\tdestroyAllWidgets() {\n\t\tfor (const widget of this.widgets.values()) {\n\t\t\twidget.destroy();\n\t\t}\n\t\tthis.widgets.clear();\n\t\tthis.eventBus.emit('widgets:cleared');\n\t}\n\n\tupdateConfig(newConfig) {\n\t\tconst oldConfig = { ...this.config };\n\t\tthis.config = this._validateAndMergeConfig(newConfig, this.config);\n\n\t\tfor (const widget of this.widgets.values()) {\n\t\t\twidget.handleConfigUpdate(this.config);\n\t\t}\n\n\t\tthis.eventBus.emit('config:updated', {\n\t\t\toldConfig,\n\t\t\tnewConfig: this.config,\n\t\t});\n\t}\n\n\tsetUserContext(userContext) {\n\t\tthis.config.userContext = userContext;\n\t\tif (this.apiService) {\n\t\t\tthis.apiService.setUserContext(userContext);\n\t\t}\n\t\tthis.eventBus.emit('user:updated', { userContext });\n\t}\n\n\tgetUserContext() {\n\t\treturn this.config.userContext || (this.apiService ? this.apiService.getUserContext() : null);\n\t}\n\n\tasync reinitialize(newUserContext = null) {\n\t\tthis.apiService.clearSession();\n\t\tthis.initialized = false;\n\n\t\tif (newUserContext) {\n\t\t\tthis.setUserContext(newUserContext);\n\t\t}\n\n\t\treturn this.init();\n\t}\n\n\ton(event, callback) {\n\t\tthis.eventBus.on(event, callback);\n\t\treturn this;\n\t}\n\n\toff(event, callback) {\n\t\tthis.eventBus.off(event, callback);\n\t\treturn this;\n\t}\n\n\tonce(event, callback) {\n\t\tthis.eventBus.once(event, callback);\n\t\treturn this;\n\t}\n\n\temit(event, data) {\n\t\tthis.eventBus.emit(event, data);\n\t\treturn this;\n\t}\n\n\tdestroy() {\n\t\tthis.destroyAllWidgets();\n\t\tthis.eventBus.removeAllListeners();\n\t\tthis.apiService.clearSession();\n\t\tthis.initialized = false;\n\t\tthis.eventBus.emit('sdk:destroyed');\n\t}\n\n\t_validateAndMergeConfig(newConfig, existingConfig = {}) {\n\t\tconst defaultConfig = {\n\t\t\tapiUrl: null,\n\t\t\tworkspace: null,\n\t\t\tuserContext: null,\n\t\t\tposition: 'bottom-right',\n\t\t\ttheme: 'light',\n\t\t\tboardId: 'general',\n\t\t\tautoShow: true,\n\t\t\tdebug: false,\n\t\t};\n\n\t\tconst mergedConfig = deepMerge(deepMerge(defaultConfig, existingConfig), newConfig);\n\n\t\tif (!mergedConfig.workspace) {\n\t\t\tthrow new ConfigError('Missing required configuration: workspace');\n\t\t}\n\n\t\tif (mergedConfig.userContext) {\n\t\t\tthis._validateUserContext(mergedConfig.userContext);\n\t\t}\n\n\t\treturn mergedConfig;\n\t}\n\n\t_validateUserContext(userContext) {\n\t\tif (!userContext.user_id && !userContext.email) {\n\t\t\tthrow new ConfigError('User context must include at least user_id or email');\n\t\t}\n\n\t\tconst validStructure = {\n\t\t\tuser_id: 'string',\n\t\t\temail: 'string',\n\t\t\tname: 'string',\n\t\t\tcustom_fields: 'object',\n\t\t\tcompany: 'object',\n\t\t};\n\n\t\tfor (const [key, expectedType] of Object.entries(validStructure)) {\n\t\t\tif (userContext[key] && typeof userContext[key] !== expectedType) {\n\t\t\t\tthrow new ConfigError(`User context field '${key}' must be of type '${expectedType}'`);\n\t\t\t}\n\t\t}\n\t}\n\n\t_bindMethods() {\n\t\tthis.createWidget = this.createWidget.bind(this);\n\t\tthis.destroyWidget = this.destroyWidget.bind(this);\n\t\tthis.updateConfig = this.updateConfig.bind(this);\n\t}\n\n\tstatic create(config) {\n\t\treturn new FeedbackSDK(config);\n\t}\n\n\tstatic async createAndInit(config) {\n\t\tconst sdk = new FeedbackSDK(config);\n\t\tawait sdk.init();\n\t\treturn sdk;\n\t}\n\n\tstatic extractUserContextFromAuth(authData) {\n\t\tif (!authData) return null;\n\n\t\treturn {\n\t\t\tuser_id: authData.sub || authData.id || authData.user_id,\n\t\t\temail: authData.email,\n\t\t\tname: authData.name || authData.display_name || authData.full_name,\n\t\t\tcustom_fields: {\n\t\t\t\trole: authData.role,\n\t\t\t\tplan: authData.plan || authData.subscription?.plan,\n\t\t\t\t...(authData.custom_fields || {}),\n\t\t\t},\n\t\t\tcompany: authData.company || authData.organization ? {\n\t\t\t\tid: authData.company?.id || authData.organization?.id,\n\t\t\t\tname: authData.company?.name || authData.organization?.name,\n\t\t\t\tmonthly_spend: authData.company?.monthly_spend,\n\t\t\t} : undefined,\n\t\t};\n\t}\n}\n","export const CSS_STYLES = `\n.feedback-widget {\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', Oxygen, Ubuntu, Cantarell, sans-serif;\n font-size: 14px;\n line-height: 1.4;\n z-index: 999999;\n box-sizing: border-box;\n}\n\n.feedback-widget *,\n.feedback-widget *::before,\n.feedback-widget *::after {\n box-sizing: border-box;\n}\n\n.feedback-widget-button {\n position: fixed;\n z-index: 999999;\n}\n\n.feedback-widget-button.position-bottom-right {\n bottom: 20px;\n right: 20px;\n}\n\n.feedback-widget-button.position-bottom-left {\n bottom: 20px;\n left: 20px;\n}\n\n.feedback-widget-button.position-top-right {\n top: 20px;\n right: 20px;\n}\n\n.feedback-widget-button.position-top-left {\n top: 20px;\n left: 20px;\n}\n\n/* Circular button design */\n.feedback-trigger-btn {\n width: 56px;\n height: 56px;\n border-radius: 50%; /* Makes it circular */\n border: none;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\n transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n padding: 0;\n}\n\n.feedback-trigger-btn:hover {\n box-shadow: 0 6px 20px rgba(0, 0, 0, 0.2);\n}\n\n.feedback-trigger-btn:active {\n transform: scale(0.95);\n}\n\n.feedback-trigger-btn svg {\n flex-shrink: 0;\n}\n\n/* Side Panel Styles */\n.feedback-panel {\n position: fixed;\n bottom: 80px;\n right: 24px;\n width: 420px;\n max-height: 500px;\n z-index: 1000000;\n transform: translateX(calc(100% + 24px));\n transition: transform 0.35s cubic-bezier(0.4, 0, 0.2, 1);\n font-family: inherit;\n}\n\n.feedback-panel.open {\n transform: translateX(0);\n}\n\n.feedback-panel-backdrop {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(0, 0, 0, 0.1);\n opacity: 0;\n transition: opacity 0.3s ease;\n pointer-events: none;\n z-index: 999999;\n}\n\n.feedback-panel-backdrop.show {\n opacity: 1;\n pointer-events: auto;\n}\n\n.feedback-panel-content {\n background: white;\n height: 100%;\n display: flex;\n flex-direction: column;\n border-radius: 16px;\n box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), \n 0 10px 10px -5px rgba(0, 0, 0, 0.04),\n 0 0 0 1px rgba(0, 0, 0, 0.05);\n}\n\n.feedback-panel.theme-dark .feedback-panel-content {\n background: #1F2937;\n color: white;\n}\n\n.feedback-panel-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 24px;\n border-bottom: 1px solid #E5E7EB;\n flex-shrink: 0;\n}\n\n.feedback-panel.theme-dark .feedback-panel-header {\n border-bottom-color: #374151;\n}\n\n.feedback-panel-header h3 {\n margin: 0;\n font-size: 18px;\n font-weight: 600;\n color: #111827;\n}\n\n.feedback-panel.theme-dark .feedback-panel-header h3 {\n color: white;\n}\n\n.feedback-panel-close {\n background: none;\n border: none;\n font-size: 24px;\n cursor: pointer;\n color: #6B7280;\n padding: 4px;\n width: 32px;\n height: 32px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 6px;\n transition: all 0.2s ease;\n}\n\n.feedback-panel-close:hover {\n background: #F3F4F6;\n color: #111827;\n}\n\n.feedback-panel-close:focus-visible {\n outline: 2px solid #155EEF;\n outline-offset: 2px;\n}\n\n.feedback-panel.theme-dark .feedback-panel-close {\n color: #9CA3AF;\n}\n\n.feedback-panel.theme-dark .feedback-panel-close:hover {\n background: #374151;\n color: white;\n}\n\n.feedback-panel-body {\n flex: 1;\n overflow-y: auto;\n padding: 24px;\n}\n\n.feedback-form {\n display: flex;\n flex-direction: column;\n height: 100%;\n}\n\n.feedback-form-group {\n display: flex;\n flex-direction: column;\n gap: 8px;\n margin-bottom: 20px;\n}\n\n.feedback-form-group:last-child {\n margin-bottom: 0;\n}\n\n.feedback-form-group label {\n font-size: 14px;\n font-weight: 500;\n line-height: 1.25;\n color: #374151;\n}\n\n.feedback-panel.theme-dark .feedback-form-group label {\n color: #D1D5DB;\n}\n\n.feedback-form-group input {\n height: 44px;\n width: 100%;\n border-radius: 8px;\n border: 1px solid #D1D5DB;\n padding: 10px 14px;\n font-size: 15px;\n font-weight: 400;\n line-height: 1.5;\n color: #1F2937;\n font-family: inherit;\n outline: none;\n transition: all 0.2s ease;\n}\n\n.feedback-form-group input::placeholder {\n font-size: 15px;\n color: #9CA3AF;\n}\n\n.feedback-form-group input:focus {\n border-color: #155EEF;\n box-shadow: 0 0 0 3px rgba(21, 94, 239, 0.1);\n}\n\n.feedback-form-group input:focus-visible {\n outline: none;\n}\n\n.feedback-form-group textarea {\n min-height: 200px;\n width: 100%;\n resize: vertical;\n border-radius: 8px;\n border: 1px solid #D1D5DB;\n padding: 10px 14px;\n font-size: 15px;\n font-weight: 400;\n line-height: 1.5;\n color: #1F2937;\n font-family: inherit;\n outline: none;\n transition: all 0.2s ease;\n}\n\n.feedback-form-group textarea::placeholder {\n font-size: 15px;\n color: #9CA3AF;\n}\n\n.feedback-form-group textarea:focus {\n border-color: #155EEF;\n box-shadow: 0 0 0 3px rgba(21, 94, 239, 0.1);\n}\n\n.feedback-form-group textarea:focus-visible {\n outline: none;\n}\n\n.feedback-panel.theme-dark .feedback-form-group input,\n.feedback-panel.theme-dark .feedback-form-group textarea {\n background: #374151;\n border-color: #4B5563;\n color: white;\n}\n\n.feedback-panel.theme-dark .feedback-form-group input::placeholder,\n.feedback-panel.theme-dark .feedback-form-group textarea::placeholder {\n color: #6B7280;\n}\n\n.feedback-btn {\n position: relative;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n overflow: hidden;\n border-radius: 8px;\n border: none;\n height: 44px;\n padding: 10px 18px;\n font-size: 15px;\n font-weight: 500;\n font-family: inherit;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.feedback-btn:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n}\n\n.feedback-btn:focus-visible {\n outline: 2px solid #155EEF;\n outline-offset: 2px;\n}\n\n.feedback-btn-submit {\n background: #155EEF;\n color: white;\n width: 100%;\n}\n\n.feedback-btn-submit:hover:not(:disabled) {\n background: #1A56DB;\n}\n\n.feedback-btn-submit:active:not(:disabled) {\n background: #1E429F;\n}\n\n.feedback-btn-cancel {\n background: transparent;\n color: #6B7280;\n border: 1px solid #D1D5DB;\n}\n\n.feedback-btn-cancel:hover:not(:disabled) {\n background: #F9FAFB;\n border-color: #9CA3AF;\n color: #374151;\n}\n\n.feedback-panel.theme-dark .feedback-btn-cancel {\n color: #D1D5DB;\n border-color: #4B5563;\n}\n\n.feedback-panel.theme-dark .feedback-btn-cancel:hover:not(:disabled) {\n background: #374151;\n}\n\n.feedback-form-actions {\n display: flex;\n flex-direction: column;\n gap: 12px;\n margin-top: auto;\n padding-top: 24px;\n}\n\n.feedback-error {\n color: #DC2626;\n font-size: 14px;\n font-weight: 400;\n margin-top: 8px;\n padding: 12px;\n background: #FEE2E2;\n border: 1px solid #FECACA;\n border-radius: 8px;\n display: none;\n}\n\n.feedback-error.show {\n display: block;\n}\n\n.feedback-panel.theme-dark .feedback-error {\n background: #7F1D1D;\n border-color: #991B1B;\n color: #FCA5A5;\n}\n\n.feedback-success-notification {\n position: fixed;\n top: 24px;\n right: 24px;\n z-index: 1000002;\n background: white;\n border: 1px solid #D1FAE5;\n border-radius: 12px;\n box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);\n animation: slideInRight 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n min-width: 320px;\n}\n\n.feedback-success-content {\n display: flex;\n align-items: center;\n padding: 16px 20px;\n gap: 12px;\n}\n\n.feedback-success-icon {\n width: 20px;\n height: 20px;\n border-radius: 50%;\n background: #10B981;\n color: white;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 12px;\n font-weight: 600;\n flex-shrink: 0;\n}\n\n.feedback-success-content span {\n color: #065F46;\n font-weight: 500;\n font-size: 14px;\n flex: 1;\n}\n\n.feedback-success-close {\n background: none;\n border: none;\n color: #6B7280;\n cursor: pointer;\n font-size: 20px;\n padding: 0;\n width: 24px;\n height: 24px;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: all 0.2s ease;\n border-radius: 4px;\n flex-shrink: 0;\n}\n\n.feedback-success-close:hover {\n background: #F3F4F6;\n color: #374151;\n}\n\n.feedback-success-close:focus-visible {\n outline: 2px solid #155EEF;\n outline-offset: 2px;\n}\n\n@keyframes slideInRight {\n from {\n transform: translateX(400px);\n opacity: 0;\n }\n to {\n transform: translateX(0);\n opacity: 1;\n }\n}\n\n@keyframes fadeIn {\n from { opacity: 0; }\n to { opacity: 1; }\n}\n\n.feedback-panel-backdrop {\n animation: fadeIn 0.3s ease;\n}\n\n@media (max-width: 768px) {\n .feedback-panel {\n width: 100%;\n top: auto;\n bottom: 0;\n right: 0;\n left: 0;\n height: 85vh;\n max-height: 85vh;\n transform: translateY(100%);\n border-radius: 20px 20px 0 0;\n }\n \n .feedback-panel.open {\n transform: translateY(0);\n }\n \n .feedback-panel-content {\n border-radius: 20px 20px 0 0;\n }\n \n .feedback-panel-header {\n padding: 20px;\n position: relative;\n }\n \n .feedback-panel-header::before {\n content: '';\n position: absolute;\n top: 8px;\n left: 50%;\n transform: translateX(-50%);\n width: 40px;\n height: 4px;\n background: #D1D5DB;\n border-radius: 2px;\n }\n \n .feedback-panel.theme-dark .feedback-panel-header::before {\n background: #4B5563;\n }\n \n .feedback-panel-body {\n padding: 20px;\n }\n \n .feedback-form-group textarea {\n min-height: 150px;\n }\n \n .feedback-widget-button {\n bottom: 16px;\n right: 16px;\n }\n \n .feedback-widget-button.position-bottom-left {\n left: 16px;\n }\n \n .feedback-success-notification {\n top: 16px;\n right: 16px;\n left: 16px;\n min-width: auto;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .feedback-trigger-btn,\n .feedback-btn,\n .feedback-panel,\n .feedback-panel-backdrop,\n .feedback-success-notification {\n transition: none;\n animation: none;\n }\n}\n\n@media print {\n .feedback-widget,\n .feedback-panel,\n .feedback-panel-backdrop,\n .feedback-success-notification {\n display: none !important;\n }\n}\n`;","import { APIService } from './core/APIService.js';\nimport { EventBus } from './core/EventBus.js';\nimport { FeedbackSDK } from './core/FeedbackSDK.js';\nimport { CSS_STYLES } from './styles/styles.js';\nimport {\n\tAPIError,\n\tConfigError,\n\tSDKError,\n\tValidationError,\n\tWidgetError,\n} from './utils/errors.js';\nimport * as helpers from './utils/helpers.js';\nimport { BaseWidget } from './widgets/BaseWidget.js';\nimport { ButtonWidget } from './widgets/ButtonWidget.js';\nimport { InlineWidget } from './widgets/InlineWidget.js';\nimport { TabWidget } from './widgets/TabWidget.js';\nimport { WidgetFactory } from './widgets/WidgetFactory.js';\n\nfunction injectStyles() {\n\tif (typeof document !== 'undefined' && !document.querySelector('#feedback-sdk-styles')) {\n\t\tconst style = document.createElement('style');\n\t\tstyle.id = 'feedback-sdk-styles';\n\t\tstyle.textContent = CSS_STYLES;\n\t\tdocument.head.appendChild(style);\n\t}\n}\n\nfunction autoInit() {\n\tif (typeof window !== 'undefined' && window.FeedbackSDKConfig) {\n\t\tinjectStyles();\n\n\t\tconst config = { ...window.FeedbackSDKConfig };\n\t\tconst sdk = new FeedbackSDK(config);\n\n\t\tsdk\n\t\t\t.init()\n\t\t\t.then((initData) => {\n\t\t\t\twindow.FeedbackSDK.instance = sdk;\n\n\t\t\t\tif (window.FeedbackSDKConfig.autoCreate) {\n\t\t\t\t\tconst widgets = Array.isArray(window.FeedbackSDKConfig.autoCreate)\n\t\t\t\t\t\t? window.FeedbackSDKConfig.autoCreate\n\t\t\t\t\t\t: [window.FeedbackSDKConfig.autoCreate];\n\n\t\t\t\t\twidgets.forEach((widgetConfig) => {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tconst widget = sdk.createWidget(\n\t\t\t\t\t\t\t\twidgetConfig.type || 'button',\n\t\t\t\t\t\t\t\twidgetConfig\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\twidget.mount(widgetConfig.container);\n\t\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t\tconsole.error('[FeedbackSDK] Failed to create widget:', error);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tif (typeof CustomEvent !== 'undefined') {\n\t\t\t\t\tconst event = new CustomEvent('FeedbackSDKReady', {\n\t\t\t\t\t\tdetail: { sdk, config, initData },\n\t\t\t\t\t});\n\t\t\t\t\twindow.dispatchEvent(event);\n\t\t\t\t}\n\t\t\t})\n\t\t\t.catch((error) => {\n\t\t\t\tconsole.error('[FeedbackSDK] Auto-initialization failed:', error);\n\n\t\t\t\tif (typeof CustomEvent !== 'undefined') {\n\t\t\t\t\tconst event = new CustomEvent('FeedbackSDKError', {\n\t\t\t\t\t\tdetail: { error, config, phase: 'initialization' },\n\t\t\t\t\t});\n\t\t\t\t\twindow.dispatchEvent(event);\n\t\t\t\t}\n\t\t\t});\n\t}\n}\n\nfunction handleDOMReady() {\n\tif (typeof document !== 'undefined') {\n\t\tif (document.readyState === 'loading') {\n\t\t\tdocument.addEventListener('DOMContentLoaded', autoInit);\n\t\t} else {\n\t\t\tsetTimeout(autoInit, 0);\n\t\t}\n\t}\n}\n\nconst FeedbackSDKExport = {\n\tFeedbackSDK,\n\tBaseWidget,\n\tButtonWidget,\n\tTabWidget,\n\tInlineWidget,\n\tWidgetFactory,\n\tEventBus,\n\tAPIService,\n\tSDKError,\n\tAPIError,\n\tWidgetError,\n\tConfigError,\n\tValidationError,\n\thelpers,\n\tcreate: (config) => {\n\t\tinjectStyles();\n\t\treturn new FeedbackSDK(config);\n\t},\n\tversion: '1.0.0',\n\tinstance: null,\n\n\tisReady: () => Boolean(FeedbackSDKExport.instance),\n\tgetInstance: () => FeedbackSDKExport.instance,\n\n\tsetUserContext: (userContext) => {\n\t\tif (FeedbackSDKExport.instance) {\n\t\t\tFeedbackSDKExport.instance.setUserContext(userContext);\n\t\t} else {\n\t\t\tif (typeof window !== 'undefined') {\n\t\t\t\twindow.FeedbackSDKUserContext = userContext;\n\t\t\t}\n\t\t}\n\t},\n\n\tinitWithUser: async (config, userContext) => {\n\t\tinjectStyles();\n\t\tconst fullConfig = { ...config, userContext };\n\t\tconst sdk = new FeedbackSDK(fullConfig);\n\t\tawait sdk.init();\n\n\t\tif (typeof window !== 'undefined') {\n\t\t\twindow.FeedbackSDK.instance = sdk;\n\t\t}\n\n\t\treturn sdk;\n\t},\n\n\tonReady: (callback) => {\n\t\tif (typeof window !== 'undefined') {\n\t\t\tif (FeedbackSDKExport.isReady()) {\n\t\t\t\tcallback(FeedbackSDKExport.instance);\n\t\t\t} else {\n\t\t\t\twindow.addEventListener(\n\t\t\t\t\t'FeedbackSDKReady',\n\t\t\t\t\t(event) => {\n\t\t\t\t\t\tcallback(event.detail.sdk, event.detail);\n\t\t\t\t\t},\n\t\t\t\t\t{ once: true }\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t},\n\n\tonError: (callback) => {\n\t\tif (typeof window !== 'undefined') {\n\t\t\twindow.addEventListener('FeedbackSDKError', (event) => {\n\t\t\t\tcallback(event.detail.error, event.detail);\n\t\t\t});\n\t\t}\n\t},\n\n\textractUserContext: FeedbackSDK.extractUserContextFromAuth,\n};\n\nif (typeof window !== 'undefined') {\n\twindow.FeedbackSDK = FeedbackSDKExport;\n\thandleDOMReady();\n}\n\nexport default FeedbackSDKExport;\n\nexport {\n\tAPIError,\n\tAPIService,\n\tBaseWidget,\n\tButtonWidget,\n\tConfigError,\n\tEventBus,\n\tFeedbackSDK,\n\thelpers,\n\tInlineWidget,\n\tSDKError,\n\tTabWidget,\n\tValidationError,\n\tWidgetError,\n\tWidgetFactory,\n};"],"names":[],"mappings":"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AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;CClhBD,SAAS,YAAY,GAAG;CACxB,CA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"}
|