{"version":3,"sources":["../../src/ecommerce/react.tsx"],"names":["forwardRef","ShopAssistant","useRef","useImperativeHandle","useEffect","createElement"],"mappings":"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","file":"react.cjs","sourcesContent":["import \"./widget.js\";\n\nimport { createElement, forwardRef, useEffect, useImperativeHandle, useRef } from \"react\";\nimport type {\n  PromptRailsShopAssistantElement,\n  ShopAssistantContext,\n  ToolActivityLabels,\n} from \"./types\";\n\nexport interface ShopAssistantProps {\n  apiUrl?: string;\n  apiKey?: string;\n  agentId?: string;\n  catalogUrl?: string;\n  productSource?: \"catalog\" | \"response\";\n  productCardMode?: \"commerce\" | \"summary\";\n  brand?: string;\n  assistantName?: string;\n  assistantMark?: string;\n  launcherTitle?: string;\n  launcherSubtitle?: string;\n  launcherIcon?: \"arrow\" | \"message\";\n  showLauncherMark?: boolean;\n  showLauncherSubtitle?: boolean;\n  greeting?: string;\n  greetingMode?: \"welcome\" | \"message\";\n  placeholder?: string;\n  locale?: string;\n  accentColor?: string;\n  themeCss?: string;\n  persistSession?: boolean;\n  sessionMaxAge?: number;\n  visitorTracking?: boolean;\n  visitorMaxAge?: number;\n  /** Infer a cart action from a valid response variant when the agent omits it. Defaults to false. */\n  implicitCartAction?: boolean;\n  showToolActivity?: boolean;\n  showActivityDuration?: boolean;\n  showQuantity?: boolean;\n  colorPicker?: \"select\" | \"swatches\";\n  toolLabels?: ToolActivityLabels;\n  allowedActionOrigins?: string[];\n  closeOnProductView?: boolean;\n  legalNotice?: string;\n  legalUrl?: string;\n  legalLinkLabel?: string;\n  legalAcceptLabel?: string;\n  legalConsentRequired?: boolean;\n  legalConsentVersion?: string;\n  legalConsentMaxAge?: number;\n  aiDisclaimer?: string;\n  quickPrompts?: string[];\n  translations?: Record<string, string>;\n  context?: ShopAssistantContext;\n  contextProvider?: () => ShopAssistantContext | Promise<ShopAssistantContext>;\n  className?: string;\n}\n\nconst attributes = [\n  [\"apiUrl\", \"api-url\"],\n  [\"apiKey\", \"api-key\"],\n  [\"agentId\", \"agent-id\"],\n  [\"catalogUrl\", \"catalog-url\"],\n  [\"productSource\", \"product-source\"],\n  [\"productCardMode\", \"product-card-mode\"],\n  [\"brand\", \"brand\"],\n  [\"assistantName\", \"assistant-name\"],\n  [\"assistantMark\", \"assistant-mark\"],\n  [\"launcherTitle\", \"launcher-title\"],\n  [\"launcherSubtitle\", \"launcher-subtitle\"],\n  [\"launcherIcon\", \"launcher-icon\"],\n  [\"showLauncherMark\", \"show-launcher-mark\"],\n  [\"showLauncherSubtitle\", \"show-launcher-subtitle\"],\n  [\"greeting\", \"greeting\"],\n  [\"greetingMode\", \"greeting-mode\"],\n  [\"placeholder\", \"placeholder\"],\n  [\"locale\", \"locale\"],\n  [\"accentColor\", \"accent-color\"],\n  [\"themeCss\", \"theme-css\"],\n  [\"persistSession\", \"persist-session\"],\n  [\"sessionMaxAge\", \"session-max-age\"],\n  [\"visitorTracking\", \"visitor-tracking\"],\n  [\"visitorMaxAge\", \"visitor-max-age\"],\n  [\"implicitCartAction\", \"implicit-cart-action\"],\n  [\"showToolActivity\", \"show-tool-activity\"],\n  [\"showActivityDuration\", \"show-activity-duration\"],\n  [\"showQuantity\", \"show-quantity\"],\n  [\"colorPicker\", \"color-picker\"],\n  [\"toolLabels\", \"tool-labels\"],\n  [\"allowedActionOrigins\", \"allowed-action-origins\"],\n  [\"closeOnProductView\", \"close-on-product-view\"],\n  [\"legalNotice\", \"legal-notice\"],\n  [\"legalUrl\", \"legal-url\"],\n  [\"legalLinkLabel\", \"legal-link-label\"],\n  [\"legalAcceptLabel\", \"legal-accept-label\"],\n  [\"legalConsentRequired\", \"legal-consent-required\"],\n  [\"legalConsentVersion\", \"legal-consent-version\"],\n  [\"legalConsentMaxAge\", \"legal-consent-max-age\"],\n  [\"aiDisclaimer\", \"ai-disclaimer\"],\n  [\"quickPrompts\", \"quick-prompts\"],\n  [\"translations\", \"translations\"],\n] as const;\n\n/** React adapter for the framework-neutral ecommerce custom element. */\nexport const ShopAssistant = forwardRef<PromptRailsShopAssistantElement, ShopAssistantProps>(\n  function ShopAssistant({ context, contextProvider, className, ...props }, forwardedRef) {\n    const ref = useRef<PromptRailsShopAssistantElement>(null);\n\n    useImperativeHandle(forwardedRef, () => ref.current as PromptRailsShopAssistantElement, []);\n\n    useEffect(() => {\n      const element = ref.current;\n      if (!element) return;\n      element.contextProvider = contextProvider;\n      if (context) element.updateContext(context);\n    }, [context, contextProvider]);\n\n    useEffect(() => {\n      const element = ref.current;\n      if (!element) return;\n      for (const [prop, attribute] of attributes) {\n        const value = props[prop];\n        if (value === undefined || value === null) element.removeAttribute(attribute);\n        else if (Array.isArray(value) || typeof value === \"object\")\n          element.setAttribute(attribute, JSON.stringify(value));\n        else element.setAttribute(attribute, String(value));\n      }\n    }, [props]);\n\n    return createElement(\"promptrails-shop-assistant\", { ref, class: className });\n  },\n);\n\nexport default ShopAssistant;\n"]}