@brainfish-ai/widgets-initiator 1.5.1 → 1.5.2-alpha.1

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/web.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"web.js","sources":["../../common/dist/types/brainfish.js","../../common/dist/types/config.js","../../common/dist/types/BrainfishWidgetError.js","../src/utils/sendErrors.ts","../src/utils/sendBrainfishError.ts","../src/api/getConfigByKey.ts","../src/utils/fetchWithErrorHandling.ts","../src/utils/configTransformer.ts","../src/utils/getApiHost.ts","../src/initSearchWidget.ts","../src/utils/isIOS14OrBelow.ts","../src/initBrainfishAnalytics.ts","../src/utils/createElementWithClass.ts","../src/initIframeTrigger/constants/classes.ts","../src/initIframeTrigger/managers/IframeStateManager.ts","../src/initIframeTrigger/constants/breakpoints.ts","../src/initIframeTrigger/listeners/initMessageListener.ts","../src/initIframeTrigger/components/IframeContainer.ts","../../../node_modules/polished/lib/internalHelpers/_hslToRgb.js","../../../node_modules/polished/lib/internalHelpers/_nameToHex.js","../../../node_modules/polished/lib/internalHelpers/_errors.js","../../../node_modules/polished/lib/color/parseToRgb.js","../../../node_modules/polished/lib/color/getLuminance.js","../../../node_modules/polished/lib/internalHelpers/_curry.js","../../../node_modules/polished/lib/internalHelpers/_guard.js","../../../node_modules/polished/lib/internalHelpers/_rgbToHsl.js","../../../node_modules/polished/lib/color/parseToHsl.js","../../../node_modules/polished/lib/internalHelpers/_reduceHexValue.js","../../../node_modules/polished/lib/internalHelpers/_numberToHex.js","../../../node_modules/polished/lib/internalHelpers/_hslToHex.js","../../../node_modules/polished/lib/color/hsl.js","../../../node_modules/polished/lib/color/hsla.js","../../../node_modules/polished/lib/color/rgb.js","../../../node_modules/polished/lib/color/rgba.js","../../../node_modules/polished/lib/color/toColorString.js","../../../node_modules/polished/lib/color/darken.js","../../../node_modules/polished/lib/color/lighten.js","../src/initIframeTrigger/utils/insertStyles.ts","../src/initIframeTrigger/listeners/observeColorSchemeChanges.ts","../src/initIframeTrigger/listeners/initBodyResizeObserver.ts","../src/utils/base64.ts","../src/initIframeTrigger/index.ts","../src/initIframeTrigger/components/TriggerButton.ts","../src/web.ts","../src/utils/brainfishQueue.ts","../src/utils/createQueues.ts"],"sourcesContent":["export var WidgetType;\n(function (WidgetType) {\n WidgetType[\"Sidebar\"] = \"sidebar\";\n WidgetType[\"Searchbar\"] = \"searchbar\";\n})(WidgetType || (WidgetType = {}));\n;\nexport const WIDGET_NAMES = {\n [WidgetType.Sidebar]: 'brainfish-sidebar-widget',\n [WidgetType.Searchbar]: 'brainfish-searchbar-widget',\n};\n","const isUrlString = (value) => {\n const urlRegExp = /^(https?|ftp):\\/\\/[^\\s/$.?#].[^\\s]*$/i;\n return urlRegExp.test(value);\n};\nexport const validateUrlString = (value) => {\n if (!isUrlString(value)) {\n throw new Error(`Invalid URL: ${value}`);\n }\n return value;\n};\nexport var ActionType;\n(function (ActionType) {\n ActionType[\"LINK\"] = \"link\";\n ActionType[\"CALLBACK\"] = \"callback\";\n ActionType[\"EMAIL\"] = \"email\";\n ActionType[\"PHONE\"] = \"phone\";\n})(ActionType || (ActionType = {}));\n","export class BrainfishWidgetError extends Error {\n cause;\n constructor(message, options) {\n super(message, options);\n this.name = 'BrainfishWidgetError';\n this.cause = options?.cause;\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, BrainfishWidgetError);\n }\n // Append cause stack to this error's stack if cause is an Error\n if (this.cause instanceof Error && this.cause.stack) {\n this.stack = this.stack + '\\nCaused by: ' + this.cause.stack;\n }\n }\n toJSON() {\n return {\n name: this.name,\n message: this.message,\n stack: this.stack,\n cause: this.cause instanceof Error\n ? {\n name: this.cause.name,\n message: this.cause.message,\n stack: this.cause.stack,\n }\n : this.cause,\n };\n }\n}\n","import { BrainfishWidgetError } from '@brainfish-ai/widgets-common';\n\ndeclare const __APP_VERSION__: string;\n\nexport const sendErrors = (\n apiHost: string,\n error: BrainfishWidgetError,\n widgetKey: string\n) => {\n // only send errors if browser is not a headless browser\n if (!navigator || navigator.userAgent.toLowerCase().includes('headless')) {\n return;\n }\n\n const errorData = error.toJSON();\n const API_HOST = apiHost || import.meta.env.VITE_API_HOST;\n\n fetch(`${API_HOST}/api/trackError.widget.create`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'api-key': widgetKey,\n },\n body: JSON.stringify({\n error: `WebWidgetVersion: ${__APP_VERSION__}. ${error.message}`,\n stack: error.stack,\n cause: {\n message: errorData.message,\n stack: errorData.stack,\n cause: errorData.cause,\n },\n }),\n });\n};\n","import { BrainfishWidgetError } from '@brainfish-ai/widgets-common';\nimport { sendErrors } from './sendErrors';\n\nexport const sendBrainfishWidgetError = (\n apiHost: string,\n error: unknown,\n message: string,\n widgetKey: string\n) => {\n let errorMessage = message;\n let errorDetails: Record<string, any> = {};\n\n if (error instanceof Error) {\n try {\n errorDetails = JSON.parse(error.message);\n errorMessage += ` - ${errorDetails.message || error.message}`;\n } catch {\n // If parsing fails, use the error message as is\n errorMessage += ` - ${error.message}`;\n }\n } else {\n errorMessage += ` - ${String(error)}`;\n }\n\n const err = new BrainfishWidgetError(errorMessage, {\n cause: errorDetails,\n });\n\n sendErrors(apiHost, err, widgetKey);\n};\n","import type { Config } from '@brainfish-ai/widgets-common';\nimport { fetchWithErrorHandling } from '../utils/fetchWithErrorHandling';\n\nexport interface ConfigResponse {\n config: Config;\n}\n\nexport const getConfigByKey = async ({\n widgetKey,\n apiHost,\n}: {\n widgetKey: string;\n apiHost: string;\n}): Promise<ConfigResponse> => {\n const endpoint = `/api/searchWidgets.getConfigByKey`;\n return fetchWithErrorHandling(apiHost, endpoint, widgetKey);\n};\n","import { sendBrainfishWidgetError } from './sendBrainfishError';\n\nexport async function fetchWithErrorHandling(\n apiHost: string,\n endpoint: string,\n widgetKey: string\n): Promise<any> {\n const maxRetries = 3;\n const delay = 500; // half second delay\n let attempt = 0;\n let lastError;\n\n while (attempt < maxRetries) {\n try {\n const response = await fetch(`${apiHost}${endpoint}`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'api-key': widgetKey,\n },\n });\n\n if (!response.ok) {\n throw new Error(`API call failed with status: ${response.status}`);\n }\n\n const data = await response.json();\n if (!data) {\n throw new Error('Error loading config: empty response');\n }\n\n return data; // Return data if successful\n } catch (error) {\n lastError = error;\n attempt++;\n if (attempt >= maxRetries) {\n sendBrainfishWidgetError(\n apiHost,\n error,\n 'Error fetching config',\n widgetKey\n );\n throw lastError; // Throw the last error after max retries\n }\n await new Promise((resolve) => setTimeout(resolve, delay)); // Throttle with delay\n }\n }\n}","import type {\n Config,\n CallbackAction,\n Action,\n} from '@brainfish-ai/widgets-common';\nimport { ActionType } from '@brainfish-ai/widgets-common';\n\nconst mapActionButtons = (actionButtons: (CallbackAction | Action)[]) =>\n actionButtons.map((action) =>\n action.type === ActionType.CALLBACK && action.value\n ? { ...action, value: new Function(`return ${action.value}`)() }\n : action\n );\n\nexport const updateActions = (\n configActions: (Action | CallbackAction)[] = [],\n overrideActions: (Action | CallbackAction)[]\n) => {\n const actionMap = new Map(\n configActions.map((action) => [action.label, action])\n );\n overrideActions.forEach((action) => actionMap.set(action.label, action));\n return Array.from(actionMap.values());\n};\n\nexport const transformConfig = ({\n config,\n apiKey,\n apiHost,\n}: {\n config: Config;\n apiKey: string;\n apiHost: string;\n}) => {\n const settings = config.settings || {};\n (\n ['bodyActionButtons', 'footerActionButtons', 'nextBestActions'] as const\n ).forEach((key) => {\n if (settings[key]) {\n settings[key] = mapActionButtons(\n settings[key] as (CallbackAction | Action)[]\n );\n }\n });\n\n return {\n ...config,\n settings,\n apiHost,\n widgetMode: config.widgetType,\n apiKey,\n };\n};\n","export const getApiHost = (overrides?: { apiHost?: string }): string => {\n return overrides?.apiHost || import.meta.env.VITE_API_HOST;\n};\n\nexport const getWidgetHost = (overrides?: { widgetHost?: string }): string => {\n return overrides?.widgetHost || import.meta.env.VITE_WIDGET_HOST;\n};\n\nexport const getAnalyticsApiHost = (overrides?: {\n analyticsApiHost?: string;\n}): string => {\n return overrides?.analyticsApiHost || import.meta.env.VITE_ANALYTICS_API_HOST;\n};\n","import type {\n Config,\n CallbackAction,\n Action,\n Settings,\n} from '@brainfish-ai/widgets-common';\nimport { WidgetType } from '@brainfish-ai/widgets-common';\nimport { isIOS14OrBelow } from './utils/isIOS14OrBelow';\nimport { sendBrainfishWidgetError } from './utils/sendBrainfishError';\nimport type { Brainfish } from './types/brainfish';\nimport { transformConfig, updateActions } from './utils/configTransformer';\nimport { getApiHost } from './utils/getApiHost';\n\nconst useUMD = isIOS14OrBelow();\n\nconst loadSearchWidgetScript = async (url: string): Promise<any> => {\n if (document.getElementById('brainfish-widget')) {\n return (window as any).Brainfish;\n }\n\n return new Promise((resolve, reject) => {\n const script = document.createElement('script');\n script.id = 'brainfish-widget';\n script.src = url;\n script.type = useUMD ? 'text/javascript' : 'module';\n script.async = true;\n script.crossOrigin = 'anonymous';\n\n script.onload = () => {\n setTimeout(() => {\n const module = (window as any).Brainfish;\n module\n ? resolve(module)\n : reject(new Error('Failed to load Brainfish module'));\n }, 200);\n };\n\n script.onerror = (event) => {\n const errorEvent = event as ErrorEvent;\n const errorDetails = {\n message: `Failed to load script: ${url}`,\n type: errorEvent.type,\n fileName: errorEvent.filename,\n lineNumber: errorEvent.lineno,\n columnNumber: errorEvent.colno,\n error: errorEvent.error ? errorEvent.error.toString() : 'Unknown error',\n };\n reject(new Error(JSON.stringify(errorDetails)));\n };\n\n if (!useUMD) {\n document.head.appendChild(script);\n }\n });\n};\n\nexport const init = async ({\n apiHost,\n widgetKey,\n version,\n}: {\n apiHost: string;\n widgetKey: string;\n version: string;\n}) => {\n try {\n const url = `https://cdn.jsdelivr.net/npm/@brainfish-ai/search-widget@${version}/dist/web.js`;\n const scriptUrl = useUMD ? url.replace('web.js', 'web.umd.js') : url;\n\n const widget = await loadSearchWidgetScript(scriptUrl);\n\n return { widget };\n } catch (error) {\n sendBrainfishWidgetError(\n apiHost,\n error,\n (error as Error).message,\n widgetKey\n );\n }\n};\n\nfunction initializeWidget(widget: Brainfish, config: Config) {\n if (\n config.widgetType === WidgetType.Searchbar ||\n config.widgetType === 'Search'\n ) {\n widget.SearchWidget.initStandard(config);\n } else {\n widget.HelpWidget.initPopup(config);\n }\n}\n\nconst initializedWidgets = new Set<string>();\n\nexport const initSearchWidget = async (\n options: {\n widgetKey: string;\n overrides?: any;\n },\n config: Config\n): Promise<Brainfish | undefined> => {\n const apiHost = getApiHost(options.overrides);\n\n try {\n // Check if this widget has already been initialized\n if (initializedWidgets.has(options.widgetKey)) {\n // do nothing if already initialized\n return undefined;\n }\n\n const result = await init({\n apiHost,\n widgetKey: options.widgetKey,\n version: config.version || 'latest',\n });\n if (result) {\n const { widget } = result;\n\n const transformedConfig = transformConfig({\n config,\n apiKey: options.widgetKey,\n apiHost,\n });\n\n if (options.overrides && config.settings) {\n (\n Object.entries(options.overrides) as [\n keyof Settings,\n (Action | CallbackAction)[]\n ][]\n ).forEach(([key, value]) => {\n if (config.settings && key in config.settings) {\n (config.settings[key] as (Action | CallbackAction)[]) =\n updateActions(\n config.settings[key] as (Action | CallbackAction)[],\n value\n );\n }\n });\n }\n\n initializeWidget(widget, transformedConfig);\n initializedWidgets.add(options.widgetKey);\n return widget;\n }\n } catch (error) {\n sendBrainfishWidgetError(\n apiHost,\n error,\n (error as Error).message,\n options.widgetKey\n );\n }\n return undefined;\n};\n","export const isIOS14OrBelow = () => {\n if (typeof window === 'undefined') return;\n const ua = window.navigator.userAgent;\n const iOS = !!ua.match(/iPad/i) || !!ua.match(/iPhone/i);\n if (!iOS) return false;\n const version = ua.match(/OS (\\d+)_/i);\n return version && parseInt(version[1], 10) <= 14;\n};\n","import { sendBrainfishWidgetError } from './utils/sendBrainfishError';\n\nconst ANALYTICS_API_HOST = import.meta.env.VITE_ANALYTICS_API_HOST;\n\nlet isTrackerInitialized: boolean = false;\n\nconst loadTrackerScript = async (apiHost: string, widgetKey: string) => {\n if (document.getElementById('brainfish-analytics')) {\n return window.BrainfishAnalytics;\n }\n\n const script = document.createElement('script');\n script.id = 'brainfish-analytics';\n // TODO: should we make this configurable for local testing?\n script.src = `https://cdn.jsdelivr.net/npm/@brainfish-ai/web-tracker@latest/dist/tracker.js`;\n script.type = 'module';\n script.async = true;\n script.crossOrigin = 'anonymous';\n\n script.onerror = () => {\n sendBrainfishWidgetError(\n apiHost,\n new Error(`Failed to load script: ${script.src}`),\n `Failed to load script: ${script.src}`,\n widgetKey\n );\n };\n\n document.head.appendChild(script);\n};\n\nexport const initBrainfishAnalytics = async (\n widgetKey: string,\n accessKey: string,\n apiHost: string,\n analyticsApiHost: string = ANALYTICS_API_HOST,\n enableRecording: boolean = false\n): Promise<void> => {\n if (!accessKey) {\n sendBrainfishWidgetError(\n apiHost,\n new Error('Access key is required'),\n 'Access key is required',\n widgetKey\n );\n }\n\n // Only reinitialize if the access key is different\n if (isTrackerInitialized) {\n return;\n }\n\n try {\n window.BrainfishAnalytics('init', {\n apiUrl: analyticsApiHost,\n accessKey,\n trackScreenViews: true,\n trackAttributes: true,\n trackOutgoingLinks: true,\n enableRecording,\n });\n\n isTrackerInitialized = true;\n\n await loadTrackerScript(apiHost, widgetKey);\n } catch (error) {\n sendBrainfishWidgetError(\n apiHost,\n error,\n 'Failed to initialize BrainfishAnalytics',\n widgetKey\n );\n }\n};\n","export function createElementWithClass<K extends keyof HTMLElementTagNameMap>(\n tagName: K,\n className: string,\n attributes: Record<string, string> = {}\n): HTMLElementTagNameMap[K] {\n const element = document.createElement(tagName);\n element.className = className;\n Object.entries(attributes).forEach(([key, value]) => {\n element.setAttribute(key, value);\n });\n return element;\n}\n","export const IFRAME_CONTAINER_CLASS = 'bf-iframe-container';\nexport const TRIGGER_BUTTON_CLASS = 'bf-trigger-button';\n","import { MOBILE_BREAKPOINT } from '../constants/breakpoints';\n\nexport class IframeStateManager {\n private static isOpen = false;\n private static button: HTMLElement | null = null;\n private static icon: HTMLElement | null = null;\n\n static get isWidgetOpen() {\n return this.isOpen;\n }\n\n static initialize(button: HTMLElement, icon: HTMLElement) {\n this.button = button;\n this.icon = icon;\n button.addEventListener('click', () => this.toggleIframeVisibility());\n }\n\n static toggleIframeVisibility() {\n if (!this.button || !this.icon) return;\n\n this.isOpen = !this.isOpen;\n const fishIconSVG = this.icon.querySelector('.fish-icon');\n const closeIconSVG = this.icon.querySelector('.close-icon');\n const iframeContainer = document.querySelector('.bf-iframe-container');\n const iframe = iframeContainer?.querySelector('iframe');\n\n if (this.isOpen) {\n iframeContainer?.classList.add('open');\n iframeContainer?.setAttribute('aria-hidden', 'false');\n this.button.setAttribute('aria-expanded', 'true');\n fishIconSVG!.classList.remove('visible');\n closeIconSVG!.classList.add('visible');\n iframe?.contentWindow?.postMessage({ type: 'FOCUS_SEARCH_FIELD' }, '*');\n window.BrainfishAnalytics('track', 'Open Widget');\n\n // Hide the trigger button if in mobile view\n if (document.body.clientWidth <= MOBILE_BREAKPOINT) {\n this.hideTriggerButton();\n }\n } else {\n iframeContainer?.classList.remove('open');\n iframeContainer?.setAttribute('aria-hidden', 'true');\n this.button.setAttribute('aria-expanded', 'false');\n closeIconSVG!.classList.remove('visible');\n fishIconSVG!.classList.add('visible');\n // always show the trigger button on close\n this.showTriggerButton();\n window.BrainfishAnalytics('track', 'Close Widget');\n }\n }\n\n static showTriggerButton() {\n this.button?.classList.remove('hidden');\n }\n\n static hideTriggerButton() {\n this.button?.classList.add('hidden');\n }\n}\n","export const MOBILE_BREAKPOINT = 576;\n","import { IframeStateManager } from '../managers/IframeStateManager';\nimport { toggleIframeSize } from '../components/IframeContainer';\n\nexport function initMessageListener(widgetHost: string, signal: AbortSignal) {\n const messageHandler = (event: MessageEvent) => {\n if (event.origin !== widgetHost) return;\n\n const { type } = event.data;\n if (type === 'TOGGLE_WIDGET_SIZE') {\n toggleIframeSize();\n }\n\n if (type === 'TRACK_EVENT') {\n if (!window.BrainfishAnalytics) return;\n const { eventName, data } = event.data;\n window.BrainfishAnalytics('track', eventName, data);\n }\n\n if (type === 'CLOSE_WIDGET') {\n window.BrainfishAnalytics('track', 'Close Widget');\n IframeStateManager.toggleIframeVisibility();\n }\n };\n\n window.addEventListener('message', messageHandler, { signal });\n}\n","import { createElementWithClass } from '../../utils/createElementWithClass';\nimport { IFRAME_CONTAINER_CLASS } from '../constants/classes';\n\nexport function createIframeContainer(widgetUrl: string) {\n const iframeContainer = createElementWithClass(\n 'div',\n IFRAME_CONTAINER_CLASS,\n {\n id: IFRAME_CONTAINER_CLASS,\n 'aria-live': 'polite',\n 'aria-hidden': 'true',\n }\n );\n\n const iframe = createElementWithClass('iframe', 'trigger-iframe', {\n src: widgetUrl,\n sandbox: 'allow-scripts allow-same-origin allow-popups',\n allow: 'clipboard-write',\n role: 'dialog',\n });\n\n iframeContainer.appendChild(iframe);\n\n return { iframeContainer, iframe };\n}\n\nexport function toggleIframeSize() {\n const iframeContainer = document.querySelector(\n `.${IFRAME_CONTAINER_CLASS}`\n ) as HTMLDivElement;\n\n if (iframeContainer.classList.contains('expanded')) {\n iframeContainer.classList.remove('expanded');\n } else {\n iframeContainer.classList.add('expanded');\n }\n}\n","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\nfunction colorToInt(color) {\n return Math.round(color * 255);\n}\nfunction convertToInt(red, green, blue) {\n return colorToInt(red) + \",\" + colorToInt(green) + \",\" + colorToInt(blue);\n}\nfunction hslToRgb(hue, saturation, lightness, convert) {\n if (convert === void 0) {\n convert = convertToInt;\n }\n if (saturation === 0) {\n // achromatic\n return convert(lightness, lightness, lightness);\n }\n\n // formulae from https://en.wikipedia.org/wiki/HSL_and_HSV\n var huePrime = (hue % 360 + 360) % 360 / 60;\n var chroma = (1 - Math.abs(2 * lightness - 1)) * saturation;\n var secondComponent = chroma * (1 - Math.abs(huePrime % 2 - 1));\n var red = 0;\n var green = 0;\n var blue = 0;\n if (huePrime >= 0 && huePrime < 1) {\n red = chroma;\n green = secondComponent;\n } else if (huePrime >= 1 && huePrime < 2) {\n red = secondComponent;\n green = chroma;\n } else if (huePrime >= 2 && huePrime < 3) {\n green = chroma;\n blue = secondComponent;\n } else if (huePrime >= 3 && huePrime < 4) {\n green = secondComponent;\n blue = chroma;\n } else if (huePrime >= 4 && huePrime < 5) {\n red = secondComponent;\n blue = chroma;\n } else if (huePrime >= 5 && huePrime < 6) {\n red = chroma;\n blue = secondComponent;\n }\n var lightnessModification = lightness - chroma / 2;\n var finalRed = red + lightnessModification;\n var finalGreen = green + lightnessModification;\n var finalBlue = blue + lightnessModification;\n return convert(finalRed, finalGreen, finalBlue);\n}\nvar _default = exports[\"default\"] = hslToRgb;\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\nvar namedColorMap = {\n aliceblue: 'f0f8ff',\n antiquewhite: 'faebd7',\n aqua: '00ffff',\n aquamarine: '7fffd4',\n azure: 'f0ffff',\n beige: 'f5f5dc',\n bisque: 'ffe4c4',\n black: '000',\n blanchedalmond: 'ffebcd',\n blue: '0000ff',\n blueviolet: '8a2be2',\n brown: 'a52a2a',\n burlywood: 'deb887',\n cadetblue: '5f9ea0',\n chartreuse: '7fff00',\n chocolate: 'd2691e',\n coral: 'ff7f50',\n cornflowerblue: '6495ed',\n cornsilk: 'fff8dc',\n crimson: 'dc143c',\n cyan: '00ffff',\n darkblue: '00008b',\n darkcyan: '008b8b',\n darkgoldenrod: 'b8860b',\n darkgray: 'a9a9a9',\n darkgreen: '006400',\n darkgrey: 'a9a9a9',\n darkkhaki: 'bdb76b',\n darkmagenta: '8b008b',\n darkolivegreen: '556b2f',\n darkorange: 'ff8c00',\n darkorchid: '9932cc',\n darkred: '8b0000',\n darksalmon: 'e9967a',\n darkseagreen: '8fbc8f',\n darkslateblue: '483d8b',\n darkslategray: '2f4f4f',\n darkslategrey: '2f4f4f',\n darkturquoise: '00ced1',\n darkviolet: '9400d3',\n deeppink: 'ff1493',\n deepskyblue: '00bfff',\n dimgray: '696969',\n dimgrey: '696969',\n dodgerblue: '1e90ff',\n firebrick: 'b22222',\n floralwhite: 'fffaf0',\n forestgreen: '228b22',\n fuchsia: 'ff00ff',\n gainsboro: 'dcdcdc',\n ghostwhite: 'f8f8ff',\n gold: 'ffd700',\n goldenrod: 'daa520',\n gray: '808080',\n green: '008000',\n greenyellow: 'adff2f',\n grey: '808080',\n honeydew: 'f0fff0',\n hotpink: 'ff69b4',\n indianred: 'cd5c5c',\n indigo: '4b0082',\n ivory: 'fffff0',\n khaki: 'f0e68c',\n lavender: 'e6e6fa',\n lavenderblush: 'fff0f5',\n lawngreen: '7cfc00',\n lemonchiffon: 'fffacd',\n lightblue: 'add8e6',\n lightcoral: 'f08080',\n lightcyan: 'e0ffff',\n lightgoldenrodyellow: 'fafad2',\n lightgray: 'd3d3d3',\n lightgreen: '90ee90',\n lightgrey: 'd3d3d3',\n lightpink: 'ffb6c1',\n lightsalmon: 'ffa07a',\n lightseagreen: '20b2aa',\n lightskyblue: '87cefa',\n lightslategray: '789',\n lightslategrey: '789',\n lightsteelblue: 'b0c4de',\n lightyellow: 'ffffe0',\n lime: '0f0',\n limegreen: '32cd32',\n linen: 'faf0e6',\n magenta: 'f0f',\n maroon: '800000',\n mediumaquamarine: '66cdaa',\n mediumblue: '0000cd',\n mediumorchid: 'ba55d3',\n mediumpurple: '9370db',\n mediumseagreen: '3cb371',\n mediumslateblue: '7b68ee',\n mediumspringgreen: '00fa9a',\n mediumturquoise: '48d1cc',\n mediumvioletred: 'c71585',\n midnightblue: '191970',\n mintcream: 'f5fffa',\n mistyrose: 'ffe4e1',\n moccasin: 'ffe4b5',\n navajowhite: 'ffdead',\n navy: '000080',\n oldlace: 'fdf5e6',\n olive: '808000',\n olivedrab: '6b8e23',\n orange: 'ffa500',\n orangered: 'ff4500',\n orchid: 'da70d6',\n palegoldenrod: 'eee8aa',\n palegreen: '98fb98',\n paleturquoise: 'afeeee',\n palevioletred: 'db7093',\n papayawhip: 'ffefd5',\n peachpuff: 'ffdab9',\n peru: 'cd853f',\n pink: 'ffc0cb',\n plum: 'dda0dd',\n powderblue: 'b0e0e6',\n purple: '800080',\n rebeccapurple: '639',\n red: 'f00',\n rosybrown: 'bc8f8f',\n royalblue: '4169e1',\n saddlebrown: '8b4513',\n salmon: 'fa8072',\n sandybrown: 'f4a460',\n seagreen: '2e8b57',\n seashell: 'fff5ee',\n sienna: 'a0522d',\n silver: 'c0c0c0',\n skyblue: '87ceeb',\n slateblue: '6a5acd',\n slategray: '708090',\n slategrey: '708090',\n snow: 'fffafa',\n springgreen: '00ff7f',\n steelblue: '4682b4',\n tan: 'd2b48c',\n teal: '008080',\n thistle: 'd8bfd8',\n tomato: 'ff6347',\n turquoise: '40e0d0',\n violet: 'ee82ee',\n wheat: 'f5deb3',\n white: 'fff',\n whitesmoke: 'f5f5f5',\n yellow: 'ff0',\n yellowgreen: '9acd32'\n};\n\n/**\n * Checks if a string is a CSS named color and returns its equivalent hex value, otherwise returns the original color.\n * @private\n */\nfunction nameToHex(color) {\n if (typeof color !== 'string') return color;\n var normalizedColorName = color.toLowerCase();\n return namedColorMap[normalizedColorName] ? \"#\" + namedColorMap[normalizedColorName] : color;\n}\nvar _default = exports[\"default\"] = nameToHex;\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\nfunction _wrapNativeSuper(Class) { var _cache = typeof Map === \"function\" ? new Map() : undefined; _wrapNativeSuper = function _wrapNativeSuper(Class) { if (Class === null || !_isNativeFunction(Class)) return Class; if (typeof Class !== \"function\") { throw new TypeError(\"Super expression must either be null or a function\"); } if (typeof _cache !== \"undefined\") { if (_cache.has(Class)) return _cache.get(Class); _cache.set(Class, Wrapper); } function Wrapper() { return _construct(Class, arguments, _getPrototypeOf(this).constructor); } Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } }); return _setPrototypeOf(Wrapper, Class); }; return _wrapNativeSuper(Class); }\nfunction _construct(t, e, r) { if (_isNativeReflectConstruct()) return Reflect.construct.apply(null, arguments); var o = [null]; o.push.apply(o, e); var p = new (t.bind.apply(t, o))(); return r && _setPrototypeOf(p, r.prototype), p; }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _isNativeFunction(fn) { try { return Function.toString.call(fn).indexOf(\"[native code]\") !== -1; } catch (e) { return typeof fn === \"function\"; } }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n// based on https://github.com/styled-components/styled-components/blob/fcf6f3804c57a14dd7984dfab7bc06ee2edca044/src/utils/error.js\n/**\n * Parse errors.md and turn it into a simple hash of code: message\n * @private\n */\nvar ERRORS = {\n \"1\": \"Passed invalid arguments to hsl, please pass multiple numbers e.g. hsl(360, 0.75, 0.4) or an object e.g. rgb({ hue: 255, saturation: 0.4, lightness: 0.75 }).\\n\\n\",\n \"2\": \"Passed invalid arguments to hsla, please pass multiple numbers e.g. hsla(360, 0.75, 0.4, 0.7) or an object e.g. rgb({ hue: 255, saturation: 0.4, lightness: 0.75, alpha: 0.7 }).\\n\\n\",\n \"3\": \"Passed an incorrect argument to a color function, please pass a string representation of a color.\\n\\n\",\n \"4\": \"Couldn't generate valid rgb string from %s, it returned %s.\\n\\n\",\n \"5\": \"Couldn't parse the color string. Please provide the color as a string in hex, rgb, rgba, hsl or hsla notation.\\n\\n\",\n \"6\": \"Passed invalid arguments to rgb, please pass multiple numbers e.g. rgb(255, 205, 100) or an object e.g. rgb({ red: 255, green: 205, blue: 100 }).\\n\\n\",\n \"7\": \"Passed invalid arguments to rgba, please pass multiple numbers e.g. rgb(255, 205, 100, 0.75) or an object e.g. rgb({ red: 255, green: 205, blue: 100, alpha: 0.75 }).\\n\\n\",\n \"8\": \"Passed invalid argument to toColorString, please pass a RgbColor, RgbaColor, HslColor or HslaColor object.\\n\\n\",\n \"9\": \"Please provide a number of steps to the modularScale helper.\\n\\n\",\n \"10\": \"Please pass a number or one of the predefined scales to the modularScale helper as the ratio.\\n\\n\",\n \"11\": \"Invalid value passed as base to modularScale, expected number or em string but got \\\"%s\\\"\\n\\n\",\n \"12\": \"Expected a string ending in \\\"px\\\" or a number passed as the first argument to %s(), got \\\"%s\\\" instead.\\n\\n\",\n \"13\": \"Expected a string ending in \\\"px\\\" or a number passed as the second argument to %s(), got \\\"%s\\\" instead.\\n\\n\",\n \"14\": \"Passed invalid pixel value (\\\"%s\\\") to %s(), please pass a value like \\\"12px\\\" or 12.\\n\\n\",\n \"15\": \"Passed invalid base value (\\\"%s\\\") to %s(), please pass a value like \\\"12px\\\" or 12.\\n\\n\",\n \"16\": \"You must provide a template to this method.\\n\\n\",\n \"17\": \"You passed an unsupported selector state to this method.\\n\\n\",\n \"18\": \"minScreen and maxScreen must be provided as stringified numbers with the same units.\\n\\n\",\n \"19\": \"fromSize and toSize must be provided as stringified numbers with the same units.\\n\\n\",\n \"20\": \"expects either an array of objects or a single object with the properties prop, fromSize, and toSize.\\n\\n\",\n \"21\": \"expects the objects in the first argument array to have the properties `prop`, `fromSize`, and `toSize`.\\n\\n\",\n \"22\": \"expects the first argument object to have the properties `prop`, `fromSize`, and `toSize`.\\n\\n\",\n \"23\": \"fontFace expects a name of a font-family.\\n\\n\",\n \"24\": \"fontFace expects either the path to the font file(s) or a name of a local copy.\\n\\n\",\n \"25\": \"fontFace expects localFonts to be an array.\\n\\n\",\n \"26\": \"fontFace expects fileFormats to be an array.\\n\\n\",\n \"27\": \"radialGradient requries at least 2 color-stops to properly render.\\n\\n\",\n \"28\": \"Please supply a filename to retinaImage() as the first argument.\\n\\n\",\n \"29\": \"Passed invalid argument to triangle, please pass correct pointingDirection e.g. 'right'.\\n\\n\",\n \"30\": \"Passed an invalid value to `height` or `width`. Please provide a pixel based unit.\\n\\n\",\n \"31\": \"The animation shorthand only takes 8 arguments. See the specification for more information: http://mdn.io/animation\\n\\n\",\n \"32\": \"To pass multiple animations please supply them in arrays, e.g. animation(['rotate', '2s'], ['move', '1s'])\\nTo pass a single animation please supply them in simple values, e.g. animation('rotate', '2s')\\n\\n\",\n \"33\": \"The animation shorthand arrays can only have 8 elements. See the specification for more information: http://mdn.io/animation\\n\\n\",\n \"34\": \"borderRadius expects a radius value as a string or number as the second argument.\\n\\n\",\n \"35\": \"borderRadius expects one of \\\"top\\\", \\\"bottom\\\", \\\"left\\\" or \\\"right\\\" as the first argument.\\n\\n\",\n \"36\": \"Property must be a string value.\\n\\n\",\n \"37\": \"Syntax Error at %s.\\n\\n\",\n \"38\": \"Formula contains a function that needs parentheses at %s.\\n\\n\",\n \"39\": \"Formula is missing closing parenthesis at %s.\\n\\n\",\n \"40\": \"Formula has too many closing parentheses at %s.\\n\\n\",\n \"41\": \"All values in a formula must have the same unit or be unitless.\\n\\n\",\n \"42\": \"Please provide a number of steps to the modularScale helper.\\n\\n\",\n \"43\": \"Please pass a number or one of the predefined scales to the modularScale helper as the ratio.\\n\\n\",\n \"44\": \"Invalid value passed as base to modularScale, expected number or em/rem string but got %s.\\n\\n\",\n \"45\": \"Passed invalid argument to hslToColorString, please pass a HslColor or HslaColor object.\\n\\n\",\n \"46\": \"Passed invalid argument to rgbToColorString, please pass a RgbColor or RgbaColor object.\\n\\n\",\n \"47\": \"minScreen and maxScreen must be provided as stringified numbers with the same units.\\n\\n\",\n \"48\": \"fromSize and toSize must be provided as stringified numbers with the same units.\\n\\n\",\n \"49\": \"Expects either an array of objects or a single object with the properties prop, fromSize, and toSize.\\n\\n\",\n \"50\": \"Expects the objects in the first argument array to have the properties prop, fromSize, and toSize.\\n\\n\",\n \"51\": \"Expects the first argument object to have the properties prop, fromSize, and toSize.\\n\\n\",\n \"52\": \"fontFace expects either the path to the font file(s) or a name of a local copy.\\n\\n\",\n \"53\": \"fontFace expects localFonts to be an array.\\n\\n\",\n \"54\": \"fontFace expects fileFormats to be an array.\\n\\n\",\n \"55\": \"fontFace expects a name of a font-family.\\n\\n\",\n \"56\": \"linearGradient requries at least 2 color-stops to properly render.\\n\\n\",\n \"57\": \"radialGradient requries at least 2 color-stops to properly render.\\n\\n\",\n \"58\": \"Please supply a filename to retinaImage() as the first argument.\\n\\n\",\n \"59\": \"Passed invalid argument to triangle, please pass correct pointingDirection e.g. 'right'.\\n\\n\",\n \"60\": \"Passed an invalid value to `height` or `width`. Please provide a pixel based unit.\\n\\n\",\n \"61\": \"Property must be a string value.\\n\\n\",\n \"62\": \"borderRadius expects a radius value as a string or number as the second argument.\\n\\n\",\n \"63\": \"borderRadius expects one of \\\"top\\\", \\\"bottom\\\", \\\"left\\\" or \\\"right\\\" as the first argument.\\n\\n\",\n \"64\": \"The animation shorthand only takes 8 arguments. See the specification for more information: http://mdn.io/animation.\\n\\n\",\n \"65\": \"To pass multiple animations please supply them in arrays, e.g. animation(['rotate', '2s'], ['move', '1s'])\\\\nTo pass a single animation please supply them in simple values, e.g. animation('rotate', '2s').\\n\\n\",\n \"66\": \"The animation shorthand arrays can only have 8 elements. See the specification for more information: http://mdn.io/animation.\\n\\n\",\n \"67\": \"You must provide a template to this method.\\n\\n\",\n \"68\": \"You passed an unsupported selector state to this method.\\n\\n\",\n \"69\": \"Expected a string ending in \\\"px\\\" or a number passed as the first argument to %s(), got %s instead.\\n\\n\",\n \"70\": \"Expected a string ending in \\\"px\\\" or a number passed as the second argument to %s(), got %s instead.\\n\\n\",\n \"71\": \"Passed invalid pixel value %s to %s(), please pass a value like \\\"12px\\\" or 12.\\n\\n\",\n \"72\": \"Passed invalid base value %s to %s(), please pass a value like \\\"12px\\\" or 12.\\n\\n\",\n \"73\": \"Please provide a valid CSS variable.\\n\\n\",\n \"74\": \"CSS variable not found and no default was provided.\\n\\n\",\n \"75\": \"important requires a valid style object, got a %s instead.\\n\\n\",\n \"76\": \"fromSize and toSize must be provided as stringified numbers with the same units as minScreen and maxScreen.\\n\\n\",\n \"77\": \"remToPx expects a value in \\\"rem\\\" but you provided it in \\\"%s\\\".\\n\\n\",\n \"78\": \"base must be set in \\\"px\\\" or \\\"%\\\" but you set it in \\\"%s\\\".\\n\"\n};\n\n/**\n * super basic version of sprintf\n * @private\n */\nfunction format() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n var a = args[0];\n var b = [];\n var c;\n for (c = 1; c < args.length; c += 1) {\n b.push(args[c]);\n }\n b.forEach(function (d) {\n a = a.replace(/%[a-z]/, d);\n });\n return a;\n}\n\n/**\n * Create an error file out of errors.md for development and a simple web link to the full errors\n * in production mode.\n * @private\n */\nvar PolishedError = exports[\"default\"] = /*#__PURE__*/function (_Error) {\n _inheritsLoose(PolishedError, _Error);\n function PolishedError(code) {\n var _this;\n if (process.env.NODE_ENV === 'production') {\n _this = _Error.call(this, \"An error occurred. See https://github.com/styled-components/polished/blob/main/src/internalHelpers/errors.md#\" + code + \" for more information.\") || this;\n } else {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n _this = _Error.call(this, format.apply(void 0, [ERRORS[code]].concat(args))) || this;\n }\n return _assertThisInitialized(_this);\n }\n return PolishedError;\n}( /*#__PURE__*/_wrapNativeSuper(Error));\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = parseToRgb;\nvar _hslToRgb = _interopRequireDefault(require(\"../internalHelpers/_hslToRgb\"));\nvar _nameToHex = _interopRequireDefault(require(\"../internalHelpers/_nameToHex\"));\nvar _errors = _interopRequireDefault(require(\"../internalHelpers/_errors\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\nvar hexRegex = /^#[a-fA-F0-9]{6}$/;\nvar hexRgbaRegex = /^#[a-fA-F0-9]{8}$/;\nvar reducedHexRegex = /^#[a-fA-F0-9]{3}$/;\nvar reducedRgbaHexRegex = /^#[a-fA-F0-9]{4}$/;\nvar rgbRegex = /^rgb\\(\\s*(\\d{1,3})\\s*(?:,)?\\s*(\\d{1,3})\\s*(?:,)?\\s*(\\d{1,3})\\s*\\)$/i;\nvar rgbaRegex = /^rgb(?:a)?\\(\\s*(\\d{1,3})\\s*(?:,)?\\s*(\\d{1,3})\\s*(?:,)?\\s*(\\d{1,3})\\s*(?:,|\\/)\\s*([-+]?\\d*[.]?\\d+[%]?)\\s*\\)$/i;\nvar hslRegex = /^hsl\\(\\s*(\\d{0,3}[.]?[0-9]+(?:deg)?)\\s*(?:,)?\\s*(\\d{1,3}[.]?[0-9]?)%\\s*(?:,)?\\s*(\\d{1,3}[.]?[0-9]?)%\\s*\\)$/i;\nvar hslaRegex = /^hsl(?:a)?\\(\\s*(\\d{0,3}[.]?[0-9]+(?:deg)?)\\s*(?:,)?\\s*(\\d{1,3}[.]?[0-9]?)%\\s*(?:,)?\\s*(\\d{1,3}[.]?[0-9]?)%\\s*(?:,|\\/)\\s*([-+]?\\d*[.]?\\d+[%]?)\\s*\\)$/i;\n\n/**\n * Returns an RgbColor or RgbaColor object. This utility function is only useful\n * if want to extract a color component. With the color util `toColorString` you\n * can convert a RgbColor or RgbaColor object back to a string.\n *\n * @example\n * // Assigns `{ red: 255, green: 0, blue: 0 }` to color1\n * const color1 = parseToRgb('rgb(255, 0, 0)');\n * // Assigns `{ red: 92, green: 102, blue: 112, alpha: 0.75 }` to color2\n * const color2 = parseToRgb('hsla(210, 10%, 40%, 0.75)');\n */\nfunction parseToRgb(color) {\n if (typeof color !== 'string') {\n throw new _errors[\"default\"](3);\n }\n var normalizedColor = (0, _nameToHex[\"default\"])(color);\n if (normalizedColor.match(hexRegex)) {\n return {\n red: parseInt(\"\" + normalizedColor[1] + normalizedColor[2], 16),\n green: parseInt(\"\" + normalizedColor[3] + normalizedColor[4], 16),\n blue: parseInt(\"\" + normalizedColor[5] + normalizedColor[6], 16)\n };\n }\n if (normalizedColor.match(hexRgbaRegex)) {\n var alpha = parseFloat((parseInt(\"\" + normalizedColor[7] + normalizedColor[8], 16) / 255).toFixed(2));\n return {\n red: parseInt(\"\" + normalizedColor[1] + normalizedColor[2], 16),\n green: parseInt(\"\" + normalizedColor[3] + normalizedColor[4], 16),\n blue: parseInt(\"\" + normalizedColor[5] + normalizedColor[6], 16),\n alpha: alpha\n };\n }\n if (normalizedColor.match(reducedHexRegex)) {\n return {\n red: parseInt(\"\" + normalizedColor[1] + normalizedColor[1], 16),\n green: parseInt(\"\" + normalizedColor[2] + normalizedColor[2], 16),\n blue: parseInt(\"\" + normalizedColor[3] + normalizedColor[3], 16)\n };\n }\n if (normalizedColor.match(reducedRgbaHexRegex)) {\n var _alpha = parseFloat((parseInt(\"\" + normalizedColor[4] + normalizedColor[4], 16) / 255).toFixed(2));\n return {\n red: parseInt(\"\" + normalizedColor[1] + normalizedColor[1], 16),\n green: parseInt(\"\" + normalizedColor[2] + normalizedColor[2], 16),\n blue: parseInt(\"\" + normalizedColor[3] + normalizedColor[3], 16),\n alpha: _alpha\n };\n }\n var rgbMatched = rgbRegex.exec(normalizedColor);\n if (rgbMatched) {\n return {\n red: parseInt(\"\" + rgbMatched[1], 10),\n green: parseInt(\"\" + rgbMatched[2], 10),\n blue: parseInt(\"\" + rgbMatched[3], 10)\n };\n }\n var rgbaMatched = rgbaRegex.exec(normalizedColor.substring(0, 50));\n if (rgbaMatched) {\n return {\n red: parseInt(\"\" + rgbaMatched[1], 10),\n green: parseInt(\"\" + rgbaMatched[2], 10),\n blue: parseInt(\"\" + rgbaMatched[3], 10),\n alpha: parseFloat(\"\" + rgbaMatched[4]) > 1 ? parseFloat(\"\" + rgbaMatched[4]) / 100 : parseFloat(\"\" + rgbaMatched[4])\n };\n }\n var hslMatched = hslRegex.exec(normalizedColor);\n if (hslMatched) {\n var hue = parseInt(\"\" + hslMatched[1], 10);\n var saturation = parseInt(\"\" + hslMatched[2], 10) / 100;\n var lightness = parseInt(\"\" + hslMatched[3], 10) / 100;\n var rgbColorString = \"rgb(\" + (0, _hslToRgb[\"default\"])(hue, saturation, lightness) + \")\";\n var hslRgbMatched = rgbRegex.exec(rgbColorString);\n if (!hslRgbMatched) {\n throw new _errors[\"default\"](4, normalizedColor, rgbColorString);\n }\n return {\n red: parseInt(\"\" + hslRgbMatched[1], 10),\n green: parseInt(\"\" + hslRgbMatched[2], 10),\n blue: parseInt(\"\" + hslRgbMatched[3], 10)\n };\n }\n var hslaMatched = hslaRegex.exec(normalizedColor.substring(0, 50));\n if (hslaMatched) {\n var _hue = parseInt(\"\" + hslaMatched[1], 10);\n var _saturation = parseInt(\"\" + hslaMatched[2], 10) / 100;\n var _lightness = parseInt(\"\" + hslaMatched[3], 10) / 100;\n var _rgbColorString = \"rgb(\" + (0, _hslToRgb[\"default\"])(_hue, _saturation, _lightness) + \")\";\n var _hslRgbMatched = rgbRegex.exec(_rgbColorString);\n if (!_hslRgbMatched) {\n throw new _errors[\"default\"](4, normalizedColor, _rgbColorString);\n }\n return {\n red: parseInt(\"\" + _hslRgbMatched[1], 10),\n green: parseInt(\"\" + _hslRgbMatched[2], 10),\n blue: parseInt(\"\" + _hslRgbMatched[3], 10),\n alpha: parseFloat(\"\" + hslaMatched[4]) > 1 ? parseFloat(\"\" + hslaMatched[4]) / 100 : parseFloat(\"\" + hslaMatched[4])\n };\n }\n throw new _errors[\"default\"](5);\n}\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = getLuminance;\nvar _parseToRgb = _interopRequireDefault(require(\"./parseToRgb\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n/**\n * Returns a number (float) representing the luminance of a color.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * background: getLuminance('#CCCD64') >= getLuminance('#0000ff') ? '#CCCD64' : '#0000ff',\n * background: getLuminance('rgba(58, 133, 255, 1)') >= getLuminance('rgba(255, 57, 149, 1)') ?\n * 'rgba(58, 133, 255, 1)' :\n * 'rgba(255, 57, 149, 1)',\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * background: ${getLuminance('#CCCD64') >= getLuminance('#0000ff') ? '#CCCD64' : '#0000ff'};\n * background: ${getLuminance('rgba(58, 133, 255, 1)') >= getLuminance('rgba(255, 57, 149, 1)') ?\n * 'rgba(58, 133, 255, 1)' :\n * 'rgba(255, 57, 149, 1)'};\n *\n * // CSS in JS Output\n *\n * div {\n * background: \"#CCCD64\";\n * background: \"rgba(58, 133, 255, 1)\";\n * }\n */\nfunction getLuminance(color) {\n if (color === 'transparent') return 0;\n var rgbColor = (0, _parseToRgb[\"default\"])(color);\n var _Object$keys$map = Object.keys(rgbColor).map(function (key) {\n var channel = rgbColor[key] / 255;\n return channel <= 0.03928 ? channel / 12.92 : Math.pow((channel + 0.055) / 1.055, 2.4);\n }),\n r = _Object$keys$map[0],\n g = _Object$keys$map[1],\n b = _Object$keys$map[2];\n return parseFloat((0.2126 * r + 0.7152 * g + 0.0722 * b).toFixed(3));\n}\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = curry;\n// Type definitions taken from https://github.com/gcanti/flow-static-land/blob/master/src/Fun.js\n// eslint-disable-next-line no-unused-vars\n// eslint-disable-next-line no-unused-vars\n// eslint-disable-next-line no-redeclare\nfunction curried(f, length, acc) {\n return function fn() {\n // eslint-disable-next-line prefer-rest-params\n var combined = acc.concat(Array.prototype.slice.call(arguments));\n return combined.length >= length ? f.apply(this, combined) : curried(f, length, combined);\n };\n}\n\n// eslint-disable-next-line no-redeclare\nfunction curry(f) {\n // eslint-disable-line no-redeclare\n return curried(f, f.length, []);\n}\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\nfunction guard(lowerBoundary, upperBoundary, value) {\n return Math.max(lowerBoundary, Math.min(upperBoundary, value));\n}\nvar _default = exports[\"default\"] = guard;\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\nfunction rgbToHsl(color) {\n // make sure rgb are contained in a set of [0, 255]\n var red = color.red / 255;\n var green = color.green / 255;\n var blue = color.blue / 255;\n var max = Math.max(red, green, blue);\n var min = Math.min(red, green, blue);\n var lightness = (max + min) / 2;\n if (max === min) {\n // achromatic\n if (color.alpha !== undefined) {\n return {\n hue: 0,\n saturation: 0,\n lightness: lightness,\n alpha: color.alpha\n };\n } else {\n return {\n hue: 0,\n saturation: 0,\n lightness: lightness\n };\n }\n }\n var hue;\n var delta = max - min;\n var saturation = lightness > 0.5 ? delta / (2 - max - min) : delta / (max + min);\n switch (max) {\n case red:\n hue = (green - blue) / delta + (green < blue ? 6 : 0);\n break;\n case green:\n hue = (blue - red) / delta + 2;\n break;\n default:\n // blue case\n hue = (red - green) / delta + 4;\n break;\n }\n hue *= 60;\n if (color.alpha !== undefined) {\n return {\n hue: hue,\n saturation: saturation,\n lightness: lightness,\n alpha: color.alpha\n };\n }\n return {\n hue: hue,\n saturation: saturation,\n lightness: lightness\n };\n}\nvar _default = exports[\"default\"] = rgbToHsl;\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = parseToHsl;\nvar _parseToRgb = _interopRequireDefault(require(\"./parseToRgb\"));\nvar _rgbToHsl = _interopRequireDefault(require(\"../internalHelpers/_rgbToHsl\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n/**\n * Returns an HslColor or HslaColor object. This utility function is only useful\n * if want to extract a color component. With the color util `toColorString` you\n * can convert a HslColor or HslaColor object back to a string.\n *\n * @example\n * // Assigns `{ hue: 0, saturation: 1, lightness: 0.5 }` to color1\n * const color1 = parseToHsl('rgb(255, 0, 0)');\n * // Assigns `{ hue: 128, saturation: 1, lightness: 0.5, alpha: 0.75 }` to color2\n * const color2 = parseToHsl('hsla(128, 100%, 50%, 0.75)');\n */\nfunction parseToHsl(color) {\n // Note: At a later stage we can optimize this function as right now a hsl\n // color would be parsed converted to rgb values and converted back to hsl.\n return (0, _rgbToHsl[\"default\"])((0, _parseToRgb[\"default\"])(color));\n}\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n/**\n * Reduces hex values if possible e.g. #ff8866 to #f86\n * @private\n */\nvar reduceHexValue = function reduceHexValue(value) {\n if (value.length === 7 && value[1] === value[2] && value[3] === value[4] && value[5] === value[6]) {\n return \"#\" + value[1] + value[3] + value[5];\n }\n return value;\n};\nvar _default = exports[\"default\"] = reduceHexValue;\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\nfunction numberToHex(value) {\n var hex = value.toString(16);\n return hex.length === 1 ? \"0\" + hex : hex;\n}\nvar _default = exports[\"default\"] = numberToHex;\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\nvar _hslToRgb = _interopRequireDefault(require(\"./_hslToRgb\"));\nvar _reduceHexValue = _interopRequireDefault(require(\"./_reduceHexValue\"));\nvar _numberToHex = _interopRequireDefault(require(\"./_numberToHex\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\nfunction colorToHex(color) {\n return (0, _numberToHex[\"default\"])(Math.round(color * 255));\n}\nfunction convertToHex(red, green, blue) {\n return (0, _reduceHexValue[\"default\"])(\"#\" + colorToHex(red) + colorToHex(green) + colorToHex(blue));\n}\nfunction hslToHex(hue, saturation, lightness) {\n return (0, _hslToRgb[\"default\"])(hue, saturation, lightness, convertToHex);\n}\nvar _default = exports[\"default\"] = hslToHex;\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = hsl;\nvar _hslToHex = _interopRequireDefault(require(\"../internalHelpers/_hslToHex\"));\nvar _errors = _interopRequireDefault(require(\"../internalHelpers/_errors\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n/**\n * Returns a string value for the color. The returned result is the smallest possible hex notation.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * background: hsl(359, 0.75, 0.4),\n * background: hsl({ hue: 360, saturation: 0.75, lightness: 0.4 }),\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * background: ${hsl(359, 0.75, 0.4)};\n * background: ${hsl({ hue: 360, saturation: 0.75, lightness: 0.4 })};\n * `\n *\n * // CSS in JS Output\n *\n * element {\n * background: \"#b3191c\";\n * background: \"#b3191c\";\n * }\n */\nfunction hsl(value, saturation, lightness) {\n if (typeof value === 'number' && typeof saturation === 'number' && typeof lightness === 'number') {\n return (0, _hslToHex[\"default\"])(value, saturation, lightness);\n } else if (typeof value === 'object' && saturation === undefined && lightness === undefined) {\n return (0, _hslToHex[\"default\"])(value.hue, value.saturation, value.lightness);\n }\n throw new _errors[\"default\"](1);\n}\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = hsla;\nvar _hslToHex = _interopRequireDefault(require(\"../internalHelpers/_hslToHex\"));\nvar _hslToRgb = _interopRequireDefault(require(\"../internalHelpers/_hslToRgb\"));\nvar _errors = _interopRequireDefault(require(\"../internalHelpers/_errors\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n/**\n * Returns a string value for the color. The returned result is the smallest possible rgba or hex notation.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * background: hsla(359, 0.75, 0.4, 0.7),\n * background: hsla({ hue: 360, saturation: 0.75, lightness: 0.4, alpha: 0,7 }),\n * background: hsla(359, 0.75, 0.4, 1),\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * background: ${hsla(359, 0.75, 0.4, 0.7)};\n * background: ${hsla({ hue: 360, saturation: 0.75, lightness: 0.4, alpha: 0,7 })};\n * background: ${hsla(359, 0.75, 0.4, 1)};\n * `\n *\n * // CSS in JS Output\n *\n * element {\n * background: \"rgba(179,25,28,0.7)\";\n * background: \"rgba(179,25,28,0.7)\";\n * background: \"#b3191c\";\n * }\n */\nfunction hsla(value, saturation, lightness, alpha) {\n if (typeof value === 'number' && typeof saturation === 'number' && typeof lightness === 'number' && typeof alpha === 'number') {\n return alpha >= 1 ? (0, _hslToHex[\"default\"])(value, saturation, lightness) : \"rgba(\" + (0, _hslToRgb[\"default\"])(value, saturation, lightness) + \",\" + alpha + \")\";\n } else if (typeof value === 'object' && saturation === undefined && lightness === undefined && alpha === undefined) {\n return value.alpha >= 1 ? (0, _hslToHex[\"default\"])(value.hue, value.saturation, value.lightness) : \"rgba(\" + (0, _hslToRgb[\"default\"])(value.hue, value.saturation, value.lightness) + \",\" + value.alpha + \")\";\n }\n throw new _errors[\"default\"](2);\n}\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = rgb;\nvar _reduceHexValue = _interopRequireDefault(require(\"../internalHelpers/_reduceHexValue\"));\nvar _numberToHex = _interopRequireDefault(require(\"../internalHelpers/_numberToHex\"));\nvar _errors = _interopRequireDefault(require(\"../internalHelpers/_errors\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n/**\n * Returns a string value for the color. The returned result is the smallest possible hex notation.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * background: rgb(255, 205, 100),\n * background: rgb({ red: 255, green: 205, blue: 100 }),\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * background: ${rgb(255, 205, 100)};\n * background: ${rgb({ red: 255, green: 205, blue: 100 })};\n * `\n *\n * // CSS in JS Output\n *\n * element {\n * background: \"#ffcd64\";\n * background: \"#ffcd64\";\n * }\n */\nfunction rgb(value, green, blue) {\n if (typeof value === 'number' && typeof green === 'number' && typeof blue === 'number') {\n return (0, _reduceHexValue[\"default\"])(\"#\" + (0, _numberToHex[\"default\"])(value) + (0, _numberToHex[\"default\"])(green) + (0, _numberToHex[\"default\"])(blue));\n } else if (typeof value === 'object' && green === undefined && blue === undefined) {\n return (0, _reduceHexValue[\"default\"])(\"#\" + (0, _numberToHex[\"default\"])(value.red) + (0, _numberToHex[\"default\"])(value.green) + (0, _numberToHex[\"default\"])(value.blue));\n }\n throw new _errors[\"default\"](6);\n}\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = rgba;\nvar _parseToRgb = _interopRequireDefault(require(\"./parseToRgb\"));\nvar _rgb = _interopRequireDefault(require(\"./rgb\"));\nvar _errors = _interopRequireDefault(require(\"../internalHelpers/_errors\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n/**\n * Returns a string value for the color. The returned result is the smallest possible rgba or hex notation.\n *\n * Can also be used to fade a color by passing a hex value or named CSS color along with an alpha value.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * background: rgba(255, 205, 100, 0.7),\n * background: rgba({ red: 255, green: 205, blue: 100, alpha: 0.7 }),\n * background: rgba(255, 205, 100, 1),\n * background: rgba('#ffffff', 0.4),\n * background: rgba('black', 0.7),\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * background: ${rgba(255, 205, 100, 0.7)};\n * background: ${rgba({ red: 255, green: 205, blue: 100, alpha: 0.7 })};\n * background: ${rgba(255, 205, 100, 1)};\n * background: ${rgba('#ffffff', 0.4)};\n * background: ${rgba('black', 0.7)};\n * `\n *\n * // CSS in JS Output\n *\n * element {\n * background: \"rgba(255,205,100,0.7)\";\n * background: \"rgba(255,205,100,0.7)\";\n * background: \"#ffcd64\";\n * background: \"rgba(255,255,255,0.4)\";\n * background: \"rgba(0,0,0,0.7)\";\n * }\n */\nfunction rgba(firstValue, secondValue, thirdValue, fourthValue) {\n if (typeof firstValue === 'string' && typeof secondValue === 'number') {\n var rgbValue = (0, _parseToRgb[\"default\"])(firstValue);\n return \"rgba(\" + rgbValue.red + \",\" + rgbValue.green + \",\" + rgbValue.blue + \",\" + secondValue + \")\";\n } else if (typeof firstValue === 'number' && typeof secondValue === 'number' && typeof thirdValue === 'number' && typeof fourthValue === 'number') {\n return fourthValue >= 1 ? (0, _rgb[\"default\"])(firstValue, secondValue, thirdValue) : \"rgba(\" + firstValue + \",\" + secondValue + \",\" + thirdValue + \",\" + fourthValue + \")\";\n } else if (typeof firstValue === 'object' && secondValue === undefined && thirdValue === undefined && fourthValue === undefined) {\n return firstValue.alpha >= 1 ? (0, _rgb[\"default\"])(firstValue.red, firstValue.green, firstValue.blue) : \"rgba(\" + firstValue.red + \",\" + firstValue.green + \",\" + firstValue.blue + \",\" + firstValue.alpha + \")\";\n }\n throw new _errors[\"default\"](7);\n}\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = toColorString;\nvar _hsl = _interopRequireDefault(require(\"./hsl\"));\nvar _hsla = _interopRequireDefault(require(\"./hsla\"));\nvar _rgb = _interopRequireDefault(require(\"./rgb\"));\nvar _rgba = _interopRequireDefault(require(\"./rgba\"));\nvar _errors = _interopRequireDefault(require(\"../internalHelpers/_errors\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\nvar isRgb = function isRgb(color) {\n return typeof color.red === 'number' && typeof color.green === 'number' && typeof color.blue === 'number' && (typeof color.alpha !== 'number' || typeof color.alpha === 'undefined');\n};\nvar isRgba = function isRgba(color) {\n return typeof color.red === 'number' && typeof color.green === 'number' && typeof color.blue === 'number' && typeof color.alpha === 'number';\n};\nvar isHsl = function isHsl(color) {\n return typeof color.hue === 'number' && typeof color.saturation === 'number' && typeof color.lightness === 'number' && (typeof color.alpha !== 'number' || typeof color.alpha === 'undefined');\n};\nvar isHsla = function isHsla(color) {\n return typeof color.hue === 'number' && typeof color.saturation === 'number' && typeof color.lightness === 'number' && typeof color.alpha === 'number';\n};\n\n/**\n * Converts a RgbColor, RgbaColor, HslColor or HslaColor object to a color string.\n * This util is useful in case you only know on runtime which color object is\n * used. Otherwise we recommend to rely on `rgb`, `rgba`, `hsl` or `hsla`.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * background: toColorString({ red: 255, green: 205, blue: 100 }),\n * background: toColorString({ red: 255, green: 205, blue: 100, alpha: 0.72 }),\n * background: toColorString({ hue: 240, saturation: 1, lightness: 0.5 }),\n * background: toColorString({ hue: 360, saturation: 0.75, lightness: 0.4, alpha: 0.72 }),\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * background: ${toColorString({ red: 255, green: 205, blue: 100 })};\n * background: ${toColorString({ red: 255, green: 205, blue: 100, alpha: 0.72 })};\n * background: ${toColorString({ hue: 240, saturation: 1, lightness: 0.5 })};\n * background: ${toColorString({ hue: 360, saturation: 0.75, lightness: 0.4, alpha: 0.72 })};\n * `\n *\n * // CSS in JS Output\n * element {\n * background: \"#ffcd64\";\n * background: \"rgba(255,205,100,0.72)\";\n * background: \"#00f\";\n * background: \"rgba(179,25,25,0.72)\";\n * }\n */\n\nfunction toColorString(color) {\n if (typeof color !== 'object') throw new _errors[\"default\"](8);\n if (isRgba(color)) return (0, _rgba[\"default\"])(color);\n if (isRgb(color)) return (0, _rgb[\"default\"])(color);\n if (isHsla(color)) return (0, _hsla[\"default\"])(color);\n if (isHsl(color)) return (0, _hsl[\"default\"])(color);\n throw new _errors[\"default\"](8);\n}\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\nvar _curry = _interopRequireDefault(require(\"../internalHelpers/_curry\"));\nvar _guard = _interopRequireDefault(require(\"../internalHelpers/_guard\"));\nvar _parseToHsl = _interopRequireDefault(require(\"./parseToHsl\"));\nvar _toColorString = _interopRequireDefault(require(\"./toColorString\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n/**\n * Returns a string value for the darkened color.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * background: darken(0.2, '#FFCD64'),\n * background: darken('0.2', 'rgba(255,205,100,0.7)'),\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * background: ${darken(0.2, '#FFCD64')};\n * background: ${darken('0.2', 'rgba(255,205,100,0.7)')};\n * `\n *\n * // CSS in JS Output\n *\n * element {\n * background: \"#ffbd31\";\n * background: \"rgba(255,189,49,0.7)\";\n * }\n */\nfunction darken(amount, color) {\n if (color === 'transparent') return color;\n var hslColor = (0, _parseToHsl[\"default\"])(color);\n return (0, _toColorString[\"default\"])(_extends({}, hslColor, {\n lightness: (0, _guard[\"default\"])(0, 1, hslColor.lightness - parseFloat(amount))\n }));\n}\n\n// prettier-ignore\nvar curriedDarken = (0, _curry[\"default\"] /* ::<number | string, string, string> */)(darken);\nvar _default = exports[\"default\"] = curriedDarken;\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\nvar _curry = _interopRequireDefault(require(\"../internalHelpers/_curry\"));\nvar _guard = _interopRequireDefault(require(\"../internalHelpers/_guard\"));\nvar _parseToHsl = _interopRequireDefault(require(\"./parseToHsl\"));\nvar _toColorString = _interopRequireDefault(require(\"./toColorString\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n/**\n * Returns a string value for the lightened color.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * background: lighten(0.2, '#CCCD64'),\n * background: lighten('0.2', 'rgba(204,205,100,0.7)'),\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * background: ${lighten(0.2, '#FFCD64')};\n * background: ${lighten('0.2', 'rgba(204,205,100,0.7)')};\n * `\n *\n * // CSS in JS Output\n *\n * element {\n * background: \"#e5e6b1\";\n * background: \"rgba(229,230,177,0.7)\";\n * }\n */\nfunction lighten(amount, color) {\n if (color === 'transparent') return color;\n var hslColor = (0, _parseToHsl[\"default\"])(color);\n return (0, _toColorString[\"default\"])(_extends({}, hslColor, {\n lightness: (0, _guard[\"default\"])(0, 1, hslColor.lightness + parseFloat(amount))\n }));\n}\n\n// prettier-ignore\nvar curriedLighten = (0, _curry[\"default\"] /* ::<number | string, string, string> */)(lighten);\nvar _default = exports[\"default\"] = curriedLighten;\nmodule.exports = exports.default;","import styles from './iframe-widget-styles.css?inline';\n\nimport type { Config } from '@brainfish-ai/widgets-common';\nimport getLuminance from 'polished/lib/color/getLuminance';\nimport darken from 'polished/lib/color/darken';\nimport lighten from 'polished/lib/color/lighten';\nimport { TRIGGER_BUTTON_CLASS } from '../constants/classes';\n\nfunction insertStyles(\n primaryColor: string = '#000',\n foreground: string = 'FFF'\n) {\n const style = document.createElement('style');\n style.attributes.setNamedItem(document.createAttribute('data-widget-styles'));\n const isLightButtonColor = getLuminance(primaryColor) > 0.5;\n\n style.textContent = `\n ${styles}\n .${TRIGGER_BUTTON_CLASS} { background: ${primaryColor}; }\n .${TRIGGER_BUTTON_CLASS}:hover {\n background: ${\n isLightButtonColor\n ? darken(0.05, primaryColor)\n : lighten(0.05, primaryColor)\n };\n }\n .trigger-button-icon { color: ${foreground}; }\n `;\n\n document.head.appendChild(style);\n}\n\nexport function insertStylesIfNeeded(config: Config) {\n if (!document.querySelector('style[data-widget-styles]')) {\n const buttonColor = config?.theme?.inputButtonBgColor || '#007bff';\n const iconColor = config?.theme?.textBaseColor || '#ffffff';\n insertStyles(buttonColor, iconColor);\n }\n}\n","export function initColorSchemeListener(\n iframe: HTMLIFrameElement,\n signal: AbortSignal\n) {\n const updateIframeBodyClass = (isDarkMode: boolean) => {\n iframe.contentWindow?.postMessage(\n { type: 'UPDATE_BODY_CLASS', isDarkMode },\n '*'\n );\n };\n\n const checkAndUpdateDarkMode = () => {\n const isDarkMode = document.body.classList.contains('dark');\n updateIframeBodyClass(isDarkMode);\n };\n\n const observeBodyClassChanges = () => {\n const observer = new MutationObserver(checkAndUpdateDarkMode);\n observer.observe(document.body, {\n attributes: true,\n attributeFilter: ['class'],\n });\n signal.addEventListener('abort', () => observer.disconnect());\n };\n\n // Initial check\n checkAndUpdateDarkMode();\n\n // Observe class changes on document.body\n observeBodyClassChanges();\n}\n","import { IframeStateManager } from '../managers/IframeStateManager';\nimport { MOBILE_BREAKPOINT } from '../constants/breakpoints';\n\nexport function observeColorSchemeChanges(\n iframe: HTMLIFrameElement,\n signal: AbortSignal\n) {\n const updateIframeBodyClass = (isMobile: boolean) => {\n const message = { type: 'UPDATE_BODY_CLASS', isMobile };\n iframe.contentWindow?.postMessage(message, '*');\n\n // if isMobile, and the widget is closed, show the trigger button\n if (isMobile) {\n if (IframeStateManager.isWidgetOpen) {\n IframeStateManager.hideTriggerButton();\n } else {\n IframeStateManager.showTriggerButton();\n }\n }\n };\n\n let resizeTimeout: number | undefined;\n\n const checkAndUpdateIsMobile = () => {\n const isMobile = document.body.clientWidth <= MOBILE_BREAKPOINT;\n updateIframeBodyClass(isMobile);\n };\n\n const debouncedCheckAndUpdateIsMobile = () => {\n if (resizeTimeout) {\n clearTimeout(resizeTimeout);\n }\n resizeTimeout = window.setTimeout(checkAndUpdateIsMobile, 300);\n };\n\n const observeBodyResize = () => {\n const resizeObserver = new ResizeObserver(debouncedCheckAndUpdateIsMobile);\n\n resizeObserver.observe(document.body);\n\n signal.addEventListener('abort', () => resizeObserver.disconnect());\n };\n\n // Initial check\n checkAndUpdateIsMobile();\n\n // Observe size changes on document.body\n observeBodyResize();\n}\n","export function base64Encode(text: string): string {\n const encoder = new TextEncoder();\n const uint8Array = encoder.encode(text);\n\n if (typeof window !== 'undefined' && typeof window.btoa === 'function') {\n // Browser environment\n const binaryString = Array.from(uint8Array, (byte) =>\n String.fromCharCode(byte)\n ).join('');\n return btoa(binaryString);\n }\n\n if (typeof Buffer !== 'undefined') {\n // Node.js environment\n return Buffer.from(uint8Array).toString('base64');\n }\n\n throw new Error('[utils.base64Encode]: Unsupported environment');\n}\n\nexport const base64Decode = (text: string): string => {\n if (typeof window !== 'undefined' && typeof window.atob === 'function') {\n // Browser environment\n const binaryString = atob(text);\n const len = binaryString.length;\n const bytes = new Uint8Array(len);\n for (let i = 0; i < len; i++) {\n bytes[i] = binaryString.charCodeAt(i);\n }\n const decoder = new TextDecoder();\n return decoder.decode(bytes);\n }\n\n if (typeof Buffer !== 'undefined') {\n // Node.js environment\n return Buffer.from(text, 'base64').toString('utf-8');\n }\n\n throw new Error('[utils.base64Decode]: Unsupported environment');\n};\n","import type { Config } from '@brainfish-ai/widgets-common';\nimport { sendBrainfishWidgetError } from '../utils/sendBrainfishError';\nimport { getApiHost, getWidgetHost } from '../utils/getApiHost';\nimport { createTriggerButton } from './components/TriggerButton';\nimport { createIframeContainer } from './components/IframeContainer';\nimport { initMessageListener } from './listeners/initMessageListener';\nimport { insertStylesIfNeeded } from './utils/insertStyles';\nimport { initColorSchemeListener } from './listeners/observeColorSchemeChanges';\nimport { observeColorSchemeChanges } from './listeners/initBodyResizeObserver';\nimport { base64Encode } from '../utils/base64';\nconst initializedWidgets = new Set<string>();\n\nfunction isWidgetInitialized(widgetKey: string): boolean {\n return initializedWidgets.has(widgetKey);\n}\n\nfunction isButtonExisting(widgetKey: string): boolean {\n return !!document.getElementById(`trigger-button-${widgetKey}`);\n}\n\nfunction createWidgetWithButton(widgetKey: string, widgetUrl: string) {\n const fragment = document.createDocumentFragment();\n const button = createTriggerButton(widgetKey);\n const { iframeContainer, iframe } = createIframeContainer(widgetUrl);\n\n fragment.appendChild(button);\n fragment.appendChild(iframeContainer);\n\n return { fragment, iframe };\n}\n\nfunction handleInitializationError(\n apiHost: string,\n error: unknown,\n widgetKey: string\n) {\n sendBrainfishWidgetError(apiHost, error, (error as Error).message, widgetKey);\n}\n\nexport const initIframeTrigger = (\n options: { widgetKey: string; overrides?: any },\n config: Config\n): undefined => {\n const apiHost = getApiHost(options.overrides);\n const widgetHost = getWidgetHost(options.overrides);\n const { theme, settings } = config;\n const widgetUrl = `${widgetHost}/?widgetKey=${\n options.widgetKey\n }&themeParam=${base64Encode(\n JSON.stringify(theme)\n )}&settingsParam=${base64Encode(JSON.stringify(settings))}`;\n\n try {\n if (isWidgetInitialized(options.widgetKey)) return undefined;\n if (isButtonExisting(options.widgetKey)) return undefined;\n\n insertStylesIfNeeded(config);\n\n const { fragment, iframe } = createWidgetWithButton(\n options.widgetKey,\n widgetUrl\n );\n\n const controller = new AbortController();\n const { signal } = controller;\n\n // make sure the iframe is loaded before setting up listeners\n iframe.onload = () => {\n setTimeout(() => {\n // Setup color scheme listener\n initColorSchemeListener(iframe, signal);\n\n // Setup message listener\n initMessageListener(widgetHost, signal);\n\n // Setup iframe container resize observer\n observeColorSchemeChanges(iframe, signal);\n }, 0);\n };\n\n document.body.appendChild(fragment);\n\n // Store the cleanup function for later use\n initializedWidgets.add(options.widgetKey);\n\n const cleanup = () => {\n controller.abort(); // Abort the event listener\n window.removeEventListener('beforeunload', cleanup);\n };\n\n // Add the beforeunload event listener\n window.addEventListener('beforeunload', cleanup);\n\n return undefined;\n } catch (error) {\n handleInitializationError(apiHost, error, options.widgetKey);\n }\n return undefined;\n};","import { createElementWithClass } from '../../utils/createElementWithClass';\nimport {\n IFRAME_CONTAINER_CLASS,\n TRIGGER_BUTTON_CLASS,\n} from '../constants/classes';\nimport { IframeStateManager } from '../managers/IframeStateManager';\n\nexport function createTriggerButton(widgetKey: string): HTMLElement {\n const button = createElementWithClass('button', TRIGGER_BUTTON_CLASS, {\n id: `trigger-button-${widgetKey}`,\n 'aria-controls': IFRAME_CONTAINER_CLASS,\n 'aria-expanded': 'false',\n 'data-name': TRIGGER_BUTTON_CLASS,\n });\n\n const icon = createElementWithClass('div', 'trigger-button-icon', {\n 'aria-hidden': 'true',\n });\n icon.innerHTML = `\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"32\" height=\"32\" fill=\"currentColor\" viewBox=\"0 0 256 256\" class=\"close-icon\">\n <path d=\"M213.66,101.66l-80,80a8,8,0,0,1-11.32,0l-80-80A8,8,0,0,1,53.66,90.34L128,164.69l74.34-74.35a8,8,0,0,1,11.32,11.32Z\"></path>\n </svg>\n <svg width=\"24\" height=\"14\" viewBox=\"0 0 24 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" class=\"fish-icon visible\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M1.71844 10.3882L4.60606 6.98384L1.71844 3.58375C1.4014 3.21362 1.44424 2.65841 1.81269 2.33993C1.97978 2.1979 2.65242 1.98701 3.04657 2.43461L5.78425 5.65824C6.14281 5.29523 6.51693 4.95924 6.90479 4.65114C8.88976 3.07437 11.2345 2.22803 13.6931 2.22803C16.9492 2.22803 20.0039 3.71718 22.2917 6.41142C22.5702 6.74282 22.5702 7.22916 22.2917 7.56056C20.0039 10.2591 16.9492 11.744 13.6931 11.744C11.2348 11.744 8.89035 10.8948 6.90554 9.31995C6.51741 9.01199 6.14304 8.67628 5.78425 8.31374L3.04657 11.5374C2.72953 11.9075 2.18114 11.9505 1.81269 11.632C1.44852 11.3179 1.40568 10.7584 1.71844 10.3882ZM5.93026 10.4683C8.17161 12.2599 10.8546 13.25 13.6931 13.25C17.4881 13.25 21.019 11.4034 23.4447 8.52942C24.1873 7.64571 24.1843 6.31801 23.4397 5.43663C20.8944 2.43919 17.4337 0.722025 13.6931 0.722025C10.8555 0.722025 8.17194 1.70845 5.92952 3.50276L4.17682 1.43933C3.57943 0.760929 2.79325 0.630009 2.25286 0.662947C1.98116 0.679506 1.73125 0.736852 1.51895 0.811846C1.26839 0.900352 1.03017 1.02718 0.827835 1.20058C-0.165283 2.05903 -0.283916 3.561 0.574656 4.56345L2.63075 6.98445L0.568104 9.41623C-0.272133 10.4106 -0.166523 11.9125 0.827835 12.7714C1.81372 13.6243 3.34308 13.5062 4.19036 12.5171L5.93026 10.4683Z\" fill=\"currentColor\"/>\n </svg>\n `;\n button.setAttribute('aria-label', 'Open Brainfish widget');\n button.appendChild(icon);\n IframeStateManager.initialize(button, icon);\n\n return button;\n}\n","// web.ts\n// entry point for web component\nimport { Config } from '@brainfish-ai/widgets-common';\nimport { getConfigByKey } from './api/getConfigByKey';\nimport { initSearchWidget } from './initSearchWidget';\nimport { initBrainfishAnalytics } from './initBrainfishAnalytics';\nimport type { Brainfish } from './types/brainfish';\nimport { BrainfishQueue, createBrainfishQueue } from './utils/brainfishQueue';\nimport { createQueues } from './utils/createQueues';\nimport { getApiHost, getAnalyticsApiHost } from './utils/getApiHost';\nimport { initIframeTrigger } from './initIframeTrigger';\nimport type { BrainfishWidgetOptions } from './types/brainfish';\nimport { base64Decode } from './utils/base64';\n\ntype InternalWidgetOptions = BrainfishWidgetOptions & {\n /** @internal Platform-only configuration override */\n config?: string; // BASE64 encoded string. Used for preview mode on platform.\n};\n\nlet globalBrainfish: BrainfishQueue | null = null;\n\nfunction getBrainfishInstance(): BrainfishQueue {\n if (typeof window !== 'undefined' && (window as any).Brainfish) {\n return (window as any).Brainfish;\n }\n if (!globalBrainfish) {\n globalBrainfish = createBrainfishQueue();\n if (typeof window !== 'undefined') {\n (window as any).Brainfish = globalBrainfish;\n }\n }\n return globalBrainfish;\n}\n\nconst Brainfish = getBrainfishInstance();\n\nlet initializationPromise: Promise<void> | null = null;\n\nasync function initializeBrainfish(\n options: InternalWidgetOptions,\n config: Config,\n apiHost: string,\n analyticsApiHost: string\n): Promise<void> {\n const enableRecording =\n options.overrides?.enableRecording ||\n config?.settings?.enableRecording ||\n false;\n const requestedVersion = options.overrides?.version || config?.version;\n\n const initPromises: Promise<Brainfish | undefined | void>[] = [];\n\n if (requestedVersion?.startsWith('2.')) {\n // init new Iframe Search Widget\n initIframeTrigger(options, config);\n } else {\n // init legacy Search Widget\n initPromises.push(initSearchWidget(options, config));\n }\n\n initPromises.push(\n initBrainfishAnalytics(\n options.widgetKey,\n config.trackingToken || '',\n apiHost,\n analyticsApiHost,\n enableRecording\n ) // Even if this fails, it won't block the widget\n );\n\n // Start both initializations in parallel\n const [widgetPromise] = await Promise.allSettled(initPromises);\n\n // Only set the real Brainfish if widget initialization succeeded\n if (\n widgetPromise &&\n widgetPromise.status === 'fulfilled' &&\n widgetPromise.value\n ) {\n Brainfish._setRealBrainfish(widgetPromise.value);\n }\n}\n\nBrainfish.Widgets.init = async (\n options: InternalWidgetOptions\n): Promise<void> => {\n createQueues();\n\n const apiHost = getApiHost(options.overrides);\n const analyticsApiHost = getAnalyticsApiHost(options.overrides);\n\n let config: Config;\n if (options.config) {\n config = JSON.parse(base64Decode(options.config)) as Config;\n } else {\n const { config: fetchedConfig } = await getConfigByKey({\n widgetKey: options.widgetKey,\n apiHost,\n });\n config = fetchedConfig;\n }\n\n if (!initializationPromise) {\n // First initialization\n initializationPromise = initializeBrainfish(\n options,\n config,\n apiHost,\n analyticsApiHost\n );\n }\n\n // Wait for Brainfish to be initialized\n await initializationPromise;\n};\n\nexport default Brainfish;\n\nexport const BrainfishAnalytics = (\n ...args: Parameters<typeof window.BrainfishAnalytics>\n) => {\n if (typeof window !== 'undefined' && window.BrainfishAnalytics) {\n window.BrainfishAnalytics(...args);\n }\n};\n","import type { Brainfish } from '../types/brainfish';\n\nexport interface BrainfishQueue extends Brainfish {\n _setRealBrainfish: (bf: Brainfish) => void;\n Widgets: {\n init: (options: { widgetKey: string; overrides?: any }) => Promise<void>;\n };\n}\n\nexport function createBrainfishQueue(): BrainfishQueue {\n let queue: [string, any[]][] = [];\n let realBrainfish: Brainfish | null = null;\n\n function queueOrExecute(method: string, args: any[]) {\n if (realBrainfish) {\n const parts = method.split('.');\n let obj: any = realBrainfish;\n for (let i = 0; i < parts.length - 1; i++) {\n obj = obj[parts[i]];\n }\n const fn = obj[parts[parts.length - 1]];\n if (typeof fn === 'function') {\n return fn.apply(obj, args);\n }\n } else {\n queue.push([method, args]);\n }\n }\n\n const brainfishQueue: BrainfishQueue = {\n Widgets: {\n init: (...args: any[]) => queueOrExecute('Widgets.init', args),\n },\n SearchWidget: {\n initStandard: (...args: any[]) =>\n queueOrExecute('SearchWidget.initStandard', args),\n },\n HelpWidget: {\n initPopup: (...args: any[]) =>\n queueOrExecute('HelpWidget.initPopup', args),\n close: (...args: any[]) => queueOrExecute('HelpWidget.close', args),\n open: (...args: any[]) => queueOrExecute('HelpWidget.open', args),\n toggle: (...args: any[]) => queueOrExecute('HelpWidget.toggle', args),\n },\n _setRealBrainfish: function (bf: Brainfish) {\n realBrainfish = bf;\n while (queue.length > 0) {\n const [method, args] = queue.shift()!;\n queueOrExecute(method, args);\n }\n },\n };\n\n return brainfishQueue;\n}\n","export const createQueues = () => {\n if (window) {\n window.BrainfishAnalytics =\n window.BrainfishAnalytics ||\n function (...args: [string, ...any[]]) {\n (window.BrainfishAnalytics.q = window.BrainfishAnalytics.q || []).push(\n args\n );\n };\n }\n};\n"],"names":["WidgetType","ActionType","Sidebar","Searchbar","BrainfishWidgetError","Error","message","options","super","this","cause","name","captureStackTrace","stack","sendBrainfishWidgetError","apiHost","error","widgetKey","errorMessage","errorDetails","JSON","parse","String","sendErrors","navigator","userAgent","toLowerCase","includes","errorData","toJSON","fetch","method","headers","body","stringify","getConfigByKey","async","_ref","endpoint","lastError","attempt","response","ok","status","data","json","Promise","resolve","setTimeout","transformConfig","config","apiKey","settings","forEach","key","map","action","type","CALLBACK","value","__spreadProps","__spreadValues","Function","widgetMode","widgetType","getApiHost","overrides","useUMD","window","ua","match","version","parseInt","init","e","__async","url","scriptUrl","replace","widget","document","getElementById","Brainfish","reject","script","createElement","id","src","crossOrigin","onload","module","onerror","event","errorEvent","fileName","filename","lineNumber","lineno","columnNumber","colno","toString","head","appendChild","loadSearchWidgetScript","initializedWidgets","Set","initSearchWidget","has","result","transformedConfig","Object","entries","_ref2","overrideActions","arguments","length","actionMap","Map","label","set","Array","from","values","SearchWidget","initStandard","HelpWidget","initPopup","add","isTrackerInitialized","initBrainfishAnalytics","accessKey","analyticsApiHost","enableRecording","BrainfishAnalytics","apiUrl","trackScreenViews","trackAttributes","trackOutgoingLinks","createElementWithClass","tagName","className","attributes","element","setAttribute","IFRAME_CONTAINER_CLASS","TRIGGER_BUTTON_CLASS","IframeStateManager","static","isOpen","initialize","button","icon","addEventListener","toggleIframeVisibility","fishIconSVG","querySelector","closeIconSVG","iframeContainer","iframe","_iframe$contentWindow","classList","remove","contentWindow","postMessage","clientWidth","hideTriggerButton","showTriggerButton","_this$button","_this$button2","initMessageListener","widgetHost","signal","origin","contains","toggleIframeSize","eventName","colorToInt","color","Math","round","convertToInt","red","green","blue","exports","__esModule","hue","saturation","lightness","convert","huePrime","chroma","abs","secondComponent","lightnessModification","default","namedColorMap","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","normalizedColorName","_wrapNativeSuper","Class","_cache","undefined","fn","call","indexOf","TypeError","get","Wrapper","t","r","_isNativeReflectConstruct","Reflect","construct","apply","o","push","p","bind","_setPrototypeOf","prototype","_getPrototypeOf","constructor","create","enumerable","writable","configurable","Boolean","valueOf","setPrototypeOf","__proto__","getPrototypeOf","ERRORS","format","_len","args","_key","c","a","b","d","_Error","subClass","superClass","PolishedError","code","_this","process","env","NODE_ENV","_len2","_key2","concat","self","ReferenceError","_errors","normalizedColor","_nameToHex","hexRegex","hexRgbaRegex","alpha","parseFloat","toFixed","reducedHexRegex","reducedRgbaHexRegex","_alpha","rgbMatched","rgbRegex","exec","rgbaMatched","rgbaRegex","substring","hslMatched","hslRegex","rgbColorString","_hslToRgb","hslRgbMatched","hslaMatched","hslaRegex","_hue","_saturation","_lightness","_rgbColorString","_hslRgbMatched","_interopRequireDefault","require$$0","require$$1","require$$2","obj","rgbColor","_parseToRgb","_Object$keys$map","keys","channel","pow","g","curried","f","acc","combined","slice","lowerBoundary","upperBoundary","max","min","delta","_rgbToHsl","hex","_reduceHexValue","_numberToHex","colorToHex","convertToHex","_hslToHex","firstValue","secondValue","thirdValue","fourthValue","rgbValue","_rgb","isRgba","_rgba","isRgb","isHsla","_hsla","isHsl","_hsl","require$$3","require$$4","_curry","_guard","_parseToHsl","_toColorString","_extends","assign","target","i","source","hasOwnProperty","curriedDarken","amount","hslColor","curriedLighten","insertStylesIfNeeded","_config$theme","_config$theme2","primaryColor","foreground","style","setNamedItem","createAttribute","isLightButtonColor","getLuminance","textContent","darken","lighten","theme","inputButtonBgColor","textBaseColor","initColorSchemeListener","checkAndUpdateDarkMode","isDarkMode","observer","MutationObserver","observe","attributeFilter","disconnect","observeColorSchemeChanges","resizeTimeout","checkAndUpdateIsMobile","isMobile","isWidgetOpen","debouncedCheckAndUpdateIsMobile","clearTimeout","resizeObserver","ResizeObserver","base64Encode","text","uint8Array","TextEncoder","encode","btoa","binaryString","byte","fromCharCode","join","Buffer","createWidgetWithButton","widgetUrl","fragment","createDocumentFragment","innerHTML","sandbox","allow","role","n","initIframeTrigger","controller","AbortController","cleanup","abort","removeEventListener","globalBrainfish","queue","realBrainfish","queueOrExecute","parts","split","Widgets","_len3","_key3","close","_len4","_key4","open","_len5","_key5","toggle","_len6","_key6","_setRealBrainfish","bf","shift","initializationPromise","q","atob","len","bytes","Uint8Array","charCodeAt","TextDecoder","decode","fetchedConfig","_options$overrides","_config$settings","_options$overrides2","requestedVersion","initPromises","startsWith","trackingToken","widgetPromise","allSettled"],"mappings":"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","x_google_ignoreList":[18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36]}
1
+ {"version":3,"file":"web.js","sources":["../../common/dist/types/brainfish.js","../../common/dist/types/config.js","../../common/dist/types/BrainfishWidgetError.js","../src/utils/sendErrors.ts","../src/utils/sendBrainfishError.ts","../src/api/getConfigByKey.ts","../src/utils/fetchWithErrorHandling.ts","../src/utils/configTransformer.ts","../src/utils/getApiHost.ts","../src/initSearchWidget.ts","../src/utils/isIOS14OrBelow.ts","../src/initBrainfishAnalytics.ts","../src/utils/createElementWithClass.ts","../src/initIframeTrigger/constants/classes.ts","../src/initIframeTrigger/managers/IframeStateManager.ts","../src/initIframeTrigger/constants/breakpoints.ts","../src/initIframeTrigger/listeners/initMessageListener.ts","../src/initIframeTrigger/components/IframeContainer.ts","../../../node_modules/polished/lib/internalHelpers/_hslToRgb.js","../../../node_modules/polished/lib/internalHelpers/_nameToHex.js","../../../node_modules/polished/lib/internalHelpers/_errors.js","../../../node_modules/polished/lib/color/parseToRgb.js","../../../node_modules/polished/lib/color/getLuminance.js","../../../node_modules/polished/lib/internalHelpers/_curry.js","../../../node_modules/polished/lib/internalHelpers/_guard.js","../../../node_modules/polished/lib/internalHelpers/_rgbToHsl.js","../../../node_modules/polished/lib/color/parseToHsl.js","../../../node_modules/polished/lib/internalHelpers/_reduceHexValue.js","../../../node_modules/polished/lib/internalHelpers/_numberToHex.js","../../../node_modules/polished/lib/internalHelpers/_hslToHex.js","../../../node_modules/polished/lib/color/hsl.js","../../../node_modules/polished/lib/color/hsla.js","../../../node_modules/polished/lib/color/rgb.js","../../../node_modules/polished/lib/color/rgba.js","../../../node_modules/polished/lib/color/toColorString.js","../../../node_modules/polished/lib/color/darken.js","../../../node_modules/polished/lib/color/lighten.js","../src/initIframeTrigger/utils/insertStyles.ts","../src/initIframeTrigger/listeners/observeColorSchemeChanges.ts","../src/initIframeTrigger/listeners/initBodyResizeObserver.ts","../src/utils/base64.ts","../src/initIframeTrigger/index.ts","../src/initIframeTrigger/components/TriggerButton.ts","../src/web.ts","../src/utils/brainfishQueue.ts","../src/utils/createQueues.ts"],"sourcesContent":["export var WidgetType;\n(function (WidgetType) {\n WidgetType[\"Sidebar\"] = \"sidebar\";\n WidgetType[\"Searchbar\"] = \"searchbar\";\n})(WidgetType || (WidgetType = {}));\n;\nexport const WIDGET_NAMES = {\n [WidgetType.Sidebar]: 'brainfish-sidebar-widget',\n [WidgetType.Searchbar]: 'brainfish-searchbar-widget',\n};\n","const isUrlString = (value) => {\n const urlRegExp = /^(https?|ftp):\\/\\/[^\\s/$.?#].[^\\s]*$/i;\n return urlRegExp.test(value);\n};\nexport const validateUrlString = (value) => {\n if (!isUrlString(value)) {\n throw new Error(`Invalid URL: ${value}`);\n }\n return value;\n};\nexport var ActionType;\n(function (ActionType) {\n ActionType[\"LINK\"] = \"link\";\n ActionType[\"CALLBACK\"] = \"callback\";\n ActionType[\"EMAIL\"] = \"email\";\n ActionType[\"PHONE\"] = \"phone\";\n})(ActionType || (ActionType = {}));\n","export class BrainfishWidgetError extends Error {\n cause;\n constructor(message, options) {\n super(message, options);\n this.name = 'BrainfishWidgetError';\n this.cause = options?.cause;\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, BrainfishWidgetError);\n }\n // Append cause stack to this error's stack if cause is an Error\n if (this.cause instanceof Error && this.cause.stack) {\n this.stack = this.stack + '\\nCaused by: ' + this.cause.stack;\n }\n }\n toJSON() {\n return {\n name: this.name,\n message: this.message,\n stack: this.stack,\n cause: this.cause instanceof Error\n ? {\n name: this.cause.name,\n message: this.cause.message,\n stack: this.cause.stack,\n }\n : this.cause,\n };\n }\n}\n","import { BrainfishWidgetError } from '@brainfish-ai/widgets-common';\n\ndeclare const __APP_VERSION__: string;\n\nexport const sendErrors = (\n apiHost: string,\n error: BrainfishWidgetError,\n widgetKey: string\n) => {\n // only send errors if browser is not a headless browser\n if (!navigator || navigator.userAgent.toLowerCase().includes('headless')) {\n return;\n }\n\n const errorData = error.toJSON();\n const API_HOST = apiHost || import.meta.env.VITE_API_HOST;\n\n fetch(`${API_HOST}/api/trackError.widget.create`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'api-key': widgetKey,\n },\n body: JSON.stringify({\n error: `WebWidgetVersion: ${__APP_VERSION__}. ${error.message}`,\n stack: error.stack,\n cause: {\n message: errorData.message,\n stack: errorData.stack,\n cause: errorData.cause,\n },\n }),\n });\n};\n","import { BrainfishWidgetError } from '@brainfish-ai/widgets-common';\nimport { sendErrors } from './sendErrors';\n\nexport const sendBrainfishWidgetError = (\n apiHost: string,\n error: unknown,\n message: string,\n widgetKey: string\n) => {\n let errorMessage = message;\n let errorDetails: Record<string, any> = {};\n\n if (error instanceof Error) {\n try {\n errorDetails = JSON.parse(error.message);\n errorMessage += ` - ${errorDetails.message || error.message}`;\n } catch {\n // If parsing fails, use the error message as is\n errorMessage += ` - ${error.message}`;\n }\n } else {\n errorMessage += ` - ${String(error)}`;\n }\n\n const err = new BrainfishWidgetError(errorMessage, {\n cause: errorDetails,\n });\n\n sendErrors(apiHost, err, widgetKey);\n};\n","import type { Config } from '@brainfish-ai/widgets-common';\nimport { fetchWithErrorHandling } from '../utils/fetchWithErrorHandling';\n\nexport interface ConfigResponse {\n config: Config;\n}\n\nexport const getConfigByKey = async ({\n widgetKey,\n apiHost,\n}: {\n widgetKey: string;\n apiHost: string;\n}): Promise<ConfigResponse> => {\n const endpoint = `/api/searchWidgets.getConfigByKey`;\n return fetchWithErrorHandling(apiHost, endpoint, widgetKey);\n};\n","import { sendBrainfishWidgetError } from './sendBrainfishError';\n\nexport async function fetchWithErrorHandling(\n apiHost: string,\n endpoint: string,\n widgetKey: string\n): Promise<any> {\n const maxRetries = 3;\n const delay = 500; // half second delay\n let attempt = 0;\n let lastError;\n\n while (attempt < maxRetries) {\n try {\n const response = await fetch(`${apiHost}${endpoint}`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'api-key': widgetKey,\n },\n });\n\n if (!response.ok) {\n throw new Error(`API call failed with status: ${response.status}`);\n }\n\n const data = await response.json();\n if (!data) {\n throw new Error('Error loading config: empty response');\n }\n\n return data; // Return data if successful\n } catch (error) {\n lastError = error;\n attempt++;\n if (attempt >= maxRetries) {\n sendBrainfishWidgetError(\n apiHost,\n error,\n 'Error fetching config',\n widgetKey\n );\n throw lastError; // Throw the last error after max retries\n }\n await new Promise((resolve) => setTimeout(resolve, delay)); // Throttle with delay\n }\n }\n}","import type {\n Config,\n CallbackAction,\n Action,\n} from '@brainfish-ai/widgets-common';\nimport { ActionType } from '@brainfish-ai/widgets-common';\n\nconst mapActionButtons = (actionButtons: (CallbackAction | Action)[]) =>\n actionButtons.map((action) =>\n action.type === ActionType.CALLBACK && action.value\n ? { ...action, value: new Function(`return ${action.value}`)() }\n : action\n );\n\nexport const updateActions = (\n configActions: (Action | CallbackAction)[] = [],\n overrideActions: (Action | CallbackAction)[]\n) => {\n const actionMap = new Map(\n configActions.map((action) => [action.label, action])\n );\n overrideActions.forEach((action) => actionMap.set(action.label, action));\n return Array.from(actionMap.values());\n};\n\nexport const transformConfig = ({\n config,\n apiKey,\n apiHost,\n}: {\n config: Config;\n apiKey: string;\n apiHost: string;\n}) => {\n const settings = config.settings || {};\n (\n ['bodyActionButtons', 'footerActionButtons', 'nextBestActions'] as const\n ).forEach((key) => {\n if (settings[key]) {\n settings[key] = mapActionButtons(\n settings[key] as (CallbackAction | Action)[]\n );\n }\n });\n\n return {\n ...config,\n settings,\n apiHost,\n widgetMode: config.widgetType,\n apiKey,\n };\n};\n","export const getApiHost = (overrides?: { apiHost?: string }): string => {\n return overrides?.apiHost || import.meta.env.VITE_API_HOST;\n};\n\nexport const getWidgetHost = (overrides?: { widgetHost?: string }): string => {\n return overrides?.widgetHost || import.meta.env.VITE_WIDGET_HOST;\n};\n\nexport const getAnalyticsApiHost = (overrides?: {\n analyticsApiHost?: string;\n}): string => {\n return overrides?.analyticsApiHost || import.meta.env.VITE_ANALYTICS_API_HOST;\n};\n","import type {\n Config,\n CallbackAction,\n Action,\n Settings,\n} from '@brainfish-ai/widgets-common';\nimport { WidgetType } from '@brainfish-ai/widgets-common';\nimport { isIOS14OrBelow } from './utils/isIOS14OrBelow';\nimport { sendBrainfishWidgetError } from './utils/sendBrainfishError';\nimport type { Brainfish } from './types/brainfish';\nimport { transformConfig, updateActions } from './utils/configTransformer';\nimport { getApiHost } from './utils/getApiHost';\n\nconst useUMD = isIOS14OrBelow();\n\nconst loadSearchWidgetScript = async (url: string): Promise<any> => {\n if (document.getElementById('brainfish-widget')) {\n return (window as any).Brainfish;\n }\n\n return new Promise((resolve, reject) => {\n const script = document.createElement('script');\n script.id = 'brainfish-widget';\n script.src = url;\n script.type = useUMD ? 'text/javascript' : 'module';\n script.async = true;\n script.crossOrigin = 'anonymous';\n\n script.onload = () => {\n setTimeout(() => {\n const module = (window as any).Brainfish;\n module\n ? resolve(module)\n : reject(new Error('Failed to load Brainfish module'));\n }, 200);\n };\n\n script.onerror = (event) => {\n const errorEvent = event as ErrorEvent;\n const errorDetails = {\n message: `Failed to load script: ${url}`,\n type: errorEvent.type,\n fileName: errorEvent.filename,\n lineNumber: errorEvent.lineno,\n columnNumber: errorEvent.colno,\n error: errorEvent.error ? errorEvent.error.toString() : 'Unknown error',\n };\n reject(new Error(JSON.stringify(errorDetails)));\n };\n\n if (!useUMD) {\n document.head.appendChild(script);\n }\n });\n};\n\nexport const init = async ({\n apiHost,\n widgetKey,\n version,\n}: {\n apiHost: string;\n widgetKey: string;\n version: string;\n}) => {\n try {\n const url = `https://cdn.jsdelivr.net/npm/@brainfish-ai/search-widget@${version}/dist/web.js`;\n const scriptUrl = useUMD ? url.replace('web.js', 'web.umd.js') : url;\n\n const widget = await loadSearchWidgetScript(scriptUrl);\n\n return { widget };\n } catch (error) {\n sendBrainfishWidgetError(\n apiHost,\n error,\n (error as Error).message,\n widgetKey\n );\n }\n};\n\nfunction initializeWidget(widget: Brainfish, config: Config) {\n if (\n config.widgetType === WidgetType.Searchbar ||\n config.widgetType === 'Search'\n ) {\n widget.SearchWidget.initStandard(config);\n } else {\n widget.HelpWidget.initPopup(config);\n }\n}\n\nconst initializedWidgets = new Set<string>();\n\nexport const initSearchWidget = async (\n options: {\n widgetKey: string;\n overrides?: any;\n },\n config: Config\n): Promise<Brainfish | undefined> => {\n const apiHost = getApiHost(options.overrides);\n\n try {\n // Check if this widget has already been initialized\n if (initializedWidgets.has(options.widgetKey)) {\n // do nothing if already initialized\n return undefined;\n }\n\n const result = await init({\n apiHost,\n widgetKey: options.widgetKey,\n version: config.version || 'latest',\n });\n if (result) {\n const { widget } = result;\n\n const transformedConfig = transformConfig({\n config,\n apiKey: options.widgetKey,\n apiHost,\n });\n\n if (options.overrides && config.settings) {\n (\n Object.entries(options.overrides) as [\n keyof Settings,\n (Action | CallbackAction)[]\n ][]\n ).forEach(([key, value]) => {\n if (config.settings && key in config.settings) {\n (config.settings[key] as (Action | CallbackAction)[]) =\n updateActions(\n config.settings[key] as (Action | CallbackAction)[],\n value\n );\n }\n });\n }\n\n initializeWidget(widget, transformedConfig);\n initializedWidgets.add(options.widgetKey);\n return widget;\n }\n } catch (error) {\n sendBrainfishWidgetError(\n apiHost,\n error,\n (error as Error).message,\n options.widgetKey\n );\n }\n return undefined;\n};\n","export const isIOS14OrBelow = () => {\n if (typeof window === 'undefined') return;\n const ua = window.navigator.userAgent;\n const iOS = !!ua.match(/iPad/i) || !!ua.match(/iPhone/i);\n if (!iOS) return false;\n const version = ua.match(/OS (\\d+)_/i);\n return version && parseInt(version[1], 10) <= 14;\n};\n","import { sendBrainfishWidgetError } from './utils/sendBrainfishError';\n\n// Define interfaces for browser-specific DNT implementations\ninterface NavigatorWithMS extends Navigator {\n msDoNotTrack?: string;\n}\n\ninterface WindowWithDNT extends Window {\n doNotTrack?: string;\n}\n\nconst ANALYTICS_API_HOST = import.meta.env.VITE_ANALYTICS_API_HOST;\n\nlet isTrackerInitialized: boolean = false;\n\nconst loadTrackerScript = async (apiHost: string, widgetKey: string) => {\n if (document.getElementById('brainfish-analytics')) {\n return window.BrainfishAnalytics;\n }\n\n const script = document.createElement('script');\n script.id = 'brainfish-analytics';\n script.src = `https://cdn.jsdelivr.net/npm/@brainfish-ai/web-tracker@alpha/dist/tracker.js`;\n script.type = 'module';\n script.async = true;\n script.crossOrigin = 'anonymous';\n\n script.onerror = () => {\n sendBrainfishWidgetError(\n apiHost,\n new Error(`Failed to load script: ${script.src}`),\n `Failed to load script: ${script.src}`,\n widgetKey\n );\n };\n\n document.head.appendChild(script);\n};\n\n/**\n * Checks if Do Not Track (DNT) is enabled across different browsers\n *\n * This checks various browser-specific implementations of DNT:\n * - Standard DNT header (navigator.doNotTrack)\n * - MS IE/Edge (window.doNotTrack)\n * - Old Firefox (navigator.msDoNotTrack)\n *\n * @returns {boolean} true if DNT is enabled, false otherwise\n */\nconst isDoNotTrackEnabled = (): boolean => {\n if (typeof window === 'undefined' || typeof navigator === 'undefined') {\n return false;\n }\n\n // List of possible DNT values that indicate tracking is not allowed\n const dntEnabledValues = ['1', 'yes', 'true'];\n\n const nav = navigator as NavigatorWithMS;\n const win = window as WindowWithDNT;\n\n const dnt = (\n nav.doNotTrack || // Standard\n win.doNotTrack || // IE11, Edge\n nav.msDoNotTrack || // IE9, IE10\n '0'\n ) // Default to opt-in (false)\n .toString()\n .toLowerCase();\n\n console.log('web-widget: dnt', dnt, dntEnabledValues.includes(dnt));\n\n return dntEnabledValues.includes(dnt);\n};\n\nexport const initBrainfishAnalytics = async (\n widgetKey: string,\n accessKey: string,\n apiHost: string,\n analyticsApiHost: string = ANALYTICS_API_HOST,\n enableRecording: boolean = false\n): Promise<void> => {\n if (!accessKey) {\n sendBrainfishWidgetError(\n apiHost,\n new Error('Access key is required'),\n 'Access key is required',\n widgetKey\n );\n }\n\n // Only reinitialize if the access key is different\n if (isTrackerInitialized) {\n return;\n }\n\n try {\n // Check if DNT is enabled and override tracking settings accordingly\n const isDNTEnabled = isDoNotTrackEnabled();\n\n window.BrainfishAnalytics('init', {\n apiUrl: analyticsApiHost,\n accessKey,\n trackScreenViews: !isDNTEnabled,\n trackAttributes: !isDNTEnabled,\n trackOutgoingLinks: !isDNTEnabled,\n enableRecording: !isDNTEnabled && enableRecording,\n });\n\n isTrackerInitialized = true;\n\n await loadTrackerScript(apiHost, widgetKey);\n } catch (error) {\n sendBrainfishWidgetError(\n apiHost,\n error,\n 'Failed to initialize BrainfishAnalytics',\n widgetKey\n );\n }\n};\n","export function createElementWithClass<K extends keyof HTMLElementTagNameMap>(\n tagName: K,\n className: string,\n attributes: Record<string, string> = {}\n): HTMLElementTagNameMap[K] {\n const element = document.createElement(tagName);\n element.className = className;\n Object.entries(attributes).forEach(([key, value]) => {\n element.setAttribute(key, value);\n });\n return element;\n}\n","export const IFRAME_CONTAINER_CLASS = 'bf-iframe-container';\nexport const TRIGGER_BUTTON_CLASS = 'bf-trigger-button';\n","import { MOBILE_BREAKPOINT } from '../constants/breakpoints';\n\nexport class IframeStateManager {\n private static isOpen = false;\n private static button: HTMLElement | null = null;\n private static icon: HTMLElement | null = null;\n\n static get isWidgetOpen() {\n return this.isOpen;\n }\n\n static initialize(button: HTMLElement, icon: HTMLElement) {\n this.button = button;\n this.icon = icon;\n button.addEventListener('click', () => this.toggleIframeVisibility());\n }\n\n static toggleIframeVisibility() {\n if (!this.button || !this.icon) return;\n\n this.isOpen = !this.isOpen;\n const fishIconSVG = this.icon.querySelector('.fish-icon');\n const closeIconSVG = this.icon.querySelector('.close-icon');\n const iframeContainer = document.querySelector('.bf-iframe-container');\n const iframe = iframeContainer?.querySelector('iframe');\n\n if (this.isOpen) {\n iframeContainer?.classList.add('open');\n iframeContainer?.setAttribute('aria-hidden', 'false');\n this.button.setAttribute('aria-expanded', 'true');\n fishIconSVG!.classList.remove('visible');\n closeIconSVG!.classList.add('visible');\n iframe?.contentWindow?.postMessage({ type: 'FOCUS_SEARCH_FIELD' }, '*');\n window.BrainfishAnalytics('track', 'Open Widget');\n\n // Hide the trigger button if in mobile view\n if (document.body.clientWidth <= MOBILE_BREAKPOINT) {\n this.hideTriggerButton();\n }\n } else {\n iframeContainer?.classList.remove('open');\n iframeContainer?.setAttribute('aria-hidden', 'true');\n this.button.setAttribute('aria-expanded', 'false');\n closeIconSVG!.classList.remove('visible');\n fishIconSVG!.classList.add('visible');\n // always show the trigger button on close\n this.showTriggerButton();\n window.BrainfishAnalytics('track', 'Close Widget');\n }\n }\n\n static showTriggerButton() {\n this.button?.classList.remove('hidden');\n }\n\n static hideTriggerButton() {\n this.button?.classList.add('hidden');\n }\n}\n","export const MOBILE_BREAKPOINT = 576;\n","import { IframeStateManager } from '../managers/IframeStateManager';\nimport { toggleIframeSize } from '../components/IframeContainer';\n\nexport function initMessageListener(widgetHost: string, signal: AbortSignal) {\n const messageHandler = (event: MessageEvent) => {\n if (event.origin !== widgetHost) return;\n\n const { type } = event.data;\n if (type === 'TOGGLE_WIDGET_SIZE') {\n toggleIframeSize();\n }\n\n if (type === 'TRACK_EVENT') {\n if (!window.BrainfishAnalytics) return;\n const { eventName, data } = event.data;\n window.BrainfishAnalytics('track', eventName, data);\n }\n\n if (type === 'CLOSE_WIDGET') {\n window.BrainfishAnalytics('track', 'Close Widget');\n IframeStateManager.toggleIframeVisibility();\n }\n };\n\n window.addEventListener('message', messageHandler, { signal });\n}\n","import { createElementWithClass } from '../../utils/createElementWithClass';\nimport { IFRAME_CONTAINER_CLASS } from '../constants/classes';\n\nexport function createIframeContainer(widgetUrl: string) {\n const iframeContainer = createElementWithClass(\n 'div',\n IFRAME_CONTAINER_CLASS,\n {\n id: IFRAME_CONTAINER_CLASS,\n 'aria-live': 'polite',\n 'aria-hidden': 'true',\n }\n );\n\n const iframe = createElementWithClass('iframe', 'trigger-iframe', {\n src: widgetUrl,\n sandbox: 'allow-scripts allow-same-origin allow-popups',\n allow: 'clipboard-write',\n role: 'dialog',\n });\n\n iframeContainer.appendChild(iframe);\n\n return { iframeContainer, iframe };\n}\n\nexport function toggleIframeSize() {\n const iframeContainer = document.querySelector(\n `.${IFRAME_CONTAINER_CLASS}`\n ) as HTMLDivElement;\n\n if (iframeContainer.classList.contains('expanded')) {\n iframeContainer.classList.remove('expanded');\n } else {\n iframeContainer.classList.add('expanded');\n }\n}\n","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\nfunction colorToInt(color) {\n return Math.round(color * 255);\n}\nfunction convertToInt(red, green, blue) {\n return colorToInt(red) + \",\" + colorToInt(green) + \",\" + colorToInt(blue);\n}\nfunction hslToRgb(hue, saturation, lightness, convert) {\n if (convert === void 0) {\n convert = convertToInt;\n }\n if (saturation === 0) {\n // achromatic\n return convert(lightness, lightness, lightness);\n }\n\n // formulae from https://en.wikipedia.org/wiki/HSL_and_HSV\n var huePrime = (hue % 360 + 360) % 360 / 60;\n var chroma = (1 - Math.abs(2 * lightness - 1)) * saturation;\n var secondComponent = chroma * (1 - Math.abs(huePrime % 2 - 1));\n var red = 0;\n var green = 0;\n var blue = 0;\n if (huePrime >= 0 && huePrime < 1) {\n red = chroma;\n green = secondComponent;\n } else if (huePrime >= 1 && huePrime < 2) {\n red = secondComponent;\n green = chroma;\n } else if (huePrime >= 2 && huePrime < 3) {\n green = chroma;\n blue = secondComponent;\n } else if (huePrime >= 3 && huePrime < 4) {\n green = secondComponent;\n blue = chroma;\n } else if (huePrime >= 4 && huePrime < 5) {\n red = secondComponent;\n blue = chroma;\n } else if (huePrime >= 5 && huePrime < 6) {\n red = chroma;\n blue = secondComponent;\n }\n var lightnessModification = lightness - chroma / 2;\n var finalRed = red + lightnessModification;\n var finalGreen = green + lightnessModification;\n var finalBlue = blue + lightnessModification;\n return convert(finalRed, finalGreen, finalBlue);\n}\nvar _default = exports[\"default\"] = hslToRgb;\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\nvar namedColorMap = {\n aliceblue: 'f0f8ff',\n antiquewhite: 'faebd7',\n aqua: '00ffff',\n aquamarine: '7fffd4',\n azure: 'f0ffff',\n beige: 'f5f5dc',\n bisque: 'ffe4c4',\n black: '000',\n blanchedalmond: 'ffebcd',\n blue: '0000ff',\n blueviolet: '8a2be2',\n brown: 'a52a2a',\n burlywood: 'deb887',\n cadetblue: '5f9ea0',\n chartreuse: '7fff00',\n chocolate: 'd2691e',\n coral: 'ff7f50',\n cornflowerblue: '6495ed',\n cornsilk: 'fff8dc',\n crimson: 'dc143c',\n cyan: '00ffff',\n darkblue: '00008b',\n darkcyan: '008b8b',\n darkgoldenrod: 'b8860b',\n darkgray: 'a9a9a9',\n darkgreen: '006400',\n darkgrey: 'a9a9a9',\n darkkhaki: 'bdb76b',\n darkmagenta: '8b008b',\n darkolivegreen: '556b2f',\n darkorange: 'ff8c00',\n darkorchid: '9932cc',\n darkred: '8b0000',\n darksalmon: 'e9967a',\n darkseagreen: '8fbc8f',\n darkslateblue: '483d8b',\n darkslategray: '2f4f4f',\n darkslategrey: '2f4f4f',\n darkturquoise: '00ced1',\n darkviolet: '9400d3',\n deeppink: 'ff1493',\n deepskyblue: '00bfff',\n dimgray: '696969',\n dimgrey: '696969',\n dodgerblue: '1e90ff',\n firebrick: 'b22222',\n floralwhite: 'fffaf0',\n forestgreen: '228b22',\n fuchsia: 'ff00ff',\n gainsboro: 'dcdcdc',\n ghostwhite: 'f8f8ff',\n gold: 'ffd700',\n goldenrod: 'daa520',\n gray: '808080',\n green: '008000',\n greenyellow: 'adff2f',\n grey: '808080',\n honeydew: 'f0fff0',\n hotpink: 'ff69b4',\n indianred: 'cd5c5c',\n indigo: '4b0082',\n ivory: 'fffff0',\n khaki: 'f0e68c',\n lavender: 'e6e6fa',\n lavenderblush: 'fff0f5',\n lawngreen: '7cfc00',\n lemonchiffon: 'fffacd',\n lightblue: 'add8e6',\n lightcoral: 'f08080',\n lightcyan: 'e0ffff',\n lightgoldenrodyellow: 'fafad2',\n lightgray: 'd3d3d3',\n lightgreen: '90ee90',\n lightgrey: 'd3d3d3',\n lightpink: 'ffb6c1',\n lightsalmon: 'ffa07a',\n lightseagreen: '20b2aa',\n lightskyblue: '87cefa',\n lightslategray: '789',\n lightslategrey: '789',\n lightsteelblue: 'b0c4de',\n lightyellow: 'ffffe0',\n lime: '0f0',\n limegreen: '32cd32',\n linen: 'faf0e6',\n magenta: 'f0f',\n maroon: '800000',\n mediumaquamarine: '66cdaa',\n mediumblue: '0000cd',\n mediumorchid: 'ba55d3',\n mediumpurple: '9370db',\n mediumseagreen: '3cb371',\n mediumslateblue: '7b68ee',\n mediumspringgreen: '00fa9a',\n mediumturquoise: '48d1cc',\n mediumvioletred: 'c71585',\n midnightblue: '191970',\n mintcream: 'f5fffa',\n mistyrose: 'ffe4e1',\n moccasin: 'ffe4b5',\n navajowhite: 'ffdead',\n navy: '000080',\n oldlace: 'fdf5e6',\n olive: '808000',\n olivedrab: '6b8e23',\n orange: 'ffa500',\n orangered: 'ff4500',\n orchid: 'da70d6',\n palegoldenrod: 'eee8aa',\n palegreen: '98fb98',\n paleturquoise: 'afeeee',\n palevioletred: 'db7093',\n papayawhip: 'ffefd5',\n peachpuff: 'ffdab9',\n peru: 'cd853f',\n pink: 'ffc0cb',\n plum: 'dda0dd',\n powderblue: 'b0e0e6',\n purple: '800080',\n rebeccapurple: '639',\n red: 'f00',\n rosybrown: 'bc8f8f',\n royalblue: '4169e1',\n saddlebrown: '8b4513',\n salmon: 'fa8072',\n sandybrown: 'f4a460',\n seagreen: '2e8b57',\n seashell: 'fff5ee',\n sienna: 'a0522d',\n silver: 'c0c0c0',\n skyblue: '87ceeb',\n slateblue: '6a5acd',\n slategray: '708090',\n slategrey: '708090',\n snow: 'fffafa',\n springgreen: '00ff7f',\n steelblue: '4682b4',\n tan: 'd2b48c',\n teal: '008080',\n thistle: 'd8bfd8',\n tomato: 'ff6347',\n turquoise: '40e0d0',\n violet: 'ee82ee',\n wheat: 'f5deb3',\n white: 'fff',\n whitesmoke: 'f5f5f5',\n yellow: 'ff0',\n yellowgreen: '9acd32'\n};\n\n/**\n * Checks if a string is a CSS named color and returns its equivalent hex value, otherwise returns the original color.\n * @private\n */\nfunction nameToHex(color) {\n if (typeof color !== 'string') return color;\n var normalizedColorName = color.toLowerCase();\n return namedColorMap[normalizedColorName] ? \"#\" + namedColorMap[normalizedColorName] : color;\n}\nvar _default = exports[\"default\"] = nameToHex;\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\nfunction _wrapNativeSuper(Class) { var _cache = typeof Map === \"function\" ? new Map() : undefined; _wrapNativeSuper = function _wrapNativeSuper(Class) { if (Class === null || !_isNativeFunction(Class)) return Class; if (typeof Class !== \"function\") { throw new TypeError(\"Super expression must either be null or a function\"); } if (typeof _cache !== \"undefined\") { if (_cache.has(Class)) return _cache.get(Class); _cache.set(Class, Wrapper); } function Wrapper() { return _construct(Class, arguments, _getPrototypeOf(this).constructor); } Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } }); return _setPrototypeOf(Wrapper, Class); }; return _wrapNativeSuper(Class); }\nfunction _construct(t, e, r) { if (_isNativeReflectConstruct()) return Reflect.construct.apply(null, arguments); var o = [null]; o.push.apply(o, e); var p = new (t.bind.apply(t, o))(); return r && _setPrototypeOf(p, r.prototype), p; }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _isNativeFunction(fn) { try { return Function.toString.call(fn).indexOf(\"[native code]\") !== -1; } catch (e) { return typeof fn === \"function\"; } }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n// based on https://github.com/styled-components/styled-components/blob/fcf6f3804c57a14dd7984dfab7bc06ee2edca044/src/utils/error.js\n/**\n * Parse errors.md and turn it into a simple hash of code: message\n * @private\n */\nvar ERRORS = {\n \"1\": \"Passed invalid arguments to hsl, please pass multiple numbers e.g. hsl(360, 0.75, 0.4) or an object e.g. rgb({ hue: 255, saturation: 0.4, lightness: 0.75 }).\\n\\n\",\n \"2\": \"Passed invalid arguments to hsla, please pass multiple numbers e.g. hsla(360, 0.75, 0.4, 0.7) or an object e.g. rgb({ hue: 255, saturation: 0.4, lightness: 0.75, alpha: 0.7 }).\\n\\n\",\n \"3\": \"Passed an incorrect argument to a color function, please pass a string representation of a color.\\n\\n\",\n \"4\": \"Couldn't generate valid rgb string from %s, it returned %s.\\n\\n\",\n \"5\": \"Couldn't parse the color string. Please provide the color as a string in hex, rgb, rgba, hsl or hsla notation.\\n\\n\",\n \"6\": \"Passed invalid arguments to rgb, please pass multiple numbers e.g. rgb(255, 205, 100) or an object e.g. rgb({ red: 255, green: 205, blue: 100 }).\\n\\n\",\n \"7\": \"Passed invalid arguments to rgba, please pass multiple numbers e.g. rgb(255, 205, 100, 0.75) or an object e.g. rgb({ red: 255, green: 205, blue: 100, alpha: 0.75 }).\\n\\n\",\n \"8\": \"Passed invalid argument to toColorString, please pass a RgbColor, RgbaColor, HslColor or HslaColor object.\\n\\n\",\n \"9\": \"Please provide a number of steps to the modularScale helper.\\n\\n\",\n \"10\": \"Please pass a number or one of the predefined scales to the modularScale helper as the ratio.\\n\\n\",\n \"11\": \"Invalid value passed as base to modularScale, expected number or em string but got \\\"%s\\\"\\n\\n\",\n \"12\": \"Expected a string ending in \\\"px\\\" or a number passed as the first argument to %s(), got \\\"%s\\\" instead.\\n\\n\",\n \"13\": \"Expected a string ending in \\\"px\\\" or a number passed as the second argument to %s(), got \\\"%s\\\" instead.\\n\\n\",\n \"14\": \"Passed invalid pixel value (\\\"%s\\\") to %s(), please pass a value like \\\"12px\\\" or 12.\\n\\n\",\n \"15\": \"Passed invalid base value (\\\"%s\\\") to %s(), please pass a value like \\\"12px\\\" or 12.\\n\\n\",\n \"16\": \"You must provide a template to this method.\\n\\n\",\n \"17\": \"You passed an unsupported selector state to this method.\\n\\n\",\n \"18\": \"minScreen and maxScreen must be provided as stringified numbers with the same units.\\n\\n\",\n \"19\": \"fromSize and toSize must be provided as stringified numbers with the same units.\\n\\n\",\n \"20\": \"expects either an array of objects or a single object with the properties prop, fromSize, and toSize.\\n\\n\",\n \"21\": \"expects the objects in the first argument array to have the properties `prop`, `fromSize`, and `toSize`.\\n\\n\",\n \"22\": \"expects the first argument object to have the properties `prop`, `fromSize`, and `toSize`.\\n\\n\",\n \"23\": \"fontFace expects a name of a font-family.\\n\\n\",\n \"24\": \"fontFace expects either the path to the font file(s) or a name of a local copy.\\n\\n\",\n \"25\": \"fontFace expects localFonts to be an array.\\n\\n\",\n \"26\": \"fontFace expects fileFormats to be an array.\\n\\n\",\n \"27\": \"radialGradient requries at least 2 color-stops to properly render.\\n\\n\",\n \"28\": \"Please supply a filename to retinaImage() as the first argument.\\n\\n\",\n \"29\": \"Passed invalid argument to triangle, please pass correct pointingDirection e.g. 'right'.\\n\\n\",\n \"30\": \"Passed an invalid value to `height` or `width`. Please provide a pixel based unit.\\n\\n\",\n \"31\": \"The animation shorthand only takes 8 arguments. See the specification for more information: http://mdn.io/animation\\n\\n\",\n \"32\": \"To pass multiple animations please supply them in arrays, e.g. animation(['rotate', '2s'], ['move', '1s'])\\nTo pass a single animation please supply them in simple values, e.g. animation('rotate', '2s')\\n\\n\",\n \"33\": \"The animation shorthand arrays can only have 8 elements. See the specification for more information: http://mdn.io/animation\\n\\n\",\n \"34\": \"borderRadius expects a radius value as a string or number as the second argument.\\n\\n\",\n \"35\": \"borderRadius expects one of \\\"top\\\", \\\"bottom\\\", \\\"left\\\" or \\\"right\\\" as the first argument.\\n\\n\",\n \"36\": \"Property must be a string value.\\n\\n\",\n \"37\": \"Syntax Error at %s.\\n\\n\",\n \"38\": \"Formula contains a function that needs parentheses at %s.\\n\\n\",\n \"39\": \"Formula is missing closing parenthesis at %s.\\n\\n\",\n \"40\": \"Formula has too many closing parentheses at %s.\\n\\n\",\n \"41\": \"All values in a formula must have the same unit or be unitless.\\n\\n\",\n \"42\": \"Please provide a number of steps to the modularScale helper.\\n\\n\",\n \"43\": \"Please pass a number or one of the predefined scales to the modularScale helper as the ratio.\\n\\n\",\n \"44\": \"Invalid value passed as base to modularScale, expected number or em/rem string but got %s.\\n\\n\",\n \"45\": \"Passed invalid argument to hslToColorString, please pass a HslColor or HslaColor object.\\n\\n\",\n \"46\": \"Passed invalid argument to rgbToColorString, please pass a RgbColor or RgbaColor object.\\n\\n\",\n \"47\": \"minScreen and maxScreen must be provided as stringified numbers with the same units.\\n\\n\",\n \"48\": \"fromSize and toSize must be provided as stringified numbers with the same units.\\n\\n\",\n \"49\": \"Expects either an array of objects or a single object with the properties prop, fromSize, and toSize.\\n\\n\",\n \"50\": \"Expects the objects in the first argument array to have the properties prop, fromSize, and toSize.\\n\\n\",\n \"51\": \"Expects the first argument object to have the properties prop, fromSize, and toSize.\\n\\n\",\n \"52\": \"fontFace expects either the path to the font file(s) or a name of a local copy.\\n\\n\",\n \"53\": \"fontFace expects localFonts to be an array.\\n\\n\",\n \"54\": \"fontFace expects fileFormats to be an array.\\n\\n\",\n \"55\": \"fontFace expects a name of a font-family.\\n\\n\",\n \"56\": \"linearGradient requries at least 2 color-stops to properly render.\\n\\n\",\n \"57\": \"radialGradient requries at least 2 color-stops to properly render.\\n\\n\",\n \"58\": \"Please supply a filename to retinaImage() as the first argument.\\n\\n\",\n \"59\": \"Passed invalid argument to triangle, please pass correct pointingDirection e.g. 'right'.\\n\\n\",\n \"60\": \"Passed an invalid value to `height` or `width`. Please provide a pixel based unit.\\n\\n\",\n \"61\": \"Property must be a string value.\\n\\n\",\n \"62\": \"borderRadius expects a radius value as a string or number as the second argument.\\n\\n\",\n \"63\": \"borderRadius expects one of \\\"top\\\", \\\"bottom\\\", \\\"left\\\" or \\\"right\\\" as the first argument.\\n\\n\",\n \"64\": \"The animation shorthand only takes 8 arguments. See the specification for more information: http://mdn.io/animation.\\n\\n\",\n \"65\": \"To pass multiple animations please supply them in arrays, e.g. animation(['rotate', '2s'], ['move', '1s'])\\\\nTo pass a single animation please supply them in simple values, e.g. animation('rotate', '2s').\\n\\n\",\n \"66\": \"The animation shorthand arrays can only have 8 elements. See the specification for more information: http://mdn.io/animation.\\n\\n\",\n \"67\": \"You must provide a template to this method.\\n\\n\",\n \"68\": \"You passed an unsupported selector state to this method.\\n\\n\",\n \"69\": \"Expected a string ending in \\\"px\\\" or a number passed as the first argument to %s(), got %s instead.\\n\\n\",\n \"70\": \"Expected a string ending in \\\"px\\\" or a number passed as the second argument to %s(), got %s instead.\\n\\n\",\n \"71\": \"Passed invalid pixel value %s to %s(), please pass a value like \\\"12px\\\" or 12.\\n\\n\",\n \"72\": \"Passed invalid base value %s to %s(), please pass a value like \\\"12px\\\" or 12.\\n\\n\",\n \"73\": \"Please provide a valid CSS variable.\\n\\n\",\n \"74\": \"CSS variable not found and no default was provided.\\n\\n\",\n \"75\": \"important requires a valid style object, got a %s instead.\\n\\n\",\n \"76\": \"fromSize and toSize must be provided as stringified numbers with the same units as minScreen and maxScreen.\\n\\n\",\n \"77\": \"remToPx expects a value in \\\"rem\\\" but you provided it in \\\"%s\\\".\\n\\n\",\n \"78\": \"base must be set in \\\"px\\\" or \\\"%\\\" but you set it in \\\"%s\\\".\\n\"\n};\n\n/**\n * super basic version of sprintf\n * @private\n */\nfunction format() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n var a = args[0];\n var b = [];\n var c;\n for (c = 1; c < args.length; c += 1) {\n b.push(args[c]);\n }\n b.forEach(function (d) {\n a = a.replace(/%[a-z]/, d);\n });\n return a;\n}\n\n/**\n * Create an error file out of errors.md for development and a simple web link to the full errors\n * in production mode.\n * @private\n */\nvar PolishedError = exports[\"default\"] = /*#__PURE__*/function (_Error) {\n _inheritsLoose(PolishedError, _Error);\n function PolishedError(code) {\n var _this;\n if (process.env.NODE_ENV === 'production') {\n _this = _Error.call(this, \"An error occurred. See https://github.com/styled-components/polished/blob/main/src/internalHelpers/errors.md#\" + code + \" for more information.\") || this;\n } else {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n _this = _Error.call(this, format.apply(void 0, [ERRORS[code]].concat(args))) || this;\n }\n return _assertThisInitialized(_this);\n }\n return PolishedError;\n}( /*#__PURE__*/_wrapNativeSuper(Error));\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = parseToRgb;\nvar _hslToRgb = _interopRequireDefault(require(\"../internalHelpers/_hslToRgb\"));\nvar _nameToHex = _interopRequireDefault(require(\"../internalHelpers/_nameToHex\"));\nvar _errors = _interopRequireDefault(require(\"../internalHelpers/_errors\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\nvar hexRegex = /^#[a-fA-F0-9]{6}$/;\nvar hexRgbaRegex = /^#[a-fA-F0-9]{8}$/;\nvar reducedHexRegex = /^#[a-fA-F0-9]{3}$/;\nvar reducedRgbaHexRegex = /^#[a-fA-F0-9]{4}$/;\nvar rgbRegex = /^rgb\\(\\s*(\\d{1,3})\\s*(?:,)?\\s*(\\d{1,3})\\s*(?:,)?\\s*(\\d{1,3})\\s*\\)$/i;\nvar rgbaRegex = /^rgb(?:a)?\\(\\s*(\\d{1,3})\\s*(?:,)?\\s*(\\d{1,3})\\s*(?:,)?\\s*(\\d{1,3})\\s*(?:,|\\/)\\s*([-+]?\\d*[.]?\\d+[%]?)\\s*\\)$/i;\nvar hslRegex = /^hsl\\(\\s*(\\d{0,3}[.]?[0-9]+(?:deg)?)\\s*(?:,)?\\s*(\\d{1,3}[.]?[0-9]?)%\\s*(?:,)?\\s*(\\d{1,3}[.]?[0-9]?)%\\s*\\)$/i;\nvar hslaRegex = /^hsl(?:a)?\\(\\s*(\\d{0,3}[.]?[0-9]+(?:deg)?)\\s*(?:,)?\\s*(\\d{1,3}[.]?[0-9]?)%\\s*(?:,)?\\s*(\\d{1,3}[.]?[0-9]?)%\\s*(?:,|\\/)\\s*([-+]?\\d*[.]?\\d+[%]?)\\s*\\)$/i;\n\n/**\n * Returns an RgbColor or RgbaColor object. This utility function is only useful\n * if want to extract a color component. With the color util `toColorString` you\n * can convert a RgbColor or RgbaColor object back to a string.\n *\n * @example\n * // Assigns `{ red: 255, green: 0, blue: 0 }` to color1\n * const color1 = parseToRgb('rgb(255, 0, 0)');\n * // Assigns `{ red: 92, green: 102, blue: 112, alpha: 0.75 }` to color2\n * const color2 = parseToRgb('hsla(210, 10%, 40%, 0.75)');\n */\nfunction parseToRgb(color) {\n if (typeof color !== 'string') {\n throw new _errors[\"default\"](3);\n }\n var normalizedColor = (0, _nameToHex[\"default\"])(color);\n if (normalizedColor.match(hexRegex)) {\n return {\n red: parseInt(\"\" + normalizedColor[1] + normalizedColor[2], 16),\n green: parseInt(\"\" + normalizedColor[3] + normalizedColor[4], 16),\n blue: parseInt(\"\" + normalizedColor[5] + normalizedColor[6], 16)\n };\n }\n if (normalizedColor.match(hexRgbaRegex)) {\n var alpha = parseFloat((parseInt(\"\" + normalizedColor[7] + normalizedColor[8], 16) / 255).toFixed(2));\n return {\n red: parseInt(\"\" + normalizedColor[1] + normalizedColor[2], 16),\n green: parseInt(\"\" + normalizedColor[3] + normalizedColor[4], 16),\n blue: parseInt(\"\" + normalizedColor[5] + normalizedColor[6], 16),\n alpha: alpha\n };\n }\n if (normalizedColor.match(reducedHexRegex)) {\n return {\n red: parseInt(\"\" + normalizedColor[1] + normalizedColor[1], 16),\n green: parseInt(\"\" + normalizedColor[2] + normalizedColor[2], 16),\n blue: parseInt(\"\" + normalizedColor[3] + normalizedColor[3], 16)\n };\n }\n if (normalizedColor.match(reducedRgbaHexRegex)) {\n var _alpha = parseFloat((parseInt(\"\" + normalizedColor[4] + normalizedColor[4], 16) / 255).toFixed(2));\n return {\n red: parseInt(\"\" + normalizedColor[1] + normalizedColor[1], 16),\n green: parseInt(\"\" + normalizedColor[2] + normalizedColor[2], 16),\n blue: parseInt(\"\" + normalizedColor[3] + normalizedColor[3], 16),\n alpha: _alpha\n };\n }\n var rgbMatched = rgbRegex.exec(normalizedColor);\n if (rgbMatched) {\n return {\n red: parseInt(\"\" + rgbMatched[1], 10),\n green: parseInt(\"\" + rgbMatched[2], 10),\n blue: parseInt(\"\" + rgbMatched[3], 10)\n };\n }\n var rgbaMatched = rgbaRegex.exec(normalizedColor.substring(0, 50));\n if (rgbaMatched) {\n return {\n red: parseInt(\"\" + rgbaMatched[1], 10),\n green: parseInt(\"\" + rgbaMatched[2], 10),\n blue: parseInt(\"\" + rgbaMatched[3], 10),\n alpha: parseFloat(\"\" + rgbaMatched[4]) > 1 ? parseFloat(\"\" + rgbaMatched[4]) / 100 : parseFloat(\"\" + rgbaMatched[4])\n };\n }\n var hslMatched = hslRegex.exec(normalizedColor);\n if (hslMatched) {\n var hue = parseInt(\"\" + hslMatched[1], 10);\n var saturation = parseInt(\"\" + hslMatched[2], 10) / 100;\n var lightness = parseInt(\"\" + hslMatched[3], 10) / 100;\n var rgbColorString = \"rgb(\" + (0, _hslToRgb[\"default\"])(hue, saturation, lightness) + \")\";\n var hslRgbMatched = rgbRegex.exec(rgbColorString);\n if (!hslRgbMatched) {\n throw new _errors[\"default\"](4, normalizedColor, rgbColorString);\n }\n return {\n red: parseInt(\"\" + hslRgbMatched[1], 10),\n green: parseInt(\"\" + hslRgbMatched[2], 10),\n blue: parseInt(\"\" + hslRgbMatched[3], 10)\n };\n }\n var hslaMatched = hslaRegex.exec(normalizedColor.substring(0, 50));\n if (hslaMatched) {\n var _hue = parseInt(\"\" + hslaMatched[1], 10);\n var _saturation = parseInt(\"\" + hslaMatched[2], 10) / 100;\n var _lightness = parseInt(\"\" + hslaMatched[3], 10) / 100;\n var _rgbColorString = \"rgb(\" + (0, _hslToRgb[\"default\"])(_hue, _saturation, _lightness) + \")\";\n var _hslRgbMatched = rgbRegex.exec(_rgbColorString);\n if (!_hslRgbMatched) {\n throw new _errors[\"default\"](4, normalizedColor, _rgbColorString);\n }\n return {\n red: parseInt(\"\" + _hslRgbMatched[1], 10),\n green: parseInt(\"\" + _hslRgbMatched[2], 10),\n blue: parseInt(\"\" + _hslRgbMatched[3], 10),\n alpha: parseFloat(\"\" + hslaMatched[4]) > 1 ? parseFloat(\"\" + hslaMatched[4]) / 100 : parseFloat(\"\" + hslaMatched[4])\n };\n }\n throw new _errors[\"default\"](5);\n}\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = getLuminance;\nvar _parseToRgb = _interopRequireDefault(require(\"./parseToRgb\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n/**\n * Returns a number (float) representing the luminance of a color.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * background: getLuminance('#CCCD64') >= getLuminance('#0000ff') ? '#CCCD64' : '#0000ff',\n * background: getLuminance('rgba(58, 133, 255, 1)') >= getLuminance('rgba(255, 57, 149, 1)') ?\n * 'rgba(58, 133, 255, 1)' :\n * 'rgba(255, 57, 149, 1)',\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * background: ${getLuminance('#CCCD64') >= getLuminance('#0000ff') ? '#CCCD64' : '#0000ff'};\n * background: ${getLuminance('rgba(58, 133, 255, 1)') >= getLuminance('rgba(255, 57, 149, 1)') ?\n * 'rgba(58, 133, 255, 1)' :\n * 'rgba(255, 57, 149, 1)'};\n *\n * // CSS in JS Output\n *\n * div {\n * background: \"#CCCD64\";\n * background: \"rgba(58, 133, 255, 1)\";\n * }\n */\nfunction getLuminance(color) {\n if (color === 'transparent') return 0;\n var rgbColor = (0, _parseToRgb[\"default\"])(color);\n var _Object$keys$map = Object.keys(rgbColor).map(function (key) {\n var channel = rgbColor[key] / 255;\n return channel <= 0.03928 ? channel / 12.92 : Math.pow((channel + 0.055) / 1.055, 2.4);\n }),\n r = _Object$keys$map[0],\n g = _Object$keys$map[1],\n b = _Object$keys$map[2];\n return parseFloat((0.2126 * r + 0.7152 * g + 0.0722 * b).toFixed(3));\n}\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = curry;\n// Type definitions taken from https://github.com/gcanti/flow-static-land/blob/master/src/Fun.js\n// eslint-disable-next-line no-unused-vars\n// eslint-disable-next-line no-unused-vars\n// eslint-disable-next-line no-redeclare\nfunction curried(f, length, acc) {\n return function fn() {\n // eslint-disable-next-line prefer-rest-params\n var combined = acc.concat(Array.prototype.slice.call(arguments));\n return combined.length >= length ? f.apply(this, combined) : curried(f, length, combined);\n };\n}\n\n// eslint-disable-next-line no-redeclare\nfunction curry(f) {\n // eslint-disable-line no-redeclare\n return curried(f, f.length, []);\n}\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\nfunction guard(lowerBoundary, upperBoundary, value) {\n return Math.max(lowerBoundary, Math.min(upperBoundary, value));\n}\nvar _default = exports[\"default\"] = guard;\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\nfunction rgbToHsl(color) {\n // make sure rgb are contained in a set of [0, 255]\n var red = color.red / 255;\n var green = color.green / 255;\n var blue = color.blue / 255;\n var max = Math.max(red, green, blue);\n var min = Math.min(red, green, blue);\n var lightness = (max + min) / 2;\n if (max === min) {\n // achromatic\n if (color.alpha !== undefined) {\n return {\n hue: 0,\n saturation: 0,\n lightness: lightness,\n alpha: color.alpha\n };\n } else {\n return {\n hue: 0,\n saturation: 0,\n lightness: lightness\n };\n }\n }\n var hue;\n var delta = max - min;\n var saturation = lightness > 0.5 ? delta / (2 - max - min) : delta / (max + min);\n switch (max) {\n case red:\n hue = (green - blue) / delta + (green < blue ? 6 : 0);\n break;\n case green:\n hue = (blue - red) / delta + 2;\n break;\n default:\n // blue case\n hue = (red - green) / delta + 4;\n break;\n }\n hue *= 60;\n if (color.alpha !== undefined) {\n return {\n hue: hue,\n saturation: saturation,\n lightness: lightness,\n alpha: color.alpha\n };\n }\n return {\n hue: hue,\n saturation: saturation,\n lightness: lightness\n };\n}\nvar _default = exports[\"default\"] = rgbToHsl;\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = parseToHsl;\nvar _parseToRgb = _interopRequireDefault(require(\"./parseToRgb\"));\nvar _rgbToHsl = _interopRequireDefault(require(\"../internalHelpers/_rgbToHsl\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n/**\n * Returns an HslColor or HslaColor object. This utility function is only useful\n * if want to extract a color component. With the color util `toColorString` you\n * can convert a HslColor or HslaColor object back to a string.\n *\n * @example\n * // Assigns `{ hue: 0, saturation: 1, lightness: 0.5 }` to color1\n * const color1 = parseToHsl('rgb(255, 0, 0)');\n * // Assigns `{ hue: 128, saturation: 1, lightness: 0.5, alpha: 0.75 }` to color2\n * const color2 = parseToHsl('hsla(128, 100%, 50%, 0.75)');\n */\nfunction parseToHsl(color) {\n // Note: At a later stage we can optimize this function as right now a hsl\n // color would be parsed converted to rgb values and converted back to hsl.\n return (0, _rgbToHsl[\"default\"])((0, _parseToRgb[\"default\"])(color));\n}\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n/**\n * Reduces hex values if possible e.g. #ff8866 to #f86\n * @private\n */\nvar reduceHexValue = function reduceHexValue(value) {\n if (value.length === 7 && value[1] === value[2] && value[3] === value[4] && value[5] === value[6]) {\n return \"#\" + value[1] + value[3] + value[5];\n }\n return value;\n};\nvar _default = exports[\"default\"] = reduceHexValue;\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\nfunction numberToHex(value) {\n var hex = value.toString(16);\n return hex.length === 1 ? \"0\" + hex : hex;\n}\nvar _default = exports[\"default\"] = numberToHex;\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\nvar _hslToRgb = _interopRequireDefault(require(\"./_hslToRgb\"));\nvar _reduceHexValue = _interopRequireDefault(require(\"./_reduceHexValue\"));\nvar _numberToHex = _interopRequireDefault(require(\"./_numberToHex\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\nfunction colorToHex(color) {\n return (0, _numberToHex[\"default\"])(Math.round(color * 255));\n}\nfunction convertToHex(red, green, blue) {\n return (0, _reduceHexValue[\"default\"])(\"#\" + colorToHex(red) + colorToHex(green) + colorToHex(blue));\n}\nfunction hslToHex(hue, saturation, lightness) {\n return (0, _hslToRgb[\"default\"])(hue, saturation, lightness, convertToHex);\n}\nvar _default = exports[\"default\"] = hslToHex;\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = hsl;\nvar _hslToHex = _interopRequireDefault(require(\"../internalHelpers/_hslToHex\"));\nvar _errors = _interopRequireDefault(require(\"../internalHelpers/_errors\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n/**\n * Returns a string value for the color. The returned result is the smallest possible hex notation.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * background: hsl(359, 0.75, 0.4),\n * background: hsl({ hue: 360, saturation: 0.75, lightness: 0.4 }),\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * background: ${hsl(359, 0.75, 0.4)};\n * background: ${hsl({ hue: 360, saturation: 0.75, lightness: 0.4 })};\n * `\n *\n * // CSS in JS Output\n *\n * element {\n * background: \"#b3191c\";\n * background: \"#b3191c\";\n * }\n */\nfunction hsl(value, saturation, lightness) {\n if (typeof value === 'number' && typeof saturation === 'number' && typeof lightness === 'number') {\n return (0, _hslToHex[\"default\"])(value, saturation, lightness);\n } else if (typeof value === 'object' && saturation === undefined && lightness === undefined) {\n return (0, _hslToHex[\"default\"])(value.hue, value.saturation, value.lightness);\n }\n throw new _errors[\"default\"](1);\n}\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = hsla;\nvar _hslToHex = _interopRequireDefault(require(\"../internalHelpers/_hslToHex\"));\nvar _hslToRgb = _interopRequireDefault(require(\"../internalHelpers/_hslToRgb\"));\nvar _errors = _interopRequireDefault(require(\"../internalHelpers/_errors\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n/**\n * Returns a string value for the color. The returned result is the smallest possible rgba or hex notation.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * background: hsla(359, 0.75, 0.4, 0.7),\n * background: hsla({ hue: 360, saturation: 0.75, lightness: 0.4, alpha: 0,7 }),\n * background: hsla(359, 0.75, 0.4, 1),\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * background: ${hsla(359, 0.75, 0.4, 0.7)};\n * background: ${hsla({ hue: 360, saturation: 0.75, lightness: 0.4, alpha: 0,7 })};\n * background: ${hsla(359, 0.75, 0.4, 1)};\n * `\n *\n * // CSS in JS Output\n *\n * element {\n * background: \"rgba(179,25,28,0.7)\";\n * background: \"rgba(179,25,28,0.7)\";\n * background: \"#b3191c\";\n * }\n */\nfunction hsla(value, saturation, lightness, alpha) {\n if (typeof value === 'number' && typeof saturation === 'number' && typeof lightness === 'number' && typeof alpha === 'number') {\n return alpha >= 1 ? (0, _hslToHex[\"default\"])(value, saturation, lightness) : \"rgba(\" + (0, _hslToRgb[\"default\"])(value, saturation, lightness) + \",\" + alpha + \")\";\n } else if (typeof value === 'object' && saturation === undefined && lightness === undefined && alpha === undefined) {\n return value.alpha >= 1 ? (0, _hslToHex[\"default\"])(value.hue, value.saturation, value.lightness) : \"rgba(\" + (0, _hslToRgb[\"default\"])(value.hue, value.saturation, value.lightness) + \",\" + value.alpha + \")\";\n }\n throw new _errors[\"default\"](2);\n}\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = rgb;\nvar _reduceHexValue = _interopRequireDefault(require(\"../internalHelpers/_reduceHexValue\"));\nvar _numberToHex = _interopRequireDefault(require(\"../internalHelpers/_numberToHex\"));\nvar _errors = _interopRequireDefault(require(\"../internalHelpers/_errors\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n/**\n * Returns a string value for the color. The returned result is the smallest possible hex notation.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * background: rgb(255, 205, 100),\n * background: rgb({ red: 255, green: 205, blue: 100 }),\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * background: ${rgb(255, 205, 100)};\n * background: ${rgb({ red: 255, green: 205, blue: 100 })};\n * `\n *\n * // CSS in JS Output\n *\n * element {\n * background: \"#ffcd64\";\n * background: \"#ffcd64\";\n * }\n */\nfunction rgb(value, green, blue) {\n if (typeof value === 'number' && typeof green === 'number' && typeof blue === 'number') {\n return (0, _reduceHexValue[\"default\"])(\"#\" + (0, _numberToHex[\"default\"])(value) + (0, _numberToHex[\"default\"])(green) + (0, _numberToHex[\"default\"])(blue));\n } else if (typeof value === 'object' && green === undefined && blue === undefined) {\n return (0, _reduceHexValue[\"default\"])(\"#\" + (0, _numberToHex[\"default\"])(value.red) + (0, _numberToHex[\"default\"])(value.green) + (0, _numberToHex[\"default\"])(value.blue));\n }\n throw new _errors[\"default\"](6);\n}\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = rgba;\nvar _parseToRgb = _interopRequireDefault(require(\"./parseToRgb\"));\nvar _rgb = _interopRequireDefault(require(\"./rgb\"));\nvar _errors = _interopRequireDefault(require(\"../internalHelpers/_errors\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n/**\n * Returns a string value for the color. The returned result is the smallest possible rgba or hex notation.\n *\n * Can also be used to fade a color by passing a hex value or named CSS color along with an alpha value.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * background: rgba(255, 205, 100, 0.7),\n * background: rgba({ red: 255, green: 205, blue: 100, alpha: 0.7 }),\n * background: rgba(255, 205, 100, 1),\n * background: rgba('#ffffff', 0.4),\n * background: rgba('black', 0.7),\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * background: ${rgba(255, 205, 100, 0.7)};\n * background: ${rgba({ red: 255, green: 205, blue: 100, alpha: 0.7 })};\n * background: ${rgba(255, 205, 100, 1)};\n * background: ${rgba('#ffffff', 0.4)};\n * background: ${rgba('black', 0.7)};\n * `\n *\n * // CSS in JS Output\n *\n * element {\n * background: \"rgba(255,205,100,0.7)\";\n * background: \"rgba(255,205,100,0.7)\";\n * background: \"#ffcd64\";\n * background: \"rgba(255,255,255,0.4)\";\n * background: \"rgba(0,0,0,0.7)\";\n * }\n */\nfunction rgba(firstValue, secondValue, thirdValue, fourthValue) {\n if (typeof firstValue === 'string' && typeof secondValue === 'number') {\n var rgbValue = (0, _parseToRgb[\"default\"])(firstValue);\n return \"rgba(\" + rgbValue.red + \",\" + rgbValue.green + \",\" + rgbValue.blue + \",\" + secondValue + \")\";\n } else if (typeof firstValue === 'number' && typeof secondValue === 'number' && typeof thirdValue === 'number' && typeof fourthValue === 'number') {\n return fourthValue >= 1 ? (0, _rgb[\"default\"])(firstValue, secondValue, thirdValue) : \"rgba(\" + firstValue + \",\" + secondValue + \",\" + thirdValue + \",\" + fourthValue + \")\";\n } else if (typeof firstValue === 'object' && secondValue === undefined && thirdValue === undefined && fourthValue === undefined) {\n return firstValue.alpha >= 1 ? (0, _rgb[\"default\"])(firstValue.red, firstValue.green, firstValue.blue) : \"rgba(\" + firstValue.red + \",\" + firstValue.green + \",\" + firstValue.blue + \",\" + firstValue.alpha + \")\";\n }\n throw new _errors[\"default\"](7);\n}\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = toColorString;\nvar _hsl = _interopRequireDefault(require(\"./hsl\"));\nvar _hsla = _interopRequireDefault(require(\"./hsla\"));\nvar _rgb = _interopRequireDefault(require(\"./rgb\"));\nvar _rgba = _interopRequireDefault(require(\"./rgba\"));\nvar _errors = _interopRequireDefault(require(\"../internalHelpers/_errors\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\nvar isRgb = function isRgb(color) {\n return typeof color.red === 'number' && typeof color.green === 'number' && typeof color.blue === 'number' && (typeof color.alpha !== 'number' || typeof color.alpha === 'undefined');\n};\nvar isRgba = function isRgba(color) {\n return typeof color.red === 'number' && typeof color.green === 'number' && typeof color.blue === 'number' && typeof color.alpha === 'number';\n};\nvar isHsl = function isHsl(color) {\n return typeof color.hue === 'number' && typeof color.saturation === 'number' && typeof color.lightness === 'number' && (typeof color.alpha !== 'number' || typeof color.alpha === 'undefined');\n};\nvar isHsla = function isHsla(color) {\n return typeof color.hue === 'number' && typeof color.saturation === 'number' && typeof color.lightness === 'number' && typeof color.alpha === 'number';\n};\n\n/**\n * Converts a RgbColor, RgbaColor, HslColor or HslaColor object to a color string.\n * This util is useful in case you only know on runtime which color object is\n * used. Otherwise we recommend to rely on `rgb`, `rgba`, `hsl` or `hsla`.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * background: toColorString({ red: 255, green: 205, blue: 100 }),\n * background: toColorString({ red: 255, green: 205, blue: 100, alpha: 0.72 }),\n * background: toColorString({ hue: 240, saturation: 1, lightness: 0.5 }),\n * background: toColorString({ hue: 360, saturation: 0.75, lightness: 0.4, alpha: 0.72 }),\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * background: ${toColorString({ red: 255, green: 205, blue: 100 })};\n * background: ${toColorString({ red: 255, green: 205, blue: 100, alpha: 0.72 })};\n * background: ${toColorString({ hue: 240, saturation: 1, lightness: 0.5 })};\n * background: ${toColorString({ hue: 360, saturation: 0.75, lightness: 0.4, alpha: 0.72 })};\n * `\n *\n * // CSS in JS Output\n * element {\n * background: \"#ffcd64\";\n * background: \"rgba(255,205,100,0.72)\";\n * background: \"#00f\";\n * background: \"rgba(179,25,25,0.72)\";\n * }\n */\n\nfunction toColorString(color) {\n if (typeof color !== 'object') throw new _errors[\"default\"](8);\n if (isRgba(color)) return (0, _rgba[\"default\"])(color);\n if (isRgb(color)) return (0, _rgb[\"default\"])(color);\n if (isHsla(color)) return (0, _hsla[\"default\"])(color);\n if (isHsl(color)) return (0, _hsl[\"default\"])(color);\n throw new _errors[\"default\"](8);\n}\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\nvar _curry = _interopRequireDefault(require(\"../internalHelpers/_curry\"));\nvar _guard = _interopRequireDefault(require(\"../internalHelpers/_guard\"));\nvar _parseToHsl = _interopRequireDefault(require(\"./parseToHsl\"));\nvar _toColorString = _interopRequireDefault(require(\"./toColorString\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n/**\n * Returns a string value for the darkened color.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * background: darken(0.2, '#FFCD64'),\n * background: darken('0.2', 'rgba(255,205,100,0.7)'),\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * background: ${darken(0.2, '#FFCD64')};\n * background: ${darken('0.2', 'rgba(255,205,100,0.7)')};\n * `\n *\n * // CSS in JS Output\n *\n * element {\n * background: \"#ffbd31\";\n * background: \"rgba(255,189,49,0.7)\";\n * }\n */\nfunction darken(amount, color) {\n if (color === 'transparent') return color;\n var hslColor = (0, _parseToHsl[\"default\"])(color);\n return (0, _toColorString[\"default\"])(_extends({}, hslColor, {\n lightness: (0, _guard[\"default\"])(0, 1, hslColor.lightness - parseFloat(amount))\n }));\n}\n\n// prettier-ignore\nvar curriedDarken = (0, _curry[\"default\"] /* ::<number | string, string, string> */)(darken);\nvar _default = exports[\"default\"] = curriedDarken;\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\nvar _curry = _interopRequireDefault(require(\"../internalHelpers/_curry\"));\nvar _guard = _interopRequireDefault(require(\"../internalHelpers/_guard\"));\nvar _parseToHsl = _interopRequireDefault(require(\"./parseToHsl\"));\nvar _toColorString = _interopRequireDefault(require(\"./toColorString\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n/**\n * Returns a string value for the lightened color.\n *\n * @example\n * // Styles as object usage\n * const styles = {\n * background: lighten(0.2, '#CCCD64'),\n * background: lighten('0.2', 'rgba(204,205,100,0.7)'),\n * }\n *\n * // styled-components usage\n * const div = styled.div`\n * background: ${lighten(0.2, '#FFCD64')};\n * background: ${lighten('0.2', 'rgba(204,205,100,0.7)')};\n * `\n *\n * // CSS in JS Output\n *\n * element {\n * background: \"#e5e6b1\";\n * background: \"rgba(229,230,177,0.7)\";\n * }\n */\nfunction lighten(amount, color) {\n if (color === 'transparent') return color;\n var hslColor = (0, _parseToHsl[\"default\"])(color);\n return (0, _toColorString[\"default\"])(_extends({}, hslColor, {\n lightness: (0, _guard[\"default\"])(0, 1, hslColor.lightness + parseFloat(amount))\n }));\n}\n\n// prettier-ignore\nvar curriedLighten = (0, _curry[\"default\"] /* ::<number | string, string, string> */)(lighten);\nvar _default = exports[\"default\"] = curriedLighten;\nmodule.exports = exports.default;","import styles from './iframe-widget-styles.css?inline';\n\nimport type { Config } from '@brainfish-ai/widgets-common';\nimport getLuminance from 'polished/lib/color/getLuminance';\nimport darken from 'polished/lib/color/darken';\nimport lighten from 'polished/lib/color/lighten';\nimport { TRIGGER_BUTTON_CLASS } from '../constants/classes';\n\nfunction insertStyles(\n primaryColor: string = '#000',\n foreground: string = 'FFF'\n) {\n const style = document.createElement('style');\n style.attributes.setNamedItem(document.createAttribute('data-widget-styles'));\n const isLightButtonColor = getLuminance(primaryColor) > 0.5;\n\n style.textContent = `\n ${styles}\n .${TRIGGER_BUTTON_CLASS} { background: ${primaryColor}; }\n .${TRIGGER_BUTTON_CLASS}:hover {\n background: ${\n isLightButtonColor\n ? darken(0.05, primaryColor)\n : lighten(0.05, primaryColor)\n };\n }\n .trigger-button-icon { color: ${foreground}; }\n `;\n\n document.head.appendChild(style);\n}\n\nexport function insertStylesIfNeeded(config: Config) {\n if (!document.querySelector('style[data-widget-styles]')) {\n const buttonColor = config?.theme?.inputButtonBgColor || '#007bff';\n const iconColor = config?.theme?.textBaseColor || '#ffffff';\n insertStyles(buttonColor, iconColor);\n }\n}\n","export function initColorSchemeListener(\n iframe: HTMLIFrameElement,\n signal: AbortSignal\n) {\n const updateIframeBodyClass = (isDarkMode: boolean) => {\n iframe.contentWindow?.postMessage(\n { type: 'UPDATE_BODY_CLASS', isDarkMode },\n '*'\n );\n };\n\n const checkAndUpdateDarkMode = () => {\n const isDarkMode = document.body.classList.contains('dark');\n updateIframeBodyClass(isDarkMode);\n };\n\n const observeBodyClassChanges = () => {\n const observer = new MutationObserver(checkAndUpdateDarkMode);\n observer.observe(document.body, {\n attributes: true,\n attributeFilter: ['class'],\n });\n signal.addEventListener('abort', () => observer.disconnect());\n };\n\n // Initial check\n checkAndUpdateDarkMode();\n\n // Observe class changes on document.body\n observeBodyClassChanges();\n}\n","import { IframeStateManager } from '../managers/IframeStateManager';\nimport { MOBILE_BREAKPOINT } from '../constants/breakpoints';\n\nexport function observeColorSchemeChanges(\n iframe: HTMLIFrameElement,\n signal: AbortSignal\n) {\n const updateIframeBodyClass = (isMobile: boolean) => {\n const message = { type: 'UPDATE_BODY_CLASS', isMobile };\n iframe.contentWindow?.postMessage(message, '*');\n\n // if isMobile, and the widget is closed, show the trigger button\n if (isMobile) {\n if (IframeStateManager.isWidgetOpen) {\n IframeStateManager.hideTriggerButton();\n } else {\n IframeStateManager.showTriggerButton();\n }\n }\n };\n\n let resizeTimeout: number | undefined;\n\n const checkAndUpdateIsMobile = () => {\n const isMobile = document.body.clientWidth <= MOBILE_BREAKPOINT;\n updateIframeBodyClass(isMobile);\n };\n\n const debouncedCheckAndUpdateIsMobile = () => {\n if (resizeTimeout) {\n clearTimeout(resizeTimeout);\n }\n resizeTimeout = window.setTimeout(checkAndUpdateIsMobile, 300);\n };\n\n const observeBodyResize = () => {\n const resizeObserver = new ResizeObserver(debouncedCheckAndUpdateIsMobile);\n\n resizeObserver.observe(document.body);\n\n signal.addEventListener('abort', () => resizeObserver.disconnect());\n };\n\n // Initial check\n checkAndUpdateIsMobile();\n\n // Observe size changes on document.body\n observeBodyResize();\n}\n","export function base64Encode(text: string): string {\n const encoder = new TextEncoder();\n const uint8Array = encoder.encode(text);\n\n if (typeof window !== 'undefined' && typeof window.btoa === 'function') {\n // Browser environment\n const binaryString = Array.from(uint8Array, (byte) =>\n String.fromCharCode(byte)\n ).join('');\n return btoa(binaryString);\n }\n\n if (typeof Buffer !== 'undefined') {\n // Node.js environment\n return Buffer.from(uint8Array).toString('base64');\n }\n\n throw new Error('[utils.base64Encode]: Unsupported environment');\n}\n\nexport const base64Decode = (text: string): string => {\n if (typeof window !== 'undefined' && typeof window.atob === 'function') {\n // Browser environment\n const binaryString = atob(text);\n const len = binaryString.length;\n const bytes = new Uint8Array(len);\n for (let i = 0; i < len; i++) {\n bytes[i] = binaryString.charCodeAt(i);\n }\n const decoder = new TextDecoder();\n return decoder.decode(bytes);\n }\n\n if (typeof Buffer !== 'undefined') {\n // Node.js environment\n return Buffer.from(text, 'base64').toString('utf-8');\n }\n\n throw new Error('[utils.base64Decode]: Unsupported environment');\n};\n","import type { Config } from '@brainfish-ai/widgets-common';\nimport { sendBrainfishWidgetError } from '../utils/sendBrainfishError';\nimport { getApiHost, getWidgetHost } from '../utils/getApiHost';\nimport { createTriggerButton } from './components/TriggerButton';\nimport { createIframeContainer } from './components/IframeContainer';\nimport { initMessageListener } from './listeners/initMessageListener';\nimport { insertStylesIfNeeded } from './utils/insertStyles';\nimport { initColorSchemeListener } from './listeners/observeColorSchemeChanges';\nimport { observeColorSchemeChanges } from './listeners/initBodyResizeObserver';\nimport { base64Encode } from '../utils/base64';\nconst initializedWidgets = new Set<string>();\n\nfunction isWidgetInitialized(widgetKey: string): boolean {\n return initializedWidgets.has(widgetKey);\n}\n\nfunction isButtonExisting(widgetKey: string): boolean {\n return !!document.getElementById(`trigger-button-${widgetKey}`);\n}\n\nfunction createWidgetWithButton(widgetKey: string, widgetUrl: string) {\n const fragment = document.createDocumentFragment();\n const button = createTriggerButton(widgetKey);\n const { iframeContainer, iframe } = createIframeContainer(widgetUrl);\n\n fragment.appendChild(button);\n fragment.appendChild(iframeContainer);\n\n return { fragment, iframe };\n}\n\nfunction handleInitializationError(\n apiHost: string,\n error: unknown,\n widgetKey: string\n) {\n sendBrainfishWidgetError(apiHost, error, (error as Error).message, widgetKey);\n}\n\nexport const initIframeTrigger = (\n options: { widgetKey: string; overrides?: any },\n config: Config\n): undefined => {\n const apiHost = getApiHost(options.overrides);\n const widgetHost = getWidgetHost(options.overrides);\n const { theme, settings } = config;\n const widgetUrl = `${widgetHost}/?widgetKey=${\n options.widgetKey\n }&themeParam=${base64Encode(\n JSON.stringify(theme)\n )}&settingsParam=${base64Encode(JSON.stringify(settings))}`;\n\n try {\n if (isWidgetInitialized(options.widgetKey)) return undefined;\n if (isButtonExisting(options.widgetKey)) return undefined;\n\n insertStylesIfNeeded(config);\n\n const { fragment, iframe } = createWidgetWithButton(\n options.widgetKey,\n widgetUrl\n );\n\n const controller = new AbortController();\n const { signal } = controller;\n\n // make sure the iframe is loaded before setting up listeners\n iframe.onload = () => {\n setTimeout(() => {\n // Setup color scheme listener\n initColorSchemeListener(iframe, signal);\n\n // Setup message listener\n initMessageListener(widgetHost, signal);\n\n // Setup iframe container resize observer\n observeColorSchemeChanges(iframe, signal);\n }, 0);\n };\n\n document.body.appendChild(fragment);\n\n // Store the cleanup function for later use\n initializedWidgets.add(options.widgetKey);\n\n const cleanup = () => {\n controller.abort(); // Abort the event listener\n window.removeEventListener('beforeunload', cleanup);\n };\n\n // Add the beforeunload event listener\n window.addEventListener('beforeunload', cleanup);\n\n return undefined;\n } catch (error) {\n handleInitializationError(apiHost, error, options.widgetKey);\n }\n return undefined;\n};","import { createElementWithClass } from '../../utils/createElementWithClass';\nimport {\n IFRAME_CONTAINER_CLASS,\n TRIGGER_BUTTON_CLASS,\n} from '../constants/classes';\nimport { IframeStateManager } from '../managers/IframeStateManager';\n\nexport function createTriggerButton(widgetKey: string): HTMLElement {\n const button = createElementWithClass('button', TRIGGER_BUTTON_CLASS, {\n id: `trigger-button-${widgetKey}`,\n 'aria-controls': IFRAME_CONTAINER_CLASS,\n 'aria-expanded': 'false',\n 'data-name': TRIGGER_BUTTON_CLASS,\n });\n\n const icon = createElementWithClass('div', 'trigger-button-icon', {\n 'aria-hidden': 'true',\n });\n icon.innerHTML = `\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"32\" height=\"32\" fill=\"currentColor\" viewBox=\"0 0 256 256\" class=\"close-icon\">\n <path d=\"M213.66,101.66l-80,80a8,8,0,0,1-11.32,0l-80-80A8,8,0,0,1,53.66,90.34L128,164.69l74.34-74.35a8,8,0,0,1,11.32,11.32Z\"></path>\n </svg>\n <svg width=\"24\" height=\"14\" viewBox=\"0 0 24 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" class=\"fish-icon visible\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M1.71844 10.3882L4.60606 6.98384L1.71844 3.58375C1.4014 3.21362 1.44424 2.65841 1.81269 2.33993C1.97978 2.1979 2.65242 1.98701 3.04657 2.43461L5.78425 5.65824C6.14281 5.29523 6.51693 4.95924 6.90479 4.65114C8.88976 3.07437 11.2345 2.22803 13.6931 2.22803C16.9492 2.22803 20.0039 3.71718 22.2917 6.41142C22.5702 6.74282 22.5702 7.22916 22.2917 7.56056C20.0039 10.2591 16.9492 11.744 13.6931 11.744C11.2348 11.744 8.89035 10.8948 6.90554 9.31995C6.51741 9.01199 6.14304 8.67628 5.78425 8.31374L3.04657 11.5374C2.72953 11.9075 2.18114 11.9505 1.81269 11.632C1.44852 11.3179 1.40568 10.7584 1.71844 10.3882ZM5.93026 10.4683C8.17161 12.2599 10.8546 13.25 13.6931 13.25C17.4881 13.25 21.019 11.4034 23.4447 8.52942C24.1873 7.64571 24.1843 6.31801 23.4397 5.43663C20.8944 2.43919 17.4337 0.722025 13.6931 0.722025C10.8555 0.722025 8.17194 1.70845 5.92952 3.50276L4.17682 1.43933C3.57943 0.760929 2.79325 0.630009 2.25286 0.662947C1.98116 0.679506 1.73125 0.736852 1.51895 0.811846C1.26839 0.900352 1.03017 1.02718 0.827835 1.20058C-0.165283 2.05903 -0.283916 3.561 0.574656 4.56345L2.63075 6.98445L0.568104 9.41623C-0.272133 10.4106 -0.166523 11.9125 0.827835 12.7714C1.81372 13.6243 3.34308 13.5062 4.19036 12.5171L5.93026 10.4683Z\" fill=\"currentColor\"/>\n </svg>\n `;\n button.setAttribute('aria-label', 'Open Brainfish widget');\n button.appendChild(icon);\n IframeStateManager.initialize(button, icon);\n\n return button;\n}\n","// web.ts\n// entry point for web component\nimport { Config } from '@brainfish-ai/widgets-common';\nimport { getConfigByKey } from './api/getConfigByKey';\nimport { initSearchWidget } from './initSearchWidget';\nimport { initBrainfishAnalytics } from './initBrainfishAnalytics';\nimport type { Brainfish } from './types/brainfish';\nimport { BrainfishQueue, createBrainfishQueue } from './utils/brainfishQueue';\nimport { createQueues } from './utils/createQueues';\nimport { getApiHost, getAnalyticsApiHost } from './utils/getApiHost';\nimport { initIframeTrigger } from './initIframeTrigger';\nimport type { BrainfishWidgetOptions } from './types/brainfish';\nimport { base64Decode } from './utils/base64';\n\ntype InternalWidgetOptions = BrainfishWidgetOptions & {\n /** @internal Platform-only configuration override */\n config?: string; // BASE64 encoded string. Used for preview mode on platform.\n};\n\nlet globalBrainfish: BrainfishQueue | null = null;\n\nfunction getBrainfishInstance(): BrainfishQueue {\n if (typeof window !== 'undefined' && (window as any).Brainfish) {\n return (window as any).Brainfish;\n }\n if (!globalBrainfish) {\n globalBrainfish = createBrainfishQueue();\n if (typeof window !== 'undefined') {\n (window as any).Brainfish = globalBrainfish;\n }\n }\n return globalBrainfish;\n}\n\nconst Brainfish = getBrainfishInstance();\n\nlet initializationPromise: Promise<void> | null = null;\n\nasync function initializeBrainfish(\n options: InternalWidgetOptions,\n config: Config,\n apiHost: string,\n analyticsApiHost: string\n): Promise<void> {\n const enableRecording =\n options.overrides?.enableRecording ||\n config?.settings?.enableRecording ||\n false;\n const requestedVersion = options.overrides?.version || config?.version;\n\n const initPromises: Promise<Brainfish | undefined | void>[] = [];\n\n if (requestedVersion?.startsWith('2.')) {\n // init new Iframe Search Widget\n initIframeTrigger(options, config);\n } else {\n // init legacy Search Widget\n initPromises.push(initSearchWidget(options, config));\n }\n\n initPromises.push(\n initBrainfishAnalytics(\n options.widgetKey,\n config.trackingToken || '',\n apiHost,\n analyticsApiHost,\n enableRecording\n ) // Even if this fails, it won't block the widget\n );\n\n // Start both initializations in parallel\n const [widgetPromise] = await Promise.allSettled(initPromises);\n\n // Only set the real Brainfish if widget initialization succeeded\n if (\n widgetPromise &&\n widgetPromise.status === 'fulfilled' &&\n widgetPromise.value\n ) {\n Brainfish._setRealBrainfish(widgetPromise.value);\n }\n}\n\nBrainfish.Widgets.init = async (\n options: InternalWidgetOptions\n): Promise<void> => {\n createQueues();\n\n const apiHost = getApiHost(options.overrides);\n const analyticsApiHost = getAnalyticsApiHost(options.overrides);\n\n let config: Config;\n if (options.config) {\n config = JSON.parse(base64Decode(options.config)) as Config;\n } else {\n const { config: fetchedConfig } = await getConfigByKey({\n widgetKey: options.widgetKey,\n apiHost,\n });\n config = fetchedConfig;\n }\n\n if (!initializationPromise) {\n // First initialization\n initializationPromise = initializeBrainfish(\n options,\n config,\n apiHost,\n analyticsApiHost\n );\n }\n\n // Wait for Brainfish to be initialized\n await initializationPromise;\n};\n\nexport default Brainfish;\n\nexport const BrainfishAnalytics = (\n ...args: Parameters<typeof window.BrainfishAnalytics>\n) => {\n if (typeof window !== 'undefined' && window.BrainfishAnalytics) {\n window.BrainfishAnalytics(...args);\n }\n};\n","import type { Brainfish } from '../types/brainfish';\n\nexport interface BrainfishQueue extends Brainfish {\n _setRealBrainfish: (bf: Brainfish) => void;\n Widgets: {\n init: (options: { widgetKey: string; overrides?: any }) => Promise<void>;\n };\n}\n\nexport function createBrainfishQueue(): BrainfishQueue {\n let queue: [string, any[]][] = [];\n let realBrainfish: Brainfish | null = null;\n\n function queueOrExecute(method: string, args: any[]) {\n if (realBrainfish) {\n const parts = method.split('.');\n let obj: any = realBrainfish;\n for (let i = 0; i < parts.length - 1; i++) {\n obj = obj[parts[i]];\n }\n const fn = obj[parts[parts.length - 1]];\n if (typeof fn === 'function') {\n return fn.apply(obj, args);\n }\n } else {\n queue.push([method, args]);\n }\n }\n\n const brainfishQueue: BrainfishQueue = {\n Widgets: {\n init: (...args: any[]) => queueOrExecute('Widgets.init', args),\n },\n SearchWidget: {\n initStandard: (...args: any[]) =>\n queueOrExecute('SearchWidget.initStandard', args),\n },\n HelpWidget: {\n initPopup: (...args: any[]) =>\n queueOrExecute('HelpWidget.initPopup', args),\n close: (...args: any[]) => queueOrExecute('HelpWidget.close', args),\n open: (...args: any[]) => queueOrExecute('HelpWidget.open', args),\n toggle: (...args: any[]) => queueOrExecute('HelpWidget.toggle', args),\n },\n _setRealBrainfish: function (bf: Brainfish) {\n realBrainfish = bf;\n while (queue.length > 0) {\n const [method, args] = queue.shift()!;\n queueOrExecute(method, args);\n }\n },\n };\n\n return brainfishQueue;\n}\n","export const createQueues = () => {\n if (window) {\n window.BrainfishAnalytics =\n window.BrainfishAnalytics ||\n function (...args: [string, ...any[]]) {\n (window.BrainfishAnalytics.q = window.BrainfishAnalytics.q || []).push(\n args\n );\n };\n }\n};\n"],"names":["WidgetType","ActionType","Sidebar","Searchbar","BrainfishWidgetError","Error","message","options","super","this","cause","name","captureStackTrace","stack","sendBrainfishWidgetError","apiHost","error","widgetKey","errorMessage","errorDetails","JSON","parse","String","sendErrors","navigator","userAgent","toLowerCase","includes","errorData","toJSON","fetch","method","headers","body","stringify","getConfigByKey","async","e","__async","_ref","endpoint","lastError","attempt","response","ok","status","data","json","Promise","resolve","setTimeout","transformConfig","config","apiKey","settings","forEach","key","map","action","type","CALLBACK","value","__spreadProps","__spreadValues","Function","widgetMode","widgetType","r","getApiHost","overrides","useUMD","window","ua","match","version","parseInt","isIOS14OrBelow","init","url","scriptUrl","replace","widget","document","getElementById","Brainfish","reject","script","createElement","id","src","crossOrigin","onload","module","onerror","event","errorEvent","fileName","filename","lineNumber","lineno","columnNumber","colno","toString","head","appendChild","initializedWidgets","Set","initSearchWidget","has","result","transformedConfig","Object","entries","_ref2","overrideActions","arguments","length","actionMap","Map","label","set","Array","from","values","SearchWidget","initStandard","HelpWidget","initPopup","add","isTrackerInitialized","initBrainfishAnalytics","accessKey","analyticsApiHost","enableRecording","isDNTEnabled","isDoNotTrackEnabled","dntEnabledValues","nav","win","dnt","doNotTrack","msDoNotTrack","console","log","BrainfishAnalytics","apiUrl","trackScreenViews","trackAttributes","trackOutgoingLinks","createElementWithClass","tagName","className","attributes","element","setAttribute","IFRAME_CONTAINER_CLASS","TRIGGER_BUTTON_CLASS","IframeStateManager","isOpen","button","icon","addEventListener","toggleIframeVisibility","fishIconSVG","querySelector","closeIconSVG","iframeContainer","iframe","_iframe$contentWindow","classList","remove","contentWindow","postMessage","clientWidth","hideTriggerButton","showTriggerButton","_this$button","_this$button2","static","initMessageListener","widgetHost","signal","origin","contains","toggleIframeSize","eventName","colorToInt","color","Math","round","convertToInt","red","green","blue","exports","__esModule","hue","saturation","lightness","convert","huePrime","chroma","abs","secondComponent","lightnessModification","default","namedColorMap","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","normalizedColorName","_wrapNativeSuper","Class","_cache","undefined","fn","call","indexOf","TypeError","get","Wrapper","t","_isNativeReflectConstruct","Reflect","construct","apply","o","push","p","bind","_setPrototypeOf","prototype","_getPrototypeOf","constructor","create","enumerable","writable","configurable","Boolean","valueOf","setPrototypeOf","__proto__","getPrototypeOf","ERRORS","format","_len","args","_key","c","a","b","d","_Error","subClass","superClass","PolishedError","code","_this","process","env","NODE_ENV","_len2","_key2","concat","self","ReferenceError","_errors","normalizedColor","_nameToHex","hexRegex","hexRgbaRegex","alpha","parseFloat","toFixed","reducedHexRegex","reducedRgbaHexRegex","_alpha","rgbMatched","rgbRegex","exec","rgbaMatched","rgbaRegex","substring","hslMatched","hslRegex","rgbColorString","_hslToRgb","hslRgbMatched","hslaMatched","hslaRegex","_hue","_saturation","_lightness","_rgbColorString","_hslRgbMatched","_interopRequireDefault","require$$0","require$$1","require$$2","obj","rgbColor","_parseToRgb","_Object$keys$map","keys","channel","pow","g","curried","f","acc","combined","slice","lowerBoundary","upperBoundary","max","min","delta","_rgbToHsl","hex","_reduceHexValue","_numberToHex","colorToHex","convertToHex","_hslToHex","firstValue","secondValue","thirdValue","fourthValue","rgbValue","_rgb","isRgba","_rgba","isRgb","isHsla","_hsla","isHsl","_hsl","require$$3","require$$4","_curry","_guard","_parseToHsl","_toColorString","_extends","assign","target","i","source","hasOwnProperty","curriedDarken","amount","hslColor","curriedLighten","insertStylesIfNeeded","_config$theme","_config$theme2","primaryColor","foreground","style","setNamedItem","createAttribute","isLightButtonColor","getLuminance","textContent","darken","lighten","theme","inputButtonBgColor","textBaseColor","initColorSchemeListener","checkAndUpdateDarkMode","isDarkMode","observeBodyClassChanges","observer","MutationObserver","observe","attributeFilter","disconnect","observeColorSchemeChanges","resizeTimeout","checkAndUpdateIsMobile","isMobile","isWidgetOpen","debouncedCheckAndUpdateIsMobile","clearTimeout","resizeObserver","ResizeObserver","observeBodyResize","base64Encode","text","uint8Array","TextEncoder","encode","btoa","binaryString","byte","fromCharCode","join","Buffer","createWidgetWithButton","widgetUrl","fragment","createDocumentFragment","innerHTML","initialize","sandbox","allow","role","n","initIframeTrigger","controller","AbortController","cleanup","abort","removeEventListener","globalBrainfish","queue","realBrainfish","queueOrExecute","parts","split","Widgets","_len3","_key3","close","_len4","_key4","open","_len5","_key5","toggle","_len6","_key6","_setRealBrainfish","bf","shift","initializationPromise","q","atob","len","bytes","Uint8Array","charCodeAt","TextDecoder","decode","fetchedConfig","_options$overrides","_config$settings","_options$overrides2","requestedVersion","initPromises","startsWith","trackingToken","widgetPromise","allSettled"],"mappings":"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GACL,GAAK;AAAA;AAAA,GACL,GAAK;AAAA;AAAA,GACL,GAAK;AAAA;AAAA,GACL,GAAK;AAAA;AAAA,GACL,GAAK;AAAA;AAAA,GACL,GAAK;AAAA;AAAA,GACL,IAAM;AAAA;AAAA,GACN,IAAM;AAAA;AAAA,GACN,IAAM;AAAA;AAAA,GACN,IAAM;AAAA;AAAA,GACN,IAAM;AAAA;AAAA,GACN,IAAM;AAAA;AAAA,GACN,IAAM;AAAA;AAAA,GACN,IAAM;AAAA;AAAA,GACN,IAAM;AAAA;AAAA,GACN,IAAM;AAAA;AAAA,GACN,IAAM;AAAA;AAAA,GACN,IAAM,gHACN,IAAM,kGACN,IAAM;AAAA;AAAA,GACN,IAAM;AAAA;AAAA,GACN,IAAM;AAAA;AAAA,GACN,IAAM;AAAA;AAAA,GACN,IAAM;AAAA;AAAA,GACN,IAAM;AAAA;AAAA,GACN,IAAM;AAAA;AAAA,GACN,IAAM,0FACN,IAAM;AAAA;AAAA,GACN,IAAM;AAAA;AAAA;AAAA,GACN,IAAM;AAAA;AAAA,GACN,IAAM;AAAA;AAAA,GACN,IAAM;AAAA;AAAA,GACN,IAAM;AAAA;AAAA,GACN,IAAM;AAAA;AAAA,GACN,IAAM;AAAA;AAAA,GACN,IAAM;AAAA;AAAA,GACN,IAAM;AAAA;AAAA,GACN,IAAM;AAAA;AAAA,GACN,IAAM;AAAA;AAAA,GACN,IAAM;AAAA;AAAA,GACN,IAAM;AAAA;AAAA,GACN,IAAM;AAAA;AAAA,GACN,IAAM;AAAA;AAAA,GACN,IAAM;AAAA;AAAA,GACN,IAAM;AAAA;AAAA,GACN,IAAM;AAAA;AAAA,GACN,IAAM;AAAA;AAAA,GACN,IAAM;AAAA;AAAA,GACN,IAAM;AAAA;AAAA,GACN,IAAM;AAAA;AAAA,GACN,IAAM;AAAA;AAAA,GACN,IAAM;AAAA;AAAA,GACN,IAAM;AAAA;AAAA,GACN,IAAM;AAAA;AAAA,GACN,IAAM;AAAA;AAAA,GACN,IAAM;AAAA;AAAA,GACN,IAAM,0FACN,IAAM;AAAA;AAAA,GACN,IAAM;AAAA;AAAA,GACN,IAAM;AAAA;AAAA,GACN,IAAM;AAAA;AAAA,GACN,IAAM;A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","x_google_ignoreList":[18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36]}