{"version":3,"sources":["../src/index.ts"],"sourcesContent":["import type { SophiWidgetLauncherConfig, SophiWidgetPublicApi } from \"./types\";\n\nconst DEFAULT_CONFIG: Required<Pick<SophiWidgetLauncherConfig, \"environment\">> & {\n  sdk: Required<NonNullable<SophiWidgetLauncherConfig[\"sdk\"]>>;\n  launcher: Required<NonNullable<SophiWidgetLauncherConfig[\"launcher\"]>>;\n  modal: Required<NonNullable<SophiWidgetLauncherConfig[\"modal\"]>>;\n  widget: Required<NonNullable<SophiWidgetLauncherConfig[\"widget\"]>>;\n} = {\n  environment: \"production\",\n  sdk: {\n    autoLoad: false,\n    url: \"\",\n  },\n  launcher: {\n    enabled: true,\n    position: \"right-center\",\n    text: \"Sohbete Başla\",\n    backgroundColor: \"#111827\",\n    textColor: \"#ffffff\",\n  },\n  modal: {\n    title: \"Sophi\",\n  },\n  widget: {\n    containerSelector: \"#sophi-widget\",\n    width: \"100%\",\n    height: \"100%\",\n  },\n};\n\ntype SdkInstance = {\n  init: (config: Record<string, unknown>) => Promise<void> | void;\n  destroy?: () => Promise<void> | void;\n  on?: (...args: unknown[]) => unknown;\n  off?: (...args: unknown[]) => unknown;\n};\n\nconst state: {\n  sdkInstance: SdkInstance | null;\n  initialized: boolean;\n  initializing: boolean;\n  modalOpen: boolean;\n  sdkLoadPromise: Promise<void> | null;\n} = {\n  sdkInstance: null,\n  initialized: false,\n  initializing: false,\n  modalOpen: false,\n  sdkLoadPromise: null,\n};\n\nfunction getConfig(): SophiWidgetLauncherConfig {\n  const userConfig = (window.sophiWidgetConfig || {}) as SophiWidgetLauncherConfig;\n\n  return {\n    ...DEFAULT_CONFIG,\n    ...userConfig,\n    sdk: {\n      ...DEFAULT_CONFIG.sdk,\n      ...(userConfig.sdk || {}),\n    },\n    launcher: {\n      ...DEFAULT_CONFIG.launcher,\n      ...(userConfig.launcher || {}),\n    },\n    modal: {\n      ...DEFAULT_CONFIG.modal,\n      ...(userConfig.modal || {}),\n    },\n    widget: {\n      ...DEFAULT_CONFIG.widget,\n      ...(userConfig.widget || {}),\n    },\n    handlers: {\n      ...(userConfig.handlers || {}),\n    },\n  };\n}\n\nfunction createStyles(): void {\n  if (document.getElementById(\"sophi-floating-styles\")) return;\n\n  const config = getConfig();\n\n  const style = document.createElement(\"style\");\n  style.id = \"sophi-floating-styles\";\n\n  style.innerHTML = `\n    #sophi-floating-button {\n      position: fixed;\n      z-index: 2147483646;\n      display: flex;\n      align-items: center;\n      gap: 8px;\n      height: 52px;\n      min-width: 52px;\n      padding: 0 14px;\n      border: none;\n      background: ${config.launcher?.backgroundColor};\n      color: ${config.launcher?.textColor};\n      font-family: Arial, sans-serif;\n      font-size: 14px;\n      font-weight: 600;\n      cursor: pointer;\n      box-shadow: 0 8px 24px rgba(0, 0, 0, 0.24);\n      overflow: hidden;\n      transition: all 0.2s ease;\n    }\n\n    #sophi-floating-button.sophi-position-right-center {\n      right: 0;\n      top: 50%;\n      transform: translateY(-50%);\n      border-radius: 26px 0 0 26px;\n    }\n\n    #sophi-floating-button.sophi-position-left-center {\n      left: 0;\n      top: 50%;\n      transform: translateY(-50%);\n      border-radius: 0 26px 26px 0;\n    }\n\n    #sophi-floating-button.sophi-position-right-bottom {\n      right: 24px;\n      bottom: 24px;\n      border-radius: 999px;\n    }\n\n    #sophi-floating-button.sophi-position-left-bottom {\n      left: 24px;\n      bottom: 24px;\n      border-radius: 999px;\n    }\n\n    #sophi-floating-button .sophi-floating-label {\n      max-width: 0;\n      opacity: 0;\n      white-space: nowrap;\n      overflow: hidden;\n      transition: all 0.2s ease;\n    }\n\n    #sophi-floating-button:hover .sophi-floating-label {\n      max-width: 140px;\n      opacity: 1;\n    }\n\n    #sophi-floating-button .sophi-floating-icon {\n      width: 24px;\n      height: 24px;\n      display: inline-flex;\n      align-items: center;\n      justify-content: center;\n      flex-shrink: 0;\n    }\n\n    #sophi-modal-overlay {\n      position: fixed;\n      inset: 0;\n      z-index: 2147483647;\n      display: none;\n      background: rgba(17, 24, 39, 0.72);\n    }\n\n    #sophi-modal-overlay.sophi-modal-open {\n      display: block;\n    }\n\n    #sophi-modal {\n      position: fixed;\n      inset: 0;\n      width: 100%;\n      height: 100%;\n      background: #ffffff;\n      display: flex;\n      flex-direction: column;\n    }\n\n    #sophi-modal-header {\n      height: 56px;\n      min-height: 56px;\n      display: flex;\n      align-items: center;\n      justify-content: space-between;\n      padding: 0 16px;\n      border-bottom: 1px solid #e5e7eb;\n      font-family: Arial, sans-serif;\n      box-sizing: border-box;\n    }\n\n    #sophi-modal-title {\n      font-size: 16px;\n      font-weight: 700;\n      color: #111827;\n    }\n\n    #sophi-modal-close {\n      width: 36px;\n      height: 36px;\n      border: none;\n      border-radius: 999px;\n      background: #f3f4f6;\n      color: #111827;\n      font-size: 24px;\n      line-height: 1;\n      cursor: pointer;\n    }\n\n    #sophi-modal-close:hover {\n      background: #e5e7eb;\n    }\n\n    #sophi-widget {\n      flex: 1;\n      width: 100%;\n      height: calc(100vh - 56px);\n      overflow: hidden;\n    }\n\n    body.sophi-modal-lock {\n      overflow: hidden;\n    }\n  `;\n\n  document.head.appendChild(style);\n}\n\nfunction createFloatingButton(): void {\n  const config = getConfig();\n\n  if (config.launcher?.enabled === false) return;\n  if (document.getElementById(\"sophi-floating-button\")) return;\n\n  const button = document.createElement(\"button\");\n  button.id = \"sophi-floating-button\";\n  button.type = \"button\";\n  button.className = `sophi-position-${config.launcher?.position || \"right-center\"}`;\n  button.setAttribute(\"aria-label\", config.launcher?.text || \"Sohbete Başla\");\n\n  button.innerHTML = `\n    <span class=\"sophi-floating-icon\" aria-hidden=\"true\">\n        <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\n            <path d=\"M5.52616 8.67324C5.16308 8.80738 4.92308 9.152 4.92308 9.53846C4.92308 9.92492 5.16308 10.2695 5.52616 10.4037L7.24184 11.0388C9.57046 11.9015 10.4603 12.2511 11.1052 12.8948C11.7489 13.5397 12.0985 14.4295 12.9612 16.7582L13.5963 18.4738C13.7305 18.8369 14.0751 19.0769 14.4615 19.0769C14.848 19.0769 15.1926 18.8369 15.3268 18.4738L15.9618 16.7582C16.8246 14.4295 17.1742 13.5397 17.8191 12.8948C18.4628 12.2511 19.3526 11.9015 21.6812 11.0388L23.397 10.4037C23.76 10.2695 24 9.92492 24 9.53846C24 9.152 23.76 8.80738 23.397 8.67324L21.6812 8.03816C19.3526 7.17662 18.4628 6.82584 17.8191 6.18092C17.1742 5.53724 16.8246 4.64738 15.9618 2.31876L15.3268 0.603077C15.1926 0.239999 14.848 1.6892e-08 14.4615 0C14.0751 -1.6892e-08 13.7305 0.239999 13.5963 0.603077L12.9612 2.31876C12.0985 4.64738 11.7489 5.53724 11.1052 6.18092C10.4603 6.82584 9.57046 7.17662 7.24184 8.03816L5.52616 8.67324ZM0.603076 18.5194C0.24 18.6535 0 18.9982 0 19.3846C0 19.7711 0.24 20.1156 0.603076 20.2498L1.33785 20.5218C2.38154 20.9084 2.6277 21.0216 2.8037 21.1964C2.9797 21.3724 3.0917 21.6184 3.47816 22.6622L3.75016 23.397C3.8843 23.76 4.22892 24 4.61538 24C5.00184 24 5.34646 23.76 5.48062 23.397L5.75262 22.6622C6.13908 21.6184 6.25108 21.3724 6.42708 21.1964C6.60308 21.0216 6.84924 20.9084 7.89292 20.5218L8.6277 20.2498C8.99076 20.1156 9.23076 19.7711 9.23076 19.3846C9.23076 18.9982 8.99076 18.6535 8.6277 18.5194L7.89292 18.2474C6.84924 17.8609 6.60308 17.7477 6.42708 17.5729C6.25108 17.3969 6.13908 17.1508 5.75262 16.1071L5.48062 15.3723C5.34646 15.0092 5.00184 14.7692 4.61538 14.7692C4.22892 14.7692 3.8843 15.0092 3.75016 15.3723L3.47816 16.1071C3.0917 17.1508 2.9797 17.3969 2.8037 17.5729C2.6277 17.7477 2.38154 17.8609 1.33785 18.2474L0.603076 18.5194Z\" fill=\"white\"/>\n        </svg>\n    </span>\n    <span class=\"sophi-floating-label\">${config.launcher?.text || \"Sohbete Başla\"}</span>\n  `;\n\n  button.addEventListener(\"click\", () => {\n    void openModal();\n  });\n\n  document.body.appendChild(button);\n}\n\nfunction createModal(): void {\n  if (document.getElementById(\"sophi-modal-overlay\")) return;\n\n  const config = getConfig();\n\n  const overlay = document.createElement(\"div\");\n  overlay.id = \"sophi-modal-overlay\";\n\n  overlay.innerHTML = `\n    <div id=\"sophi-modal\" role=\"dialog\" aria-modal=\"true\" aria-labelledby=\"sophi-modal-title\">\n      <div id=\"sophi-modal-header\">\n        <div id=\"sophi-modal-title\">${config.modal?.title || \"Sophi\"}</div>\n        <button id=\"sophi-modal-close\" type=\"button\" aria-label=\"Kapat\">×</button>\n      </div>\n      <div id=\"sophi-widget\"></div>\n    </div>\n  `;\n\n  document.body.appendChild(overlay);\n\n  document.getElementById(\"sophi-modal-close\")?.addEventListener(\"click\", closeModal);\n\n  document.addEventListener(\"keydown\", (event) => {\n    if (event.key === \"Escape\" && state.modalOpen) {\n      closeModal();\n    }\n  });\n}\n\nasync function loadSdkIfNeeded(): Promise<void> {\n  const config = getConfig();\n\n  if (window.SophiWebSDK?.SophiWidget) return;\n\n  if (!config.sdk?.autoLoad) {\n    throw new Error(\"Sophi SDK is not loaded. Set sdk.autoLoad=true with sdk.url or load the SDK before widget launcher.\");\n  }\n\n  if (!config.sdk.url) {\n    throw new Error(\"sdk.url is required when sdk.autoLoad=true.\");\n  }\n\n  if (state.sdkLoadPromise) {\n    return state.sdkLoadPromise;\n  }\n\n  state.sdkLoadPromise = new Promise<void>((resolve, reject) => {\n    const existingScript = document.querySelector<HTMLScriptElement>(`script[src=\"${config.sdk?.url}\"]`);\n\n    if (existingScript) {\n      existingScript.addEventListener(\"load\", () => resolve());\n      existingScript.addEventListener(\"error\", () => reject(new Error(\"Failed to load Sophi SDK.\")));\n      return;\n    }\n\n    const script = document.createElement(\"script\");\n    script.src = config.sdk?.url || \"\";\n    script.async = true;\n\n    script.onload = () => resolve();\n    script.onerror = () => reject(new Error(\"Failed to load Sophi SDK.\"));\n\n    document.head.appendChild(script);\n  });\n\n  return state.sdkLoadPromise;\n}\n\nasync function openModal(): Promise<unknown> {\n  createModal();\n\n  const overlay = document.getElementById(\"sophi-modal-overlay\");\n  overlay?.classList.add(\"sophi-modal-open\");\n\n  document.body.classList.add(\"sophi-modal-lock\");\n\n  state.modalOpen = true;\n\n  return initWidget();\n}\n\nfunction closeModal(): void {\n  const overlay = document.getElementById(\"sophi-modal-overlay\");\n\n  overlay?.classList.remove(\"sophi-modal-open\");\n  document.body.classList.remove(\"sophi-modal-lock\");\n\n  state.modalOpen = false;\n}\n\nasync function initWidget(): Promise<unknown> {\n  if (state.initialized || state.initializing) {\n    return state.sdkInstance;\n  }\n\n  state.initializing = true;\n\n  try {\n    await loadSdkIfNeeded();\n\n    if (!window.SophiWebSDK?.SophiWidget) {\n      throw new Error(\"window.SophiWebSDK.SophiWidget not found.\");\n    }\n\n    const config = getConfig();\n\n    if (!config.apiKey) {\n      throw new Error(\"window.sophiWidgetConfig.apiKey is required.\");\n    }\n\n    const sdkInstance = new window.SophiWebSDK.SophiWidget();\n\n    state.sdkInstance = sdkInstance;\n\n    exposePublicApi();\n\n    await sdkInstance.init({\n      apiKey: config.apiKey,\n      container: config.widget?.containerSelector || \"#sophi-widget\",\n      userId: config.userId,\n      userName: config.userName,\n      environment: config.environment || \"production\",\n      width: config.widget?.width || \"100%\",\n      height: config.widget?.height || \"100%\",\n      onReady: () => {\n        state.initialized = true;\n        state.initializing = false;\n        console.log(\"[Sophi] Widget is ready.\");\n      },\n      onError: (error: unknown) => {\n        state.initializing = false;\n        console.error(\"[Sophi] Init error:\", error);\n      },\n    });\n\n    bindWidgetEvents(sdkInstance);\n\n    return sdkInstance;\n  } catch (error) {\n    state.initializing = false;\n    console.error(\"[Sophi] Widget init failed:\", error);\n    return null;\n  }\n}\n\nfunction bindWidgetEvents(sdkInstance: SdkInstance): void {\n  if (!sdkInstance.on) return;\n\n  const config = getConfig();\n\n  sdkInstance.on(\"add_to_cart\", (data: any) => {\n    if (config.handlers?.addToCart) {\n      return config.handlers.addToCart(data);\n    }\n\n    if (window.sophiAddToCart) {\n      return window.sophiAddToCart(data);\n    }\n\n    console.warn(\"[Sophi] addToCart handler is not defined.\", data);\n    return undefined;\n  });\n\n  sdkInstance.on(\"send_to_checkout\", (data: any) => {\n    if (config.handlers?.sendToCheckout) {\n      return config.handlers.sendToCheckout(data);\n    }\n\n    if (window.sophiSendToCheckout) {\n      return window.sophiSendToCheckout(data);\n    }\n\n    console.warn(\"[Sophi] sendToCheckout handler is not defined.\", data);\n    return undefined;\n  });\n\n  sdkInstance.on(\"add_to_favorite\", (data: any) => {\n    if (config.handlers?.addToFavorite) {\n      return config.handlers.addToFavorite(data);\n    }\n\n    if (window.sophiAddToFavorite) {\n      return window.sophiAddToFavorite(data);\n    }\n\n    return undefined;\n  });\n\n  sdkInstance.on(\"error\", (error: any) => {\n    if (config.handlers?.error) {\n      return config.handlers.error(error);\n    }\n\n    console.error(\"[Sophi] Widget error:\", error);\n    return undefined;\n  });\n}\n\nasync function destroyWidget(): Promise<void> {\n  try {\n    if (state.sdkInstance?.destroy) {\n      await state.sdkInstance.destroy();\n    }\n  } catch (error) {\n    console.error(\"[Sophi] Destroy error:\", error);\n  } finally {\n    state.sdkInstance = null;\n    state.initialized = false;\n    state.initializing = false;\n\n    exposePublicApi();\n  }\n}\n\nfunction exposePublicApi(): void {\n  const publicApi: SophiWidgetPublicApi = {\n    open: openModal,\n    close: closeModal,\n    init: initWidget,\n    destroy: destroyWidget,\n    getInstance: () => state.sdkInstance,\n    isInitialized: () => state.initialized,\n    isOpen: () => state.modalOpen,\n    setUserId,\n    setUser,\n  };\n\n  publicApi.on = (...args: unknown[]) => {\n    const instance = state.sdkInstance;\n\n    if (!instance?.on) {\n      console.warn(\"[Sophi] Widget instance is not ready yet.\");\n      return undefined;\n    }\n\n    return instance.on(...args);\n  };\n\n  publicApi.off = (...args: unknown[]) => {\n    const instance = state.sdkInstance;\n\n    if (!instance?.off) {\n      console.warn(\"[Sophi] Widget instance is not ready yet.\");\n      return undefined;\n    }\n\n    return instance.off(...args);\n  };\n\n  window.sophiWidget = publicApi;\n}\n\nfunction boot(): void {\n  exposePublicApi();\n  createStyles();\n  createFloatingButton();\n}\n\nexport function initSophiWidgetLauncher(config?: SophiWidgetLauncherConfig): SophiWidgetPublicApi {\n  if (config) {\n    window.sophiWidgetConfig = {\n      ...(window.sophiWidgetConfig || {}),\n      ...config,\n    };\n  }\n\n  boot();\n\n  return window.sophiWidget as SophiWidgetPublicApi;\n}\nasync function setUserId(userId?: string | null): Promise<unknown> {\n  return setUser(userId);\n}\n\nasync function setUser(userId?: string | null, userName?: string | null): Promise<unknown> {\n  const normalizedUserId = userId || undefined;\n  const normalizedUserName = userName || undefined;\n\n  window.sophiWidgetConfig = {\n    ...(window.sophiWidgetConfig || {}),\n    userId: normalizedUserId,\n    userName: normalizedUserName,\n  };\n\n  /**\n   * Widget hiç init edilmediyse sadece config'i güncelle.\n   * İlk open/init çağrısında yeni userId/userName ile başlayacak.\n   */\n  if (!state.sdkInstance && !state.initialized && !state.initializing) {\n    return null;\n  }\n\n  /**\n   * Init devam ediyorsa önce mevcut init'in bitmesini beklemek yerine\n   * güvenli tarafta kalıp destroy + reinit akışına sokuyoruz.\n   */\n  await destroyWidget();\n\n  /**\n   * Modal açıksa kullanıcı zaten widget ekranında demektir.\n   * Yeni userId/userName ile aynı container içinde tekrar init ediyoruz.\n   */\n  if (state.modalOpen) {\n    return initWidget();\n  }\n\n  /**\n   * Modal kapalıysa reinit etmiyoruz.\n   * Bir sonraki open/init yeni userId/userName ile çalışacak.\n   */\n  return null;\n}\n\nif (typeof window !== \"undefined\") {\n  if (document.readyState === \"loading\") {\n    document.addEventListener(\"DOMContentLoaded\", boot);\n  } else {\n    boot();\n  }\n}\n"],"mappings":"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","names":["DEFAULT_CONFIG","state","getConfig","userConfig","createStyles","_a","_b","config","style","createFloatingButton","_c","_d","button","openModal","createModal","overlay","closeModal","event","loadSdkIfNeeded","resolve","reject","existingScript","script","initWidget","sdkInstance","exposePublicApi","error","bindWidgetEvents","data","destroyWidget","publicApi","setUserId","setUser","args","instance","boot","initSophiWidgetLauncher","userId","userName","normalizedUserId","normalizedUserName"]}