@simula/ads 1.1.0 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/utils/api.ts","../src/utils/validation.ts","../src/SimulaProvider.tsx","../node_modules/uuid/dist/stringify.js","../node_modules/uuid/dist/rng.js","../node_modules/uuid/dist/native.js","../node_modules/uuid/dist/v4.js","../src/hooks/useDebounce.ts","../node_modules/tslib/tslib.es6.js","../node_modules/@fingerprintjs/botd/dist/botd.esm.js","../src/hooks/useBotDetection.ts","../src/hooks/useViewability.ts","../src/utils/colorThemes.ts","../src/utils/styling.ts","../src/InChatAdSlot.tsx","../src/hooks/useOMIDViewability.ts"],"sourcesContent":["import { Message, AdData, SimulaTheme } from '../types';\r\n\r\n// Production API URL\r\nconst API_BASE_URL = 'https://simula-api-701226639755.us-central1.run.app';\r\n\r\nexport interface FetchAdRequest {\r\n messages: Message[];\r\n formats: string[];\r\n apiKey: string;\r\n slotId?: string;\r\n theme?: SimulaTheme;\r\n sessionId?: string;\r\n charDesc?: string;\r\n}\r\n\r\nexport interface FetchAdResponse {\r\n ad?: AdData;\r\n error?: string;\r\n}\r\n\r\n// Create a server session and return its id\r\nexport async function createSession(apiKey: string, devMode?: boolean, primaryUserID?: string): Promise<string | undefined> {\r\n try {\r\n const headers: Record<string, string> = {\r\n 'Content-Type': 'application/json',\r\n 'Authorization': `Bearer ${apiKey}`,\r\n };\r\n\r\n // Build query parameters\r\n const params = new URLSearchParams();\r\n if (devMode !== undefined) {\r\n params.append('devMode', String(devMode));\r\n }\r\n if (primaryUserID !== undefined && primaryUserID !== '') {\r\n params.append('ppid', primaryUserID);\r\n }\r\n\r\n const queryString = params.toString();\r\n const url = `${API_BASE_URL}/session/create${queryString ? `?${queryString}` : ''}`;\r\n\r\n const response = await fetch(url, {\r\n method: 'POST',\r\n headers,\r\n body: JSON.stringify({}),\r\n });\r\n\r\n if (!response.ok) {\r\n if (response.status === 401) {\r\n throw new Error('Invalid API key (please check dashboard or contact Simula team for a valid API key)');\r\n }\r\n return undefined;\r\n }\r\n\r\n const data = await response.json();\r\n if (data && typeof data.sessionId === 'string' && data.sessionId) {\r\n return data.sessionId;\r\n }\r\n return undefined;\r\n } catch (error) {\r\n // Re-throw 401 errors with our custom message\r\n if (error instanceof Error && error.message.includes('Invalid API key')) {\r\n throw error;\r\n }\r\n return undefined;\r\n }\r\n}\r\n\r\nexport const fetchAd = async (request: FetchAdRequest): Promise<FetchAdResponse> => {\r\n try {\r\n const conversationHistory = request.messages;\r\n\r\n // Normalize theme accent and font to arrays for backend\r\n const normalizedTheme = request.theme ? {\r\n ...request.theme,\r\n accent: request.theme.accent ? (Array.isArray(request.theme.accent) ? request.theme.accent : [request.theme.accent]) : undefined,\r\n font: request.theme.font ? (Array.isArray(request.theme.font) ? request.theme.font : [request.theme.font]) : undefined,\r\n } : undefined;\r\n\r\n const requestBody = {\r\n messages: conversationHistory,\r\n types: request.formats,\r\n slot_id: request.slotId,\r\n theme: normalizedTheme,\r\n session_id: request.sessionId,\r\n char_desc: request.charDesc,\r\n } as const;\r\n\r\n const headers: Record<string, string> = {\r\n 'Content-Type': 'application/json',\r\n 'Authorization': `Bearer ${request.apiKey}`,\r\n };\r\n\r\n const response = await fetch(`${API_BASE_URL}/render_ad/ssp`, {\r\n method: 'POST',\r\n headers,\r\n body: JSON.stringify(requestBody),\r\n });\r\n\r\n if (!response.ok) {\r\n throw new Error(`HTTP error! status: ${response.status}`);\r\n }\r\n\r\n const data = await response.json();\r\n\r\n // Handle new API shape\r\n if (data && typeof data === 'object') {\r\n if (!data.adInserted) {\r\n return { error: 'No fill' };\r\n }\r\n\r\n // New shape: { adType, adInserted, adResponse: { ad_id, iframe_url, ... } }\r\n if (data.adResponse && typeof data.adResponse === 'object') {\r\n const ar = data.adResponse;\r\n const ad: AdData = {\r\n id: ar.ad_id ?? ar.id,\r\n format: (data.adType ?? ar.format ?? 'iframe'),\r\n iframeUrl: ar.iframe_url ?? ar.iframeUrl,\r\n };\r\n\r\n if (ad.id && ad.iframeUrl) {\r\n return { ad };\r\n }\r\n\r\n return { error: 'Invalid ad response' };\r\n }\r\n\r\n // Legacy shape: { ad: { ... } }\r\n if (data.ad) {\r\n return { ad: data.ad };\r\n }\r\n\r\n if (data.error) {\r\n return { error: data.error };\r\n }\r\n }\r\n\r\n return { error: 'Unexpected response from ad server' };\r\n } catch (error) {\r\n console.error('❌ API Request failed:', error);\r\n return {\r\n error: error instanceof Error ? error.message : 'Failed to fetch ad'\r\n };\r\n }\r\n};\r\n\r\nexport const trackImpression = async (adId: string, apiKey: string): Promise<void> => {\r\n try {\r\n const headers: Record<string, string> = {\r\n 'Content-Type': 'application/json',\r\n 'Authorization': `Bearer ${apiKey}`,\r\n };\r\n\r\n await fetch(`${API_BASE_URL}/track/engagement/impression/${adId}`, {\r\n method: 'POST',\r\n headers,\r\n body: JSON.stringify({}),\r\n });\r\n } catch (error) {\r\n console.error('Failed to track impression:', error);\r\n }\r\n};\r\n\r\n/* Not used for now, used when we are also mediation layer\r\nexport const trackClick = async (adId: string, apiKey: string): Promise<void> => {\r\n try {\r\n await fetch(`${API_BASE_URL}/track_click`, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Authorization': `Bearer ${apiKey}`,\r\n },\r\n body: JSON.stringify({\r\n ad_id: adId,\r\n timestamp: new Date().toISOString(),\r\n }),\r\n });\r\n } catch (error) {\r\n console.error('Failed to track click:', error);\r\n }\r\n};\r\n*/","import { SimulaTheme } from '../types';\r\n\r\n// Helper functions for width validation\r\nconst isAutoWidth = (width: any): boolean => width === 'auto';\r\nconst isPercentageWidth = (width: any): boolean => typeof width === 'string' && /^\\d+(?:\\.\\d+)?%$/.test(width);\r\nconst isPixelWidth = (width: any): boolean => typeof width === 'string' && /^\\d+(?:\\.\\d+)?px$/.test(width);\r\n\r\n/**\r\n * Validates SimulaProvider props\r\n * Throws descriptive errors for invalid props\r\n */\r\nexport const validateSimulaProviderProps = (props: any): void => {\r\n const validProps = ['apiKey', 'children', 'devMode', 'primaryUserID'];\r\n const receivedProps = Object.keys(props);\r\n\r\n // Check for unknown props\r\n const unknownProps = receivedProps.filter(prop => !validProps.includes(prop));\r\n if (unknownProps.length > 0) {\r\n throw new Error(\r\n `Invalid prop${unknownProps.length > 1 ? 's' : ''} passed to SimulaProvider: ${unknownProps.map(p => `\"${p}\"`).join(', ')}. ` +\r\n `Valid props are: ${validProps.join(', ')}`\r\n );\r\n }\r\n\r\n // Validate required props\r\n if (!props.apiKey || typeof props.apiKey !== 'string') {\r\n throw new Error('SimulaProvider requires a valid \"apiKey\" prop (string)');\r\n }\r\n\r\n if (!props.children) {\r\n throw new Error('SimulaProvider requires a \"children\" prop');\r\n }\r\n\r\n // Validate optional props\r\n if (props.devMode !== undefined && typeof props.devMode !== 'boolean') {\r\n throw new Error(`Invalid \"devMode\" prop type: \"${typeof props.devMode}\". Must be a boolean`);\r\n }\r\n\r\n if (props.primaryUserID !== undefined && typeof props.primaryUserID !== 'string') {\r\n throw new Error(`Invalid \"primaryUserID\" prop type: \"${typeof props.primaryUserID}\". Must be a string`);\r\n }\r\n};\r\n\r\n/**\r\n * Validates InChatAdSlot props\r\n * Throws descriptive errors for invalid props\r\n */\r\nexport const validateInChatAdSlotProps = (props: any): void => {\r\n const validProps = ['messages', 'trigger', 'formats', 'theme', 'debounceMs', 'charDesc', 'onImpression', 'onClick', 'onError'];\r\n const receivedProps = Object.keys(props);\r\n\r\n // Check for unknown props\r\n const unknownProps = receivedProps.filter(prop => !validProps.includes(prop));\r\n if (unknownProps.length > 0) {\r\n throw new Error(\r\n `Invalid prop${unknownProps.length > 1 ? 's' : ''} passed to InChatAdSlot: ${unknownProps.map(p => `\"${p}\"`).join(', ')}. ` +\r\n `Valid props are: ${validProps.join(', ')}`\r\n );\r\n }\r\n\r\n // Validate messages (required)\r\n if (!props.messages || !Array.isArray(props.messages)) {\r\n throw new Error('InChatAdSlot requires a valid \"messages\" prop (array of Message objects)');\r\n }\r\n\r\n if (props.messages.length === 0) {\r\n throw new Error('InChatAdSlot \"messages\" prop cannot be an empty array');\r\n }\r\n\r\n props.messages.forEach((msg: any, i: number) => {\r\n if (!msg || typeof msg !== 'object') {\r\n throw new Error(`Invalid message at index ${i}: must be an object with \"role\" and \"content\" properties`);\r\n }\r\n if (!msg.role || typeof msg.role !== 'string') {\r\n throw new Error(`Invalid message at index ${i}: \"role\" must be a non-empty string`);\r\n }\r\n if (msg.content === undefined || typeof msg.content !== 'string') {\r\n throw new Error(`Invalid message at index ${i}: \"content\" must be a string`);\r\n }\r\n });\r\n\r\n // Validate formats (optional)\r\n if (props.formats !== undefined) {\r\n validateFormats(props.formats);\r\n }\r\n\r\n // Validate theme (optional)\r\n if (props.theme !== undefined) {\r\n validateTheme(props.theme);\r\n }\r\n\r\n // Validate debounceMs (optional)\r\n if (props.debounceMs !== undefined) {\r\n if (typeof props.debounceMs !== 'number') {\r\n throw new Error(`Invalid \"debounceMs\" prop type: \"${typeof props.debounceMs}\". Must be a number`);\r\n }\r\n if (props.debounceMs < 0) {\r\n throw new Error(`Invalid \"debounceMs\" prop value: \"${props.debounceMs}\". Must be a non-negative number`);\r\n }\r\n }\r\n\r\n // Validate charDesc (optional)\r\n if (props.charDesc !== undefined && typeof props.charDesc !== 'string') {\r\n throw new Error(`Invalid \"charDesc\" prop type: \"${typeof props.charDesc}\". Must be a string`);\r\n }\r\n\r\n // Validate callbacks (optional)\r\n if (props.onImpression !== undefined && typeof props.onImpression !== 'function') {\r\n throw new Error(`Invalid \"onImpression\" prop type: \"${typeof props.onImpression}\". Must be a function`);\r\n }\r\n\r\n if (props.onClick !== undefined && typeof props.onClick !== 'function') {\r\n throw new Error(`Invalid \"onClick\" prop type: \"${typeof props.onClick}\". Must be a function`);\r\n }\r\n\r\n if (props.onError !== undefined && typeof props.onError !== 'function') {\r\n throw new Error(`Invalid \"onError\" prop type: \"${typeof props.onError}\". Must be a function`);\r\n }\r\n\r\n // Note: trigger validation (Promise check) is skipped because checking instanceof Promise\r\n // is unreliable across different Promise implementations and contexts\r\n};\r\n\r\n/**\r\n * Validates formats - accepts string or string[]\r\n * Throws descriptive errors for invalid formats\r\n */\r\nexport const validateFormats = (formats?: string | string[]): void => {\r\n if (!formats) return;\r\n\r\n const validFormatOptions = ['all', 'tips', 'interactive', 'suggestions', 'text', 'highlight', 'visual_banner', 'image_feature'];\r\n\r\n // Normalize to array for validation\r\n const formatsArray = Array.isArray(formats) ? formats : [formats];\r\n\r\n formatsArray.forEach((format, i) => {\r\n if (typeof format !== 'string') {\r\n throw new Error(`Invalid format type at index ${i}: \"${typeof format}\". Must be a string. Valid values: ${validFormatOptions.join(', ')}`);\r\n }\r\n if (!validFormatOptions.includes(format)) {\r\n throw new Error(`Invalid format value${Array.isArray(formats) ? ` at index ${i}` : ''}: \"${format}\". Valid values: ${validFormatOptions.join(', ')}`);\r\n }\r\n });\r\n};\r\n\r\n/**\r\n * Validates theme object\r\n * Throws descriptive errors for invalid theme properties\r\n */\r\nexport const validateTheme = (theme?: SimulaTheme): void => {\r\n if (!theme || typeof theme !== 'object') {\r\n throw new Error('Invalid \"theme\": must be an object');\r\n }\r\n\r\n const validThemeOptions = ['light', 'dark', 'auto'];\r\n const validAccentOptions = ['blue', 'red', 'green', 'yellow', 'purple', 'pink', 'orange', 'neutral', 'gray', 'tan', 'transparent', 'image'];\r\n const validFontOptions = ['san-serif', 'serif', 'monospace'];\r\n const validKeys = ['theme', 'accent', 'font', 'width', 'cornerRadius'];\r\n\r\n // Check for invalid top-level keys\r\n Object.keys(theme).forEach(key => {\r\n if (!validKeys.includes(key)) {\r\n throw new Error(`Invalid theme parameter \"${key}\". Valid parameters: ${validKeys.join(', ')}`);\r\n }\r\n });\r\n\r\n // Validate theme value\r\n if (theme.theme !== undefined) {\r\n if (typeof theme.theme !== 'string') {\r\n throw new Error(`Invalid theme type \"${typeof theme.theme}\". Must be a string. Valid values: ${validThemeOptions.join(', ')}`);\r\n }\r\n if (!validThemeOptions.includes(theme.theme)) {\r\n throw new Error(`Invalid theme value \"${theme.theme}\". Valid values: ${validThemeOptions.join(', ')}`);\r\n }\r\n }\r\n\r\n // Validate accent value(s)\r\n if (theme.accent !== undefined) {\r\n const accents = Array.isArray(theme.accent) ? theme.accent : [theme.accent];\r\n accents.forEach((accent, i) => {\r\n if (typeof accent !== 'string') {\r\n throw new Error(`Invalid accent type at index ${i}: \"${typeof accent}\". Must be a string. Valid values: ${validAccentOptions.join(', ')}`);\r\n }\r\n if (!validAccentOptions.includes(accent)) {\r\n throw new Error(`Invalid accent value${Array.isArray(theme.accent) ? ` at index ${i}` : ''}: \"${accent}\". Valid values: ${validAccentOptions.join(', ')}`);\r\n }\r\n });\r\n }\r\n\r\n // Validate font value(s)\r\n if (theme.font !== undefined) {\r\n const fonts = Array.isArray(theme.font) ? theme.font : [theme.font];\r\n fonts.forEach((font, i) => {\r\n if (typeof font !== 'string') {\r\n throw new Error(`Invalid font type at index ${i}: \"${typeof font}\". Must be a string. Valid values: ${validFontOptions.join(', ')}`);\r\n }\r\n if (!validFontOptions.includes(font)) {\r\n throw new Error(`Invalid font value${Array.isArray(theme.font) ? ` at index ${i}` : ''}: \"${font}\". Valid values: ${validFontOptions.join(', ')}`);\r\n }\r\n });\r\n }\r\n\r\n // Validate width\r\n if (theme.width !== undefined) {\r\n if (typeof theme.width !== 'number' && typeof theme.width !== 'string') {\r\n throw new Error(`Invalid width type \"${typeof theme.width}\". Must be number, \"auto\", \"%\", or \"px\"`);\r\n }\r\n if (typeof theme.width === 'string' && !isAutoWidth(theme.width) && !isPercentageWidth(theme.width) && !isPixelWidth(theme.width)) {\r\n throw new Error(`Invalid width \"${theme.width}\". Must be an integer, \"auto\", or a string like \"100%\", \"500px\"`);\r\n }\r\n }\r\n\r\n // Validate cornerRadius\r\n if (theme.cornerRadius !== undefined && typeof theme.cornerRadius !== 'number') {\r\n throw new Error(`Invalid cornerRadius type \"${typeof theme.cornerRadius}\". Must be a number`);\r\n }\r\n};\r\n","import React, { createContext, useContext, useEffect, useState } from 'react';\r\nimport { SimulaProviderProps, SimulaContextValue } from './types';\r\nimport { createSession } from './utils/api';\r\nimport { validateSimulaProviderProps } from './utils/validation';\r\n\r\nconst SimulaContext = createContext<SimulaContextValue | undefined>(undefined);\r\n\r\nexport const useSimula = (): SimulaContextValue => {\r\n const context = useContext(SimulaContext);\r\n if (!context) {\r\n throw new Error('useSimula must be used within a SimulaProvider');\r\n }\r\n return context;\r\n};\r\n\r\nexport const SimulaProvider: React.FC<SimulaProviderProps> = (props) => {\r\n // Validate props early\r\n validateSimulaProviderProps(props);\r\n\r\n const {\r\n apiKey,\r\n children,\r\n devMode = false,\r\n primaryUserID\r\n } = props;\r\n const [sessionId, setSessionId] = useState<string | undefined>(undefined);\r\n\r\n useEffect(() => {\r\n let cancelled = false;\r\n\r\n async function ensureSession() {\r\n const id = await createSession(apiKey, devMode, primaryUserID);\r\n if (!cancelled && id) setSessionId(id);\r\n }\r\n\r\n ensureSession();\r\n return () => { cancelled = true; };\r\n }, [apiKey, devMode, primaryUserID]);\r\n\r\n const value: SimulaContextValue = {\r\n apiKey,\r\n devMode,\r\n sessionId,\r\n };\r\n\r\n return (\r\n <SimulaContext.Provider value={value}>\r\n {children}\r\n </SimulaContext.Provider>\r\n );\r\n};","import validate from './validate.js';\nconst byteToHex = [];\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\nexport function unsafeStringify(arr, offset = 0) {\n return (byteToHex[arr[offset + 0]] +\n byteToHex[arr[offset + 1]] +\n byteToHex[arr[offset + 2]] +\n byteToHex[arr[offset + 3]] +\n '-' +\n byteToHex[arr[offset + 4]] +\n byteToHex[arr[offset + 5]] +\n '-' +\n byteToHex[arr[offset + 6]] +\n byteToHex[arr[offset + 7]] +\n '-' +\n byteToHex[arr[offset + 8]] +\n byteToHex[arr[offset + 9]] +\n '-' +\n byteToHex[arr[offset + 10]] +\n byteToHex[arr[offset + 11]] +\n byteToHex[arr[offset + 12]] +\n byteToHex[arr[offset + 13]] +\n byteToHex[arr[offset + 14]] +\n byteToHex[arr[offset + 15]]).toLowerCase();\n}\nfunction stringify(arr, offset = 0) {\n const uuid = unsafeStringify(arr, offset);\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n return uuid;\n}\nexport default stringify;\n","let getRandomValues;\nconst rnds8 = new Uint8Array(16);\nexport default function rng() {\n if (!getRandomValues) {\n if (typeof crypto === 'undefined' || !crypto.getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n getRandomValues = crypto.getRandomValues.bind(crypto);\n }\n return getRandomValues(rnds8);\n}\n","const randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);\nexport default { randomUUID };\n","import native from './native.js';\nimport rng from './rng.js';\nimport { unsafeStringify } from './stringify.js';\nfunction _v4(options, buf, offset) {\n options = options || {};\n const rnds = options.random ?? options.rng?.() ?? rng();\n if (rnds.length < 16) {\n throw new Error('Random bytes length must be >= 16');\n }\n rnds[6] = (rnds[6] & 0x0f) | 0x40;\n rnds[8] = (rnds[8] & 0x3f) | 0x80;\n if (buf) {\n offset = offset || 0;\n if (offset < 0 || offset + 16 > buf.length) {\n throw new RangeError(`UUID byte range ${offset}:${offset + 15} is out of buffer bounds`);\n }\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n return buf;\n }\n return unsafeStringify(rnds);\n}\nfunction v4(options, buf, offset) {\n if (native.randomUUID && !buf && !options) {\n return native.randomUUID();\n }\n return _v4(options, buf, offset);\n}\nexport default v4;\n","import { useEffect, useRef } from 'react';\r\n\r\nexport const useDebounce = (callback: () => void, delay: number, deps: any[]) => {\r\n const timeoutRef = useRef<ReturnType<typeof setTimeout>>();\r\n\r\n useEffect(() => {\r\n if (timeoutRef.current) {\r\n clearTimeout(timeoutRef.current);\r\n }\r\n\r\n timeoutRef.current = setTimeout(callback, delay);\r\n\r\n return () => {\r\n if (timeoutRef.current) {\r\n clearTimeout(timeoutRef.current);\r\n }\r\n };\r\n }, [...deps, delay]);\r\n\r\n useEffect(() => {\r\n return () => {\r\n if (timeoutRef.current) {\r\n clearTimeout(timeoutRef.current);\r\n }\r\n };\r\n }, []);\r\n};","/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\r\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\r\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nvar ownKeys = function(o) {\r\n ownKeys = Object.getOwnPropertyNames || function (o) {\r\n var ar = [];\r\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\r\n return ar;\r\n };\r\n return ownKeys(o);\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n\r\nexport function __addDisposableResource(env, value, async) {\r\n if (value !== null && value !== void 0) {\r\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n var dispose, inner;\r\n if (async) {\r\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n dispose = value[Symbol.asyncDispose];\r\n }\r\n if (dispose === void 0) {\r\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n dispose = value[Symbol.dispose];\r\n if (async) inner = dispose;\r\n }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\r\n env.stack.push({ value: value, dispose: dispose, async: async });\r\n }\r\n else if (async) {\r\n env.stack.push({ async: true });\r\n }\r\n return value;\r\n\r\n}\r\n\r\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\r\n\r\nexport function __disposeResources(env) {\r\n function fail(e) {\r\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n env.hasError = true;\r\n }\r\n var r, s = 0;\r\n function next() {\r\n while (r = env.stack.pop()) {\r\n try {\r\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\r\n if (r.dispose) {\r\n var result = r.dispose.call(r.value);\r\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n else s |= 1;\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\r\n}\r\n\r\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\r\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\r\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\r\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\r\n });\r\n }\r\n return path;\r\n}\r\n\r\nexport default {\r\n __extends: __extends,\r\n __assign: __assign,\r\n __rest: __rest,\r\n __decorate: __decorate,\r\n __param: __param,\r\n __esDecorate: __esDecorate,\r\n __runInitializers: __runInitializers,\r\n __propKey: __propKey,\r\n __setFunctionName: __setFunctionName,\r\n __metadata: __metadata,\r\n __awaiter: __awaiter,\r\n __generator: __generator,\r\n __createBinding: __createBinding,\r\n __exportStar: __exportStar,\r\n __values: __values,\r\n __read: __read,\r\n __spread: __spread,\r\n __spreadArrays: __spreadArrays,\r\n __spreadArray: __spreadArray,\r\n __await: __await,\r\n __asyncGenerator: __asyncGenerator,\r\n __asyncDelegator: __asyncDelegator,\r\n __asyncValues: __asyncValues,\r\n __makeTemplateObject: __makeTemplateObject,\r\n __importStar: __importStar,\r\n __importDefault: __importDefault,\r\n __classPrivateFieldGet: __classPrivateFieldGet,\r\n __classPrivateFieldSet: __classPrivateFieldSet,\r\n __classPrivateFieldIn: __classPrivateFieldIn,\r\n __addDisposableResource: __addDisposableResource,\r\n __disposeResources: __disposeResources,\r\n __rewriteRelativeImportExtension: __rewriteRelativeImportExtension,\r\n};\r\n","/**\n * Fingerprint BotD v1.9.1 - Copyright (c) FingerprintJS, Inc, 2024 (https://fingerprint.com)\n * Licensed under the MIT (http://www.opensource.org/licenses/mit-license.php) license.\n */\n\nimport { __extends, __awaiter, __generator, __spreadArray } from 'tslib';\n\nvar version = \"1.9.1\";\n\n/**\n * Enum for types of bots.\n * Specific types of bots come first, followed by automation technologies.\n *\n * @readonly\n * @enum {string}\n */\nvar BotKind = {\n // Object is used instead of Typescript enum to avoid emitting IIFE which might be affected by further tree-shaking.\n // See example of compiled enums https://stackoverflow.com/q/47363996)\n Awesomium: 'awesomium',\n Cef: 'cef',\n CefSharp: 'cefsharp',\n CoachJS: 'coachjs',\n Electron: 'electron',\n FMiner: 'fminer',\n Geb: 'geb',\n NightmareJS: 'nightmarejs',\n Phantomas: 'phantomas',\n PhantomJS: 'phantomjs',\n Rhino: 'rhino',\n Selenium: 'selenium',\n Sequentum: 'sequentum',\n SlimerJS: 'slimerjs',\n WebDriverIO: 'webdriverio',\n WebDriver: 'webdriver',\n HeadlessChrome: 'headless_chrome',\n Unknown: 'unknown',\n};\n/**\n * Bot detection error.\n */\nvar BotdError = /** @class */ (function (_super) {\n __extends(BotdError, _super);\n /**\n * Creates a new BotdError.\n *\n * @class\n */\n function BotdError(state, message) {\n var _this = _super.call(this, message) || this;\n _this.state = state;\n _this.name = 'BotdError';\n Object.setPrototypeOf(_this, BotdError.prototype);\n return _this;\n }\n return BotdError;\n}(Error));\n\nfunction detect(components, detectors) {\n var detections = {};\n var finalDetection = {\n bot: false,\n };\n for (var detectorName in detectors) {\n var detector = detectors[detectorName];\n var detectorRes = detector(components);\n var detection = { bot: false };\n if (typeof detectorRes === 'string') {\n detection = { bot: true, botKind: detectorRes };\n }\n else if (detectorRes) {\n detection = { bot: true, botKind: BotKind.Unknown };\n }\n detections[detectorName] = detection;\n if (detection.bot) {\n finalDetection = detection;\n }\n }\n return [detections, finalDetection];\n}\nfunction collect(sources) {\n return __awaiter(this, void 0, void 0, function () {\n var components, sourcesKeys;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n components = {};\n sourcesKeys = Object.keys(sources);\n return [4 /*yield*/, Promise.all(sourcesKeys.map(function (sourceKey) { return __awaiter(_this, void 0, void 0, function () {\n var res, _a, _b, error_1;\n var _c;\n return __generator(this, function (_d) {\n switch (_d.label) {\n case 0:\n res = sources[sourceKey];\n _d.label = 1;\n case 1:\n _d.trys.push([1, 3, , 4]);\n _a = components;\n _b = sourceKey;\n _c = {};\n return [4 /*yield*/, res()];\n case 2:\n _a[_b] = (_c.value = _d.sent(),\n _c.state = 0 /* State.Success */,\n _c);\n return [3 /*break*/, 4];\n case 3:\n error_1 = _d.sent();\n if (error_1 instanceof BotdError) {\n components[sourceKey] = {\n state: error_1.state,\n error: \"\".concat(error_1.name, \": \").concat(error_1.message),\n };\n }\n else {\n components[sourceKey] = {\n state: -3 /* State.UnexpectedBehaviour */,\n error: error_1 instanceof Error ? \"\".concat(error_1.name, \": \").concat(error_1.message) : String(error_1),\n };\n }\n return [3 /*break*/, 4];\n case 4: return [2 /*return*/];\n }\n });\n }); }))];\n case 1:\n _a.sent();\n return [2 /*return*/, components];\n }\n });\n });\n}\n\nfunction detectAppVersion(_a) {\n var appVersion = _a.appVersion;\n if (appVersion.state !== 0 /* State.Success */)\n return false;\n if (/headless/i.test(appVersion.value))\n return BotKind.HeadlessChrome;\n if (/electron/i.test(appVersion.value))\n return BotKind.Electron;\n if (/slimerjs/i.test(appVersion.value))\n return BotKind.SlimerJS;\n}\n\nfunction arrayIncludes(arr, value) {\n return arr.indexOf(value) !== -1;\n}\nfunction strIncludes(str, value) {\n return str.indexOf(value) !== -1;\n}\nfunction arrayFind(array, callback) {\n if ('find' in array)\n return array.find(callback);\n for (var i = 0; i < array.length; i++) {\n if (callback(array[i], i, array))\n return array[i];\n }\n return undefined;\n}\n\nfunction getObjectProps(obj) {\n return Object.getOwnPropertyNames(obj);\n}\nfunction includes(arr) {\n var keys = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n keys[_i - 1] = arguments[_i];\n }\n var _loop_1 = function (key) {\n if (typeof key === 'string') {\n if (arrayIncludes(arr, key))\n return { value: true };\n }\n else {\n var match = arrayFind(arr, function (value) { return key.test(value); });\n if (match != null)\n return { value: true };\n }\n };\n for (var _a = 0, keys_1 = keys; _a < keys_1.length; _a++) {\n var key = keys_1[_a];\n var state_1 = _loop_1(key);\n if (typeof state_1 === \"object\")\n return state_1.value;\n }\n return false;\n}\nfunction countTruthy(values) {\n return values.reduce(function (sum, value) { return sum + (value ? 1 : 0); }, 0);\n}\n\nfunction detectDocumentAttributes(_a) {\n var documentElementKeys = _a.documentElementKeys;\n if (documentElementKeys.state !== 0 /* State.Success */)\n return false;\n if (includes(documentElementKeys.value, 'selenium', 'webdriver', 'driver')) {\n return BotKind.Selenium;\n }\n}\n\nfunction detectErrorTrace(_a) {\n var errorTrace = _a.errorTrace;\n if (errorTrace.state !== 0 /* State.Success */)\n return false;\n if (/PhantomJS/i.test(errorTrace.value))\n return BotKind.PhantomJS;\n}\n\nfunction detectEvalLengthInconsistency(_a) {\n var evalLength = _a.evalLength, browserKind = _a.browserKind, browserEngineKind = _a.browserEngineKind;\n if (evalLength.state !== 0 /* State.Success */ ||\n browserKind.state !== 0 /* State.Success */ ||\n browserEngineKind.state !== 0 /* State.Success */)\n return;\n var length = evalLength.value;\n if (browserEngineKind.value === \"unknown\" /* BrowserEngineKind.Unknown */)\n return false;\n return ((length === 37 && !arrayIncludes([\"webkit\" /* BrowserEngineKind.Webkit */, \"gecko\" /* BrowserEngineKind.Gecko */], browserEngineKind.value)) ||\n (length === 39 && !arrayIncludes([\"internet_explorer\" /* BrowserKind.IE */], browserKind.value)) ||\n (length === 33 && !arrayIncludes([\"chromium\" /* BrowserEngineKind.Chromium */], browserEngineKind.value)));\n}\n\nfunction detectFunctionBind(_a) {\n var functionBind = _a.functionBind;\n if (functionBind.state === -2 /* State.NotFunction */)\n return BotKind.PhantomJS;\n}\n\nfunction detectLanguagesLengthInconsistency(_a) {\n var languages = _a.languages;\n if (languages.state === 0 /* State.Success */ && languages.value.length === 0) {\n return BotKind.HeadlessChrome;\n }\n}\n\nfunction detectMimeTypesConsistent(_a) {\n var mimeTypesConsistent = _a.mimeTypesConsistent;\n if (mimeTypesConsistent.state === 0 /* State.Success */ && !mimeTypesConsistent.value) {\n return BotKind.Unknown;\n }\n}\n\nfunction detectNotificationPermissions(_a) {\n var notificationPermissions = _a.notificationPermissions, browserKind = _a.browserKind;\n if (browserKind.state !== 0 /* State.Success */ || browserKind.value !== \"chrome\" /* BrowserKind.Chrome */)\n return false;\n if (notificationPermissions.state === 0 /* State.Success */ && notificationPermissions.value) {\n return BotKind.HeadlessChrome;\n }\n}\n\nfunction detectPluginsArray(_a) {\n var pluginsArray = _a.pluginsArray;\n if (pluginsArray.state === 0 /* State.Success */ && !pluginsArray.value)\n return BotKind.HeadlessChrome;\n}\n\nfunction detectPluginsLengthInconsistency(_a) {\n var pluginsLength = _a.pluginsLength, android = _a.android, browserKind = _a.browserKind, browserEngineKind = _a.browserEngineKind;\n if (pluginsLength.state !== 0 /* State.Success */ ||\n android.state !== 0 /* State.Success */ ||\n browserKind.state !== 0 /* State.Success */ ||\n browserEngineKind.state !== 0 /* State.Success */)\n return;\n if (browserKind.value !== \"chrome\" /* BrowserKind.Chrome */ ||\n android.value ||\n browserEngineKind.value !== \"chromium\" /* BrowserEngineKind.Chromium */)\n return;\n if (pluginsLength.value === 0)\n return BotKind.HeadlessChrome;\n}\n\nfunction detectProcess(_a) {\n var _b;\n var process = _a.process;\n if (process.state !== 0 /* State.Success */)\n return false;\n if (process.value.type === 'renderer' || ((_b = process.value.versions) === null || _b === void 0 ? void 0 : _b.electron) != null)\n return BotKind.Electron;\n}\n\nfunction detectProductSub(_a) {\n var productSub = _a.productSub, browserKind = _a.browserKind;\n if (productSub.state !== 0 /* State.Success */ || browserKind.state !== 0 /* State.Success */)\n return false;\n if ((browserKind.value === \"chrome\" /* BrowserKind.Chrome */ ||\n browserKind.value === \"safari\" /* BrowserKind.Safari */ ||\n browserKind.value === \"opera\" /* BrowserKind.Opera */ ||\n browserKind.value === \"wechat\" /* BrowserKind.WeChat */) &&\n productSub.value !== '20030107')\n return BotKind.Unknown;\n}\n\nfunction detectUserAgent(_a) {\n var userAgent = _a.userAgent;\n if (userAgent.state !== 0 /* State.Success */)\n return false;\n if (/PhantomJS/i.test(userAgent.value))\n return BotKind.PhantomJS;\n if (/Headless/i.test(userAgent.value))\n return BotKind.HeadlessChrome;\n if (/Electron/i.test(userAgent.value))\n return BotKind.Electron;\n if (/slimerjs/i.test(userAgent.value))\n return BotKind.SlimerJS;\n}\n\nfunction detectWebDriver(_a) {\n var webDriver = _a.webDriver;\n if (webDriver.state === 0 /* State.Success */ && webDriver.value)\n return BotKind.HeadlessChrome;\n}\n\nfunction detectWebGL(_a) {\n var webGL = _a.webGL;\n if (webGL.state === 0 /* State.Success */) {\n var _b = webGL.value, vendor = _b.vendor, renderer = _b.renderer;\n if (vendor == 'Brian Paul' && renderer == 'Mesa OffScreen') {\n return BotKind.HeadlessChrome;\n }\n }\n}\n\nfunction detectWindowExternal(_a) {\n var windowExternal = _a.windowExternal;\n if (windowExternal.state !== 0 /* State.Success */)\n return false;\n if (/Sequentum/i.test(windowExternal.value))\n return BotKind.Sequentum;\n}\n\nfunction detectWindowSize(_a) {\n var windowSize = _a.windowSize, documentFocus = _a.documentFocus;\n if (windowSize.state !== 0 /* State.Success */ || documentFocus.state !== 0 /* State.Success */)\n return false;\n var _b = windowSize.value, outerWidth = _b.outerWidth, outerHeight = _b.outerHeight;\n // When a page is opened in a new tab without focusing it right away, the window outer size is 0x0\n if (!documentFocus.value)\n return;\n if (outerWidth === 0 && outerHeight === 0)\n return BotKind.HeadlessChrome;\n}\n\nfunction detectDistinctiveProperties(_a) {\n var distinctiveProps = _a.distinctiveProps;\n if (distinctiveProps.state !== 0 /* State.Success */)\n return false;\n var value = distinctiveProps.value;\n var bot;\n for (bot in value)\n if (value[bot])\n return bot;\n}\n\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nvar detectors = {\n detectAppVersion: detectAppVersion,\n detectDocumentAttributes: detectDocumentAttributes,\n detectErrorTrace: detectErrorTrace,\n detectEvalLengthInconsistency: detectEvalLengthInconsistency,\n detectFunctionBind: detectFunctionBind,\n detectLanguagesLengthInconsistency: detectLanguagesLengthInconsistency,\n detectNotificationPermissions: detectNotificationPermissions,\n detectPluginsArray: detectPluginsArray,\n detectPluginsLengthInconsistency: detectPluginsLengthInconsistency,\n detectProcess: detectProcess,\n detectUserAgent: detectUserAgent,\n detectWebDriver: detectWebDriver,\n detectWebGL: detectWebGL,\n detectWindowExternal: detectWindowExternal,\n detectWindowSize: detectWindowSize,\n detectMimeTypesConsistent: detectMimeTypesConsistent,\n detectProductSub: detectProductSub,\n detectDistinctiveProperties: detectDistinctiveProperties,\n};\n\nfunction getAppVersion() {\n var appVersion = navigator.appVersion;\n if (appVersion == undefined) {\n throw new BotdError(-1 /* State.Undefined */, 'navigator.appVersion is undefined');\n }\n return appVersion;\n}\n\nfunction getDocumentElementKeys() {\n if (document.documentElement === undefined) {\n throw new BotdError(-1 /* State.Undefined */, 'document.documentElement is undefined');\n }\n var documentElement = document.documentElement;\n if (typeof documentElement.getAttributeNames !== 'function') {\n throw new BotdError(-2 /* State.NotFunction */, 'document.documentElement.getAttributeNames is not a function');\n }\n return documentElement.getAttributeNames();\n}\n\nfunction getErrorTrace() {\n try {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n null[0]();\n }\n catch (error) {\n if (error instanceof Error && error['stack'] != null) {\n return error.stack.toString();\n }\n }\n throw new BotdError(-3 /* State.UnexpectedBehaviour */, 'errorTrace signal unexpected behaviour');\n}\n\nfunction getEvalLength() {\n return eval.toString().length;\n}\n\nfunction getFunctionBind() {\n if (Function.prototype.bind === undefined) {\n throw new BotdError(-2 /* State.NotFunction */, 'Function.prototype.bind is undefined');\n }\n return Function.prototype.bind.toString();\n}\n\nfunction getBrowserEngineKind() {\n var _a, _b;\n // Based on research in October 2020. Tested to detect Chromium 42-86.\n var w = window;\n var n = navigator;\n if (countTruthy([\n 'webkitPersistentStorage' in n,\n 'webkitTemporaryStorage' in n,\n n.vendor.indexOf('Google') === 0,\n 'webkitResolveLocalFileSystemURL' in w,\n 'BatteryManager' in w,\n 'webkitMediaStream' in w,\n 'webkitSpeechGrammar' in w,\n ]) >= 5) {\n return \"chromium\" /* BrowserEngineKind.Chromium */;\n }\n if (countTruthy([\n 'ApplePayError' in w,\n 'CSSPrimitiveValue' in w,\n 'Counter' in w,\n n.vendor.indexOf('Apple') === 0,\n 'getStorageUpdates' in n,\n 'WebKitMediaKeys' in w,\n ]) >= 4) {\n return \"webkit\" /* BrowserEngineKind.Webkit */;\n }\n if (countTruthy([\n 'buildID' in navigator,\n 'MozAppearance' in ((_b = (_a = document.documentElement) === null || _a === void 0 ? void 0 : _a.style) !== null && _b !== void 0 ? _b : {}),\n 'onmozfullscreenchange' in w,\n 'mozInnerScreenX' in w,\n 'CSSMozDocumentRule' in w,\n 'CanvasCaptureMediaStream' in w,\n ]) >= 4) {\n return \"gecko\" /* BrowserEngineKind.Gecko */;\n }\n return \"unknown\" /* BrowserEngineKind.Unknown */;\n}\nfunction getBrowserKind() {\n var _a;\n var userAgent = (_a = navigator.userAgent) === null || _a === void 0 ? void 0 : _a.toLowerCase();\n if (strIncludes(userAgent, 'edg/')) {\n return \"edge\" /* BrowserKind.Edge */;\n }\n else if (strIncludes(userAgent, 'trident') || strIncludes(userAgent, 'msie')) {\n return \"internet_explorer\" /* BrowserKind.IE */;\n }\n else if (strIncludes(userAgent, 'wechat')) {\n return \"wechat\" /* BrowserKind.WeChat */;\n }\n else if (strIncludes(userAgent, 'firefox')) {\n return \"firefox\" /* BrowserKind.Firefox */;\n }\n else if (strIncludes(userAgent, 'opera') || strIncludes(userAgent, 'opr')) {\n return \"opera\" /* BrowserKind.Opera */;\n }\n else if (strIncludes(userAgent, 'chrome')) {\n return \"chrome\" /* BrowserKind.Chrome */;\n }\n else if (strIncludes(userAgent, 'safari')) {\n return \"safari\" /* BrowserKind.Safari */;\n }\n else {\n return \"unknown\" /* BrowserKind.Unknown */;\n }\n}\n// Source: https://github.com/fingerprintjs/fingerprintjs/blob/master/src/utils/browser.ts#L223\nfunction isAndroid() {\n var browserEngineKind = getBrowserEngineKind();\n var isItChromium = browserEngineKind === \"chromium\" /* BrowserEngineKind.Chromium */;\n var isItGecko = browserEngineKind === \"gecko\" /* BrowserEngineKind.Gecko */;\n // Only 2 browser engines are presented on Android.\n // Actually, there is also Android 4.1 browser, but it's not worth detecting it at the moment.\n if (!isItChromium && !isItGecko)\n return false;\n var w = window;\n // Chrome removes all words \"Android\" from `navigator` when desktop version is requested\n // Firefox keeps \"Android\" in `navigator.appVersion` when desktop version is requested\n return (countTruthy([\n 'onorientationchange' in w,\n 'orientation' in w,\n isItChromium && !('SharedWorker' in w),\n isItGecko && /android/i.test(navigator.appVersion),\n ]) >= 2);\n}\nfunction getDocumentFocus() {\n if (document.hasFocus === undefined) {\n return false;\n }\n return document.hasFocus();\n}\nfunction isChromium86OrNewer() {\n // Checked in Chrome 85 vs Chrome 86 both on desktop and Android\n var w = window;\n return (countTruthy([\n !('MediaSettingsRange' in w),\n 'RTCEncodedAudioFrame' in w,\n '' + w.Intl === '[object Intl]',\n '' + w.Reflect === '[object Reflect]',\n ]) >= 3);\n}\n\nfunction getLanguages() {\n var n = navigator;\n var result = [];\n var language = n.language || n.userLanguage || n.browserLanguage || n.systemLanguage;\n if (language !== undefined) {\n result.push([language]);\n }\n if (Array.isArray(n.languages)) {\n var browserEngine = getBrowserEngineKind();\n // Starting from Chromium 86, there is only a single value in `navigator.language` in Incognito mode:\n // the value of `navigator.language`. Therefore, the value is ignored in this browser.\n if (!(browserEngine === \"chromium\" /* BrowserEngineKind.Chromium */ && isChromium86OrNewer())) {\n result.push(n.languages);\n }\n }\n else if (typeof n.languages === 'string') {\n var languages = n.languages;\n if (languages) {\n result.push(languages.split(','));\n }\n }\n return result;\n}\n\nfunction areMimeTypesConsistent() {\n if (navigator.mimeTypes === undefined) {\n throw new BotdError(-1 /* State.Undefined */, 'navigator.mimeTypes is undefined');\n }\n var mimeTypes = navigator.mimeTypes;\n var isConsistent = Object.getPrototypeOf(mimeTypes) === MimeTypeArray.prototype;\n for (var i = 0; i < mimeTypes.length; i++) {\n isConsistent && (isConsistent = Object.getPrototypeOf(mimeTypes[i]) === MimeType.prototype);\n }\n return isConsistent;\n}\n\nfunction getNotificationPermissions() {\n return __awaiter(this, void 0, void 0, function () {\n var permissions, permissionStatus;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (window.Notification === undefined) {\n throw new BotdError(-1 /* State.Undefined */, 'window.Notification is undefined');\n }\n if (navigator.permissions === undefined) {\n throw new BotdError(-1 /* State.Undefined */, 'navigator.permissions is undefined');\n }\n permissions = navigator.permissions;\n if (typeof permissions.query !== 'function') {\n throw new BotdError(-2 /* State.NotFunction */, 'navigator.permissions.query is not a function');\n }\n _a.label = 1;\n case 1:\n _a.trys.push([1, 3, , 4]);\n return [4 /*yield*/, permissions.query({ name: 'notifications' })];\n case 2:\n permissionStatus = _a.sent();\n return [2 /*return*/, window.Notification.permission === 'denied' && permissionStatus.state === 'prompt'];\n case 3:\n _a.sent();\n throw new BotdError(-3 /* State.UnexpectedBehaviour */, 'notificationPermissions signal unexpected behaviour');\n case 4: return [2 /*return*/];\n }\n });\n });\n}\n\nfunction getPluginsArray() {\n if (navigator.plugins === undefined) {\n throw new BotdError(-1 /* State.Undefined */, 'navigator.plugins is undefined');\n }\n if (window.PluginArray === undefined) {\n throw new BotdError(-1 /* State.Undefined */, 'window.PluginArray is undefined');\n }\n return navigator.plugins instanceof PluginArray;\n}\n\nfunction getPluginsLength() {\n if (navigator.plugins === undefined) {\n throw new BotdError(-1 /* State.Undefined */, 'navigator.plugins is undefined');\n }\n if (navigator.plugins.length === undefined) {\n throw new BotdError(-3 /* State.UnexpectedBehaviour */, 'navigator.plugins.length is undefined');\n }\n return navigator.plugins.length;\n}\n\nfunction getProcess() {\n var process = window.process;\n var errorPrefix = 'window.process is';\n if (process === undefined) {\n throw new BotdError(-1 /* State.Undefined */, \"\".concat(errorPrefix, \" undefined\"));\n }\n if (process && typeof process !== 'object') {\n throw new BotdError(-3 /* State.UnexpectedBehaviour */, \"\".concat(errorPrefix, \" not an object\"));\n }\n return process;\n}\n\nfunction getProductSub() {\n var productSub = navigator.productSub;\n if (productSub === undefined) {\n throw new BotdError(-1 /* State.Undefined */, 'navigator.productSub is undefined');\n }\n return productSub;\n}\n\nfunction getRTT() {\n if (navigator.connection === undefined) {\n throw new BotdError(-1 /* State.Undefined */, 'navigator.connection is undefined');\n }\n if (navigator.connection.rtt === undefined) {\n throw new BotdError(-1 /* State.Undefined */, 'navigator.connection.rtt is undefined');\n }\n return navigator.connection.rtt;\n}\n\nfunction getUserAgent() {\n return navigator.userAgent;\n}\n\nfunction getWebDriver() {\n if (navigator.webdriver == undefined) {\n throw new BotdError(-1 /* State.Undefined */, 'navigator.webdriver is undefined');\n }\n return navigator.webdriver;\n}\n\nfunction getWebGL() {\n var canvasElement = document.createElement('canvas');\n if (typeof canvasElement.getContext !== 'function') {\n throw new BotdError(-2 /* State.NotFunction */, 'HTMLCanvasElement.getContext is not a function');\n }\n var webGLContext = canvasElement.getContext('webgl');\n if (webGLContext === null) {\n throw new BotdError(-4 /* State.Null */, 'WebGLRenderingContext is null');\n }\n if (typeof webGLContext.getParameter !== 'function') {\n throw new BotdError(-2 /* State.NotFunction */, 'WebGLRenderingContext.getParameter is not a function');\n }\n var vendor = webGLContext.getParameter(webGLContext.VENDOR);\n var renderer = webGLContext.getParameter(webGLContext.RENDERER);\n return { vendor: vendor, renderer: renderer };\n}\n\nfunction getWindowExternal() {\n if (window.external === undefined) {\n throw new BotdError(-1 /* State.Undefined */, 'window.external is undefined');\n }\n var external = window.external;\n if (typeof external.toString !== 'function') {\n throw new BotdError(-2 /* State.NotFunction */, 'window.external.toString is not a function');\n }\n return external.toString();\n}\n\nfunction getWindowSize() {\n return {\n outerWidth: window.outerWidth,\n outerHeight: window.outerHeight,\n innerWidth: window.innerWidth,\n innerHeight: window.innerHeight,\n };\n}\n\nfunction checkDistinctiveProperties() {\n var _a;\n // The order in the following list matters, because specific types of bots come first, followed by automation technologies.\n var distinctivePropsList = (_a = {},\n _a[BotKind.Awesomium] = {\n window: ['awesomium'],\n },\n _a[BotKind.Cef] = {\n window: ['RunPerfTest'],\n },\n _a[BotKind.CefSharp] = {\n window: ['CefSharp'],\n },\n _a[BotKind.CoachJS] = {\n window: ['emit'],\n },\n _a[BotKind.FMiner] = {\n window: ['fmget_targets'],\n },\n _a[BotKind.Geb] = {\n window: ['geb'],\n },\n _a[BotKind.NightmareJS] = {\n window: ['__nightmare', 'nightmare'],\n },\n _a[BotKind.Phantomas] = {\n window: ['__phantomas'],\n },\n _a[BotKind.PhantomJS] = {\n window: ['callPhantom', '_phantom'],\n },\n _a[BotKind.Rhino] = {\n window: ['spawn'],\n },\n _a[BotKind.Selenium] = {\n window: ['_Selenium_IDE_Recorder', '_selenium', 'calledSelenium', /^([a-z]){3}_.*_(Array|Promise|Symbol)$/],\n document: ['__selenium_evaluate', 'selenium-evaluate', '__selenium_unwrapped'],\n },\n _a[BotKind.WebDriverIO] = {\n window: ['wdioElectron'],\n },\n _a[BotKind.WebDriver] = {\n window: [\n 'webdriver',\n '__webdriverFunc',\n '__lastWatirAlert',\n '__lastWatirConfirm',\n '__lastWatirPrompt',\n '_WEBDRIVER_ELEM_CACHE',\n 'ChromeDriverw',\n ],\n document: [\n '__webdriver_script_fn',\n '__driver_evaluate',\n '__webdriver_evaluate',\n '__fxdriver_evaluate',\n '__driver_unwrapped',\n '__webdriver_unwrapped',\n '__fxdriver_unwrapped',\n '__webdriver_script_fn',\n '__webdriver_script_func',\n '__webdriver_script_function',\n '$cdc_asdjflasutopfhvcZLmcf',\n '$cdc_asdjflasutopfhvcZLmcfl_',\n '$chrome_asyncScriptInfo',\n '__$webdriverAsyncExecutor',\n ],\n },\n _a[BotKind.HeadlessChrome] = {\n window: ['domAutomation', 'domAutomationController'],\n },\n _a);\n var botName;\n var result = {};\n var windowProps = getObjectProps(window);\n var documentProps = [];\n if (window.document !== undefined)\n documentProps = getObjectProps(window.document);\n for (botName in distinctivePropsList) {\n var props = distinctivePropsList[botName];\n if (props !== undefined) {\n var windowContains = props.window === undefined ? false : includes.apply(void 0, __spreadArray([windowProps], props.window, false));\n var documentContains = props.document === undefined || !documentProps.length ? false : includes.apply(void 0, __spreadArray([documentProps], props.document, false));\n result[botName] = windowContains || documentContains;\n }\n }\n return result;\n}\n\nvar sources = {\n android: isAndroid,\n browserKind: getBrowserKind,\n browserEngineKind: getBrowserEngineKind,\n documentFocus: getDocumentFocus,\n userAgent: getUserAgent,\n appVersion: getAppVersion,\n rtt: getRTT,\n windowSize: getWindowSize,\n pluginsLength: getPluginsLength,\n pluginsArray: getPluginsArray,\n errorTrace: getErrorTrace,\n productSub: getProductSub,\n windowExternal: getWindowExternal,\n mimeTypesConsistent: areMimeTypesConsistent,\n evalLength: getEvalLength,\n webGL: getWebGL,\n webDriver: getWebDriver,\n languages: getLanguages,\n notificationPermissions: getNotificationPermissions,\n documentElementKeys: getDocumentElementKeys,\n functionBind: getFunctionBind,\n process: getProcess,\n distinctiveProps: checkDistinctiveProperties,\n};\n\n/**\n * Class representing a bot detector.\n *\n * @class\n * @implements {BotDetectorInterface}\n */\nvar BotDetector = /** @class */ (function () {\n function BotDetector() {\n this.components = undefined;\n this.detections = undefined;\n }\n BotDetector.prototype.getComponents = function () {\n return this.components;\n };\n BotDetector.prototype.getDetections = function () {\n return this.detections;\n };\n /**\n * @inheritdoc\n */\n BotDetector.prototype.detect = function () {\n if (this.components === undefined) {\n throw new Error(\"BotDetector.detect can't be called before BotDetector.collect\");\n }\n var _a = detect(this.components, detectors), detections = _a[0], finalDetection = _a[1];\n this.detections = detections;\n return finalDetection;\n };\n /**\n * @inheritdoc\n */\n BotDetector.prototype.collect = function () {\n return __awaiter(this, void 0, void 0, function () {\n var _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n _a = this;\n return [4 /*yield*/, collect(sources)];\n case 1:\n _a.components = _b.sent();\n return [2 /*return*/, this.components];\n }\n });\n });\n };\n return BotDetector;\n}());\n\n/**\n * Sends an unpersonalized AJAX request to collect installation statistics\n */\nfunction monitor() {\n // The FingerprintJS CDN (https://github.com/fingerprintjs/cdn) replaces `window.__fpjs_d_m` with `true`\n if (window.__fpjs_d_m || Math.random() >= 0.001) {\n return;\n }\n try {\n var request = new XMLHttpRequest();\n request.open('get', \"https://m1.openfpcdn.io/botd/v\".concat(version, \"/npm-monitoring\"), true);\n request.send();\n }\n catch (error) {\n // console.error is ok here because it's an unexpected error handler\n // eslint-disable-next-line no-console\n console.error(error);\n }\n}\nfunction load(_a) {\n var _b = _a === void 0 ? {} : _a, _c = _b.monitoring, monitoring = _c === void 0 ? true : _c;\n return __awaiter(this, void 0, void 0, function () {\n var detector;\n return __generator(this, function (_d) {\n switch (_d.label) {\n case 0:\n if (monitoring) {\n monitor();\n }\n detector = new BotDetector();\n return [4 /*yield*/, detector.collect()];\n case 1:\n _d.sent();\n return [2 /*return*/, detector];\n }\n });\n });\n}\nvar index = { load: load };\n\nexport { BotKind, BotdError, collect, index as default, detect, detectors, load, sources };\n","import { useState, useEffect } from 'react';\r\nimport { load } from '@fingerprintjs/botd';\r\nimport { BotDetectionResult } from '../types';\r\n\r\nexport const useBotDetection = (): BotDetectionResult => {\r\n const [result, setResult] = useState<BotDetectionResult>({\r\n isBot: false,\r\n reasons: []\r\n });\r\n\r\n useEffect(() => {\r\n const detectBot = async () => {\r\n try {\r\n // Load and initialize BotD\r\n const botd = await load();\r\n const detectionResult = await botd.detect();\r\n \r\n const isBot = detectionResult.bot;\r\n const reasons = isBot ? ['FingerprintJS BotD detected automation'] : [];\r\n\r\n setResult({\r\n isBot,\r\n reasons\r\n });\r\n } catch (error) {\r\n // If BotD fails to load, assume human user (fail open for better UX)\r\n console.warn('BotD detection failed, assuming human user:', error);\r\n \r\n setResult({\r\n isBot: false,\r\n reasons: ['BotD failed to load - assuming human']\r\n });\r\n }\r\n };\r\n\r\n detectBot();\r\n }, []);\r\n\r\n return result;\r\n}; ","import { useState, useEffect, useRef } from 'react';\r\nimport type { ViewabilityResult, ViewabilityOptions } from '../types';\r\n\r\nexport const useViewability = (options: ViewabilityOptions = {}): ViewabilityResult & { \r\n elementRef: React.RefObject<HTMLDivElement>;\r\n trackImpression: (adId?: string) => void;\r\n} => {\r\n const { threshold = 0.5, durationMs = 1000, onImpressionTracked } = options;\r\n\r\n const elementRef = useRef<HTMLDivElement>(null);\r\n const [isViewable, setIsViewable] = useState(false);\r\n const [hasBeenViewed, setHasBeenViewed] = useState(false);\r\n const [impressionTracked, setImpressionTracked] = useState(false);\r\n const [viewableStartTime, setViewableStartTime] = useState<number | null>(null);\r\n const [hasMetDuration, setHasMetDuration] = useState(false);\r\n\r\n useEffect(() => {\r\n if (!elementRef.current) return;\r\n\r\n const observer = new IntersectionObserver(\r\n ([entry]) => {\r\n const viewable = entry.intersectionRatio >= threshold;\r\n const now = Date.now();\r\n \r\n if (viewable) {\r\n if (viewableStartTime === null) {\r\n setViewableStartTime(now);\r\n }\r\n setIsViewable(true);\r\n \r\n if (!hasBeenViewed) {\r\n setHasBeenViewed(true);\r\n }\r\n } else {\r\n setViewableStartTime(null);\r\n setIsViewable(false);\r\n setHasMetDuration(false);\r\n }\r\n },\r\n { \r\n threshold,\r\n rootMargin: '0px'\r\n }\r\n );\r\n\r\n observer.observe(elementRef.current);\r\n return () => observer.disconnect();\r\n }, [threshold, hasBeenViewed, viewableStartTime]);\r\n\r\n // Duration tracking effect\r\n useEffect(() => {\r\n if (!isViewable || viewableStartTime === null || hasMetDuration) return;\r\n\r\n const timeoutId = setTimeout(() => {\r\n if (isViewable && viewableStartTime !== null) {\r\n const elapsed = Date.now() - viewableStartTime;\r\n if (elapsed >= durationMs) {\r\n setHasMetDuration(true);\r\n }\r\n }\r\n }, durationMs);\r\n\r\n return () => clearTimeout(timeoutId);\r\n }, [isViewable, viewableStartTime, durationMs, hasMetDuration]);\r\n\r\n const trackImpression = (adId?: string) => {\r\n if (impressionTracked) return;\r\n \r\n setImpressionTracked(true);\r\n \r\n if (onImpressionTracked && adId) {\r\n onImpressionTracked(adId);\r\n }\r\n };\r\n\r\n return {\r\n elementRef,\r\n isViewable: isViewable && hasMetDuration, // MRC-compliant viewability (with duration)\r\n isInstantViewable: isViewable, // Instant viewability (no duration requirement)\r\n hasBeenViewed,\r\n impressionTracked,\r\n trackImpression\r\n };\r\n}; ","export interface ColorPalette {\r\n // Modal background\r\n background: string;\r\n\r\n // Modal text\r\n text: string;\r\n\r\n // Modal link colors\r\n primary: string;\r\n primaryHover: string;\r\n\r\n // Modal border\r\n border: string;\r\n}\r\n\r\nexport interface FontPalette {\r\n primary: string;\r\n secondary: string;\r\n}\r\n\r\n// Font definitions\r\nexport const fonts: Record<string, FontPalette> = {\r\n 'san-serif': {\r\n primary: '-apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif',\r\n secondary: 'system-ui, -apple-system, sans-serif'\r\n },\r\n 'serif': {\r\n primary: 'Georgia, \"Times New Roman\", Times, serif',\r\n secondary: '\"Hoefler Text\", \"Baskerville Old Face\", Garamond, serif'\r\n },\r\n 'monospace': {\r\n primary: '\"SF Mono\", Monaco, \"Inconsolata\", \"Roboto Mono\", \"Source Code Pro\", Consolas, \"Courier New\", monospace',\r\n secondary: 'ui-monospace, Menlo, monospace'\r\n }\r\n};\r\n\r\n// Modal color themes - only two options based on theme mode\r\nconst colorCombinations: Record<string, ColorPalette> = {\r\n 'light': {\r\n background: '#ffffff',\r\n text: '#1e293b',\r\n primary: '#3b82f6',\r\n primaryHover: '#2563eb',\r\n border: '#e2e8f0'\r\n },\r\n 'dark': {\r\n background: '#0f172a',\r\n text: '#f1f5f9',\r\n primary: '#60a5fa',\r\n primaryHover: '#3b82f6',\r\n border: '#475569'\r\n }\r\n};\r\n\r\n// Function to get the appropriate theme based on theme mode\r\n// Accent is ignored - modal always uses consistent colors based on light/dark theme\r\nexport function getColorTheme(themeMode: 'light' | 'dark' | 'auto', _accent?: string): ColorPalette {\r\n // Handle auto theme by detecting system preference\r\n let resolvedTheme = themeMode;\r\n if (themeMode === 'auto') {\r\n resolvedTheme = window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';\r\n }\r\n\r\n // Return the theme color, fallback to light\r\n return colorCombinations[resolvedTheme] || colorCombinations['light'];\r\n}\r\n\r\n// Helper functions for styling\r\nexport const getSolidBackground = (colors: ColorPalette): string => {\r\n return colors.background;\r\n};\r\n\r\nexport const getBackgroundGradient = (colors: ColorPalette): string => {\r\n // No longer using gradients, just return solid background\r\n return colors.background;\r\n};\r\n\r\nexport const getTextMuted = (colors: ColorPalette): string => {\r\n // Use a slightly muted version of the text color\r\n return colors.text + 'aa'; // Add alpha for slight transparency\r\n};\r\n\r\nexport const getTextSecondary = (colors: ColorPalette): string => {\r\n // Not used anymore, but keeping for compatibility\r\n return colors.text;\r\n};\r\n\r\nexport const getBorderLight = (colors: ColorPalette): string => {\r\n return colors.border;\r\n};\r\n\r\nexport const getShadow = (colors: ColorPalette): string => {\r\n return 'rgba(0, 0, 0, 0.1)';\r\n};\r\n\r\nexport const getFontStyles = (font: string = 'san-serif'): FontPalette => {\r\n return fonts[font] || fonts['san-serif'];\r\n};","import { SimulaTheme, AccentOption, FontOption } from '../types';\r\nimport { \r\n getColorTheme, \r\n getFontStyles, \r\n getSolidBackground,\r\n getTextMuted,\r\n getShadow\r\n} from './colorThemes';\r\n\r\nexport const getResponsiveStyles = (theme: SimulaTheme = {}): React.CSSProperties => {\r\n const {\r\n theme: themeMode = 'light',\r\n accent = 'blue',\r\n font = 'san-serif',\r\n width = 'auto',\r\n } = theme;\r\n\r\n // If accent or font is an array, use the first value for styling\r\n const effectiveAccent: AccentOption = Array.isArray(accent) ? accent[0] : accent;\r\n const effectiveFont: FontOption = Array.isArray(font) ? font[0] : font;\r\n\r\n const colors = getColorTheme(themeMode, effectiveAccent);\r\n const fonts = getFontStyles(effectiveFont);\r\n\r\n return {\r\n '--simula-primary': colors.primary,\r\n '--simula-border': colors.border,\r\n '--simula-background': getSolidBackground(colors),\r\n '--simula-text': colors.text,\r\n '--simula-font-primary': fonts.primary,\r\n '--simula-width': typeof width === 'number' ? `${width}px` : width,\r\n } as React.CSSProperties;\r\n};\r\n\r\nexport const createInChatAdSlotCSS = (theme: SimulaTheme = {}) => {\r\n const {\r\n theme: themeMode = 'light',\r\n accent = 'blue',\r\n font = 'san-serif',\r\n width = 'auto',\r\n } = theme;\r\n\r\n // If accent or font is an array, use the first value for styling\r\n const effectiveAccent: AccentOption = Array.isArray(accent) ? accent[0] : accent;\r\n const effectiveFont: FontOption = Array.isArray(font) ? font[0] : font;\r\n\r\n const colors = getColorTheme(themeMode, effectiveAccent);\r\n const fonts = getFontStyles(effectiveFont);\r\n\r\n // Fixed dimensions\r\n const minWidth = 320;\r\n const fixedHeight = 265;\r\n\r\n // Handle width calculation\r\n const getWidthCSS = () => {\r\n if (width === 'auto') {\r\n return '100%';\r\n }\r\n if (typeof width === 'string') {\r\n // For percentage values and other CSS units, use as-is\r\n return width;\r\n }\r\n return `${width}px`;\r\n };\r\n\r\n return `\r\n .simula-content-slot {\r\n width: ${getWidthCSS()};\r\n min-width: ${minWidth}px;\r\n height: ${fixedHeight}px;\r\n margin: 0px;\r\n line-height: 1.5;\r\n position: relative;\r\n overflow: hidden;\r\n }\r\n\r\n .simula-content-slot * {\r\n margin: 0;\r\n padding: 0;\r\n }\r\n\r\n .simula-content-frame {\r\n width: 100%;\r\n height: 100%;\r\n border: none;\r\n outline: none;\r\n box-shadow: none;\r\n border-radius: 0;\r\n background: transparent;\r\n display: block;\r\n margin: 0;\r\n padding: 0;\r\n position: relative;\r\n vertical-align: top;\r\n }\r\n\r\n .simula-info-icon {\r\n position: absolute;\r\n top: 12;\r\n right: 12px;\r\n background: none;\r\n border: none;\r\n color: ${colors.text};\r\n opacity: 0.5;\r\n cursor: pointer;\r\n padding: 6px;\r\n border-radius: 50%;\r\n transition: all 0.2s ease;\r\n z-index: 10;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n }\r\n\r\n .simula-info-icon:hover {\r\n opacity: 1;\r\n transform: scale(1.1);\r\n }\r\n\r\n .simula-modal-overlay {\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n right: 0;\r\n bottom: 0;\r\n background: rgba(0, 0, 0, 0.5);\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n z-index: 1000;\r\n }\r\n\r\n .simula-modal-content {\r\n background: ${getSolidBackground(colors)};\r\n border-radius: 8px;\r\n padding: 16px;\r\n width: 75%;\r\n min-width: 200px;\r\n max-width: 431px;\r\n margin: 16px;\r\n position: relative;\r\n box-shadow: 0 4px 12px ${getShadow(colors)};\r\n font-family: ${fonts.primary};\r\n line-height: 1.5;\r\n color: ${colors.text};\r\n font-size: 14px;\r\n border: 1px solid ${colors.border};\r\n }\r\n\r\n .simula-modal-close {\r\n position: absolute;\r\n top: 8px;\r\n right: 12px;\r\n background: none;\r\n border: none;\r\n font-size: 24px;\r\n cursor: pointer;\r\n color: ${getTextMuted(colors)};\r\n padding: 4px;\r\n line-height: 1;\r\n }\r\n\r\n .simula-modal-close:hover {\r\n color: ${colors.text};\r\n }\r\n\r\n .simula-modal-link {\r\n color: ${colors.primary};\r\n text-decoration: underline;\r\n }\r\n\r\n .simula-modal-link:hover {\r\n color: ${colors.primaryHover};\r\n text-decoration: underline;\r\n }\r\n\r\n .simula-content-label {\r\n font-size: 10px;\r\n color: ${getTextMuted(colors)};\r\n text-transform: uppercase;\r\n letter-spacing: 0.05em;\r\n margin-bottom: 8px;\r\n display: block;\r\n }\r\n `;\r\n};","import React, { useState, useEffect, useRef, useCallback, useMemo } from 'react';\r\nimport { v4 as uuidv4 } from 'uuid';\r\nimport { useSimula } from './SimulaProvider';\r\nimport { useDebounce } from './hooks/useDebounce';\r\nimport { useBotDetection } from './hooks/useBotDetection';\r\nimport { useViewability } from './hooks/useViewability';\r\nimport { fetchAd, trackImpression } from './utils/api';\r\nimport { createInChatAdSlotCSS } from './utils/styling';\r\nimport { validateInChatAdSlotProps } from './utils/validation';\r\nimport { InChatAdSlotProps, AdData } from './types';\r\n\r\n// Internal constant to prevent API abuse\r\nconst MIN_FETCH_INTERVAL_MS = 1000; // 1 second minimum between fetches\r\n\r\n// Helper functions for width validation\r\nconst isAutoWidth = (width: any): boolean => width === 'auto';\r\nconst isPercentageWidth = (width: any): boolean => typeof width === 'string' && /^\\d+(?:\\.\\d+)?%$/.test(width);\r\nconst needsWidthMeasurement = (width: any): boolean => isAutoWidth(width) || isPercentageWidth(width);\r\n\r\n// Validate messages array has actual content\r\nconst hasValidMessages = (messages: any[]): boolean => {\r\n return messages.length > 0 && messages.some(msg => msg && msg.content && msg.content.trim().length > 0);\r\n};\r\n\r\nexport const InChatAdSlot: React.FC<InChatAdSlotProps> = (props) => {\r\n // Validate props early\r\n validateInChatAdSlotProps(props);\r\n\r\n const {\r\n messages,\r\n trigger,\r\n formats: formatsRaw = ['all'],\r\n theme = {},\r\n debounceMs = 0,\r\n charDesc,\r\n onImpression,\r\n onClick,\r\n onError,\r\n } = props;\r\n\r\n // Normalize formats to array (similar to theme.accent and theme.font)\r\n const formats = Array.isArray(formatsRaw) ? formatsRaw : [formatsRaw];\r\n\r\n const { apiKey, sessionId } = useSimula();\r\n\r\n // Generate a stable slotId for this component instance\r\n const slotId = useMemo(() => `slot-${uuidv4()}`, []);\r\n \r\n const [ad, setAd] = useState<AdData | null>(null);\r\n const [loading, setLoading] = useState(false);\r\n const [error, setError] = useState<string | null>(null);\r\n const [shouldFetch, setShouldFetch] = useState(false);\r\n \r\n const [showInfoModal, setShowInfoModal] = useState(false);\r\n const [iframeLoaded, setIframeLoaded] = useState(false);\r\n const [measuredWidth, setMeasuredWidth] = useState<number | null>(null);\r\n\r\n // Track if this AdSlot has already been triggered\r\n const [hasTriggered, setHasTriggered] = useState(false);\r\n const [triggerUsed, setTriggerUsed] = useState<Promise<any> | null>(null);\r\n\r\n const lastFetchTimeRef = useRef<number>(0);\r\n const styleElementRef = useRef<HTMLStyleElement | null>(null);\r\n\r\n const {\r\n elementRef,\r\n hasBeenViewed,\r\n isViewable, // MRC-compliant (1 second duration)\r\n trackImpression: viewabilityTrackImpression\r\n } = useViewability({\r\n threshold: 0.5,\r\n durationMs: 1000, // 1 second for MRC compliance\r\n onImpressionTracked: (adId: string) => {\r\n // This gets called after impression tracking\r\n trackImpression(adId, apiKey);\r\n if (ad) {\r\n onImpression?.(ad);\r\n }\r\n }\r\n });\r\n\r\n const { isBot, reasons } = useBotDetection();\r\n\r\n // Measure actual width once when element is ready\r\n useEffect(() => {\r\n const currentWidth = theme.width;\r\n\r\n // If no width is configured at all, skip measurement\r\n if (currentWidth === undefined) return;\r\n\r\n // Only measure if it's 'auto' or a percentage value\r\n const needsMeasurement = needsWidthMeasurement(currentWidth);\r\n\r\n if (!needsMeasurement) return;\r\n if (!elementRef.current) return;\r\n\r\n // Track if already measured to prevent re-observation\r\n let hasMeasured = false;\r\n\r\n // Use ResizeObserver to get the initial size\r\n const resizeObserver = new ResizeObserver(entries => {\r\n const entry = entries[0];\r\n if (entry && !hasMeasured) {\r\n hasMeasured = true;\r\n const width = Math.round(entry.contentRect.width);\r\n setMeasuredWidth(width);\r\n\r\n // Disconnect after first measurement\r\n resizeObserver.disconnect();\r\n }\r\n });\r\n\r\n resizeObserver.observe(elementRef.current);\r\n\r\n return () => {\r\n resizeObserver.disconnect();\r\n };\r\n }, [theme.width, elementRef]);\r\n\r\n const fetchAdData = useCallback(async () => {\r\n if (!hasBeenViewed || loading || hasTriggered || error) {\r\n return;\r\n }\r\n\r\n // Block if sessionId is missing or invalid\r\n if (!sessionId) {\r\n setError('Session invalid, fetch ad request blocked');\r\n console.error('Session invalid, fetch ad request blocked');\r\n return;\r\n }\r\n\r\n // Wait for width measurement when using auto or percentage values\r\n const currentWidth = theme.width;\r\n const needsMeasurement = needsWidthMeasurement(currentWidth);\r\n\r\n if (needsMeasurement && measuredWidth === null) {\r\n return;\r\n }\r\n\r\n // Block ad requests from detected bots\r\n if (isBot) {\r\n console.warn('Bot detected, blocking ad request:', { reasons });\r\n return;\r\n }\r\n\r\n const now = Date.now();\r\n if (now - lastFetchTimeRef.current < MIN_FETCH_INTERVAL_MS) {\r\n return;\r\n }\r\n\r\n setLoading(true);\r\n setError(null);\r\n lastFetchTimeRef.current = now;\r\n\r\n try {\r\n // Validate width before making API call\r\n const currentConfiguredWidth = theme.width;\r\n const minWidth = 320;\r\n\r\n // Check width bounds (numeric or px string)\r\n let widthValue: number | null = null;\r\n if (typeof currentConfiguredWidth === 'number') {\r\n widthValue = currentConfiguredWidth;\r\n } else if (typeof currentConfiguredWidth === 'string') {\r\n const pxMatch = currentConfiguredWidth.match(/^(\\d+(?:\\.\\d+)?)px$/);\r\n if (pxMatch) {\r\n widthValue = parseFloat(pxMatch[1]);\r\n }\r\n }\r\n\r\n // Validate minimum width if we have a concrete value\r\n if (widthValue !== null && widthValue < minWidth) {\r\n console.error(`AdSlot width ${widthValue}px is below minimum ${minWidth}px. Skipping ad request.`);\r\n setError(`Invalid width: ${widthValue}px (minimum: ${minWidth}px)`);\r\n setLoading(false);\r\n return;\r\n }\r\n\r\n // Create theme with measured width for backend\r\n const themeForBackend = { ...theme };\r\n\r\n // Convert the current width to pixels for backend - always send as 'width'\r\n if (typeof currentConfiguredWidth === \"string\") {\r\n // Check if it's a px string like \"400px\"\r\n const pxMatch = currentConfiguredWidth.match(/^(\\d+(?:\\.\\d+)?)px$/);\r\n if (pxMatch) {\r\n // Convert \"400px\" to 400\r\n themeForBackend.width = parseFloat(pxMatch[1]);\r\n } else if (measuredWidth !== null) {\r\n // For 'auto' and percentages, use measured width\r\n // If measured width is below minimum, use minimum\r\n const finalWidth = measuredWidth < minWidth ? minWidth : measuredWidth;\r\n themeForBackend.width = finalWidth;\r\n }\r\n } else if (typeof currentConfiguredWidth === \"number\") {\r\n // Already a number, just use it\r\n themeForBackend.width = currentConfiguredWidth;\r\n }\r\n\r\n const result = await fetchAd({\r\n messages,\r\n formats,\r\n apiKey,\r\n slotId,\r\n theme: themeForBackend,\r\n sessionId,\r\n charDesc,\r\n });\r\n\r\n if (result.error) {\r\n console.warn('🚫 Ad fetch failed:', result.error);\r\n setError(result.error);\r\n onError?.(new Error(result.error));\r\n } else if (result.ad) {\r\n setAd(result.ad);\r\n // Mark as triggered - this AdSlot will never fetch again\r\n setHasTriggered(true);\r\n } else {\r\n console.warn('🚫 No ad returned from API - no fill or invalid response');\r\n setError('No ad available');\r\n onError?.(new Error('No ad available'));\r\n }\r\n } catch (err) {\r\n const errorMessage = err instanceof Error ? err.message : 'Failed to fetch ad';\r\n setError(errorMessage);\r\n onError?.(new Error(errorMessage));\r\n } finally {\r\n setLoading(false);\r\n }\r\n }, [hasBeenViewed, loading, hasTriggered, error, messages, formats, apiKey, slotId, theme, onError, isBot, reasons, sessionId, measuredWidth]);\r\n\r\n useDebounce(\r\n () => {\r\n if (shouldFetch) {\r\n fetchAdData();\r\n setShouldFetch(false);\r\n }\r\n },\r\n debounceMs,\r\n [shouldFetch, fetchAdData]\r\n );\r\n\r\n // Handle trigger promise resolution/rejection\r\n useEffect(() => {\r\n if (hasTriggered) return;\r\n if (!trigger) return;\r\n if (trigger === triggerUsed) return;\r\n\r\n setTriggerUsed(trigger);\r\n\r\n trigger\r\n .then(() => {\r\n if (!hasTriggered) {\r\n setShouldFetch(true);\r\n }\r\n })\r\n .catch(() => {\r\n if (!hasTriggered) {\r\n setShouldFetch(true);\r\n }\r\n });\r\n }, [trigger, triggerUsed, hasTriggered]);\r\n\r\n // Consolidated trigger logic - checks all conditions before fetching\r\n useEffect(() => {\r\n // Don't trigger if already triggered\r\n if (hasTriggered) return;\r\n\r\n // Don't trigger if no valid messages\r\n if (!hasValidMessages(messages)) return;\r\n\r\n // Don't trigger if waiting for trigger promise\r\n if (trigger && !triggerUsed) return;\r\n\r\n // Don't trigger if not viewed yet\r\n if (!hasBeenViewed) return;\r\n\r\n // Don't trigger if waiting for width measurement\r\n const needsMeasurement = typeof theme.width === \"string\" && needsWidthMeasurement(theme.width);\r\n if (needsMeasurement && measuredWidth === null) return;\r\n\r\n // All conditions met, trigger fetch\r\n setShouldFetch(true);\r\n }, [hasBeenViewed, hasTriggered, triggerUsed, trigger, measuredWidth, theme.width, messages]);\r\n\r\n useEffect(() => {\r\n if (ad && isViewable && !isBot && iframeLoaded) {\r\n viewabilityTrackImpression(ad.id); // Track impression when viewable AND iframe loaded\r\n }\r\n }, [ad, isViewable, isBot, iframeLoaded, viewabilityTrackImpression]);\r\n\r\n useEffect(() => {\r\n // Create style element once on mount\r\n if (!styleElementRef.current) {\r\n styleElementRef.current = document.createElement('style');\r\n styleElementRef.current.setAttribute('data-simula-styles', 'true');\r\n document.head.appendChild(styleElementRef.current);\r\n }\r\n\r\n // Update CSS content whenever theme changes\r\n const css = createInChatAdSlotCSS(theme);\r\n styleElementRef.current.textContent = css;\r\n\r\n // Cleanup only on unmount\r\n return () => {\r\n if (styleElementRef.current && document.head.contains(styleElementRef.current)) {\r\n document.head.removeChild(styleElementRef.current);\r\n styleElementRef.current = null;\r\n }\r\n };\r\n }, [theme]);\r\n\r\n\r\n const renderContent = () => {\r\n if (loading) {\r\n return null;\r\n }\r\n\r\n if (error) {\r\n return null;\r\n }\r\n\r\n if (!ad || !ad.iframeUrl) {\r\n return null;\r\n }\r\n\r\n return (\r\n <div\r\n className=\"simula-content-slot\"\r\n onClick={() => onClick?.(ad)}\r\n style={{ cursor: onClick ? 'pointer' : 'default' }}\r\n >\r\n <iframe\r\n src={ad.iframeUrl}\r\n className=\"simula-content-frame\"\r\n style={{ display: 'block', verticalAlign: 'top', border: 0, margin: 0, padding: 0, width: '100%' }}\r\n frameBorder=\"0\"\r\n scrolling=\"no\"\r\n allowTransparency={true}\r\n sandbox=\"allow-scripts allow-same-origin allow-popups allow-popups-to-escape-sandbox\"\r\n title={`Content: ${ad.id}`}\r\n onLoad={() => {\r\n // Iframe loaded - now impressions can be tracked\r\n setIframeLoaded(true);\r\n }}\r\n />\r\n <button\r\n className=\"simula-info-icon\"\r\n onClick={(e) => {\r\n e.stopPropagation();\r\n setShowInfoModal(true);\r\n }}\r\n aria-label=\"Content information\"\r\n >\r\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"currentColor\">\r\n <circle cx=\"8\" cy=\"8\" r=\"7\" stroke=\"currentColor\" strokeWidth=\"1\" fill=\"none\"/>\r\n <text x=\"8\" y=\"12\" textAnchor=\"middle\" fontSize=\"10\" fontFamily=\"serif\">i</text>\r\n </svg>\r\n </button>\r\n {showInfoModal && (\r\n <div className=\"simula-modal-overlay\" onClick={() => setShowInfoModal(false)}>\r\n <div className=\"simula-modal-content\" onClick={(e) => e.stopPropagation()}>\r\n <button \r\n className=\"simula-modal-close\"\r\n onClick={() => setShowInfoModal(false)}\r\n aria-label=\"Close\"\r\n >\r\n ×\r\n </button>\r\n <p>\r\n Powered by{' '}\r\n <a\r\n href=\"https://simula.ad\"\r\n target=\"_blank\"\r\n rel=\"noopener noreferrer\"\r\n className=\"simula-modal-link\"\r\n >\r\n Simula\r\n </a>\r\n </p>\r\n </div>\r\n </div>\r\n )}\r\n </div>\r\n );\r\n };\r\n\r\n return (\r\n <div\r\n ref={elementRef}\r\n style={{\r\n display: error ? 'none' : 'block',\r\n minWidth: ad && ad.id ? '320px' : '0px',\r\n width: !theme.width || theme.width === 'auto' ? '100%' : theme.width,\r\n height: ad && ad.id ? '265px' : '0px',\r\n overflow: 'hidden'\r\n }}\r\n >\r\n {renderContent()}\r\n </div>\r\n );\r\n};","import { useState, useEffect, useRef } from 'react';\r\n\r\ninterface OMIDViewabilityResult {\r\n isViewable: boolean;\r\n hasBeenViewed: boolean;\r\n impressionTracked: boolean;\r\n}\r\n\r\ninterface OMIDOptions {\r\n threshold?: number;\r\n durationMs?: number;\r\n partnerName?: string;\r\n partnerVersion?: string;\r\n onImpressionTracked?: (adId: string) => void;\r\n}\r\n\r\n// OMID Service Script - This should be loaded globally\r\ndeclare global {\r\n interface Window {\r\n omidSessionClient?: any;\r\n omidSessionService?: any;\r\n }\r\n}\r\n\r\nexport const useOMIDViewability = (options: OMIDOptions = {}): OMIDViewabilityResult & { \r\n elementRef: React.RefObject<HTMLDivElement>;\r\n trackImpression: (adId?: string) => void;\r\n} => {\r\n const {\r\n threshold = 0.5,\r\n durationMs = 1000,\r\n partnerName = 'Simula-Ad-SDK',\r\n partnerVersion = '1.0.0',\r\n onImpressionTracked\r\n } = options;\r\n\r\n const elementRef = useRef<HTMLDivElement>(null);\r\n const [isViewable, setIsViewable] = useState(false);\r\n const [hasBeenViewed, setHasBeenViewed] = useState(false);\r\n const [impressionTracked, setImpressionTracked] = useState(false);\r\n const [viewableStartTime, setViewableStartTime] = useState<number | null>(null);\r\n const [hasMetDuration, setHasMetDuration] = useState(false);\r\n \r\n const omidSessionRef = useRef<any>(null);\r\n const adEventsRef = useRef<any>(null);\r\n\r\n useEffect(() => {\r\n if (!elementRef.current) return;\r\n\r\n // Initialize OMID Session\r\n const initializeOMID = async () => {\r\n try {\r\n // Load OMID Service Script dynamically if not already loaded\r\n if (!window.omidSessionClient) {\r\n await loadOMIDServiceScript();\r\n }\r\n\r\n const sessionClient = window.omidSessionClient?.['1.0.0'];\r\n if (!sessionClient) {\r\n console.warn('OMID Session Client not available, falling back to basic viewability');\r\n initializeFallbackViewability();\r\n return;\r\n }\r\n\r\n // Create OMID partner and context\r\n const Partner = sessionClient.Partner;\r\n const Context = sessionClient.Context;\r\n const AdSession = sessionClient.AdSession;\r\n const AdEvents = sessionClient.AdEvents;\r\n\r\n const partner = new Partner(partnerName, partnerVersion);\r\n const context = new Context(partner, [], null); // No verification scripts for now\r\n \r\n // Create ad session\r\n const adSession = new AdSession(context);\r\n adSession.setCreativeType('display');\r\n adSession.setImpressionType('beginToRender');\r\n\r\n omidSessionRef.current = adSession;\r\n\r\n // Set the ad view\r\n context.setSlotElement(elementRef.current);\r\n\r\n // Start session\r\n adSession.start();\r\n\r\n // Create ad events handler\r\n adEventsRef.current = new AdEvents(adSession);\r\n\r\n // Register session observer for viewability events\r\n adSession.registerSessionObserver((event: any) => {\r\n switch (event.type) {\r\n case 'sessionStart':\r\n // Signal ad loaded\r\n adEventsRef.current?.loaded();\r\n break;\r\n case 'sessionError':\r\n console.error('OMID session error:', event.data);\r\n initializeFallbackViewability();\r\n break;\r\n case 'sessionFinish':\r\n break;\r\n case 'geometryChange':\r\n handleGeometryChange(event.data);\r\n break;\r\n }\r\n });\r\n\r\n } catch (error) {\r\n console.warn('OMID initialization failed, using fallback:', error);\r\n initializeFallbackViewability();\r\n }\r\n };\r\n\r\n const loadOMIDServiceScript = async (): Promise<void> => {\r\n return new Promise((resolve, reject) => {\r\n // Check if script is already loaded\r\n if (document.querySelector('script[src*=\"omweb-v1.js\"]')) {\r\n resolve();\r\n return;\r\n }\r\n\r\n const script = document.createElement('script');\r\n script.src = 'https://s0.2mdn.net/instream/omweb/omweb-v1.js'; // Official OMID Service Script\r\n script.async = true;\r\n script.onload = () => resolve();\r\n script.onerror = () => reject(new Error('Failed to load OMID script'));\r\n document.head.appendChild(script);\r\n });\r\n };\r\n\r\n const handleGeometryChange = (geometryData: any) => {\r\n if (!geometryData?.viewport || !geometryData?.adView) return;\r\n\r\n const { viewport, adView } = geometryData;\r\n \r\n // Calculate viewable area\r\n const viewableArea = calculateViewableArea(viewport, adView);\r\n const totalArea = adView.width * adView.height;\r\n const viewablePercentage = totalArea > 0 ? viewableArea / totalArea : 0;\r\n\r\n const newIsViewable = viewablePercentage >= threshold;\r\n const now = Date.now();\r\n \r\n if (newIsViewable) {\r\n if (viewableStartTime === null) {\r\n setViewableStartTime(now);\r\n }\r\n setIsViewable(true);\r\n \r\n if (!hasBeenViewed) {\r\n setHasBeenViewed(true);\r\n }\r\n } else {\r\n setViewableStartTime(null);\r\n setIsViewable(false);\r\n setHasMetDuration(false);\r\n }\r\n };\r\n\r\n const calculateViewableArea = (viewport: any, adView: any): number => {\r\n const intersectionLeft = Math.max(viewport.x, adView.x);\r\n const intersectionTop = Math.max(viewport.y, adView.y);\r\n const intersectionRight = Math.min(viewport.x + viewport.width, adView.x + adView.width);\r\n const intersectionBottom = Math.min(viewport.y + viewport.height, adView.y + adView.height);\r\n\r\n const width = Math.max(0, intersectionRight - intersectionLeft);\r\n const height = Math.max(0, intersectionBottom - intersectionTop);\r\n\r\n return width * height;\r\n };\r\n\r\n // Fallback implementation using Intersection Observer\r\n const initializeFallbackViewability = () => {\r\n const observer = new IntersectionObserver(\r\n (entries) => {\r\n entries.forEach((entry) => {\r\n const newIsViewable = entry.intersectionRatio >= threshold;\r\n const now = Date.now();\r\n \r\n if (newIsViewable) {\r\n if (viewableStartTime === null) {\r\n setViewableStartTime(now);\r\n }\r\n setIsViewable(true);\r\n \r\n if (!hasBeenViewed) {\r\n setHasBeenViewed(true);\r\n }\r\n } else {\r\n setViewableStartTime(null);\r\n setIsViewable(false);\r\n setHasMetDuration(false);\r\n }\r\n });\r\n },\r\n { \r\n threshold,\r\n rootMargin: '0px'\r\n }\r\n );\r\n\r\n if (elementRef.current) {\r\n observer.observe(elementRef.current);\r\n }\r\n\r\n return () => {\r\n observer.disconnect();\r\n };\r\n };\r\n\r\n initializeOMID();\r\n\r\n // Cleanup\r\n return () => {\r\n if (omidSessionRef.current) {\r\n try {\r\n omidSessionRef.current.finish();\r\n } catch (error) {\r\n console.warn('Error finishing OMID session:', error);\r\n }\r\n }\r\n };\r\n }, [threshold, partnerName, partnerVersion, hasBeenViewed, viewableStartTime]);\r\n\r\n // Duration tracking effect\r\n useEffect(() => {\r\n if (!isViewable || viewableStartTime === null || hasMetDuration) return;\r\n\r\n const timeoutId = setTimeout(() => {\r\n if (isViewable && viewableStartTime !== null) {\r\n const elapsed = Date.now() - viewableStartTime;\r\n if (elapsed >= durationMs) {\r\n setHasMetDuration(true);\r\n }\r\n }\r\n }, durationMs);\r\n\r\n return () => clearTimeout(timeoutId);\r\n }, [isViewable, viewableStartTime, durationMs, hasMetDuration]);\r\n\r\n const trackImpression = (adId?: string) => {\r\n if (impressionTracked) return;\r\n\r\n if (adEventsRef.current) {\r\n // Use OMID impression tracking\r\n try {\r\n adEventsRef.current.impressionOccurred();\r\n setImpressionTracked(true);\r\n\r\n // After OMID tracks successfully, ping our backend\r\n if (onImpressionTracked && adId) {\r\n onImpressionTracked(adId);\r\n }\r\n } catch (error) {\r\n console.warn('OMID impression tracking failed:', error);\r\n setImpressionTracked(true); // Mark as tracked to prevent retries\r\n }\r\n } else {\r\n // Fallback impression tracking\r\n setImpressionTracked(true);\r\n\r\n // Still ping our backend even in fallback mode\r\n if (onImpressionTracked && adId) {\r\n onImpressionTracked(adId);\r\n }\r\n }\r\n };\r\n\r\n return {\r\n elementRef,\r\n isViewable: isViewable && hasMetDuration, // Only considered viewable after meeting duration\r\n hasBeenViewed,\r\n impressionTracked,\r\n trackImpression\r\n };\r\n}; "],"names":["isAutoWidth","isPercentageWidth","createContext","useContext","useState","useEffect","_jsx","useRef","useMemo","uuidv4","useCallback","_jsxs"],"mappings":"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","x_google_ignoreList":[3,4,5,6,8,9]}
1
+ {"version":3,"file":"index.js","sources":["../src/utils/api.ts","../src/utils/validation.ts","../src/SimulaProvider.tsx","../node_modules/uuid/dist/stringify.js","../node_modules/uuid/dist/rng.js","../node_modules/uuid/dist/native.js","../node_modules/uuid/dist/v4.js","../src/hooks/useDebounce.ts","../node_modules/tslib/tslib.es6.js","../node_modules/@fingerprintjs/botd/dist/botd.esm.js","../src/hooks/useBotDetection.ts","../src/hooks/useViewability.ts","../src/utils/colorThemes.ts","../src/utils/styling.ts","../src/InChatAdSlot.tsx","../src/hooks/useOMIDViewability.ts"],"sourcesContent":["import { Message, AdData, SimulaTheme } from '../types';\r\n\r\n// Production API URL\r\nconst API_BASE_URL = 'https://simula-api-701226639755.us-central1.run.app';\r\n\r\nexport interface FetchAdRequest {\r\n messages: Message[];\r\n apiKey: string;\r\n slotId?: string;\r\n theme?: SimulaTheme;\r\n sessionId?: string;\r\n charDesc?: string;\r\n}\r\n\r\nexport interface FetchAdResponse {\r\n ad?: AdData;\r\n error?: string;\r\n}\r\n\r\n// Create a server session and return its id\r\nexport async function createSession(apiKey: string, devMode?: boolean, primaryUserID?: string): Promise<string | undefined> {\r\n try {\r\n const headers: Record<string, string> = {\r\n 'Content-Type': 'application/json',\r\n 'Authorization': `Bearer ${apiKey}`,\r\n };\r\n\r\n // Build query parameters\r\n const params = new URLSearchParams();\r\n if (devMode !== undefined) {\r\n params.append('devMode', String(devMode));\r\n }\r\n if (primaryUserID !== undefined && primaryUserID !== '') {\r\n params.append('ppid', primaryUserID);\r\n }\r\n\r\n const queryString = params.toString();\r\n const url = `${API_BASE_URL}/session/create${queryString ? `?${queryString}` : ''}`;\r\n\r\n const response = await fetch(url, {\r\n method: 'POST',\r\n headers,\r\n body: JSON.stringify({}),\r\n });\r\n\r\n if (!response.ok) {\r\n if (response.status === 401) {\r\n throw new Error('Invalid API key (please check dashboard or contact Simula team for a valid API key)');\r\n }\r\n return undefined;\r\n }\r\n\r\n const data = await response.json();\r\n if (data && typeof data.sessionId === 'string' && data.sessionId) {\r\n return data.sessionId;\r\n }\r\n return undefined;\r\n } catch (error) {\r\n // Re-throw 401 errors with our custom message\r\n if (error instanceof Error && error.message.includes('Invalid API key')) {\r\n throw error;\r\n }\r\n return undefined;\r\n }\r\n}\r\n\r\nexport const fetchAd = async (request: FetchAdRequest): Promise<FetchAdResponse> => {\r\n try {\r\n const conversationHistory = request.messages;\r\n\r\n // Normalize theme accent and font to arrays for backend\r\n // Also handle backward compatibility: prefer 'mode' over 'theme', but support both\r\n const normalizedTheme = request.theme ? (() => {\r\n const { theme: themeDeprecated, ...themeRest } = request.theme as any;\r\n return {\r\n ...themeRest,\r\n mode: request.theme.mode ?? themeDeprecated, // Prefer 'mode', fallback to 'theme' for backward compatibility\r\n accent: request.theme.accent ? (Array.isArray(request.theme.accent) ? request.theme.accent : [request.theme.accent]) : undefined,\r\n font: request.theme.font ? (Array.isArray(request.theme.font) ? request.theme.font : [request.theme.font]) : undefined,\r\n };\r\n })() : undefined;\r\n\r\n const requestBody = {\r\n messages: conversationHistory,\r\n slot_id: request.slotId,\r\n theme: normalizedTheme,\r\n session_id: request.sessionId,\r\n char_desc: request.charDesc,\r\n } as const;\r\n\r\n const headers: Record<string, string> = {\r\n 'Content-Type': 'application/json',\r\n 'Authorization': `Bearer ${request.apiKey}`,\r\n };\r\n\r\n const response = await fetch(`${API_BASE_URL}/render_ad/ssp`, {\r\n method: 'POST',\r\n headers,\r\n body: JSON.stringify(requestBody),\r\n });\r\n\r\n if (!response.ok) {\r\n throw new Error(`HTTP error! status: ${response.status}`);\r\n }\r\n\r\n const data = await response.json();\r\n\r\n // Handle new API shape\r\n if (data && typeof data === 'object') {\r\n if (!data.adInserted) {\r\n return { error: 'No fill' };\r\n }\r\n\r\n // New shape: { adType, adInserted, adResponse: { ad_id, iframe_url, ... } }\r\n if (data.adResponse && typeof data.adResponse === 'object') {\r\n const ar = data.adResponse;\r\n const ad: AdData = {\r\n id: ar.ad_id ?? ar.id,\r\n format: (data.adType ?? ar.format ?? 'iframe'),\r\n iframeUrl: ar.iframe_url ?? ar.iframeUrl,\r\n };\r\n\r\n if (ad.id && ad.iframeUrl) {\r\n return { ad };\r\n }\r\n\r\n return { error: 'Invalid ad response' };\r\n }\r\n\r\n // Legacy shape: { ad: { ... } }\r\n if (data.ad) {\r\n return { ad: data.ad };\r\n }\r\n\r\n if (data.error) {\r\n return { error: data.error };\r\n }\r\n }\r\n\r\n return { error: 'Unexpected response from ad server' };\r\n } catch (error) {\r\n console.error('❌ API Request failed:', error);\r\n return {\r\n error: error instanceof Error ? error.message : 'Failed to fetch ad'\r\n };\r\n }\r\n};\r\n\r\nexport const trackImpression = async (adId: string, apiKey: string): Promise<void> => {\r\n try {\r\n const headers: Record<string, string> = {\r\n 'Content-Type': 'application/json',\r\n 'Authorization': `Bearer ${apiKey}`,\r\n };\r\n\r\n await fetch(`${API_BASE_URL}/track/engagement/impression/${adId}`, {\r\n method: 'POST',\r\n headers,\r\n body: JSON.stringify({}),\r\n });\r\n } catch (error) {\r\n console.error('Failed to track impression:', error);\r\n }\r\n};\r\n\r\n/* Not used for now, used when we are also mediation layer\r\nexport const trackClick = async (adId: string, apiKey: string): Promise<void> => {\r\n try {\r\n await fetch(`${API_BASE_URL}/track_click`, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Authorization': `Bearer ${apiKey}`,\r\n },\r\n body: JSON.stringify({\r\n ad_id: adId,\r\n timestamp: new Date().toISOString(),\r\n }),\r\n });\r\n } catch (error) {\r\n console.error('Failed to track click:', error);\r\n }\r\n};\r\n*/","import { SimulaTheme } from '../types';\r\n\r\n// Helper functions for width validation\r\nconst isAutoWidth = (width: any): boolean => width === 'auto';\r\nconst isPercentageWidth = (width: any): boolean => typeof width === 'string' && /^\\d+(?:\\.\\d+)?%$/.test(width);\r\nconst isPixelWidth = (width: any): boolean => typeof width === 'string' && /^\\d+(?:\\.\\d+)?px$/.test(width);\r\n\r\n/**\r\n * Validates SimulaProvider props\r\n * Throws descriptive errors for invalid props\r\n */\r\nexport const validateSimulaProviderProps = (props: any): void => {\r\n const validProps = ['apiKey', 'children', 'devMode', 'primaryUserID'];\r\n const receivedProps = Object.keys(props);\r\n\r\n // Check for unknown props\r\n const unknownProps = receivedProps.filter(prop => !validProps.includes(prop));\r\n if (unknownProps.length > 0) {\r\n throw new Error(\r\n `Invalid prop${unknownProps.length > 1 ? 's' : ''} passed to SimulaProvider: ${unknownProps.map(p => `\"${p}\"`).join(', ')}. ` +\r\n `Valid props are: ${validProps.join(', ')}`\r\n );\r\n }\r\n\r\n // Validate required props\r\n if (!props.apiKey || typeof props.apiKey !== 'string') {\r\n throw new Error('SimulaProvider requires a valid \"apiKey\" prop (string)');\r\n }\r\n\r\n if (!props.children) {\r\n throw new Error('SimulaProvider requires a \"children\" prop');\r\n }\r\n\r\n // Validate optional props\r\n if (props.devMode !== undefined && typeof props.devMode !== 'boolean') {\r\n throw new Error(`Invalid \"devMode\" prop type: \"${typeof props.devMode}\". Must be a boolean`);\r\n }\r\n\r\n if (props.primaryUserID !== undefined && typeof props.primaryUserID !== 'string') {\r\n throw new Error(`Invalid \"primaryUserID\" prop type: \"${typeof props.primaryUserID}\". Must be a string`);\r\n }\r\n};\r\n\r\n/**\r\n * Validates InChatAdSlot props\r\n * Throws descriptive errors for invalid props\r\n */\r\nexport const validateInChatAdSlotProps = (props: any): void => {\r\n const validProps = ['messages', 'trigger', 'formats', 'theme', 'debounceMs', 'charDesc', 'onImpression', 'onClick', 'onError'];\r\n const receivedProps = Object.keys(props);\r\n\r\n // Check for unknown props\r\n const unknownProps = receivedProps.filter(prop => !validProps.includes(prop));\r\n if (unknownProps.length > 0) {\r\n throw new Error(\r\n `Invalid prop${unknownProps.length > 1 ? 's' : ''} passed to InChatAdSlot: ${unknownProps.map(p => `\"${p}\"`).join(', ')}. ` +\r\n `Valid props are: ${validProps.join(', ')}`\r\n );\r\n }\r\n\r\n // Validate messages (required)\r\n if (!props.messages || !Array.isArray(props.messages)) {\r\n throw new Error('InChatAdSlot requires a valid \"messages\" prop (array of Message objects)');\r\n }\r\n\r\n if (props.messages.length === 0) {\r\n throw new Error('InChatAdSlot \"messages\" prop cannot be an empty array');\r\n }\r\n\r\n props.messages.forEach((msg: any, i: number) => {\r\n if (!msg || typeof msg !== 'object') {\r\n throw new Error(`Invalid message at index ${i}: must be an object with \"role\" and \"content\" properties`);\r\n }\r\n if (!msg.role || typeof msg.role !== 'string') {\r\n throw new Error(`Invalid message at index ${i}: \"role\" must be a non-empty string`);\r\n }\r\n if (msg.content === undefined || typeof msg.content !== 'string') {\r\n throw new Error(`Invalid message at index ${i}: \"content\" must be a string`);\r\n }\r\n });\r\n\r\n // Validate theme (optional)\r\n if (props.theme !== undefined) {\r\n validateTheme(props.theme);\r\n }\r\n\r\n // Validate debounceMs (optional)\r\n if (props.debounceMs !== undefined) {\r\n if (typeof props.debounceMs !== 'number') {\r\n throw new Error(`Invalid \"debounceMs\" prop type: \"${typeof props.debounceMs}\". Must be a number`);\r\n }\r\n if (props.debounceMs < 0) {\r\n throw new Error(`Invalid \"debounceMs\" prop value: \"${props.debounceMs}\". Must be a non-negative number`);\r\n }\r\n }\r\n\r\n // Validate charDesc (optional)\r\n if (props.charDesc !== undefined && typeof props.charDesc !== 'string') {\r\n throw new Error(`Invalid \"charDesc\" prop type: \"${typeof props.charDesc}\". Must be a string`);\r\n }\r\n\r\n // Validate callbacks (optional)\r\n if (props.onImpression !== undefined && typeof props.onImpression !== 'function') {\r\n throw new Error(`Invalid \"onImpression\" prop type: \"${typeof props.onImpression}\". Must be a function`);\r\n }\r\n\r\n if (props.onClick !== undefined && typeof props.onClick !== 'function') {\r\n throw new Error(`Invalid \"onClick\" prop type: \"${typeof props.onClick}\". Must be a function`);\r\n }\r\n\r\n if (props.onError !== undefined && typeof props.onError !== 'function') {\r\n throw new Error(`Invalid \"onError\" prop type: \"${typeof props.onError}\". Must be a function`);\r\n }\r\n\r\n // Note: trigger validation (Promise check) is skipped because checking instanceof Promise\r\n // is unreliable across different Promise implementations and contexts\r\n};\r\n\r\n/**\r\n * Validates theme object\r\n * Throws descriptive errors for invalid theme properties\r\n */\r\nexport const validateTheme = (theme?: SimulaTheme): void => {\r\n if (!theme || typeof theme !== 'object') {\r\n throw new Error('Invalid \"theme\": must be an object');\r\n }\r\n\r\n const validModeOptions = ['light', 'dark', 'auto'];\r\n const validAccentOptions = ['blue', 'red', 'green', 'yellow', 'purple', 'pink', 'orange', 'neutral', 'gray', 'tan', 'transparent', 'image'];\r\n const validFontOptions = ['san-serif', 'serif', 'monospace'];\r\n const validKeys = ['mode', 'theme', 'accent', 'font', 'width', 'cornerRadius']; // 'theme' kept for backward compatibility\r\n\r\n // Check for invalid top-level keys\r\n Object.keys(theme).forEach(key => {\r\n if (!validKeys.includes(key)) {\r\n throw new Error(`Invalid theme parameter \"${key}\". Valid parameters: ${validKeys.join(', ')}`);\r\n }\r\n });\r\n\r\n // Validate mode value (prefer 'mode' over 'theme' for backward compatibility)\r\n const modeValue = theme.mode ?? (theme as any).theme;\r\n if (modeValue !== undefined) {\r\n if (typeof modeValue !== 'string') {\r\n throw new Error(`Invalid mode/theme type \"${typeof modeValue}\". Must be a string. Valid values: ${validModeOptions.join(', ')}`);\r\n }\r\n if (!validModeOptions.includes(modeValue)) {\r\n throw new Error(`Invalid mode/theme value \"${modeValue}\". Valid values: ${validModeOptions.join(', ')}`);\r\n }\r\n }\r\n\r\n // Validate accent value(s)\r\n if (theme.accent !== undefined) {\r\n const accents = Array.isArray(theme.accent) ? theme.accent : [theme.accent];\r\n accents.forEach((accent, i) => {\r\n if (typeof accent !== 'string') {\r\n throw new Error(`Invalid accent type at index ${i}: \"${typeof accent}\". Must be a string. Valid values: ${validAccentOptions.join(', ')}`);\r\n }\r\n if (!validAccentOptions.includes(accent)) {\r\n throw new Error(`Invalid accent value${Array.isArray(theme.accent) ? ` at index ${i}` : ''}: \"${accent}\". Valid values: ${validAccentOptions.join(', ')}`);\r\n }\r\n });\r\n }\r\n\r\n // Validate font value(s)\r\n if (theme.font !== undefined) {\r\n const fonts = Array.isArray(theme.font) ? theme.font : [theme.font];\r\n fonts.forEach((font, i) => {\r\n if (typeof font !== 'string') {\r\n throw new Error(`Invalid font type at index ${i}: \"${typeof font}\". Must be a string. Valid values: ${validFontOptions.join(', ')}`);\r\n }\r\n if (!validFontOptions.includes(font)) {\r\n throw new Error(`Invalid font value${Array.isArray(theme.font) ? ` at index ${i}` : ''}: \"${font}\". Valid values: ${validFontOptions.join(', ')}`);\r\n }\r\n });\r\n }\r\n\r\n // Validate width\r\n if (theme.width !== undefined) {\r\n if (typeof theme.width !== 'number' && typeof theme.width !== 'string') {\r\n throw new Error(`Invalid width type \"${typeof theme.width}\". Must be number, \"auto\", \"%\", or \"px\"`);\r\n }\r\n if (typeof theme.width === 'string' && !isAutoWidth(theme.width) && !isPercentageWidth(theme.width) && !isPixelWidth(theme.width)) {\r\n throw new Error(`Invalid width \"${theme.width}\". Must be an integer, \"auto\", or a string like \"100%\", \"500px\"`);\r\n }\r\n }\r\n\r\n // Validate cornerRadius\r\n if (theme.cornerRadius !== undefined && typeof theme.cornerRadius !== 'number') {\r\n throw new Error(`Invalid cornerRadius type \"${typeof theme.cornerRadius}\". Must be a number`);\r\n }\r\n};\r\n","import React, { createContext, useContext, useEffect, useState } from 'react';\r\nimport { SimulaProviderProps, SimulaContextValue } from './types';\r\nimport { createSession } from './utils/api';\r\nimport { validateSimulaProviderProps } from './utils/validation';\r\n\r\nconst SimulaContext = createContext<SimulaContextValue | undefined>(undefined);\r\n\r\nexport const useSimula = (): SimulaContextValue => {\r\n const context = useContext(SimulaContext);\r\n if (!context) {\r\n throw new Error('useSimula must be used within a SimulaProvider');\r\n }\r\n return context;\r\n};\r\n\r\nexport const SimulaProvider: React.FC<SimulaProviderProps> = (props) => {\r\n // Validate props early\r\n validateSimulaProviderProps(props);\r\n\r\n const {\r\n apiKey,\r\n children,\r\n devMode = false,\r\n primaryUserID\r\n } = props;\r\n const [sessionId, setSessionId] = useState<string | undefined>(undefined);\r\n\r\n useEffect(() => {\r\n let cancelled = false;\r\n\r\n async function ensureSession() {\r\n const id = await createSession(apiKey, devMode, primaryUserID);\r\n if (!cancelled && id) setSessionId(id);\r\n }\r\n\r\n ensureSession();\r\n return () => { cancelled = true; };\r\n }, [apiKey, devMode, primaryUserID]);\r\n\r\n const value: SimulaContextValue = {\r\n apiKey,\r\n devMode,\r\n sessionId,\r\n };\r\n\r\n return (\r\n <SimulaContext.Provider value={value}>\r\n {children}\r\n </SimulaContext.Provider>\r\n );\r\n};","import validate from './validate.js';\nconst byteToHex = [];\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\nexport function unsafeStringify(arr, offset = 0) {\n return (byteToHex[arr[offset + 0]] +\n byteToHex[arr[offset + 1]] +\n byteToHex[arr[offset + 2]] +\n byteToHex[arr[offset + 3]] +\n '-' +\n byteToHex[arr[offset + 4]] +\n byteToHex[arr[offset + 5]] +\n '-' +\n byteToHex[arr[offset + 6]] +\n byteToHex[arr[offset + 7]] +\n '-' +\n byteToHex[arr[offset + 8]] +\n byteToHex[arr[offset + 9]] +\n '-' +\n byteToHex[arr[offset + 10]] +\n byteToHex[arr[offset + 11]] +\n byteToHex[arr[offset + 12]] +\n byteToHex[arr[offset + 13]] +\n byteToHex[arr[offset + 14]] +\n byteToHex[arr[offset + 15]]).toLowerCase();\n}\nfunction stringify(arr, offset = 0) {\n const uuid = unsafeStringify(arr, offset);\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n return uuid;\n}\nexport default stringify;\n","let getRandomValues;\nconst rnds8 = new Uint8Array(16);\nexport default function rng() {\n if (!getRandomValues) {\n if (typeof crypto === 'undefined' || !crypto.getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n getRandomValues = crypto.getRandomValues.bind(crypto);\n }\n return getRandomValues(rnds8);\n}\n","const randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);\nexport default { randomUUID };\n","import native from './native.js';\nimport rng from './rng.js';\nimport { unsafeStringify } from './stringify.js';\nfunction _v4(options, buf, offset) {\n options = options || {};\n const rnds = options.random ?? options.rng?.() ?? rng();\n if (rnds.length < 16) {\n throw new Error('Random bytes length must be >= 16');\n }\n rnds[6] = (rnds[6] & 0x0f) | 0x40;\n rnds[8] = (rnds[8] & 0x3f) | 0x80;\n if (buf) {\n offset = offset || 0;\n if (offset < 0 || offset + 16 > buf.length) {\n throw new RangeError(`UUID byte range ${offset}:${offset + 15} is out of buffer bounds`);\n }\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n return buf;\n }\n return unsafeStringify(rnds);\n}\nfunction v4(options, buf, offset) {\n if (native.randomUUID && !buf && !options) {\n return native.randomUUID();\n }\n return _v4(options, buf, offset);\n}\nexport default v4;\n","import { useEffect, useRef } from 'react';\r\n\r\nexport const useDebounce = (callback: () => void, delay: number, deps: any[]) => {\r\n const timeoutRef = useRef<ReturnType<typeof setTimeout>>();\r\n\r\n useEffect(() => {\r\n if (timeoutRef.current) {\r\n clearTimeout(timeoutRef.current);\r\n }\r\n\r\n timeoutRef.current = setTimeout(callback, delay);\r\n\r\n return () => {\r\n if (timeoutRef.current) {\r\n clearTimeout(timeoutRef.current);\r\n }\r\n };\r\n }, [...deps, delay]);\r\n\r\n useEffect(() => {\r\n return () => {\r\n if (timeoutRef.current) {\r\n clearTimeout(timeoutRef.current);\r\n }\r\n };\r\n }, []);\r\n};","/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\r\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\r\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nvar ownKeys = function(o) {\r\n ownKeys = Object.getOwnPropertyNames || function (o) {\r\n var ar = [];\r\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\r\n return ar;\r\n };\r\n return ownKeys(o);\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n\r\nexport function __addDisposableResource(env, value, async) {\r\n if (value !== null && value !== void 0) {\r\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n var dispose, inner;\r\n if (async) {\r\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n dispose = value[Symbol.asyncDispose];\r\n }\r\n if (dispose === void 0) {\r\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n dispose = value[Symbol.dispose];\r\n if (async) inner = dispose;\r\n }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\r\n env.stack.push({ value: value, dispose: dispose, async: async });\r\n }\r\n else if (async) {\r\n env.stack.push({ async: true });\r\n }\r\n return value;\r\n\r\n}\r\n\r\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\r\n\r\nexport function __disposeResources(env) {\r\n function fail(e) {\r\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n env.hasError = true;\r\n }\r\n var r, s = 0;\r\n function next() {\r\n while (r = env.stack.pop()) {\r\n try {\r\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\r\n if (r.dispose) {\r\n var result = r.dispose.call(r.value);\r\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n else s |= 1;\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\r\n}\r\n\r\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\r\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\r\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\r\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\r\n });\r\n }\r\n return path;\r\n}\r\n\r\nexport default {\r\n __extends: __extends,\r\n __assign: __assign,\r\n __rest: __rest,\r\n __decorate: __decorate,\r\n __param: __param,\r\n __esDecorate: __esDecorate,\r\n __runInitializers: __runInitializers,\r\n __propKey: __propKey,\r\n __setFunctionName: __setFunctionName,\r\n __metadata: __metadata,\r\n __awaiter: __awaiter,\r\n __generator: __generator,\r\n __createBinding: __createBinding,\r\n __exportStar: __exportStar,\r\n __values: __values,\r\n __read: __read,\r\n __spread: __spread,\r\n __spreadArrays: __spreadArrays,\r\n __spreadArray: __spreadArray,\r\n __await: __await,\r\n __asyncGenerator: __asyncGenerator,\r\n __asyncDelegator: __asyncDelegator,\r\n __asyncValues: __asyncValues,\r\n __makeTemplateObject: __makeTemplateObject,\r\n __importStar: __importStar,\r\n __importDefault: __importDefault,\r\n __classPrivateFieldGet: __classPrivateFieldGet,\r\n __classPrivateFieldSet: __classPrivateFieldSet,\r\n __classPrivateFieldIn: __classPrivateFieldIn,\r\n __addDisposableResource: __addDisposableResource,\r\n __disposeResources: __disposeResources,\r\n __rewriteRelativeImportExtension: __rewriteRelativeImportExtension,\r\n};\r\n","/**\n * Fingerprint BotD v1.9.1 - Copyright (c) FingerprintJS, Inc, 2024 (https://fingerprint.com)\n * Licensed under the MIT (http://www.opensource.org/licenses/mit-license.php) license.\n */\n\nimport { __extends, __awaiter, __generator, __spreadArray } from 'tslib';\n\nvar version = \"1.9.1\";\n\n/**\n * Enum for types of bots.\n * Specific types of bots come first, followed by automation technologies.\n *\n * @readonly\n * @enum {string}\n */\nvar BotKind = {\n // Object is used instead of Typescript enum to avoid emitting IIFE which might be affected by further tree-shaking.\n // See example of compiled enums https://stackoverflow.com/q/47363996)\n Awesomium: 'awesomium',\n Cef: 'cef',\n CefSharp: 'cefsharp',\n CoachJS: 'coachjs',\n Electron: 'electron',\n FMiner: 'fminer',\n Geb: 'geb',\n NightmareJS: 'nightmarejs',\n Phantomas: 'phantomas',\n PhantomJS: 'phantomjs',\n Rhino: 'rhino',\n Selenium: 'selenium',\n Sequentum: 'sequentum',\n SlimerJS: 'slimerjs',\n WebDriverIO: 'webdriverio',\n WebDriver: 'webdriver',\n HeadlessChrome: 'headless_chrome',\n Unknown: 'unknown',\n};\n/**\n * Bot detection error.\n */\nvar BotdError = /** @class */ (function (_super) {\n __extends(BotdError, _super);\n /**\n * Creates a new BotdError.\n *\n * @class\n */\n function BotdError(state, message) {\n var _this = _super.call(this, message) || this;\n _this.state = state;\n _this.name = 'BotdError';\n Object.setPrototypeOf(_this, BotdError.prototype);\n return _this;\n }\n return BotdError;\n}(Error));\n\nfunction detect(components, detectors) {\n var detections = {};\n var finalDetection = {\n bot: false,\n };\n for (var detectorName in detectors) {\n var detector = detectors[detectorName];\n var detectorRes = detector(components);\n var detection = { bot: false };\n if (typeof detectorRes === 'string') {\n detection = { bot: true, botKind: detectorRes };\n }\n else if (detectorRes) {\n detection = { bot: true, botKind: BotKind.Unknown };\n }\n detections[detectorName] = detection;\n if (detection.bot) {\n finalDetection = detection;\n }\n }\n return [detections, finalDetection];\n}\nfunction collect(sources) {\n return __awaiter(this, void 0, void 0, function () {\n var components, sourcesKeys;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n components = {};\n sourcesKeys = Object.keys(sources);\n return [4 /*yield*/, Promise.all(sourcesKeys.map(function (sourceKey) { return __awaiter(_this, void 0, void 0, function () {\n var res, _a, _b, error_1;\n var _c;\n return __generator(this, function (_d) {\n switch (_d.label) {\n case 0:\n res = sources[sourceKey];\n _d.label = 1;\n case 1:\n _d.trys.push([1, 3, , 4]);\n _a = components;\n _b = sourceKey;\n _c = {};\n return [4 /*yield*/, res()];\n case 2:\n _a[_b] = (_c.value = _d.sent(),\n _c.state = 0 /* State.Success */,\n _c);\n return [3 /*break*/, 4];\n case 3:\n error_1 = _d.sent();\n if (error_1 instanceof BotdError) {\n components[sourceKey] = {\n state: error_1.state,\n error: \"\".concat(error_1.name, \": \").concat(error_1.message),\n };\n }\n else {\n components[sourceKey] = {\n state: -3 /* State.UnexpectedBehaviour */,\n error: error_1 instanceof Error ? \"\".concat(error_1.name, \": \").concat(error_1.message) : String(error_1),\n };\n }\n return [3 /*break*/, 4];\n case 4: return [2 /*return*/];\n }\n });\n }); }))];\n case 1:\n _a.sent();\n return [2 /*return*/, components];\n }\n });\n });\n}\n\nfunction detectAppVersion(_a) {\n var appVersion = _a.appVersion;\n if (appVersion.state !== 0 /* State.Success */)\n return false;\n if (/headless/i.test(appVersion.value))\n return BotKind.HeadlessChrome;\n if (/electron/i.test(appVersion.value))\n return BotKind.Electron;\n if (/slimerjs/i.test(appVersion.value))\n return BotKind.SlimerJS;\n}\n\nfunction arrayIncludes(arr, value) {\n return arr.indexOf(value) !== -1;\n}\nfunction strIncludes(str, value) {\n return str.indexOf(value) !== -1;\n}\nfunction arrayFind(array, callback) {\n if ('find' in array)\n return array.find(callback);\n for (var i = 0; i < array.length; i++) {\n if (callback(array[i], i, array))\n return array[i];\n }\n return undefined;\n}\n\nfunction getObjectProps(obj) {\n return Object.getOwnPropertyNames(obj);\n}\nfunction includes(arr) {\n var keys = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n keys[_i - 1] = arguments[_i];\n }\n var _loop_1 = function (key) {\n if (typeof key === 'string') {\n if (arrayIncludes(arr, key))\n return { value: true };\n }\n else {\n var match = arrayFind(arr, function (value) { return key.test(value); });\n if (match != null)\n return { value: true };\n }\n };\n for (var _a = 0, keys_1 = keys; _a < keys_1.length; _a++) {\n var key = keys_1[_a];\n var state_1 = _loop_1(key);\n if (typeof state_1 === \"object\")\n return state_1.value;\n }\n return false;\n}\nfunction countTruthy(values) {\n return values.reduce(function (sum, value) { return sum + (value ? 1 : 0); }, 0);\n}\n\nfunction detectDocumentAttributes(_a) {\n var documentElementKeys = _a.documentElementKeys;\n if (documentElementKeys.state !== 0 /* State.Success */)\n return false;\n if (includes(documentElementKeys.value, 'selenium', 'webdriver', 'driver')) {\n return BotKind.Selenium;\n }\n}\n\nfunction detectErrorTrace(_a) {\n var errorTrace = _a.errorTrace;\n if (errorTrace.state !== 0 /* State.Success */)\n return false;\n if (/PhantomJS/i.test(errorTrace.value))\n return BotKind.PhantomJS;\n}\n\nfunction detectEvalLengthInconsistency(_a) {\n var evalLength = _a.evalLength, browserKind = _a.browserKind, browserEngineKind = _a.browserEngineKind;\n if (evalLength.state !== 0 /* State.Success */ ||\n browserKind.state !== 0 /* State.Success */ ||\n browserEngineKind.state !== 0 /* State.Success */)\n return;\n var length = evalLength.value;\n if (browserEngineKind.value === \"unknown\" /* BrowserEngineKind.Unknown */)\n return false;\n return ((length === 37 && !arrayIncludes([\"webkit\" /* BrowserEngineKind.Webkit */, \"gecko\" /* BrowserEngineKind.Gecko */], browserEngineKind.value)) ||\n (length === 39 && !arrayIncludes([\"internet_explorer\" /* BrowserKind.IE */], browserKind.value)) ||\n (length === 33 && !arrayIncludes([\"chromium\" /* BrowserEngineKind.Chromium */], browserEngineKind.value)));\n}\n\nfunction detectFunctionBind(_a) {\n var functionBind = _a.functionBind;\n if (functionBind.state === -2 /* State.NotFunction */)\n return BotKind.PhantomJS;\n}\n\nfunction detectLanguagesLengthInconsistency(_a) {\n var languages = _a.languages;\n if (languages.state === 0 /* State.Success */ && languages.value.length === 0) {\n return BotKind.HeadlessChrome;\n }\n}\n\nfunction detectMimeTypesConsistent(_a) {\n var mimeTypesConsistent = _a.mimeTypesConsistent;\n if (mimeTypesConsistent.state === 0 /* State.Success */ && !mimeTypesConsistent.value) {\n return BotKind.Unknown;\n }\n}\n\nfunction detectNotificationPermissions(_a) {\n var notificationPermissions = _a.notificationPermissions, browserKind = _a.browserKind;\n if (browserKind.state !== 0 /* State.Success */ || browserKind.value !== \"chrome\" /* BrowserKind.Chrome */)\n return false;\n if (notificationPermissions.state === 0 /* State.Success */ && notificationPermissions.value) {\n return BotKind.HeadlessChrome;\n }\n}\n\nfunction detectPluginsArray(_a) {\n var pluginsArray = _a.pluginsArray;\n if (pluginsArray.state === 0 /* State.Success */ && !pluginsArray.value)\n return BotKind.HeadlessChrome;\n}\n\nfunction detectPluginsLengthInconsistency(_a) {\n var pluginsLength = _a.pluginsLength, android = _a.android, browserKind = _a.browserKind, browserEngineKind = _a.browserEngineKind;\n if (pluginsLength.state !== 0 /* State.Success */ ||\n android.state !== 0 /* State.Success */ ||\n browserKind.state !== 0 /* State.Success */ ||\n browserEngineKind.state !== 0 /* State.Success */)\n return;\n if (browserKind.value !== \"chrome\" /* BrowserKind.Chrome */ ||\n android.value ||\n browserEngineKind.value !== \"chromium\" /* BrowserEngineKind.Chromium */)\n return;\n if (pluginsLength.value === 0)\n return BotKind.HeadlessChrome;\n}\n\nfunction detectProcess(_a) {\n var _b;\n var process = _a.process;\n if (process.state !== 0 /* State.Success */)\n return false;\n if (process.value.type === 'renderer' || ((_b = process.value.versions) === null || _b === void 0 ? void 0 : _b.electron) != null)\n return BotKind.Electron;\n}\n\nfunction detectProductSub(_a) {\n var productSub = _a.productSub, browserKind = _a.browserKind;\n if (productSub.state !== 0 /* State.Success */ || browserKind.state !== 0 /* State.Success */)\n return false;\n if ((browserKind.value === \"chrome\" /* BrowserKind.Chrome */ ||\n browserKind.value === \"safari\" /* BrowserKind.Safari */ ||\n browserKind.value === \"opera\" /* BrowserKind.Opera */ ||\n browserKind.value === \"wechat\" /* BrowserKind.WeChat */) &&\n productSub.value !== '20030107')\n return BotKind.Unknown;\n}\n\nfunction detectUserAgent(_a) {\n var userAgent = _a.userAgent;\n if (userAgent.state !== 0 /* State.Success */)\n return false;\n if (/PhantomJS/i.test(userAgent.value))\n return BotKind.PhantomJS;\n if (/Headless/i.test(userAgent.value))\n return BotKind.HeadlessChrome;\n if (/Electron/i.test(userAgent.value))\n return BotKind.Electron;\n if (/slimerjs/i.test(userAgent.value))\n return BotKind.SlimerJS;\n}\n\nfunction detectWebDriver(_a) {\n var webDriver = _a.webDriver;\n if (webDriver.state === 0 /* State.Success */ && webDriver.value)\n return BotKind.HeadlessChrome;\n}\n\nfunction detectWebGL(_a) {\n var webGL = _a.webGL;\n if (webGL.state === 0 /* State.Success */) {\n var _b = webGL.value, vendor = _b.vendor, renderer = _b.renderer;\n if (vendor == 'Brian Paul' && renderer == 'Mesa OffScreen') {\n return BotKind.HeadlessChrome;\n }\n }\n}\n\nfunction detectWindowExternal(_a) {\n var windowExternal = _a.windowExternal;\n if (windowExternal.state !== 0 /* State.Success */)\n return false;\n if (/Sequentum/i.test(windowExternal.value))\n return BotKind.Sequentum;\n}\n\nfunction detectWindowSize(_a) {\n var windowSize = _a.windowSize, documentFocus = _a.documentFocus;\n if (windowSize.state !== 0 /* State.Success */ || documentFocus.state !== 0 /* State.Success */)\n return false;\n var _b = windowSize.value, outerWidth = _b.outerWidth, outerHeight = _b.outerHeight;\n // When a page is opened in a new tab without focusing it right away, the window outer size is 0x0\n if (!documentFocus.value)\n return;\n if (outerWidth === 0 && outerHeight === 0)\n return BotKind.HeadlessChrome;\n}\n\nfunction detectDistinctiveProperties(_a) {\n var distinctiveProps = _a.distinctiveProps;\n if (distinctiveProps.state !== 0 /* State.Success */)\n return false;\n var value = distinctiveProps.value;\n var bot;\n for (bot in value)\n if (value[bot])\n return bot;\n}\n\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nvar detectors = {\n detectAppVersion: detectAppVersion,\n detectDocumentAttributes: detectDocumentAttributes,\n detectErrorTrace: detectErrorTrace,\n detectEvalLengthInconsistency: detectEvalLengthInconsistency,\n detectFunctionBind: detectFunctionBind,\n detectLanguagesLengthInconsistency: detectLanguagesLengthInconsistency,\n detectNotificationPermissions: detectNotificationPermissions,\n detectPluginsArray: detectPluginsArray,\n detectPluginsLengthInconsistency: detectPluginsLengthInconsistency,\n detectProcess: detectProcess,\n detectUserAgent: detectUserAgent,\n detectWebDriver: detectWebDriver,\n detectWebGL: detectWebGL,\n detectWindowExternal: detectWindowExternal,\n detectWindowSize: detectWindowSize,\n detectMimeTypesConsistent: detectMimeTypesConsistent,\n detectProductSub: detectProductSub,\n detectDistinctiveProperties: detectDistinctiveProperties,\n};\n\nfunction getAppVersion() {\n var appVersion = navigator.appVersion;\n if (appVersion == undefined) {\n throw new BotdError(-1 /* State.Undefined */, 'navigator.appVersion is undefined');\n }\n return appVersion;\n}\n\nfunction getDocumentElementKeys() {\n if (document.documentElement === undefined) {\n throw new BotdError(-1 /* State.Undefined */, 'document.documentElement is undefined');\n }\n var documentElement = document.documentElement;\n if (typeof documentElement.getAttributeNames !== 'function') {\n throw new BotdError(-2 /* State.NotFunction */, 'document.documentElement.getAttributeNames is not a function');\n }\n return documentElement.getAttributeNames();\n}\n\nfunction getErrorTrace() {\n try {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n null[0]();\n }\n catch (error) {\n if (error instanceof Error && error['stack'] != null) {\n return error.stack.toString();\n }\n }\n throw new BotdError(-3 /* State.UnexpectedBehaviour */, 'errorTrace signal unexpected behaviour');\n}\n\nfunction getEvalLength() {\n return eval.toString().length;\n}\n\nfunction getFunctionBind() {\n if (Function.prototype.bind === undefined) {\n throw new BotdError(-2 /* State.NotFunction */, 'Function.prototype.bind is undefined');\n }\n return Function.prototype.bind.toString();\n}\n\nfunction getBrowserEngineKind() {\n var _a, _b;\n // Based on research in October 2020. Tested to detect Chromium 42-86.\n var w = window;\n var n = navigator;\n if (countTruthy([\n 'webkitPersistentStorage' in n,\n 'webkitTemporaryStorage' in n,\n n.vendor.indexOf('Google') === 0,\n 'webkitResolveLocalFileSystemURL' in w,\n 'BatteryManager' in w,\n 'webkitMediaStream' in w,\n 'webkitSpeechGrammar' in w,\n ]) >= 5) {\n return \"chromium\" /* BrowserEngineKind.Chromium */;\n }\n if (countTruthy([\n 'ApplePayError' in w,\n 'CSSPrimitiveValue' in w,\n 'Counter' in w,\n n.vendor.indexOf('Apple') === 0,\n 'getStorageUpdates' in n,\n 'WebKitMediaKeys' in w,\n ]) >= 4) {\n return \"webkit\" /* BrowserEngineKind.Webkit */;\n }\n if (countTruthy([\n 'buildID' in navigator,\n 'MozAppearance' in ((_b = (_a = document.documentElement) === null || _a === void 0 ? void 0 : _a.style) !== null && _b !== void 0 ? _b : {}),\n 'onmozfullscreenchange' in w,\n 'mozInnerScreenX' in w,\n 'CSSMozDocumentRule' in w,\n 'CanvasCaptureMediaStream' in w,\n ]) >= 4) {\n return \"gecko\" /* BrowserEngineKind.Gecko */;\n }\n return \"unknown\" /* BrowserEngineKind.Unknown */;\n}\nfunction getBrowserKind() {\n var _a;\n var userAgent = (_a = navigator.userAgent) === null || _a === void 0 ? void 0 : _a.toLowerCase();\n if (strIncludes(userAgent, 'edg/')) {\n return \"edge\" /* BrowserKind.Edge */;\n }\n else if (strIncludes(userAgent, 'trident') || strIncludes(userAgent, 'msie')) {\n return \"internet_explorer\" /* BrowserKind.IE */;\n }\n else if (strIncludes(userAgent, 'wechat')) {\n return \"wechat\" /* BrowserKind.WeChat */;\n }\n else if (strIncludes(userAgent, 'firefox')) {\n return \"firefox\" /* BrowserKind.Firefox */;\n }\n else if (strIncludes(userAgent, 'opera') || strIncludes(userAgent, 'opr')) {\n return \"opera\" /* BrowserKind.Opera */;\n }\n else if (strIncludes(userAgent, 'chrome')) {\n return \"chrome\" /* BrowserKind.Chrome */;\n }\n else if (strIncludes(userAgent, 'safari')) {\n return \"safari\" /* BrowserKind.Safari */;\n }\n else {\n return \"unknown\" /* BrowserKind.Unknown */;\n }\n}\n// Source: https://github.com/fingerprintjs/fingerprintjs/blob/master/src/utils/browser.ts#L223\nfunction isAndroid() {\n var browserEngineKind = getBrowserEngineKind();\n var isItChromium = browserEngineKind === \"chromium\" /* BrowserEngineKind.Chromium */;\n var isItGecko = browserEngineKind === \"gecko\" /* BrowserEngineKind.Gecko */;\n // Only 2 browser engines are presented on Android.\n // Actually, there is also Android 4.1 browser, but it's not worth detecting it at the moment.\n if (!isItChromium && !isItGecko)\n return false;\n var w = window;\n // Chrome removes all words \"Android\" from `navigator` when desktop version is requested\n // Firefox keeps \"Android\" in `navigator.appVersion` when desktop version is requested\n return (countTruthy([\n 'onorientationchange' in w,\n 'orientation' in w,\n isItChromium && !('SharedWorker' in w),\n isItGecko && /android/i.test(navigator.appVersion),\n ]) >= 2);\n}\nfunction getDocumentFocus() {\n if (document.hasFocus === undefined) {\n return false;\n }\n return document.hasFocus();\n}\nfunction isChromium86OrNewer() {\n // Checked in Chrome 85 vs Chrome 86 both on desktop and Android\n var w = window;\n return (countTruthy([\n !('MediaSettingsRange' in w),\n 'RTCEncodedAudioFrame' in w,\n '' + w.Intl === '[object Intl]',\n '' + w.Reflect === '[object Reflect]',\n ]) >= 3);\n}\n\nfunction getLanguages() {\n var n = navigator;\n var result = [];\n var language = n.language || n.userLanguage || n.browserLanguage || n.systemLanguage;\n if (language !== undefined) {\n result.push([language]);\n }\n if (Array.isArray(n.languages)) {\n var browserEngine = getBrowserEngineKind();\n // Starting from Chromium 86, there is only a single value in `navigator.language` in Incognito mode:\n // the value of `navigator.language`. Therefore, the value is ignored in this browser.\n if (!(browserEngine === \"chromium\" /* BrowserEngineKind.Chromium */ && isChromium86OrNewer())) {\n result.push(n.languages);\n }\n }\n else if (typeof n.languages === 'string') {\n var languages = n.languages;\n if (languages) {\n result.push(languages.split(','));\n }\n }\n return result;\n}\n\nfunction areMimeTypesConsistent() {\n if (navigator.mimeTypes === undefined) {\n throw new BotdError(-1 /* State.Undefined */, 'navigator.mimeTypes is undefined');\n }\n var mimeTypes = navigator.mimeTypes;\n var isConsistent = Object.getPrototypeOf(mimeTypes) === MimeTypeArray.prototype;\n for (var i = 0; i < mimeTypes.length; i++) {\n isConsistent && (isConsistent = Object.getPrototypeOf(mimeTypes[i]) === MimeType.prototype);\n }\n return isConsistent;\n}\n\nfunction getNotificationPermissions() {\n return __awaiter(this, void 0, void 0, function () {\n var permissions, permissionStatus;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (window.Notification === undefined) {\n throw new BotdError(-1 /* State.Undefined */, 'window.Notification is undefined');\n }\n if (navigator.permissions === undefined) {\n throw new BotdError(-1 /* State.Undefined */, 'navigator.permissions is undefined');\n }\n permissions = navigator.permissions;\n if (typeof permissions.query !== 'function') {\n throw new BotdError(-2 /* State.NotFunction */, 'navigator.permissions.query is not a function');\n }\n _a.label = 1;\n case 1:\n _a.trys.push([1, 3, , 4]);\n return [4 /*yield*/, permissions.query({ name: 'notifications' })];\n case 2:\n permissionStatus = _a.sent();\n return [2 /*return*/, window.Notification.permission === 'denied' && permissionStatus.state === 'prompt'];\n case 3:\n _a.sent();\n throw new BotdError(-3 /* State.UnexpectedBehaviour */, 'notificationPermissions signal unexpected behaviour');\n case 4: return [2 /*return*/];\n }\n });\n });\n}\n\nfunction getPluginsArray() {\n if (navigator.plugins === undefined) {\n throw new BotdError(-1 /* State.Undefined */, 'navigator.plugins is undefined');\n }\n if (window.PluginArray === undefined) {\n throw new BotdError(-1 /* State.Undefined */, 'window.PluginArray is undefined');\n }\n return navigator.plugins instanceof PluginArray;\n}\n\nfunction getPluginsLength() {\n if (navigator.plugins === undefined) {\n throw new BotdError(-1 /* State.Undefined */, 'navigator.plugins is undefined');\n }\n if (navigator.plugins.length === undefined) {\n throw new BotdError(-3 /* State.UnexpectedBehaviour */, 'navigator.plugins.length is undefined');\n }\n return navigator.plugins.length;\n}\n\nfunction getProcess() {\n var process = window.process;\n var errorPrefix = 'window.process is';\n if (process === undefined) {\n throw new BotdError(-1 /* State.Undefined */, \"\".concat(errorPrefix, \" undefined\"));\n }\n if (process && typeof process !== 'object') {\n throw new BotdError(-3 /* State.UnexpectedBehaviour */, \"\".concat(errorPrefix, \" not an object\"));\n }\n return process;\n}\n\nfunction getProductSub() {\n var productSub = navigator.productSub;\n if (productSub === undefined) {\n throw new BotdError(-1 /* State.Undefined */, 'navigator.productSub is undefined');\n }\n return productSub;\n}\n\nfunction getRTT() {\n if (navigator.connection === undefined) {\n throw new BotdError(-1 /* State.Undefined */, 'navigator.connection is undefined');\n }\n if (navigator.connection.rtt === undefined) {\n throw new BotdError(-1 /* State.Undefined */, 'navigator.connection.rtt is undefined');\n }\n return navigator.connection.rtt;\n}\n\nfunction getUserAgent() {\n return navigator.userAgent;\n}\n\nfunction getWebDriver() {\n if (navigator.webdriver == undefined) {\n throw new BotdError(-1 /* State.Undefined */, 'navigator.webdriver is undefined');\n }\n return navigator.webdriver;\n}\n\nfunction getWebGL() {\n var canvasElement = document.createElement('canvas');\n if (typeof canvasElement.getContext !== 'function') {\n throw new BotdError(-2 /* State.NotFunction */, 'HTMLCanvasElement.getContext is not a function');\n }\n var webGLContext = canvasElement.getContext('webgl');\n if (webGLContext === null) {\n throw new BotdError(-4 /* State.Null */, 'WebGLRenderingContext is null');\n }\n if (typeof webGLContext.getParameter !== 'function') {\n throw new BotdError(-2 /* State.NotFunction */, 'WebGLRenderingContext.getParameter is not a function');\n }\n var vendor = webGLContext.getParameter(webGLContext.VENDOR);\n var renderer = webGLContext.getParameter(webGLContext.RENDERER);\n return { vendor: vendor, renderer: renderer };\n}\n\nfunction getWindowExternal() {\n if (window.external === undefined) {\n throw new BotdError(-1 /* State.Undefined */, 'window.external is undefined');\n }\n var external = window.external;\n if (typeof external.toString !== 'function') {\n throw new BotdError(-2 /* State.NotFunction */, 'window.external.toString is not a function');\n }\n return external.toString();\n}\n\nfunction getWindowSize() {\n return {\n outerWidth: window.outerWidth,\n outerHeight: window.outerHeight,\n innerWidth: window.innerWidth,\n innerHeight: window.innerHeight,\n };\n}\n\nfunction checkDistinctiveProperties() {\n var _a;\n // The order in the following list matters, because specific types of bots come first, followed by automation technologies.\n var distinctivePropsList = (_a = {},\n _a[BotKind.Awesomium] = {\n window: ['awesomium'],\n },\n _a[BotKind.Cef] = {\n window: ['RunPerfTest'],\n },\n _a[BotKind.CefSharp] = {\n window: ['CefSharp'],\n },\n _a[BotKind.CoachJS] = {\n window: ['emit'],\n },\n _a[BotKind.FMiner] = {\n window: ['fmget_targets'],\n },\n _a[BotKind.Geb] = {\n window: ['geb'],\n },\n _a[BotKind.NightmareJS] = {\n window: ['__nightmare', 'nightmare'],\n },\n _a[BotKind.Phantomas] = {\n window: ['__phantomas'],\n },\n _a[BotKind.PhantomJS] = {\n window: ['callPhantom', '_phantom'],\n },\n _a[BotKind.Rhino] = {\n window: ['spawn'],\n },\n _a[BotKind.Selenium] = {\n window: ['_Selenium_IDE_Recorder', '_selenium', 'calledSelenium', /^([a-z]){3}_.*_(Array|Promise|Symbol)$/],\n document: ['__selenium_evaluate', 'selenium-evaluate', '__selenium_unwrapped'],\n },\n _a[BotKind.WebDriverIO] = {\n window: ['wdioElectron'],\n },\n _a[BotKind.WebDriver] = {\n window: [\n 'webdriver',\n '__webdriverFunc',\n '__lastWatirAlert',\n '__lastWatirConfirm',\n '__lastWatirPrompt',\n '_WEBDRIVER_ELEM_CACHE',\n 'ChromeDriverw',\n ],\n document: [\n '__webdriver_script_fn',\n '__driver_evaluate',\n '__webdriver_evaluate',\n '__fxdriver_evaluate',\n '__driver_unwrapped',\n '__webdriver_unwrapped',\n '__fxdriver_unwrapped',\n '__webdriver_script_fn',\n '__webdriver_script_func',\n '__webdriver_script_function',\n '$cdc_asdjflasutopfhvcZLmcf',\n '$cdc_asdjflasutopfhvcZLmcfl_',\n '$chrome_asyncScriptInfo',\n '__$webdriverAsyncExecutor',\n ],\n },\n _a[BotKind.HeadlessChrome] = {\n window: ['domAutomation', 'domAutomationController'],\n },\n _a);\n var botName;\n var result = {};\n var windowProps = getObjectProps(window);\n var documentProps = [];\n if (window.document !== undefined)\n documentProps = getObjectProps(window.document);\n for (botName in distinctivePropsList) {\n var props = distinctivePropsList[botName];\n if (props !== undefined) {\n var windowContains = props.window === undefined ? false : includes.apply(void 0, __spreadArray([windowProps], props.window, false));\n var documentContains = props.document === undefined || !documentProps.length ? false : includes.apply(void 0, __spreadArray([documentProps], props.document, false));\n result[botName] = windowContains || documentContains;\n }\n }\n return result;\n}\n\nvar sources = {\n android: isAndroid,\n browserKind: getBrowserKind,\n browserEngineKind: getBrowserEngineKind,\n documentFocus: getDocumentFocus,\n userAgent: getUserAgent,\n appVersion: getAppVersion,\n rtt: getRTT,\n windowSize: getWindowSize,\n pluginsLength: getPluginsLength,\n pluginsArray: getPluginsArray,\n errorTrace: getErrorTrace,\n productSub: getProductSub,\n windowExternal: getWindowExternal,\n mimeTypesConsistent: areMimeTypesConsistent,\n evalLength: getEvalLength,\n webGL: getWebGL,\n webDriver: getWebDriver,\n languages: getLanguages,\n notificationPermissions: getNotificationPermissions,\n documentElementKeys: getDocumentElementKeys,\n functionBind: getFunctionBind,\n process: getProcess,\n distinctiveProps: checkDistinctiveProperties,\n};\n\n/**\n * Class representing a bot detector.\n *\n * @class\n * @implements {BotDetectorInterface}\n */\nvar BotDetector = /** @class */ (function () {\n function BotDetector() {\n this.components = undefined;\n this.detections = undefined;\n }\n BotDetector.prototype.getComponents = function () {\n return this.components;\n };\n BotDetector.prototype.getDetections = function () {\n return this.detections;\n };\n /**\n * @inheritdoc\n */\n BotDetector.prototype.detect = function () {\n if (this.components === undefined) {\n throw new Error(\"BotDetector.detect can't be called before BotDetector.collect\");\n }\n var _a = detect(this.components, detectors), detections = _a[0], finalDetection = _a[1];\n this.detections = detections;\n return finalDetection;\n };\n /**\n * @inheritdoc\n */\n BotDetector.prototype.collect = function () {\n return __awaiter(this, void 0, void 0, function () {\n var _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n _a = this;\n return [4 /*yield*/, collect(sources)];\n case 1:\n _a.components = _b.sent();\n return [2 /*return*/, this.components];\n }\n });\n });\n };\n return BotDetector;\n}());\n\n/**\n * Sends an unpersonalized AJAX request to collect installation statistics\n */\nfunction monitor() {\n // The FingerprintJS CDN (https://github.com/fingerprintjs/cdn) replaces `window.__fpjs_d_m` with `true`\n if (window.__fpjs_d_m || Math.random() >= 0.001) {\n return;\n }\n try {\n var request = new XMLHttpRequest();\n request.open('get', \"https://m1.openfpcdn.io/botd/v\".concat(version, \"/npm-monitoring\"), true);\n request.send();\n }\n catch (error) {\n // console.error is ok here because it's an unexpected error handler\n // eslint-disable-next-line no-console\n console.error(error);\n }\n}\nfunction load(_a) {\n var _b = _a === void 0 ? {} : _a, _c = _b.monitoring, monitoring = _c === void 0 ? true : _c;\n return __awaiter(this, void 0, void 0, function () {\n var detector;\n return __generator(this, function (_d) {\n switch (_d.label) {\n case 0:\n if (monitoring) {\n monitor();\n }\n detector = new BotDetector();\n return [4 /*yield*/, detector.collect()];\n case 1:\n _d.sent();\n return [2 /*return*/, detector];\n }\n });\n });\n}\nvar index = { load: load };\n\nexport { BotKind, BotdError, collect, index as default, detect, detectors, load, sources };\n","import { useState, useEffect } from 'react';\r\nimport { load } from '@fingerprintjs/botd';\r\nimport { BotDetectionResult } from '../types';\r\n\r\nexport const useBotDetection = (): BotDetectionResult => {\r\n const [result, setResult] = useState<BotDetectionResult>({\r\n isBot: false,\r\n reasons: []\r\n });\r\n\r\n useEffect(() => {\r\n const detectBot = async () => {\r\n try {\r\n // Load and initialize BotD\r\n const botd = await load();\r\n const detectionResult = await botd.detect();\r\n \r\n const isBot = detectionResult.bot;\r\n const reasons = isBot ? ['FingerprintJS BotD detected automation'] : [];\r\n\r\n setResult({\r\n isBot,\r\n reasons\r\n });\r\n } catch (error) {\r\n // If BotD fails to load, assume human user (fail open for better UX)\r\n console.warn('BotD detection failed, assuming human user:', error);\r\n \r\n setResult({\r\n isBot: false,\r\n reasons: ['BotD failed to load - assuming human']\r\n });\r\n }\r\n };\r\n\r\n detectBot();\r\n }, []);\r\n\r\n return result;\r\n}; ","import { useState, useEffect, useRef } from 'react';\r\nimport type { ViewabilityResult, ViewabilityOptions } from '../types';\r\n\r\nexport const useViewability = (options: ViewabilityOptions = {}): ViewabilityResult & { \r\n elementRef: React.RefObject<HTMLDivElement>;\r\n trackImpression: (adId?: string) => void;\r\n} => {\r\n const { threshold = 0.5, durationMs = 1000, onImpressionTracked } = options;\r\n\r\n const elementRef = useRef<HTMLDivElement>(null);\r\n const [isViewable, setIsViewable] = useState(false);\r\n const [hasBeenViewed, setHasBeenViewed] = useState(false);\r\n const [impressionTracked, setImpressionTracked] = useState(false);\r\n const [viewableStartTime, setViewableStartTime] = useState<number | null>(null);\r\n const [hasMetDuration, setHasMetDuration] = useState(false);\r\n\r\n useEffect(() => {\r\n if (!elementRef.current) return;\r\n\r\n const observer = new IntersectionObserver(\r\n ([entry]) => {\r\n const viewable = entry.intersectionRatio >= threshold;\r\n const now = Date.now();\r\n \r\n if (viewable) {\r\n if (viewableStartTime === null) {\r\n setViewableStartTime(now);\r\n }\r\n setIsViewable(true);\r\n \r\n if (!hasBeenViewed) {\r\n setHasBeenViewed(true);\r\n }\r\n } else {\r\n setViewableStartTime(null);\r\n setIsViewable(false);\r\n setHasMetDuration(false);\r\n }\r\n },\r\n { \r\n threshold,\r\n rootMargin: '0px'\r\n }\r\n );\r\n\r\n observer.observe(elementRef.current);\r\n return () => observer.disconnect();\r\n }, [threshold, hasBeenViewed, viewableStartTime]);\r\n\r\n // Duration tracking effect\r\n useEffect(() => {\r\n if (!isViewable || viewableStartTime === null || hasMetDuration) return;\r\n\r\n const timeoutId = setTimeout(() => {\r\n if (isViewable && viewableStartTime !== null) {\r\n const elapsed = Date.now() - viewableStartTime;\r\n if (elapsed >= durationMs) {\r\n setHasMetDuration(true);\r\n }\r\n }\r\n }, durationMs);\r\n\r\n return () => clearTimeout(timeoutId);\r\n }, [isViewable, viewableStartTime, durationMs, hasMetDuration]);\r\n\r\n const trackImpression = (adId?: string) => {\r\n if (impressionTracked) return;\r\n \r\n setImpressionTracked(true);\r\n \r\n if (onImpressionTracked && adId) {\r\n onImpressionTracked(adId);\r\n }\r\n };\r\n\r\n return {\r\n elementRef,\r\n isViewable: isViewable && hasMetDuration, // MRC-compliant viewability (with duration)\r\n isInstantViewable: isViewable, // Instant viewability (no duration requirement)\r\n hasBeenViewed,\r\n impressionTracked,\r\n trackImpression\r\n };\r\n}; ","export interface ColorPalette {\r\n // Modal background\r\n background: string;\r\n\r\n // Modal text\r\n text: string;\r\n\r\n // Modal link colors\r\n primary: string;\r\n primaryHover: string;\r\n\r\n // Modal border\r\n border: string;\r\n}\r\n\r\nexport interface FontPalette {\r\n primary: string;\r\n secondary: string;\r\n}\r\n\r\n// Font definitions\r\nexport const fonts: Record<string, FontPalette> = {\r\n 'san-serif': {\r\n primary: '-apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif',\r\n secondary: 'system-ui, -apple-system, sans-serif'\r\n },\r\n 'serif': {\r\n primary: 'Georgia, \"Times New Roman\", Times, serif',\r\n secondary: '\"Hoefler Text\", \"Baskerville Old Face\", Garamond, serif'\r\n },\r\n 'monospace': {\r\n primary: '\"SF Mono\", Monaco, \"Inconsolata\", \"Roboto Mono\", \"Source Code Pro\", Consolas, \"Courier New\", monospace',\r\n secondary: 'ui-monospace, Menlo, monospace'\r\n }\r\n};\r\n\r\n// Modal color themes - only two options based on theme mode\r\nconst colorCombinations: Record<string, ColorPalette> = {\r\n 'light': {\r\n background: '#ffffff',\r\n text: '#1e293b',\r\n primary: '#3b82f6',\r\n primaryHover: '#2563eb',\r\n border: '#e2e8f0'\r\n },\r\n 'dark': {\r\n background: '#0f172a',\r\n text: '#f1f5f9',\r\n primary: '#60a5fa',\r\n primaryHover: '#3b82f6',\r\n border: '#475569'\r\n }\r\n};\r\n\r\n// Function to get the appropriate theme based on theme mode\r\n// Accent is ignored - modal always uses consistent colors based on light/dark theme\r\nexport function getColorTheme(themeMode: 'light' | 'dark' | 'auto', _accent?: string): ColorPalette {\r\n // Handle auto theme by detecting system preference\r\n let resolvedTheme = themeMode;\r\n if (themeMode === 'auto') {\r\n resolvedTheme = window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';\r\n }\r\n\r\n // Return the theme color, fallback to light\r\n return colorCombinations[resolvedTheme] || colorCombinations['light'];\r\n}\r\n\r\n// Helper functions for styling\r\nexport const getSolidBackground = (colors: ColorPalette): string => {\r\n return colors.background;\r\n};\r\n\r\nexport const getBackgroundGradient = (colors: ColorPalette): string => {\r\n // No longer using gradients, just return solid background\r\n return colors.background;\r\n};\r\n\r\nexport const getTextMuted = (colors: ColorPalette): string => {\r\n // Use a slightly muted version of the text color\r\n return colors.text + 'aa'; // Add alpha for slight transparency\r\n};\r\n\r\nexport const getTextSecondary = (colors: ColorPalette): string => {\r\n // Not used anymore, but keeping for compatibility\r\n return colors.text;\r\n};\r\n\r\nexport const getBorderLight = (colors: ColorPalette): string => {\r\n return colors.border;\r\n};\r\n\r\nexport const getShadow = (colors: ColorPalette): string => {\r\n return 'rgba(0, 0, 0, 0.1)';\r\n};\r\n\r\nexport const getFontStyles = (font: string = 'san-serif'): FontPalette => {\r\n return fonts[font] || fonts['san-serif'];\r\n};","import { SimulaTheme, AccentOption, FontOption } from '../types';\r\nimport { \r\n getColorTheme, \r\n getFontStyles, \r\n getSolidBackground,\r\n getTextMuted,\r\n getShadow\r\n} from './colorThemes';\r\n\r\nexport const getResponsiveStyles = (theme: SimulaTheme = {}): React.CSSProperties => {\r\n // Backward compatibility: prefer 'mode' over 'theme', but support both\r\n const themeMode = theme.mode ?? (theme as any).theme ?? 'light';\r\n const {\r\n accent = 'blue',\r\n font = 'san-serif',\r\n width = 'auto',\r\n } = theme;\r\n\r\n // If accent or font is an array, use the first value for styling\r\n const effectiveAccent: AccentOption = Array.isArray(accent) ? accent[0] : accent;\r\n const effectiveFont: FontOption = Array.isArray(font) ? font[0] : font;\r\n\r\n const colors = getColorTheme(themeMode, effectiveAccent);\r\n const fonts = getFontStyles(effectiveFont);\r\n\r\n return {\r\n '--simula-primary': colors.primary,\r\n '--simula-border': colors.border,\r\n '--simula-background': getSolidBackground(colors),\r\n '--simula-text': colors.text,\r\n '--simula-font-primary': fonts.primary,\r\n '--simula-width': typeof width === 'number' ? `${width}px` : width,\r\n } as React.CSSProperties;\r\n};\r\n\r\nexport const createInChatAdSlotCSS = (theme: SimulaTheme = {}) => {\r\n // Backward compatibility: prefer 'mode' over 'theme', but support both\r\n const themeMode = theme.mode ?? (theme as any).theme ?? 'light';\r\n const {\r\n accent = 'blue',\r\n font = 'san-serif',\r\n width = 'auto',\r\n } = theme;\r\n\r\n // If accent or font is an array, use the first value for styling\r\n const effectiveAccent: AccentOption = Array.isArray(accent) ? accent[0] : accent;\r\n const effectiveFont: FontOption = Array.isArray(font) ? font[0] : font;\r\n\r\n const colors = getColorTheme(themeMode, effectiveAccent);\r\n const fonts = getFontStyles(effectiveFont);\r\n\r\n // Fixed dimensions\r\n const minWidth = 320;\r\n const fixedHeight = 265;\r\n\r\n // Handle width calculation\r\n const getWidthCSS = () => {\r\n if (width === 'auto') {\r\n return '100%';\r\n }\r\n if (typeof width === 'string') {\r\n // For percentage values and other CSS units, use as-is\r\n return width;\r\n }\r\n return `${width}px`;\r\n };\r\n\r\n return `\r\n .simula-content-slot {\r\n width: ${getWidthCSS()};\r\n min-width: ${minWidth}px;\r\n height: ${fixedHeight}px;\r\n margin: 0px;\r\n line-height: 1.5;\r\n position: relative;\r\n overflow: hidden;\r\n }\r\n\r\n .simula-content-slot * {\r\n margin: 0;\r\n padding: 0;\r\n }\r\n\r\n .simula-content-frame {\r\n width: 100%;\r\n height: 100%;\r\n border: none;\r\n outline: none;\r\n box-shadow: none;\r\n border-radius: 0;\r\n background: transparent;\r\n display: block;\r\n margin: 0;\r\n padding: 0;\r\n position: relative;\r\n vertical-align: top;\r\n }\r\n\r\n .simula-info-icon {\r\n position: absolute;\r\n top: 12;\r\n right: 12px;\r\n background: none;\r\n border: none;\r\n color: ${colors.text};\r\n opacity: 0.5;\r\n cursor: pointer;\r\n padding: 6px;\r\n border-radius: 50%;\r\n transition: all 0.2s ease;\r\n z-index: 10;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n }\r\n\r\n .simula-info-icon:hover {\r\n opacity: 1;\r\n transform: scale(1.1);\r\n }\r\n\r\n .simula-modal-overlay {\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n right: 0;\r\n bottom: 0;\r\n background: rgba(0, 0, 0, 0.5);\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n z-index: 1000;\r\n }\r\n\r\n .simula-modal-content {\r\n background: ${getSolidBackground(colors)};\r\n border-radius: 8px;\r\n padding: 16px;\r\n width: 75%;\r\n min-width: 200px;\r\n max-width: 431px;\r\n margin: 16px;\r\n position: relative;\r\n box-shadow: 0 4px 12px ${getShadow(colors)};\r\n font-family: ${fonts.primary};\r\n line-height: 1.5;\r\n color: ${colors.text};\r\n font-size: 14px;\r\n border: 1px solid ${colors.border};\r\n }\r\n\r\n .simula-modal-close {\r\n position: absolute;\r\n top: 8px;\r\n right: 12px;\r\n background: none;\r\n border: none;\r\n font-size: 24px;\r\n cursor: pointer;\r\n color: ${getTextMuted(colors)};\r\n padding: 4px;\r\n line-height: 1;\r\n }\r\n\r\n .simula-modal-close:hover {\r\n color: ${colors.text};\r\n }\r\n\r\n .simula-modal-link {\r\n color: ${colors.primary};\r\n text-decoration: underline;\r\n }\r\n\r\n .simula-modal-link:hover {\r\n color: ${colors.primaryHover};\r\n text-decoration: underline;\r\n }\r\n\r\n .simula-content-label {\r\n font-size: 10px;\r\n color: ${getTextMuted(colors)};\r\n text-transform: uppercase;\r\n letter-spacing: 0.05em;\r\n margin-bottom: 8px;\r\n display: block;\r\n }\r\n `;\r\n};","import React, { useState, useEffect, useRef, useCallback, useMemo } from 'react';\r\nimport { v4 as uuidv4 } from 'uuid';\r\nimport { useSimula } from './SimulaProvider';\r\nimport { useDebounce } from './hooks/useDebounce';\r\nimport { useBotDetection } from './hooks/useBotDetection';\r\nimport { useViewability } from './hooks/useViewability';\r\nimport { fetchAd, trackImpression } from './utils/api';\r\nimport { createInChatAdSlotCSS } from './utils/styling';\r\nimport { validateInChatAdSlotProps } from './utils/validation';\r\nimport { InChatAdSlotProps, AdData } from './types';\r\n\r\n// Internal constant to prevent API abuse\r\nconst MIN_FETCH_INTERVAL_MS = 1000; // 1 second minimum between fetches\r\n\r\n// Helper functions for width validation\r\nconst isAutoWidth = (width: any): boolean => width === 'auto';\r\nconst isPercentageWidth = (width: any): boolean => typeof width === 'string' && /^\\d+(?:\\.\\d+)?%$/.test(width);\r\nconst needsWidthMeasurement = (width: any): boolean => isAutoWidth(width) || isPercentageWidth(width);\r\n\r\n// Validate messages array has actual content\r\nconst hasValidMessages = (messages: any[]): boolean => {\r\n return messages.length > 0 && messages.some(msg => msg && msg.content && msg.content.trim().length > 0);\r\n};\r\n\r\nexport const InChatAdSlot: React.FC<InChatAdSlotProps> = (props) => {\r\n // Validate props early\r\n validateInChatAdSlotProps(props);\r\n\r\n const {\r\n messages,\r\n trigger,\r\n formats, // Deprecated: ignored for backward compatibility\r\n theme = {},\r\n debounceMs = 0,\r\n charDesc,\r\n onImpression,\r\n onClick,\r\n onError,\r\n } = props;\r\n\r\n const { apiKey, sessionId } = useSimula();\r\n\r\n // Generate a stable slotId for this component instance\r\n const slotId = useMemo(() => `slot-${uuidv4()}`, []);\r\n \r\n const [ad, setAd] = useState<AdData | null>(null);\r\n const [loading, setLoading] = useState(false);\r\n const [error, setError] = useState<string | null>(null);\r\n const [shouldFetch, setShouldFetch] = useState(false);\r\n \r\n const [showInfoModal, setShowInfoModal] = useState(false);\r\n const [iframeLoaded, setIframeLoaded] = useState(false);\r\n const [measuredWidth, setMeasuredWidth] = useState<number | null>(null);\r\n\r\n // Track if this AdSlot has already been triggered\r\n const [hasTriggered, setHasTriggered] = useState(false);\r\n const [triggerUsed, setTriggerUsed] = useState<Promise<any> | null>(null);\r\n\r\n const lastFetchTimeRef = useRef<number>(0);\r\n const styleElementRef = useRef<HTMLStyleElement | null>(null);\r\n\r\n const {\r\n elementRef,\r\n hasBeenViewed,\r\n isViewable, // MRC-compliant (1 second duration)\r\n trackImpression: viewabilityTrackImpression\r\n } = useViewability({\r\n threshold: 0.5,\r\n durationMs: 1000, // 1 second for MRC compliance\r\n onImpressionTracked: (adId: string) => {\r\n // This gets called after impression tracking\r\n trackImpression(adId, apiKey);\r\n if (ad) {\r\n onImpression?.(ad);\r\n }\r\n }\r\n });\r\n\r\n const { isBot, reasons } = useBotDetection();\r\n\r\n // Measure actual width once when element is ready\r\n useEffect(() => {\r\n const currentWidth = theme.width;\r\n\r\n // If no width is configured at all, skip measurement\r\n if (currentWidth === undefined) return;\r\n\r\n // Only measure if it's 'auto' or a percentage value\r\n const needsMeasurement = needsWidthMeasurement(currentWidth);\r\n\r\n if (!needsMeasurement) return;\r\n if (!elementRef.current) return;\r\n\r\n // Track if already measured to prevent re-observation\r\n let hasMeasured = false;\r\n\r\n // Use ResizeObserver to get the initial size\r\n const resizeObserver = new ResizeObserver(entries => {\r\n const entry = entries[0];\r\n if (entry && !hasMeasured) {\r\n hasMeasured = true;\r\n const width = Math.round(entry.contentRect.width);\r\n setMeasuredWidth(width);\r\n\r\n // Disconnect after first measurement\r\n resizeObserver.disconnect();\r\n }\r\n });\r\n\r\n resizeObserver.observe(elementRef.current);\r\n\r\n return () => {\r\n resizeObserver.disconnect();\r\n };\r\n }, [theme.width, elementRef]);\r\n\r\n const fetchAdData = useCallback(async () => {\r\n if (!hasBeenViewed || loading || hasTriggered || error) {\r\n return;\r\n }\r\n\r\n // Block if sessionId is missing or invalid\r\n if (!sessionId) {\r\n setError('Session invalid, fetch ad request blocked');\r\n console.error('Session invalid, fetch ad request blocked');\r\n return;\r\n }\r\n\r\n // Wait for width measurement when using auto or percentage values\r\n const currentWidth = theme.width;\r\n const needsMeasurement = needsWidthMeasurement(currentWidth);\r\n\r\n if (needsMeasurement && measuredWidth === null) {\r\n return;\r\n }\r\n\r\n // Block ad requests from detected bots\r\n if (isBot) {\r\n console.warn('Bot detected, blocking ad request:', { reasons });\r\n return;\r\n }\r\n\r\n const now = Date.now();\r\n if (now - lastFetchTimeRef.current < MIN_FETCH_INTERVAL_MS) {\r\n return;\r\n }\r\n\r\n setLoading(true);\r\n setError(null);\r\n lastFetchTimeRef.current = now;\r\n\r\n try {\r\n // Validate width before making API call\r\n const currentConfiguredWidth = theme.width;\r\n const minWidth = 320;\r\n\r\n // Check width bounds (numeric or px string)\r\n let widthValue: number | null = null;\r\n if (typeof currentConfiguredWidth === 'number') {\r\n widthValue = currentConfiguredWidth;\r\n } else if (typeof currentConfiguredWidth === 'string') {\r\n const pxMatch = currentConfiguredWidth.match(/^(\\d+(?:\\.\\d+)?)px$/);\r\n if (pxMatch) {\r\n widthValue = parseFloat(pxMatch[1]);\r\n }\r\n }\r\n\r\n // Validate minimum width if we have a concrete value\r\n if (widthValue !== null && widthValue < minWidth) {\r\n console.error(`AdSlot width ${widthValue}px is below minimum ${minWidth}px. Skipping ad request.`);\r\n setError(`Invalid width: ${widthValue}px (minimum: ${minWidth}px)`);\r\n setLoading(false);\r\n return;\r\n }\r\n\r\n // Create theme with measured width for backend\r\n const themeForBackend = { ...theme };\r\n\r\n // Convert the current width to pixels for backend - always send as 'width'\r\n if (typeof currentConfiguredWidth === \"string\") {\r\n // Check if it's a px string like \"400px\"\r\n const pxMatch = currentConfiguredWidth.match(/^(\\d+(?:\\.\\d+)?)px$/);\r\n if (pxMatch) {\r\n // Convert \"400px\" to 400\r\n themeForBackend.width = parseFloat(pxMatch[1]);\r\n } else if (measuredWidth !== null) {\r\n // For 'auto' and percentages, use measured width\r\n // If measured width is below minimum, use minimum\r\n const finalWidth = measuredWidth < minWidth ? minWidth : measuredWidth;\r\n themeForBackend.width = finalWidth;\r\n }\r\n } else if (typeof currentConfiguredWidth === \"number\") {\r\n // Already a number, just use it\r\n themeForBackend.width = currentConfiguredWidth;\r\n }\r\n\r\n const result = await fetchAd({\r\n messages,\r\n apiKey,\r\n slotId,\r\n theme: themeForBackend,\r\n sessionId,\r\n charDesc,\r\n });\r\n\r\n if (result.error) {\r\n console.warn('🚫 Ad fetch failed:', result.error);\r\n setError(result.error);\r\n onError?.(new Error(result.error));\r\n } else if (result.ad) {\r\n setAd(result.ad);\r\n // Mark as triggered - this AdSlot will never fetch again\r\n setHasTriggered(true);\r\n } else {\r\n console.warn('🚫 No ad returned from API - no fill or invalid response');\r\n setError('No ad available');\r\n onError?.(new Error('No ad available'));\r\n }\r\n } catch (err) {\r\n const errorMessage = err instanceof Error ? err.message : 'Failed to fetch ad';\r\n setError(errorMessage);\r\n onError?.(new Error(errorMessage));\r\n } finally {\r\n setLoading(false);\r\n }\r\n }, [hasBeenViewed, loading, hasTriggered, error, messages, apiKey, slotId, theme, onError, isBot, reasons, sessionId, measuredWidth]);\r\n\r\n useDebounce(\r\n () => {\r\n if (shouldFetch) {\r\n fetchAdData();\r\n setShouldFetch(false);\r\n }\r\n },\r\n debounceMs,\r\n [shouldFetch, fetchAdData]\r\n );\r\n\r\n // Handle trigger promise resolution/rejection\r\n useEffect(() => {\r\n if (hasTriggered) return;\r\n if (!trigger) return;\r\n if (trigger === triggerUsed) return;\r\n\r\n setTriggerUsed(trigger);\r\n\r\n trigger\r\n .then(() => {\r\n if (!hasTriggered) {\r\n setShouldFetch(true);\r\n }\r\n })\r\n .catch(() => {\r\n if (!hasTriggered) {\r\n setShouldFetch(true);\r\n }\r\n });\r\n }, [trigger, triggerUsed, hasTriggered]);\r\n\r\n // Consolidated trigger logic - checks all conditions before fetching\r\n useEffect(() => {\r\n // Don't trigger if already triggered\r\n if (hasTriggered) return;\r\n\r\n // Don't trigger if no valid messages\r\n if (!hasValidMessages(messages)) return;\r\n\r\n // Don't trigger if waiting for trigger promise\r\n if (trigger && !triggerUsed) return;\r\n\r\n // Don't trigger if not viewed yet\r\n if (!hasBeenViewed) return;\r\n\r\n // Don't trigger if waiting for width measurement\r\n const needsMeasurement = typeof theme.width === \"string\" && needsWidthMeasurement(theme.width);\r\n if (needsMeasurement && measuredWidth === null) return;\r\n\r\n // All conditions met, trigger fetch\r\n setShouldFetch(true);\r\n }, [hasBeenViewed, hasTriggered, triggerUsed, trigger, measuredWidth, theme.width, messages]);\r\n\r\n useEffect(() => {\r\n if (ad && isViewable && !isBot && iframeLoaded) {\r\n viewabilityTrackImpression(ad.id); // Track impression when viewable AND iframe loaded\r\n }\r\n }, [ad, isViewable, isBot, iframeLoaded, viewabilityTrackImpression]);\r\n\r\n useEffect(() => {\r\n // Create style element once on mount\r\n if (!styleElementRef.current) {\r\n styleElementRef.current = document.createElement('style');\r\n styleElementRef.current.setAttribute('data-simula-styles', 'true');\r\n document.head.appendChild(styleElementRef.current);\r\n }\r\n\r\n // Update CSS content whenever theme changes\r\n const css = createInChatAdSlotCSS(theme);\r\n styleElementRef.current.textContent = css;\r\n\r\n // Cleanup only on unmount\r\n return () => {\r\n if (styleElementRef.current && document.head.contains(styleElementRef.current)) {\r\n document.head.removeChild(styleElementRef.current);\r\n styleElementRef.current = null;\r\n }\r\n };\r\n }, [theme]);\r\n\r\n\r\n const renderContent = () => {\r\n if (loading) {\r\n return null;\r\n }\r\n\r\n if (error) {\r\n return null;\r\n }\r\n\r\n if (!ad || !ad.iframeUrl) {\r\n return null;\r\n }\r\n\r\n return (\r\n <div\r\n className=\"simula-content-slot\"\r\n onClick={() => onClick?.(ad)}\r\n style={{ cursor: onClick ? 'pointer' : 'default' }}\r\n >\r\n <iframe\r\n src={ad.iframeUrl}\r\n className=\"simula-content-frame\"\r\n style={{ display: 'block', verticalAlign: 'top', border: 0, margin: 0, padding: 0, width: '100%' }}\r\n frameBorder=\"0\"\r\n scrolling=\"no\"\r\n allowTransparency={true}\r\n sandbox=\"allow-scripts allow-same-origin allow-popups allow-popups-to-escape-sandbox\"\r\n title={`Content: ${ad.id}`}\r\n onLoad={() => {\r\n // Iframe loaded - now impressions can be tracked\r\n setIframeLoaded(true);\r\n }}\r\n />\r\n <button\r\n className=\"simula-info-icon\"\r\n onClick={(e) => {\r\n e.stopPropagation();\r\n setShowInfoModal(true);\r\n }}\r\n aria-label=\"Content information\"\r\n >\r\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"currentColor\">\r\n <circle cx=\"8\" cy=\"8\" r=\"7\" stroke=\"currentColor\" strokeWidth=\"1\" fill=\"none\"/>\r\n <text x=\"8\" y=\"12\" textAnchor=\"middle\" fontSize=\"10\" fontFamily=\"serif\">i</text>\r\n </svg>\r\n </button>\r\n {showInfoModal && (\r\n <div className=\"simula-modal-overlay\" onClick={() => setShowInfoModal(false)}>\r\n <div className=\"simula-modal-content\" onClick={(e) => e.stopPropagation()}>\r\n <button \r\n className=\"simula-modal-close\"\r\n onClick={() => setShowInfoModal(false)}\r\n aria-label=\"Close\"\r\n >\r\n ×\r\n </button>\r\n <p>\r\n Powered by{' '}\r\n <a\r\n href=\"https://simula.ad\"\r\n target=\"_blank\"\r\n rel=\"noopener noreferrer\"\r\n className=\"simula-modal-link\"\r\n >\r\n Simula\r\n </a>\r\n </p>\r\n </div>\r\n </div>\r\n )}\r\n </div>\r\n );\r\n };\r\n\r\n return (\r\n <div\r\n ref={elementRef}\r\n style={{\r\n display: error ? 'none' : 'block',\r\n minWidth: ad && ad.id ? '320px' : '0px',\r\n width: !theme.width || theme.width === 'auto' ? '100%' : theme.width,\r\n height: ad && ad.id ? '265px' : '0px',\r\n overflow: 'hidden'\r\n }}\r\n >\r\n {renderContent()}\r\n </div>\r\n );\r\n};","import { useState, useEffect, useRef } from 'react';\r\n\r\ninterface OMIDViewabilityResult {\r\n isViewable: boolean;\r\n hasBeenViewed: boolean;\r\n impressionTracked: boolean;\r\n}\r\n\r\ninterface OMIDOptions {\r\n threshold?: number;\r\n durationMs?: number;\r\n partnerName?: string;\r\n partnerVersion?: string;\r\n onImpressionTracked?: (adId: string) => void;\r\n}\r\n\r\n// OMID Service Script - This should be loaded globally\r\ndeclare global {\r\n interface Window {\r\n omidSessionClient?: any;\r\n omidSessionService?: any;\r\n }\r\n}\r\n\r\nexport const useOMIDViewability = (options: OMIDOptions = {}): OMIDViewabilityResult & { \r\n elementRef: React.RefObject<HTMLDivElement>;\r\n trackImpression: (adId?: string) => void;\r\n} => {\r\n const {\r\n threshold = 0.5,\r\n durationMs = 1000,\r\n partnerName = 'Simula-Ad-SDK',\r\n partnerVersion = '1.0.0',\r\n onImpressionTracked\r\n } = options;\r\n\r\n const elementRef = useRef<HTMLDivElement>(null);\r\n const [isViewable, setIsViewable] = useState(false);\r\n const [hasBeenViewed, setHasBeenViewed] = useState(false);\r\n const [impressionTracked, setImpressionTracked] = useState(false);\r\n const [viewableStartTime, setViewableStartTime] = useState<number | null>(null);\r\n const [hasMetDuration, setHasMetDuration] = useState(false);\r\n \r\n const omidSessionRef = useRef<any>(null);\r\n const adEventsRef = useRef<any>(null);\r\n\r\n useEffect(() => {\r\n if (!elementRef.current) return;\r\n\r\n // Initialize OMID Session\r\n const initializeOMID = async () => {\r\n try {\r\n // Load OMID Service Script dynamically if not already loaded\r\n if (!window.omidSessionClient) {\r\n await loadOMIDServiceScript();\r\n }\r\n\r\n const sessionClient = window.omidSessionClient?.['1.0.0'];\r\n if (!sessionClient) {\r\n console.warn('OMID Session Client not available, falling back to basic viewability');\r\n initializeFallbackViewability();\r\n return;\r\n }\r\n\r\n // Create OMID partner and context\r\n const Partner = sessionClient.Partner;\r\n const Context = sessionClient.Context;\r\n const AdSession = sessionClient.AdSession;\r\n const AdEvents = sessionClient.AdEvents;\r\n\r\n const partner = new Partner(partnerName, partnerVersion);\r\n const context = new Context(partner, [], null); // No verification scripts for now\r\n \r\n // Create ad session\r\n const adSession = new AdSession(context);\r\n adSession.setCreativeType('display');\r\n adSession.setImpressionType('beginToRender');\r\n\r\n omidSessionRef.current = adSession;\r\n\r\n // Set the ad view\r\n context.setSlotElement(elementRef.current);\r\n\r\n // Start session\r\n adSession.start();\r\n\r\n // Create ad events handler\r\n adEventsRef.current = new AdEvents(adSession);\r\n\r\n // Register session observer for viewability events\r\n adSession.registerSessionObserver((event: any) => {\r\n switch (event.type) {\r\n case 'sessionStart':\r\n // Signal ad loaded\r\n adEventsRef.current?.loaded();\r\n break;\r\n case 'sessionError':\r\n console.error('OMID session error:', event.data);\r\n initializeFallbackViewability();\r\n break;\r\n case 'sessionFinish':\r\n break;\r\n case 'geometryChange':\r\n handleGeometryChange(event.data);\r\n break;\r\n }\r\n });\r\n\r\n } catch (error) {\r\n console.warn('OMID initialization failed, using fallback:', error);\r\n initializeFallbackViewability();\r\n }\r\n };\r\n\r\n const loadOMIDServiceScript = async (): Promise<void> => {\r\n return new Promise((resolve, reject) => {\r\n // Check if script is already loaded\r\n if (document.querySelector('script[src*=\"omweb-v1.js\"]')) {\r\n resolve();\r\n return;\r\n }\r\n\r\n const script = document.createElement('script');\r\n script.src = 'https://s0.2mdn.net/instream/omweb/omweb-v1.js'; // Official OMID Service Script\r\n script.async = true;\r\n script.onload = () => resolve();\r\n script.onerror = () => reject(new Error('Failed to load OMID script'));\r\n document.head.appendChild(script);\r\n });\r\n };\r\n\r\n const handleGeometryChange = (geometryData: any) => {\r\n if (!geometryData?.viewport || !geometryData?.adView) return;\r\n\r\n const { viewport, adView } = geometryData;\r\n \r\n // Calculate viewable area\r\n const viewableArea = calculateViewableArea(viewport, adView);\r\n const totalArea = adView.width * adView.height;\r\n const viewablePercentage = totalArea > 0 ? viewableArea / totalArea : 0;\r\n\r\n const newIsViewable = viewablePercentage >= threshold;\r\n const now = Date.now();\r\n \r\n if (newIsViewable) {\r\n if (viewableStartTime === null) {\r\n setViewableStartTime(now);\r\n }\r\n setIsViewable(true);\r\n \r\n if (!hasBeenViewed) {\r\n setHasBeenViewed(true);\r\n }\r\n } else {\r\n setViewableStartTime(null);\r\n setIsViewable(false);\r\n setHasMetDuration(false);\r\n }\r\n };\r\n\r\n const calculateViewableArea = (viewport: any, adView: any): number => {\r\n const intersectionLeft = Math.max(viewport.x, adView.x);\r\n const intersectionTop = Math.max(viewport.y, adView.y);\r\n const intersectionRight = Math.min(viewport.x + viewport.width, adView.x + adView.width);\r\n const intersectionBottom = Math.min(viewport.y + viewport.height, adView.y + adView.height);\r\n\r\n const width = Math.max(0, intersectionRight - intersectionLeft);\r\n const height = Math.max(0, intersectionBottom - intersectionTop);\r\n\r\n return width * height;\r\n };\r\n\r\n // Fallback implementation using Intersection Observer\r\n const initializeFallbackViewability = () => {\r\n const observer = new IntersectionObserver(\r\n (entries) => {\r\n entries.forEach((entry) => {\r\n const newIsViewable = entry.intersectionRatio >= threshold;\r\n const now = Date.now();\r\n \r\n if (newIsViewable) {\r\n if (viewableStartTime === null) {\r\n setViewableStartTime(now);\r\n }\r\n setIsViewable(true);\r\n \r\n if (!hasBeenViewed) {\r\n setHasBeenViewed(true);\r\n }\r\n } else {\r\n setViewableStartTime(null);\r\n setIsViewable(false);\r\n setHasMetDuration(false);\r\n }\r\n });\r\n },\r\n { \r\n threshold,\r\n rootMargin: '0px'\r\n }\r\n );\r\n\r\n if (elementRef.current) {\r\n observer.observe(elementRef.current);\r\n }\r\n\r\n return () => {\r\n observer.disconnect();\r\n };\r\n };\r\n\r\n initializeOMID();\r\n\r\n // Cleanup\r\n return () => {\r\n if (omidSessionRef.current) {\r\n try {\r\n omidSessionRef.current.finish();\r\n } catch (error) {\r\n console.warn('Error finishing OMID session:', error);\r\n }\r\n }\r\n };\r\n }, [threshold, partnerName, partnerVersion, hasBeenViewed, viewableStartTime]);\r\n\r\n // Duration tracking effect\r\n useEffect(() => {\r\n if (!isViewable || viewableStartTime === null || hasMetDuration) return;\r\n\r\n const timeoutId = setTimeout(() => {\r\n if (isViewable && viewableStartTime !== null) {\r\n const elapsed = Date.now() - viewableStartTime;\r\n if (elapsed >= durationMs) {\r\n setHasMetDuration(true);\r\n }\r\n }\r\n }, durationMs);\r\n\r\n return () => clearTimeout(timeoutId);\r\n }, [isViewable, viewableStartTime, durationMs, hasMetDuration]);\r\n\r\n const trackImpression = (adId?: string) => {\r\n if (impressionTracked) return;\r\n\r\n if (adEventsRef.current) {\r\n // Use OMID impression tracking\r\n try {\r\n adEventsRef.current.impressionOccurred();\r\n setImpressionTracked(true);\r\n\r\n // After OMID tracks successfully, ping our backend\r\n if (onImpressionTracked && adId) {\r\n onImpressionTracked(adId);\r\n }\r\n } catch (error) {\r\n console.warn('OMID impression tracking failed:', error);\r\n setImpressionTracked(true); // Mark as tracked to prevent retries\r\n }\r\n } else {\r\n // Fallback impression tracking\r\n setImpressionTracked(true);\r\n\r\n // Still ping our backend even in fallback mode\r\n if (onImpressionTracked && adId) {\r\n onImpressionTracked(adId);\r\n }\r\n }\r\n };\r\n\r\n return {\r\n elementRef,\r\n isViewable: isViewable && hasMetDuration, // Only considered viewable after meeting duration\r\n hasBeenViewed,\r\n impressionTracked,\r\n trackImpression\r\n };\r\n}; "],"names":["isAutoWidth","isPercentageWidth","createContext","useContext","useState","useEffect","_jsx","useRef","useMemo","uuidv4","useCallback","_jsxs"],"mappings":"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","x_google_ignoreList":[3,4,5,6,8,9]}