1 |
- {"version":3,"file":"index.js","sources":["../../../src/constants.ts","../../../src/util/prepareFeedbackEvent.ts","../../../src/util/sendFeedbackRequest.ts","../../../src/sendFeedback.ts","../../../src/debug-build.ts","../../../src/util/mergeOptions.ts","../../../src/widget/Actor.css.ts","../../../src/widget/Dialog.css.ts","../../../src/widget/Main.css.ts","../../../src/widget/createShadowHost.ts","../../../src/util/handleFeedbackSubmit.ts","../../../src/util/setAttributesNS.ts","../../../src/widget/Icon.ts","../../../src/widget/util/createElement.ts","../../../src/widget/Actor.ts","../../../src/widget/SubmitButton.ts","../../../src/widget/Form.ts","../../../src/widget/Logo.ts","../../../src/widget/Dialog.ts","../../../src/widget/SuccessIcon.ts","../../../src/widget/SuccessMessage.ts","../../../src/widget/createWidget.ts","../../../src/integration.ts"],"sourcesContent":["import { GLOBAL_OBJ } from '@sentry/utils';\n\n// exporting a separate copy of `WINDOW` rather than exporting the one from `@sentry/browser`\n// prevents the browser package from being bundled in the CDN bundle, and avoids a\n// circular dependency between the browser and feedback packages\nexport const WINDOW = GLOBAL_OBJ as typeof GLOBAL_OBJ & Window;\n\nconst LIGHT_BACKGROUND = '#ffffff';\nconst INHERIT = 'inherit';\nconst SUBMIT_COLOR = 'rgba(108, 95, 199, 1)';\nconst LIGHT_THEME = {\n fontFamily: \"system-ui, 'Helvetica Neue', Arial, sans-serif\",\n fontSize: '14px',\n\n background: LIGHT_BACKGROUND,\n backgroundHover: '#f6f6f7',\n foreground: '#2b2233',\n border: '1.5px solid rgba(41, 35, 47, 0.13)',\n borderRadius: '12px',\n boxShadow: '0px 4px 24px 0px rgba(43, 34, 51, 0.12)',\n\n success: '#268d75',\n error: '#df3338',\n\n submitBackground: 'rgba(88, 74, 192, 1)',\n submitBackgroundHover: SUBMIT_COLOR,\n submitBorder: SUBMIT_COLOR,\n submitOutlineFocus: '#29232f',\n submitForeground: LIGHT_BACKGROUND,\n submitForegroundHover: LIGHT_BACKGROUND,\n\n cancelBackground: 'transparent',\n cancelBackgroundHover: 'var(--background-hover)',\n cancelBorder: 'var(--border)',\n cancelOutlineFocus: 'var(--input-outline-focus)',\n cancelForeground: 'var(--foreground)',\n cancelForegroundHover: 'var(--foreground)',\n\n inputBackground: INHERIT,\n inputForeground: INHERIT,\n inputBorder: 'var(--border)',\n inputOutlineFocus: SUBMIT_COLOR,\n\n formBorderRadius: '20px',\n formContentBorderRadius: '6px',\n};\n\nexport const DEFAULT_THEME = {\n light: LIGHT_THEME,\n dark: {\n ...LIGHT_THEME,\n\n background: '#29232f',\n backgroundHover: '#352f3b',\n foreground: '#ebe6ef',\n border: '1.5px solid rgba(235, 230, 239, 0.15)',\n\n success: '#2da98c',\n error: '#f55459',\n },\n};\n\nexport const ACTOR_LABEL = 'Report a Bug';\nexport const CANCEL_BUTTON_LABEL = 'Cancel';\nexport const SUBMIT_BUTTON_LABEL = 'Send Bug Report';\nexport const FORM_TITLE = 'Report a Bug';\nexport const EMAIL_PLACEHOLDER = 'your.email@example.org';\nexport const EMAIL_LABEL = 'Email';\nexport const MESSAGE_PLACEHOLDER = \"What's the bug? What did you expect?\";\nexport const MESSAGE_LABEL = 'Description';\nexport const NAME_PLACEHOLDER = 'Your Name';\nexport const NAME_LABEL = 'Name';\nexport const SUCCESS_MESSAGE_TEXT = 'Thank you for your report!';\n\nexport const FEEDBACK_WIDGET_SOURCE = 'widget';\nexport const FEEDBACK_API_SOURCE = 'api';\n","import type { Scope } from '@sentry/core';\nimport { getIsolationScope } from '@sentry/core';\nimport { prepareEvent } from '@sentry/core';\nimport type { Client, FeedbackEvent } from '@sentry/types';\n\ninterface PrepareFeedbackEventParams {\n client: Client;\n event: FeedbackEvent;\n scope: Scope;\n}\n/**\n * Prepare a feedback event & enrich it with the SDK metadata.\n */\nexport async function prepareFeedbackEvent({\n client,\n scope,\n event,\n}: PrepareFeedbackEventParams): Promise<FeedbackEvent | null> {\n const eventHint = {};\n if (client.emit) {\n client.emit('preprocessEvent', event, eventHint);\n }\n\n const preparedEvent = (await prepareEvent(\n client.getOptions(),\n event,\n eventHint,\n scope,\n client,\n getIsolationScope(),\n )) as FeedbackEvent | null;\n\n if (preparedEvent === null) {\n // Taken from baseclient's `_processEvent` method, where this is handled for errors/transactions\n client.recordDroppedEvent('event_processor', 'feedback', event);\n return null;\n }\n\n // This normally happens in browser client \"_prepareEvent\"\n // but since we do not use this private method from the client, but rather the plain import\n // we need to do this manually.\n preparedEvent.platform = preparedEvent.platform || 'javascript';\n\n return preparedEvent;\n}\n","import { createEventEnvelope, getClient, withScope } from '@sentry/core';\nimport type { FeedbackEvent, TransportMakeRequestResponse } from '@sentry/types';\n\nimport { FEEDBACK_API_SOURCE, FEEDBACK_WIDGET_SOURCE } from '../constants';\nimport type { SendFeedbackData, SendFeedbackOptions } from '../types';\nimport { prepareFeedbackEvent } from './prepareFeedbackEvent';\n\n/**\n * Send feedback using transport\n */\nexport async function sendFeedbackRequest(\n { feedback: { message, email, name, source, url } }: SendFeedbackData,\n { includeReplay = true }: SendFeedbackOptions = {},\n): Promise<void | TransportMakeRequestResponse> {\n const client = getClient();\n const transport = client && client.getTransport();\n const dsn = client && client.getDsn();\n\n if (!client || !transport || !dsn) {\n return;\n }\n\n const baseEvent: FeedbackEvent = {\n contexts: {\n feedback: {\n contact_email: email,\n name,\n message,\n url,\n source,\n },\n },\n type: 'feedback',\n };\n\n return withScope(async scope => {\n // No use for breadcrumbs in feedback\n scope.clearBreadcrumbs();\n\n if ([FEEDBACK_API_SOURCE, FEEDBACK_WIDGET_SOURCE].includes(String(source))) {\n scope.setLevel('info');\n }\n\n const feedbackEvent = await prepareFeedbackEvent({\n scope,\n client,\n event: baseEvent,\n });\n\n if (!feedbackEvent) {\n return;\n }\n\n if (client.emit) {\n client.emit('beforeSendFeedback', feedbackEvent, { includeReplay: Boolean(includeReplay) });\n }\n\n const envelope = createEventEnvelope(feedbackEvent, dsn, client.getOptions()._metadata, client.getOptions().tunnel);\n\n let response: void | TransportMakeRequestResponse;\n\n try {\n response = await transport.send(envelope);\n } catch (err) {\n const error = new Error('Unable to send Feedback');\n\n try {\n // In case browsers don't allow this property to be writable\n // @ts-expect-error This needs lib es2022 and newer\n error.cause = err;\n } catch {\n // nothing to do\n }\n throw error;\n }\n\n // TODO (v8): we can remove this guard once transport.send's type signature doesn't include void anymore\n if (!response) {\n return;\n }\n\n // Require valid status codes, otherwise can assume feedback was not sent successfully\n if (typeof response.statusCode === 'number' && (response.statusCode < 200 || response.statusCode >= 300)) {\n throw new Error('Unable to send Feedback');\n }\n\n return response;\n });\n}\n\n/*\n * For reference, the fully built event looks something like this:\n * {\n * \"type\": \"feedback\",\n * \"event_id\": \"d2132d31b39445f1938d7e21b6bf0ec4\",\n * \"timestamp\": 1597977777.6189718,\n * \"dist\": \"1.12\",\n * \"platform\": \"javascript\",\n * \"environment\": \"production\",\n * \"release\": 42,\n * \"tags\": {\"transaction\": \"/organizations/:orgId/performance/:eventSlug/\"},\n * \"sdk\": {\"name\": \"name\", \"version\": \"version\"},\n * \"user\": {\n * \"id\": \"123\",\n * \"username\": \"user\",\n * \"email\": \"user@site.com\",\n * \"ip_address\": \"192.168.11.12\",\n * },\n * \"request\": {\n * \"url\": None,\n * \"headers\": {\n * \"user-Agent\": \"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.5 Safari/605.1.15\"\n * },\n * },\n * \"contexts\": {\n * \"feedback\": {\n * \"message\": \"test message\",\n * \"contact_email\": \"test@example.com\",\n * \"type\": \"feedback\",\n * },\n * \"trace\": {\n * \"trace_id\": \"4C79F60C11214EB38604F4AE0781BFB2\",\n * \"span_id\": \"FA90FDEAD5F74052\",\n * \"type\": \"trace\",\n * },\n * \"replay\": {\n * \"replay_id\": \"e2d42047b1c5431c8cba85ee2a8ab25d\",\n * },\n * },\n * }\n */\n","import { getLocationHref } from '@sentry/utils';\n\nimport { FEEDBACK_API_SOURCE } from './constants';\nimport type { SendFeedbackOptions } from './types';\nimport { sendFeedbackRequest } from './util/sendFeedbackRequest';\n\ninterface SendFeedbackParams {\n message: string;\n name?: string;\n email?: string;\n url?: string;\n source?: string;\n}\n\n/**\n * Public API to send a Feedback item to Sentry\n */\nexport function sendFeedback(\n { name, email, message, source = FEEDBACK_API_SOURCE, url = getLocationHref() }: SendFeedbackParams,\n options: SendFeedbackOptions = {},\n): ReturnType<typeof sendFeedbackRequest> {\n if (!message) {\n throw new Error('Unable to submit feedback with empty message');\n }\n\n return sendFeedbackRequest(\n {\n feedback: {\n name,\n email,\n message,\n url,\n source,\n },\n },\n options,\n );\n}\n","declare const __DEBUG_BUILD__: boolean;\n\n/**\n * This serves as a build time flag that will be true by default, but false in non-debug builds or if users replace `__SENTRY_DEBUG__` in their generated code.\n *\n * ATTENTION: This constant must never cross package boundaries (i.e. be exported) to guarantee that it can be used for tree shaking.\n */\nexport const DEBUG_BUILD = __DEBUG_BUILD__;\n","import type { FeedbackInternalOptions, OptionalFeedbackConfiguration } from '../types';\n\n/**\n * Quick and dirty deep merge for the Feedback integration options\n */\nexport function mergeOptions(\n defaultOptions: FeedbackInternalOptions,\n optionOverrides: OptionalFeedbackConfiguration,\n): FeedbackInternalOptions {\n return {\n ...defaultOptions,\n ...optionOverrides,\n themeDark: {\n ...defaultOptions.themeDark,\n ...optionOverrides.themeDark,\n },\n themeLight: {\n ...defaultOptions.themeLight,\n ...optionOverrides.themeLight,\n },\n };\n}\n","/**\n * Creates <style> element for widget actor (button that opens the dialog)\n */\nexport function createActorStyles(d: Document): HTMLStyleElement {\n const style = d.createElement('style');\n style.textContent = `\n.widget__actor {\n line-height: 25px;\n\n display: flex;\n align-items: center;\n gap: 8px;\n\n border-radius: var(--border-radius);\n cursor: pointer;\n font-size: 14px;\n font-weight: 600;\n padding: 12px 16px;\n text-decoration: none;\n z-index: 9000;\n\n color: var(--foreground);\n background-color: var(--background);\n border: var(--border);\n box-shadow: var(--box-shadow);\n opacity: 1;\n transition: opacity 0.1s ease-in-out;\n}\n\n.widget__actor:hover {\n background-color: var(--background-hover);\n}\n\n.widget__actor svg {\n width: 16px;\n height: 16px;\n}\n\n.widget__actor--hidden {\n opacity: 0;\n pointer-events: none;\n visibility: hidden;\n}\n\n.widget__actor__text {\n}\n\n.feedback-icon path {\n fill: var(--foreground);\n}\n`;\n\n return style;\n}\n","/**\n * Creates <style> element for widget dialog\n */\nexport function createDialogStyles(d: Document): HTMLStyleElement {\n const style = d.createElement('style');\n\n style.textContent = `\n.dialog {\n line-height: 25px;\n background-color: rgba(0, 0, 0, 0.05);\n border: none;\n position: fixed;\n inset: 0;\n z-index: 10000;\n width: 100vw;\n height: 100vh;\n display: flex;\n align-items: center;\n justify-content: center;\n opacity: 1;\n transition: opacity 0.2s ease-in-out;\n}\n\n.dialog:not([open]) {\n opacity: 0;\n pointer-events: none;\n visibility: hidden;\n}\n.dialog:not([open]) .dialog__content {\n transform: translate(0, -16px) scale(0.98);\n}\n\n.dialog__content {\n position: fixed;\n left: var(--left);\n right: var(--right);\n bottom: var(--bottom);\n top: var(--top);\n\n border: var(--border);\n border-radius: var(--form-border-radius);\n background-color: var(--background);\n color: var(--foreground);\n\n width: 320px;\n max-width: 100%;\n max-height: calc(100% - 2rem);\n display: flex;\n flex-direction: column;\n box-shadow: var(--box-shadow);\n transition: transform 0.2s ease-in-out;\n transform: translate(0, 0) scale(1);\n}\n\n.dialog__header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n font-size: 20px;\n font-weight: 600;\n padding: 24px 24px 0 24px;\n margin: 0;\n margin-bottom: 16px;\n}\n\n.brand-link {\n display: inline-flex;\n}\n\n.error {\n color: var(--error);\n margin-bottom: 16px;\n}\n\n.form {\n display: grid;\n overflow: auto;\n flex-direction: column;\n gap: 16px;\n padding: 0 24px 24px;\n}\n\n.form__error-container {\n color: var(--error);\n}\n\n.form__error-container--hidden {\n display: none;\n}\n\n.form__label {\n display: flex;\n flex-direction: column;\n gap: 4px;\n margin: 0px;\n}\n\n.form__label__text {\n display: grid;\n gap: 4px;\n align-items: center;\n grid-auto-flow: column;\n grid-auto-columns: max-content;\n}\n\n.form__label__text--required {\n font-size: 0.85em;\n}\n\n.form__input {\n font-family: inherit;\n line-height: inherit;\n background-color: var(--input-background);\n box-sizing: border-box;\n border: var(--input-border);\n border-radius: var(--form-content-border-radius);\n color: var(--input-foreground);\n font-size: 14px;\n font-weight: 500;\n padding: 6px 12px;\n}\n\n.form__input:focus-visible {\n outline: 1px auto var(--input-outline-focus);\n}\n\n.form__input--textarea {\n font-family: inherit;\n resize: vertical;\n}\n\n.btn-group {\n display: grid;\n gap: 8px;\n margin-top: 8px;\n}\n\n.btn {\n line-height: inherit;\n border: var(--cancel-border);\n border-radius: var(--form-content-border-radius);\n cursor: pointer;\n font-size: 14px;\n font-weight: 600;\n padding: 6px 16px;\n}\n.btn[disabled] {\n opacity: 0.6;\n pointer-events: none;\n}\n\n.btn--primary {\n background-color: var(--submit-background);\n border-color: var(--submit-border);\n color: var(--submit-foreground);\n}\n.btn--primary:hover {\n background-color: var(--submit-background-hover);\n color: var(--submit-foreground-hover);\n}\n.btn--primary:focus-visible {\n outline: 1px auto var(--submit-outline-focus);\n}\n\n.btn--default {\n background-color: var(--cancel-background);\n color: var(--cancel-foreground);\n font-weight: 500;\n}\n.btn--default:hover {\n background-color: var(--cancel-background-hover);\n color: var(--cancel-foreground-hover);\n}\n.btn--default:focus-visible {\n outline: 1px auto var(--cancel-outline-focus);\n}\n\n.success-message {\n background-color: var(--background);\n border: var(--border);\n border-radius: var(--border-radius);\n box-shadow: var(--box-shadow);\n font-weight: 600;\n color: var(--success);\n padding: 12px 24px;\n line-height: 25px;\n display: grid;\n align-items: center;\n grid-auto-flow: column;\n gap: 6px;\n cursor: default;\n}\n\n.success-icon path {\n fill: var(--success);\n}\n`;\n\n return style;\n}\n","import type { FeedbackTheme, FeedbackThemes } from '../types';\n\nfunction getThemedCssVariables(theme: FeedbackTheme): string {\n return `\n --background: ${theme.background};\n --background-hover: ${theme.backgroundHover};\n --foreground: ${theme.foreground};\n --error: ${theme.error};\n --success: ${theme.success};\n --border: ${theme.border};\n --border-radius: ${theme.borderRadius};\n --box-shadow: ${theme.boxShadow};\n\n --submit-background: ${theme.submitBackground};\n --submit-background-hover: ${theme.submitBackgroundHover};\n --submit-border: ${theme.submitBorder};\n --submit-outline-focus: ${theme.submitOutlineFocus};\n --submit-foreground: ${theme.submitForeground};\n --submit-foreground-hover: ${theme.submitForegroundHover};\n\n --cancel-background: ${theme.cancelBackground};\n --cancel-background-hover: ${theme.cancelBackgroundHover};\n --cancel-border: ${theme.cancelBorder};\n --cancel-outline-focus: ${theme.cancelOutlineFocus};\n --cancel-foreground: ${theme.cancelForeground};\n --cancel-foreground-hover: ${theme.cancelForegroundHover};\n\n --input-background: ${theme.inputBackground};\n --input-foreground: ${theme.inputForeground};\n --input-border: ${theme.inputBorder};\n --input-outline-focus: ${theme.inputOutlineFocus};\n\n --form-border-radius: ${theme.formBorderRadius};\n --form-content-border-radius: ${theme.formContentBorderRadius};\n `;\n}\n\n/**\n * Creates <style> element for widget actor (button that opens the dialog)\n */\nexport function createMainStyles(\n d: Document,\n colorScheme: 'system' | 'dark' | 'light',\n themes: FeedbackThemes,\n): HTMLStyleElement {\n const style = d.createElement('style');\n style.textContent = `\n:host {\n --bottom: 1rem;\n --right: 1rem;\n --top: auto;\n --left: auto;\n --z-index: 100000;\n --font-family: ${themes.light.fontFamily};\n --font-size: ${themes.light.fontSize};\n\n position: fixed;\n left: var(--left);\n right: var(--right);\n bottom: var(--bottom);\n top: var(--top);\n z-index: var(--z-index);\n\n font-family: var(--font-family);\n font-size: var(--font-size);\n\n ${getThemedCssVariables(colorScheme === 'dark' ? themes.dark : themes.light)}\n}\n\n${\n colorScheme === 'system'\n ? `\n@media (prefers-color-scheme: dark) {\n :host {\n ${getThemedCssVariables(themes.dark)}\n }\n}`\n : ''\n}\n}`;\n\n return style;\n}\n","import { logger } from '@sentry/utils';\n\nimport { WINDOW } from '../constants';\nimport type { FeedbackInternalOptions } from '../types';\nimport { createDialogStyles } from './Dialog.css';\nimport { createMainStyles } from './Main.css';\n\ntype CreateShadowHostParams = Pick<FeedbackInternalOptions, 'id' | 'colorScheme' | 'themeDark' | 'themeLight'>;\n\n/**\n * Creates shadow host\n */\nexport function createShadowHost({ id, colorScheme, themeDark, themeLight }: CreateShadowHostParams): {\n shadow: ShadowRoot;\n host: HTMLDivElement;\n} {\n try {\n const doc = WINDOW.document;\n\n // Create the host\n const host = doc.createElement('div');\n host.id = id;\n\n // Create the shadow root\n const shadow = host.attachShadow({ mode: 'open' });\n\n shadow.appendChild(createMainStyles(doc, colorScheme, { dark: themeDark, light: themeLight }));\n shadow.appendChild(createDialogStyles(doc));\n\n return { shadow, host };\n } catch {\n // Shadow DOM probably not supported\n logger.warn('[Feedback] Browser does not support shadow DOM API');\n throw new Error('Browser does not support shadow DOM API.');\n }\n}\n","import type { TransportMakeRequestResponse } from '@sentry/types';\nimport { logger } from '@sentry/utils';\n\nimport { FEEDBACK_WIDGET_SOURCE } from '../constants';\nimport { DEBUG_BUILD } from '../debug-build';\nimport { sendFeedback } from '../sendFeedback';\nimport type { FeedbackFormData, SendFeedbackOptions } from '../types';\nimport type { DialogComponent } from '../widget/Dialog';\n\n/**\n * Handles UI behavior of dialog when feedback is submitted, calls\n * `sendFeedback` to send feedback.\n */\nexport async function handleFeedbackSubmit(\n dialog: DialogComponent | null,\n feedback: FeedbackFormData,\n options?: SendFeedbackOptions,\n): Promise<TransportMakeRequestResponse | void> {\n if (!dialog) {\n // Not sure when this would happen\n return;\n }\n\n const showFetchError = (): void => {\n if (!dialog) {\n return;\n }\n dialog.showError('There was a problem submitting feedback, please wait and try again.');\n };\n\n dialog.hideError();\n\n try {\n const resp = await sendFeedback({ ...feedback, source: FEEDBACK_WIDGET_SOURCE }, options);\n\n // Success!\n return resp;\n } catch (err) {\n DEBUG_BUILD && logger.error(err);\n showFetchError();\n }\n}\n","/**\n * Helper function to set a dict of attributes on element (w/ specified namespace)\n */\nexport function setAttributesNS<T extends SVGElement>(el: T, attributes: Record<string, string>): T {\n Object.entries(attributes).forEach(([key, val]) => {\n el.setAttributeNS(null, key, val);\n });\n return el;\n}\n","import { WINDOW } from '../constants';\nimport { setAttributesNS } from '../util/setAttributesNS';\n\nconst SIZE = 20;\nconst XMLNS = 'http://www.w3.org/2000/svg';\n\ninterface IconReturn {\n el: SVGElement;\n}\n\n/**\n * Feedback Icon\n */\nexport function Icon(): IconReturn {\n const createElementNS = <K extends keyof SVGElementTagNameMap>(tagName: K): SVGElementTagNameMap[K] =>\n WINDOW.document.createElementNS(XMLNS, tagName);\n const svg = setAttributesNS(createElementNS('svg'), {\n class: 'feedback-icon',\n width: `${SIZE}`,\n height: `${SIZE}`,\n viewBox: `0 0 ${SIZE} ${SIZE}`,\n fill: 'none',\n });\n\n const g = setAttributesNS(createElementNS('g'), {\n clipPath: 'url(#clip0_57_80)',\n });\n\n const path = setAttributesNS(createElementNS('path'), {\n ['fill-rule']: 'evenodd',\n ['clip-rule']: 'evenodd',\n d: 'M15.6622 15H12.3997C12.2129 14.9959 12.031 14.9396 11.8747 14.8375L8.04965 12.2H7.49956V19.1C7.4875 19.3348 7.3888 19.5568 7.22256 19.723C7.05632 19.8892 6.83435 19.9879 6.59956 20H2.04956C1.80193 19.9968 1.56535 19.8969 1.39023 19.7218C1.21511 19.5467 1.1153 19.3101 1.11206 19.0625V12.2H0.949652C0.824431 12.2017 0.700142 12.1783 0.584123 12.1311C0.468104 12.084 0.362708 12.014 0.274155 11.9255C0.185602 11.8369 0.115689 11.7315 0.0685419 11.6155C0.0213952 11.4995 -0.00202913 11.3752 -0.00034808 11.25V3.75C-0.00900498 3.62067 0.0092504 3.49095 0.0532651 3.36904C0.0972798 3.24712 0.166097 3.13566 0.255372 3.04168C0.344646 2.94771 0.452437 2.87327 0.571937 2.82307C0.691437 2.77286 0.82005 2.74798 0.949652 2.75H8.04965L11.8747 0.1625C12.031 0.0603649 12.2129 0.00407221 12.3997 0H15.6622C15.9098 0.00323746 16.1464 0.103049 16.3215 0.278167C16.4966 0.453286 16.5964 0.689866 16.5997 0.9375V3.25269C17.3969 3.42959 18.1345 3.83026 18.7211 4.41679C19.5322 5.22788 19.9878 6.32796 19.9878 7.47502C19.9878 8.62209 19.5322 9.72217 18.7211 10.5333C18.1345 11.1198 17.3969 11.5205 16.5997 11.6974V14.0125C16.6047 14.1393 16.5842 14.2659 16.5395 14.3847C16.4948 14.5035 16.4268 14.6121 16.3394 14.7042C16.252 14.7962 16.147 14.8698 16.0307 14.9206C15.9144 14.9714 15.7891 14.9984 15.6622 15ZM1.89695 10.325H1.88715V4.625H8.33715C8.52423 4.62301 8.70666 4.56654 8.86215 4.4625L12.6872 1.875H14.7247V13.125H12.6872L8.86215 10.4875C8.70666 10.3835 8.52423 10.327 8.33715 10.325H2.20217C2.15205 10.3167 2.10102 10.3125 2.04956 10.3125C1.9981 10.3125 1.94708 10.3167 1.89695 10.325ZM2.98706 12.2V18.1625H5.66206V12.2H2.98706ZM16.5997 9.93612V5.01393C16.6536 5.02355 16.7072 5.03495 16.7605 5.04814C17.1202 5.13709 17.4556 5.30487 17.7425 5.53934C18.0293 5.77381 18.2605 6.06912 18.4192 6.40389C18.578 6.73866 18.6603 7.10452 18.6603 7.47502C18.6603 7.84552 18.578 8.21139 18.4192 8.54616C18.2605 8.88093 18.0293 9.17624 17.7425 9.41071C17.4556 9.64518 17.1202 9.81296 16.7605 9.90191C16.7072 9.91509 16.6536 9.9265 16.5997 9.93612Z',\n });\n svg.appendChild(g).appendChild(path);\n\n const speakerDefs = createElementNS('defs');\n const speakerClipPathDef = setAttributesNS(createElementNS('clipPath'), {\n id: 'clip0_57_80',\n });\n\n const speakerRect = setAttributesNS(createElementNS('rect'), {\n width: `${SIZE}`,\n height: `${SIZE}`,\n fill: 'white',\n });\n\n speakerClipPathDef.appendChild(speakerRect);\n speakerDefs.appendChild(speakerClipPathDef);\n\n svg.appendChild(speakerDefs).appendChild(speakerClipPathDef).appendChild(speakerRect);\n\n return {\n get el() {\n return svg;\n },\n };\n}\n","import { WINDOW } from '../../constants';\n\n/**\n * Helper function to create an element. Could be used as a JSX factory\n * (i.e. React-like syntax).\n */\nexport function createElement<K extends keyof HTMLElementTagNameMap>(\n tagName: K,\n attributes: { [key: string]: string | boolean | EventListenerOrEventListenerObject } | null,\n ...children: any\n): HTMLElementTagNameMap[K] {\n const doc = WINDOW.document;\n const element = doc.createElement(tagName);\n\n if (attributes) {\n Object.entries(attributes).forEach(([attribute, attributeValue]) => {\n if (attribute === 'className' && typeof attributeValue === 'string') {\n // JSX does not allow class as a valid name\n element.setAttribute('class', attributeValue);\n } else if (typeof attributeValue === 'boolean' && attributeValue) {\n element.setAttribute(attribute, '');\n } else if (typeof attributeValue === 'string') {\n element.setAttribute(attribute, attributeValue);\n } else if (attribute.startsWith('on') && typeof attributeValue === 'function') {\n element.addEventListener(attribute.substring(2).toLowerCase(), attributeValue);\n }\n });\n }\n for (const child of children) {\n appendChild(element, child);\n }\n\n return element;\n}\n\nfunction appendChild(parent: Node, child: any): void {\n const doc = WINDOW.document;\n if (typeof child === 'undefined' || child === null) {\n return;\n }\n\n if (Array.isArray(child)) {\n for (const value of child) {\n appendChild(parent, value);\n }\n } else if (child === false) {\n // do nothing if child evaluated to false\n } else if (typeof child === 'string') {\n parent.appendChild(doc.createTextNode(child));\n } else if (child instanceof Node) {\n parent.appendChild(child);\n } else {\n parent.appendChild(doc.createTextNode(String(child)));\n }\n}\n","import type { FeedbackComponent, FeedbackInternalOptions } from '../types';\nimport { Icon } from './Icon';\nimport { createElement } from './util/createElement';\n\nexport interface ActorProps extends Pick<FeedbackInternalOptions, 'buttonLabel'> {\n onClick?: (e: MouseEvent) => void;\n}\n\nexport interface ActorComponent extends FeedbackComponent<HTMLButtonElement> {\n /**\n * Shows the actor element\n */\n show: () => void;\n /**\n * Hides the actor element\n */\n hide: () => void;\n}\n\n/**\n *\n */\nexport function Actor({ buttonLabel, onClick }: ActorProps): ActorComponent {\n function _handleClick(e: MouseEvent): void {\n onClick && onClick(e);\n }\n\n const el = createElement(\n 'button',\n {\n type: 'button',\n className: 'widget__actor',\n ['aria-label']: buttonLabel,\n ['aria-hidden']: 'false',\n },\n Icon().el,\n buttonLabel\n ? createElement(\n 'span',\n {\n className: 'widget__actor__text',\n },\n buttonLabel,\n )\n : null,\n );\n\n el.addEventListener('click', _handleClick);\n\n return {\n get el() {\n return el;\n },\n show: (): void => {\n el.classList.remove('widget__actor--hidden');\n el.setAttribute('aria-hidden', 'false');\n },\n hide: (): void => {\n el.classList.add('widget__actor--hidden');\n el.setAttribute('aria-hidden', 'true');\n },\n };\n}\n","import type { FeedbackComponent } from '../types';\nimport { createElement } from './util/createElement';\n\nexport interface SubmitButtonProps {\n label: string;\n}\n\ntype SubmitButtonComponent = FeedbackComponent<HTMLButtonElement>;\n\n/**\n *\n */\nexport function SubmitButton({ label }: SubmitButtonProps): SubmitButtonComponent {\n const el = createElement(\n 'button',\n {\n type: 'submit',\n className: 'btn btn--primary',\n ['aria-label']: label,\n },\n label,\n );\n\n return {\n el,\n };\n}\n","import type { FeedbackComponent, FeedbackFormData, FeedbackInternalOptions, FeedbackTextConfiguration } from '../types';\nimport { SubmitButton } from './SubmitButton';\nimport { createElement } from './util/createElement';\n\nexport interface FormComponentProps\n extends Pick<\n FeedbackInternalOptions,\n | 'showName'\n | 'showEmail'\n | 'isNameRequired'\n | 'isEmailRequired'\n | Exclude<keyof FeedbackTextConfiguration, 'buttonLabel' | 'formTitle' | 'successMessageText'>\n > {\n /**\n * A default name value to render the input with. Empty strings are ok.\n */\n defaultName: string;\n /**\n * A default email value to render the input with. Empty strings are ok.\n */\n defaultEmail: string;\n onCancel?: (e: Event) => void;\n onSubmit?: (feedback: FeedbackFormData) => void;\n}\n\ninterface FormComponent extends FeedbackComponent<HTMLFormElement> {\n /**\n * Shows the error message\n */\n showError: (message: string) => void;\n\n /**\n * Hides the error message\n */\n hideError: () => void;\n}\n\nfunction retrieveStringValue(formData: FormData, key: string): string {\n const value = formData.get(key);\n if (typeof value === 'string') {\n return value.trim();\n }\n return '';\n}\n\n/**\n * Creates the form element\n */\nexport function Form({\n nameLabel,\n namePlaceholder,\n emailLabel,\n emailPlaceholder,\n messageLabel,\n messagePlaceholder,\n cancelButtonLabel,\n submitButtonLabel,\n\n showName,\n showEmail,\n isNameRequired,\n isEmailRequired,\n\n defaultName,\n defaultEmail,\n onCancel,\n onSubmit,\n}: FormComponentProps): FormComponent {\n const { el: submitEl } = SubmitButton({\n label: submitButtonLabel,\n });\n\n function handleSubmit(e: Event): void {\n e.preventDefault();\n\n if (!(e.target instanceof HTMLFormElement)) {\n return;\n }\n\n try {\n if (onSubmit) {\n const formData = new FormData(e.target as HTMLFormElement);\n const feedback = {\n name: retrieveStringValue(formData, 'name'),\n email: retrieveStringValue(formData, 'email'),\n message: retrieveStringValue(formData, 'message'),\n };\n\n onSubmit(feedback);\n }\n } catch {\n // pass\n }\n }\n\n const errorEl = createElement('div', {\n className: 'form__error-container form__error-container--hidden',\n ['aria-hidden']: 'true',\n });\n\n function showError(message: string): void {\n errorEl.textContent = message;\n errorEl.classList.remove('form__error-container--hidden');\n errorEl.setAttribute('aria-hidden', 'false');\n }\n\n function hideError(): void {\n errorEl.textContent = '';\n errorEl.classList.add('form__error-container--hidden');\n errorEl.setAttribute('aria-hidden', 'true');\n }\n\n const nameEl = createElement('input', {\n id: 'name',\n type: showName ? 'text' : 'hidden',\n ['aria-hidden']: showName ? 'false' : 'true',\n name: 'name',\n required: isNameRequired,\n className: 'form__input',\n placeholder: namePlaceholder,\n value: defaultName,\n });\n\n const emailEl = createElement('input', {\n id: 'email',\n type: showEmail ? 'text' : 'hidden',\n ['aria-hidden']: showEmail ? 'false' : 'true',\n name: 'email',\n required: isEmailRequired,\n className: 'form__input',\n placeholder: emailPlaceholder,\n value: defaultEmail,\n });\n\n const messageEl = createElement('textarea', {\n id: 'message',\n autoFocus: 'true',\n rows: '5',\n name: 'message',\n required: true,\n className: 'form__input form__input--textarea',\n placeholder: messagePlaceholder,\n });\n\n const cancelEl = createElement(\n 'button',\n {\n type: 'button',\n className: 'btn btn--default',\n ['aria-label']: cancelButtonLabel,\n onClick: (e: Event) => {\n onCancel && onCancel(e);\n },\n },\n cancelButtonLabel,\n );\n\n const formEl = createElement(\n 'form',\n {\n className: 'form',\n onSubmit: handleSubmit,\n },\n [\n errorEl,\n\n showName &&\n createElement(\n 'label',\n {\n htmlFor: 'name',\n className: 'form__label',\n },\n [\n createElement(\n 'span',\n { className: 'form__label__text' },\n nameLabel,\n isNameRequired && createElement('span', { className: 'form__label__text--required' }, ' (required)'),\n ),\n nameEl,\n ],\n ),\n !showName && nameEl,\n\n showEmail &&\n createElement(\n 'label',\n {\n htmlFor: 'email',\n className: 'form__label',\n },\n [\n createElement(\n 'span',\n { className: 'form__label__text' },\n emailLabel,\n isEmailRequired && createElement('span', { className: 'form__label__text--required' }, ' (required)'),\n ),\n emailEl,\n ],\n ),\n !showEmail && emailEl,\n\n createElement(\n 'label',\n {\n htmlFor: 'message',\n className: 'form__label',\n },\n [\n createElement(\n 'span',\n { className: 'form__label__text' },\n messageLabel,\n createElement('span', { className: 'form__label__text--required' }, ' (required)'),\n ),\n messageEl,\n ],\n ),\n\n createElement(\n 'div',\n {\n className: 'btn-group',\n },\n [submitEl, cancelEl],\n ),\n ],\n );\n\n return {\n get el() {\n return formEl;\n },\n showError,\n hideError,\n };\n}\n","import { WINDOW } from '../constants';\nimport type { FeedbackInternalOptions } from '../types';\nimport { setAttributesNS } from '../util/setAttributesNS';\n\nconst XMLNS = 'http://www.w3.org/2000/svg';\n\ninterface IconReturn {\n el: SVGElement;\n}\n\ntype Props = Pick<FeedbackInternalOptions, 'colorScheme'>;\n\n/**\n * Sentry Logo\n */\nexport function Logo({ colorScheme }: Props): IconReturn {\n const createElementNS = <K extends keyof SVGElementTagNameMap>(tagName: K): SVGElementTagNameMap[K] =>\n WINDOW.document.createElementNS(XMLNS, tagName);\n const svg = setAttributesNS(createElementNS('svg'), {\n class: 'sentry-logo',\n width: '32',\n height: '30',\n viewBox: '0 0 72 66',\n fill: 'none',\n });\n\n const path = setAttributesNS(createElementNS('path'), {\n transform: 'translate(11, 11)',\n d: 'M29,2.26a4.67,4.67,0,0,0-8,0L14.42,13.53A32.21,32.21,0,0,1,32.17,40.19H27.55A27.68,27.68,0,0,0,12.09,17.47L6,28a15.92,15.92,0,0,1,9.23,12.17H4.62A.76.76,0,0,1,4,39.06l2.94-5a10.74,10.74,0,0,0-3.36-1.9l-2.91,5a4.54,4.54,0,0,0,1.69,6.24A4.66,4.66,0,0,0,4.62,44H19.15a19.4,19.4,0,0,0-8-17.31l2.31-4A23.87,23.87,0,0,1,23.76,44H36.07a35.88,35.88,0,0,0-16.41-31.8l4.67-8a.77.77,0,0,1,1.05-.27c.53.29,20.29,34.77,20.66,35.17a.76.76,0,0,1-.68,1.13H40.6q.09,1.91,0,3.81h4.78A4.59,4.59,0,0,0,50,39.43a4.49,4.49,0,0,0-.62-2.28Z',\n });\n svg.append(path);\n\n const defs = createElementNS('defs');\n const style = createElementNS('style');\n\n style.textContent = `\n path {\n fill: ${colorScheme === 'dark' ? '#fff' : '#362d59'};\n }`;\n\n if (colorScheme === 'system') {\n style.textContent += `\n @media (prefers-color-scheme: dark) {\n path: {\n fill: '#fff';\n }\n }\n `;\n }\n\n defs.append(style);\n svg.append(defs);\n\n return {\n get el() {\n return svg;\n },\n };\n}\n","import type { FeedbackComponent, FeedbackInternalOptions } from '../types';\nimport type { FormComponentProps } from './Form';\nimport { Form } from './Form';\nimport { Logo } from './Logo';\nimport { createElement } from './util/createElement';\n\nexport interface DialogProps\n extends FormComponentProps,\n Pick<FeedbackInternalOptions, 'formTitle' | 'showBranding' | 'colorScheme'> {\n onClosed?: () => void;\n}\n\nexport interface DialogComponent extends FeedbackComponent<HTMLDialogElement> {\n /**\n * Shows the error message\n */\n showError: (message: string) => void;\n\n /**\n * Hides the error message\n */\n hideError: () => void;\n\n /**\n * Opens and shows the dialog and form\n */\n open: () => void;\n\n /**\n * Closes the dialog and form\n */\n close: () => void;\n\n /**\n * Check if dialog is currently opened\n */\n checkIsOpen: () => boolean;\n}\n\n/**\n * Feedback dialog component that has the form\n */\nexport function Dialog({\n formTitle,\n showBranding,\n showName,\n showEmail,\n isNameRequired,\n isEmailRequired,\n colorScheme,\n defaultName,\n defaultEmail,\n onClosed,\n onCancel,\n onSubmit,\n ...textLabels\n}: DialogProps): DialogComponent {\n let el: HTMLDialogElement | null = null;\n\n /**\n * Handles when the dialog is clicked. In our case, the dialog is the\n * semi-transparent bg behind the form. We want clicks outside of the form to\n * hide the form.\n */\n function handleDialogClick(): void {\n close();\n\n // Only this should trigger `onClose`, we don't want the `close()` method to\n // trigger it, otherwise it can cause cycles.\n onClosed && onClosed();\n }\n\n /**\n * Close the dialog\n */\n function close(): void {\n if (el) {\n el.open = false;\n }\n }\n\n /**\n * Opens the dialog\n */\n function open(): void {\n if (el) {\n el.open = true;\n }\n }\n\n /**\n * Check if dialog is currently opened\n */\n function checkIsOpen(): boolean {\n return (el && el.open === true) || false;\n }\n\n const {\n el: formEl,\n showError,\n hideError,\n } = Form({\n showEmail,\n showName,\n isEmailRequired,\n isNameRequired,\n\n defaultName,\n defaultEmail,\n onSubmit,\n onCancel,\n ...textLabels,\n });\n\n el = createElement(\n 'dialog',\n {\n className: 'dialog',\n open: true,\n onClick: handleDialogClick,\n },\n createElement(\n 'div',\n {\n className: 'dialog__content',\n onClick: e => {\n // Stop event propagation so clicks on content modal do not propagate to dialog (which will close dialog)\n e.stopPropagation();\n },\n },\n createElement(\n 'h2',\n { className: 'dialog__header' },\n formTitle,\n showBranding &&\n createElement(\n 'a',\n {\n className: 'brand-link',\n target: '_blank',\n href: 'https://sentry.io/welcome/',\n title: 'Powered by Sentry',\n rel: 'noopener noreferrer',\n },\n Logo({ colorScheme }).el,\n ),\n ),\n formEl,\n ),\n );\n\n return {\n get el() {\n return el;\n },\n showError,\n hideError,\n open,\n close,\n checkIsOpen,\n };\n}\n","import { WINDOW } from '../constants';\nimport { setAttributesNS } from '../util/setAttributesNS';\n\nconst WIDTH = 16;\nconst HEIGHT = 17;\nconst XMLNS = 'http://www.w3.org/2000/svg';\n\ninterface IconReturn {\n el: SVGElement;\n}\n\n/**\n * Success Icon (checkmark)\n */\nexport function SuccessIcon(): IconReturn {\n const createElementNS = <K extends keyof SVGElementTagNameMap>(tagName: K): SVGElementTagNameMap[K] =>\n WINDOW.document.createElementNS(XMLNS, tagName);\n const svg = setAttributesNS(createElementNS('svg'), {\n class: 'success-icon',\n width: `${WIDTH}`,\n height: `${HEIGHT}`,\n viewBox: `0 0 ${WIDTH} ${HEIGHT}`,\n fill: 'none',\n });\n\n const g = setAttributesNS(createElementNS('g'), {\n clipPath: 'url(#clip0_57_156)',\n });\n\n const path2 = setAttributesNS(createElementNS('path'), {\n ['fill-rule']: 'evenodd',\n ['clip-rule']: 'evenodd',\n d: 'M3.55544 15.1518C4.87103 16.0308 6.41775 16.5 8 16.5C10.1217 16.5 12.1566 15.6571 13.6569 14.1569C15.1571 12.6566 16 10.6217 16 8.5C16 6.91775 15.5308 5.37103 14.6518 4.05544C13.7727 2.73985 12.5233 1.71447 11.0615 1.10897C9.59966 0.503466 7.99113 0.34504 6.43928 0.653721C4.88743 0.962403 3.46197 1.72433 2.34315 2.84315C1.22433 3.96197 0.462403 5.38743 0.153721 6.93928C-0.15496 8.49113 0.00346625 10.0997 0.608967 11.5615C1.21447 13.0233 2.23985 14.2727 3.55544 15.1518ZM4.40546 3.1204C5.46945 2.40946 6.72036 2.03 8 2.03C9.71595 2.03 11.3616 2.71166 12.575 3.92502C13.7883 5.13838 14.47 6.78405 14.47 8.5C14.47 9.77965 14.0905 11.0306 13.3796 12.0945C12.6687 13.1585 11.6582 13.9878 10.476 14.4775C9.29373 14.9672 7.99283 15.0953 6.73777 14.8457C5.48271 14.596 4.32987 13.9798 3.42502 13.075C2.52018 12.1701 1.90397 11.0173 1.65432 9.76224C1.40468 8.50718 1.5328 7.20628 2.0225 6.02404C2.5122 4.8418 3.34148 3.83133 4.40546 3.1204Z',\n });\n const path = setAttributesNS(createElementNS('path'), {\n d: 'M6.68775 12.4297C6.78586 12.4745 6.89218 12.4984 7 12.5C7.11275 12.4955 7.22315 12.4664 7.32337 12.4145C7.4236 12.3627 7.51121 12.2894 7.58 12.2L12 5.63999C12.0848 5.47724 12.1071 5.28902 12.0625 5.11098C12.0178 4.93294 11.9095 4.77744 11.7579 4.67392C11.6064 4.57041 11.4221 4.52608 11.24 4.54931C11.0579 4.57254 10.8907 4.66173 10.77 4.79999L6.88 10.57L5.13 8.56999C5.06508 8.49566 4.98613 8.43488 4.89768 8.39111C4.80922 8.34735 4.713 8.32148 4.61453 8.31498C4.51605 8.30847 4.41727 8.32147 4.32382 8.35322C4.23038 8.38497 4.14413 8.43484 4.07 8.49999C3.92511 8.63217 3.83692 8.81523 3.82387 9.01092C3.81083 9.2066 3.87393 9.39976 4 9.54999L6.43 12.24C6.50187 12.3204 6.58964 12.385 6.68775 12.4297Z',\n });\n\n svg.appendChild(g).append(path, path2);\n\n const speakerDefs = createElementNS('defs');\n const speakerClipPathDef = setAttributesNS(createElementNS('clipPath'), {\n id: 'clip0_57_156',\n });\n\n const speakerRect = setAttributesNS(createElementNS('rect'), {\n width: `${WIDTH}`,\n height: `${WIDTH}`,\n fill: 'white',\n transform: 'translate(0 0.5)',\n });\n\n speakerClipPathDef.appendChild(speakerRect);\n speakerDefs.appendChild(speakerClipPathDef);\n\n svg.appendChild(speakerDefs).appendChild(speakerClipPathDef).appendChild(speakerRect);\n\n return {\n get el() {\n return svg;\n },\n };\n}\n","import type { FeedbackComponent } from '../types';\nimport { SuccessIcon } from './SuccessIcon';\nimport { createElement } from './util/createElement';\n\nexport interface SuccessMessageProps {\n message: string;\n onRemove?: () => void;\n}\n\ninterface SuccessMessageComponent extends FeedbackComponent<HTMLDivElement> {\n /**\n * Removes the component\n */\n remove: () => void;\n}\n\n/**\n * Feedback dialog component that has the form\n */\nexport function SuccessMessage({ message, onRemove }: SuccessMessageProps): SuccessMessageComponent {\n function remove(): void {\n if (!el) {\n return;\n }\n\n el.remove();\n onRemove && onRemove();\n }\n\n const el = createElement(\n 'div',\n {\n className: 'success-message',\n onClick: remove,\n },\n SuccessIcon().el,\n message,\n );\n\n return {\n el,\n remove,\n };\n}\n","import { getCurrentScope } from '@sentry/core';\nimport { logger } from '@sentry/utils';\n\nimport type { FeedbackFormData, FeedbackInternalOptions, FeedbackWidget } from '../types';\nimport { handleFeedbackSubmit } from '../util/handleFeedbackSubmit';\nimport type { ActorComponent } from './Actor';\nimport { Actor } from './Actor';\nimport type { DialogComponent } from './Dialog';\nimport { Dialog } from './Dialog';\nimport { SuccessMessage } from './SuccessMessage';\n\ninterface CreateWidgetParams {\n /**\n * Shadow DOM to append to\n */\n shadow: ShadowRoot;\n\n /**\n * Feedback integration options\n */\n options: FeedbackInternalOptions & { shouldCreateActor?: boolean };\n\n /**\n * An element to attach to, that when clicked, will open a dialog\n */\n attachTo?: Element;\n\n /**\n * If false, will not create an actor\n */\n shouldCreateActor?: boolean;\n}\n\n/**\n * Creates a new widget. Returns public methods that control widget behavior.\n */\nexport function createWidget({\n shadow,\n options: { shouldCreateActor = true, ...options },\n attachTo,\n}: CreateWidgetParams): FeedbackWidget {\n let actor: ActorComponent | undefined;\n let dialog: DialogComponent | undefined;\n let isDialogOpen: boolean = false;\n\n /**\n * Show the success message for 5 seconds\n */\n function showSuccessMessage(): void {\n if (!shadow) {\n return;\n }\n\n try {\n const success = SuccessMessage({\n message: options.successMessageText,\n onRemove: () => {\n if (timeoutId) {\n clearTimeout(timeoutId);\n }\n showActor();\n },\n });\n\n if (!success.el) {\n throw new Error('Unable to show success message');\n }\n\n shadow.appendChild(success.el);\n\n const timeoutId = setTimeout(() => {\n if (success) {\n success.remove();\n }\n }, 5000);\n } catch (err) {\n // TODO: error handling\n logger.error(err);\n }\n }\n\n /**\n * Handler for when the feedback form is completed by the user. This will\n * create and send the feedback message as an event.\n */\n async function _handleFeedbackSubmit(feedback: FeedbackFormData): Promise<void> {\n if (!dialog) {\n return;\n }\n\n // Simple validation for now, just check for non-empty required fields\n const emptyField = [];\n if (options.isNameRequired && !feedback.name) {\n emptyField.push(options.nameLabel);\n }\n if (options.isEmailRequired && !feedback.email) {\n emptyField.push(options.emailLabel);\n }\n if (!feedback.message) {\n emptyField.push(options.messageLabel);\n }\n if (emptyField.length > 0) {\n dialog.showError(`Please enter in the following required fields: ${emptyField.join(', ')}`);\n return;\n }\n\n const result = await handleFeedbackSubmit(dialog, feedback);\n\n // Error submitting feedback\n if (!result) {\n if (options.onSubmitError) {\n options.onSubmitError();\n }\n\n return;\n }\n\n // Success\n removeDialog();\n showSuccessMessage();\n\n if (options.onSubmitSuccess) {\n options.onSubmitSuccess();\n }\n }\n\n /**\n * Displays the default actor\n */\n function showActor(): void {\n actor && actor.show();\n }\n\n /**\n * Hides the default actor\n */\n function hideActor(): void {\n actor && actor.hide();\n }\n\n /**\n * Removes the default actor element\n */\n function removeActor(): void {\n actor && actor.el && actor.el.remove();\n }\n\n /**\n *\n */\n function openDialog(): void {\n try {\n if (dialog) {\n dialog.open();\n isDialogOpen = true;\n if (options.onFormOpen) {\n options.onFormOpen();\n }\n return;\n }\n\n const userKey = options.useSentryUser;\n const scope = getCurrentScope();\n const user = scope && scope.getUser();\n\n dialog = Dialog({\n colorScheme: options.colorScheme,\n showBranding: options.showBranding,\n showName: options.showName || options.isNameRequired,\n showEmail: options.showEmail || options.isEmailRequired,\n isNameRequired: options.isNameRequired,\n isEmailRequired: options.isEmailRequired,\n formTitle: options.formTitle,\n cancelButtonLabel: options.cancelButtonLabel,\n submitButtonLabel: options.submitButtonLabel,\n emailLabel: options.emailLabel,\n emailPlaceholder: options.emailPlaceholder,\n messageLabel: options.messageLabel,\n messagePlaceholder: options.messagePlaceholder,\n nameLabel: options.nameLabel,\n namePlaceholder: options.namePlaceholder,\n defaultName: (userKey && user && user[userKey.name]) || '',\n defaultEmail: (userKey && user && user[userKey.email]) || '',\n onClosed: () => {\n showActor();\n isDialogOpen = false;\n\n if (options.onFormClose) {\n options.onFormClose();\n }\n },\n onCancel: () => {\n closeDialog();\n showActor();\n },\n onSubmit: _handleFeedbackSubmit,\n });\n\n if (!dialog.el) {\n throw new Error('Unable to open Feedback dialog');\n }\n\n shadow.appendChild(dialog.el);\n\n // Hides the default actor whenever dialog is opened\n hideActor();\n\n if (options.onFormOpen) {\n options.onFormOpen();\n }\n } catch (err) {\n // TODO: Error handling?\n logger.error(err);\n }\n }\n\n /**\n * Closes the dialog\n */\n function closeDialog(): void {\n if (dialog) {\n dialog.close();\n isDialogOpen = false;\n\n if (options.onFormClose) {\n options.onFormClose();\n }\n }\n }\n\n /**\n * Removes the dialog element from DOM\n */\n function removeDialog(): void {\n if (dialog) {\n closeDialog();\n const dialogEl = dialog.el;\n dialogEl && dialogEl.remove();\n dialog = undefined;\n }\n }\n\n /**\n *\n */\n function handleActorClick(): void {\n // Open dialog\n if (!isDialogOpen) {\n openDialog();\n }\n\n // Hide actor button\n hideActor();\n }\n\n if (attachTo) {\n attachTo.addEventListener('click', handleActorClick);\n } else if (shouldCreateActor) {\n actor = Actor({ buttonLabel: options.buttonLabel, onClick: handleActorClick });\n actor.el && shadow.appendChild(actor.el);\n }\n\n return {\n get actor() {\n return actor;\n },\n get dialog() {\n return dialog;\n },\n\n showActor,\n hideActor,\n removeActor,\n\n openDialog,\n closeDialog,\n removeDialog,\n };\n}\n","import type { Integration, IntegrationFn } from '@sentry/types';\nimport { isBrowser, logger } from '@sentry/utils';\n\nimport {\n ACTOR_LABEL,\n CANCEL_BUTTON_LABEL,\n DEFAULT_THEME,\n EMAIL_LABEL,\n EMAIL_PLACEHOLDER,\n FORM_TITLE,\n MESSAGE_LABEL,\n MESSAGE_PLACEHOLDER,\n NAME_LABEL,\n NAME_PLACEHOLDER,\n SUBMIT_BUTTON_LABEL,\n SUCCESS_MESSAGE_TEXT,\n WINDOW,\n} from './constants';\nimport { DEBUG_BUILD } from './debug-build';\nimport type { FeedbackInternalOptions, FeedbackWidget, OptionalFeedbackConfiguration } from './types';\nimport { mergeOptions } from './util/mergeOptions';\nimport { createActorStyles } from './widget/Actor.css';\nimport { createShadowHost } from './widget/createShadowHost';\nimport { createWidget } from './widget/createWidget';\n\nconst doc = WINDOW.document;\n\nexport const feedbackIntegration = ((options?: OptionalFeedbackConfiguration) => {\n // eslint-disable-next-line deprecation/deprecation\n return new Feedback(options);\n}) satisfies IntegrationFn;\n\n/**\n * Feedback integration. When added as an integration to the SDK, it will\n * inject a button in the bottom-right corner of the window that opens a\n * feedback modal when clicked.\n *\n * @deprecated Use `feedbackIntegration()` instead.\n */\nexport class Feedback implements Integration {\n /**\n * @inheritDoc\n */\n public static id: string = 'Feedback';\n\n /**\n * @inheritDoc\n */\n public name: string;\n\n /**\n * Feedback configuration options\n */\n public options: FeedbackInternalOptions;\n\n /**\n * Reference to widget element that is created when autoInject is true\n */\n private _widget: FeedbackWidget | null;\n\n /**\n * List of all widgets that are created from the integration\n */\n private _widgets: Set<FeedbackWidget>;\n\n /**\n * Reference to the host element where widget is inserted\n */\n private _host: HTMLDivElement | null;\n\n /**\n * Refernce to Shadow DOM root\n */\n private _shadow: ShadowRoot | null;\n\n /**\n * Tracks if actor styles have ever been inserted into shadow DOM\n */\n private _hasInsertedActorStyles: boolean;\n\n public constructor({\n id = 'sentry-feedback',\n showBranding = true,\n autoInject = true,\n showEmail = true,\n showName = true,\n useSentryUser = {\n email: 'email',\n name: 'username',\n },\n isEmailRequired = false,\n isNameRequired = false,\n\n themeDark,\n themeLight,\n colorScheme = 'system',\n\n buttonLabel = ACTOR_LABEL,\n cancelButtonLabel = CANCEL_BUTTON_LABEL,\n submitButtonLabel = SUBMIT_BUTTON_LABEL,\n formTitle = FORM_TITLE,\n emailPlaceholder = EMAIL_PLACEHOLDER,\n emailLabel = EMAIL_LABEL,\n messagePlaceholder = MESSAGE_PLACEHOLDER,\n messageLabel = MESSAGE_LABEL,\n namePlaceholder = NAME_PLACEHOLDER,\n nameLabel = NAME_LABEL,\n successMessageText = SUCCESS_MESSAGE_TEXT,\n\n onFormClose,\n onFormOpen,\n onSubmitError,\n onSubmitSuccess,\n }: OptionalFeedbackConfiguration = {}) {\n // eslint-disable-next-line deprecation/deprecation\n this.name = Feedback.id;\n\n // tsc fails if these are not initialized explicitly constructor, e.g. can't call `_initialize()`\n this._host = null;\n this._shadow = null;\n this._widget = null;\n this._widgets = new Set();\n this._hasInsertedActorStyles = false;\n\n this.options = {\n id,\n showBranding,\n autoInject,\n isEmailRequired,\n isNameRequired,\n showEmail,\n showName,\n useSentryUser,\n\n colorScheme,\n themeDark: {\n ...DEFAULT_THEME.dark,\n ...themeDark,\n },\n themeLight: {\n ...DEFAULT_THEME.light,\n ...themeLight,\n },\n\n buttonLabel,\n cancelButtonLabel,\n submitButtonLabel,\n formTitle,\n emailLabel,\n emailPlaceholder,\n messageLabel,\n messagePlaceholder,\n nameLabel,\n namePlaceholder,\n successMessageText,\n\n onFormClose,\n onFormOpen,\n onSubmitError,\n onSubmitSuccess,\n };\n }\n\n /**\n * Setup and initialize feedback container\n */\n public setupOnce(): void {\n if (!isBrowser()) {\n return;\n }\n\n try {\n this._cleanupWidgetIfExists();\n\n const { autoInject } = this.options;\n\n if (!autoInject) {\n // Nothing to do here\n return;\n }\n\n this._createWidget(this.options);\n } catch (err) {\n DEBUG_BUILD && logger.error(err);\n }\n }\n\n /**\n * Allows user to open the dialog box. Creates a new widget if\n * `autoInject` was false, otherwise re-uses the default widget that was\n * created during initialization of the integration.\n */\n public openDialog(): void {\n if (!this._widget) {\n this._createWidget({ ...this.options, shouldCreateActor: false });\n }\n\n if (!this._widget) {\n return;\n }\n\n this._widget.openDialog();\n }\n\n /**\n * Closes the dialog for the default widget, if it exists\n */\n public closeDialog(): void {\n if (!this._widget) {\n // Nothing to do if widget does not exist\n return;\n }\n\n this._widget.closeDialog();\n }\n\n /**\n * Adds click listener to attached element to open a feedback dialog\n */\n public attachTo(el: Element | string, optionOverrides?: OptionalFeedbackConfiguration): FeedbackWidget | null {\n try {\n const options = mergeOptions(this.options, optionOverrides || {});\n\n return this._ensureShadowHost<FeedbackWidget | null>(options, ({ shadow }) => {\n const targetEl =\n typeof el === 'string' ? doc.querySelector(el) : typeof el.addEventListener === 'function' ? el : null;\n\n if (!targetEl) {\n DEBUG_BUILD && logger.error('[Feedback] Unable to attach to target element');\n return null;\n }\n\n const widget = createWidget({ shadow, options, attachTo: targetEl });\n this._widgets.add(widget);\n\n if (!this._widget) {\n this._widget = widget;\n }\n\n return widget;\n });\n } catch (err) {\n DEBUG_BUILD && logger.error(err);\n return null;\n }\n }\n\n /**\n * Creates a new widget. Accepts partial options to override any options passed to constructor.\n */\n public createWidget(\n optionOverrides?: OptionalFeedbackConfiguration & { shouldCreateActor?: boolean },\n ): FeedbackWidget | null {\n try {\n return this._createWidget(mergeOptions(this.options, optionOverrides || {}));\n } catch (err) {\n DEBUG_BUILD && logger.error(err);\n return null;\n }\n }\n\n /**\n * Removes a single widget\n */\n public removeWidget(widget: FeedbackWidget | null | undefined): boolean {\n if (!widget) {\n return false;\n }\n\n try {\n if (this._widgets.has(widget)) {\n widget.removeActor();\n widget.removeDialog();\n this._widgets.delete(widget);\n\n if (this._widget === widget) {\n // TODO: is more clean-up needed? e.g. call remove()\n this._widget = null;\n }\n\n return true;\n }\n } catch (err) {\n DEBUG_BUILD && logger.error(err);\n }\n\n return false;\n }\n\n /**\n * Returns the default (first-created) widget\n */\n public getWidget(): FeedbackWidget | null {\n return this._widget;\n }\n\n /**\n * Removes the Feedback integration (including host, shadow DOM, and all widgets)\n */\n public remove(): void {\n if (this._host) {\n this._host.remove();\n }\n this._initialize();\n }\n\n /**\n * Initializes values of protected properties\n */\n protected _initialize(): void {\n this._host = null;\n this._shadow = null;\n this._widget = null;\n this._widgets = new Set();\n this._hasInsertedActorStyles = false;\n }\n\n /**\n * Clean-up the widget if it already exists in the DOM. This shouldn't happen\n * in prod, but can happen in development with hot module reloading.\n */\n protected _cleanupWidgetIfExists(): void {\n if (this._host) {\n this.remove();\n }\n const existingFeedback = doc.querySelector(`#${this.options.id}`);\n if (existingFeedback) {\n existingFeedback.remove();\n }\n }\n\n /**\n * Creates a new widget, after ensuring shadow DOM exists\n */\n protected _createWidget(options: FeedbackInternalOptions & { shouldCreateActor?: boolean }): FeedbackWidget | null {\n return this._ensureShadowHost<FeedbackWidget>(options, ({ shadow }) => {\n const widget = createWidget({ shadow, options });\n\n if (!this._hasInsertedActorStyles && widget.actor) {\n shadow.appendChild(createActorStyles(doc));\n this._hasInsertedActorStyles = true;\n }\n\n this._widgets.add(widget);\n\n if (!this._widget) {\n this._widget = widget;\n }\n\n return widget;\n });\n }\n\n /**\n * Ensures that shadow DOM exists and is added to the DOM\n */\n protected _ensureShadowHost<T>(\n options: FeedbackInternalOptions,\n cb: (createShadowHostResult: ReturnType<typeof createShadowHost>) => T,\n ): T | null {\n let needsAppendHost = false;\n\n // Don't create if it already exists\n if (!this._shadow || !this._host) {\n const { id, colorScheme, themeLight, themeDark } = options;\n const { shadow, host } = createShadowHost({\n id,\n colorScheme,\n themeLight,\n themeDark,\n });\n this._shadow = shadow;\n this._host = host;\n needsAppendHost = true;\n }\n\n // set data attribute on host for different themes\n this._host.dataset.sentryFeedbackColorscheme = options.colorScheme;\n\n const result = cb({ shadow: this._shadow, host: this._host });\n\n if (needsAppendHost) {\n doc.body.appendChild(this._host);\n }\n\n return result;\n }\n}\n"],"names":["GLOBAL_OBJ","prepareEvent","getIsolationScope","getClient","withScope","createEventEnvelope","getLocationHref","logger","XMLNS","getCurrentScope","isBrowser"],"mappings":"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AAA;AACxC;AACA,EAAE,KAAK,CAAC,WAAY,GAAE,CAAC;AACvB;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;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;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,CAAC,CAAA;AACD;AACA,EAAE,OAAO,KAAK,CAAA;AACd;;ACrMA,SAAS,qBAAqB,CAAC,KAAK,EAAyB;AAC7D,EAAE,OAAO,CAAC;AACV,gBAAgB,EAAE,KAAK,CAAC,UAAU,CAAC;AACnC,sBAAsB,EAAE,KAAK,CAAC,eAAe,CAAC;AAC9C,gBAAgB,EAAE,KAAK,CAAC,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"}
|