{"version":3,"sources":["jsdelivr-header.js","/npm/@airbyte-embedded/airbyte-embedded-widget@0.4.5/src/EmbeddedWidget.ts","/npm/@airbyte-embedded/airbyte-embedded-widget@0.4.5/src/index.ts"],"names":[],"mappings":"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","file":"/npm/@airbyte-embedded/airbyte-embedded-widget@0.4.5/dist/airbyte-embedded-widget.iife.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/@airbyte-embedded/airbyte-embedded-widget@0.4.5/dist/airbyte-embedded-widget.iife.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","// Public facing config - what users will see\nexport interface EmbeddedWidgetConfig {\n  token: string;\n  onEvent?: (event: WidgetEvent) => void;\n}\n\nexport interface WidgetEvent {\n  type: string;\n  data: any;\n}\n\ninterface EmbeddedToken {\n  token: string;\n  widgetUrl: string;\n}\n\n// Airbyte logo SVG\nconst AIRBYTE_LOGO_SVG = `<svg width=\"92\" height=\"28\" viewBox=\"0 0 92 28\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<g clip-path=\"url(#clip0_2_3119)\">\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M8.43698 5.03318C11.0928 2.02838 15.491 1.1469 19.1068 2.88133C23.9105 5.186 25.6632 11.0569 23.0477 15.5855L17.1637 25.762C16.835 26.3305 16.294 26.7455 15.6595 26.9155C15.025 27.0855 14.349 26.9968 13.7798 26.669L20.9033 14.3462C22.8008 11.0594 21.5315 6.79905 18.0488 5.12163C15.4353 3.86308 12.2407 4.4918 10.3102 6.6562C9.24525 7.84443 8.6474 9.3785 8.62748 10.974C8.60753 12.5694 9.16675 14.118 10.2017 15.3325C10.3877 15.5503 10.5878 15.7558 10.8008 15.9475L6.64225 23.1543C6.47963 23.436 6.2631 23.6828 6.00503 23.881C5.74698 24.079 5.45243 24.2243 5.13823 24.3085C4.824 24.3928 4.4963 24.4143 4.17377 24.3718C3.85125 24.3293 3.54025 24.2238 3.2585 24.0613L7.77312 16.2373C7.12465 15.3023 6.65895 14.2531 6.4006 13.145L3.6341 17.949C3.30525 18.5178 2.76417 18.9325 2.1297 19.1025C1.4952 19.2728 0.81915 19.184 0.25 18.856L7.40417 6.46415C7.70195 5.95528 8.0478 5.47608 8.43698 5.03318ZM16.6942 8.97753C18.4172 9.9726 19.0123 12.1855 18.0153 13.9077L11.155 25.7605C10.8263 26.329 10.285 26.744 9.6505 26.914C9.016 27.084 8.34005 26.9953 7.7709 26.6675L14.141 15.6325C13.6298 15.525 13.1482 15.3078 12.7292 14.9958C12.3103 14.684 11.964 14.2849 11.7143 13.8261C11.4645 13.3674 11.3172 12.8599 11.2827 12.3388C11.2482 11.8176 11.3272 11.2951 11.5145 10.8075C11.7015 10.3198 11.9923 9.8786 12.3665 9.51425C12.7408 9.1499 13.1895 8.8711 13.682 8.6971C14.1745 8.52313 14.699 8.4581 15.219 8.5065C15.739 8.55493 16.2425 8.71563 16.6942 8.97753ZM14.199 11.2051C14.081 11.2956 13.982 11.4084 13.9077 11.5372C13.7957 11.7311 13.7435 11.9538 13.7582 12.1772C13.773 12.4006 13.8535 12.6146 13.9897 12.7922C14.1263 12.9698 14.312 13.103 14.524 13.175C14.736 13.2469 14.9647 13.2544 15.181 13.1964C15.3973 13.1385 15.5913 13.0177 15.739 12.8494C15.8865 12.681 15.981 12.4727 16.0103 12.2508C16.0393 12.0288 16.002 11.8032 15.903 11.6024C15.804 11.4016 15.6478 11.2347 15.4538 11.1227C15.3253 11.0484 15.183 11.0001 15.0357 10.9807C14.8882 10.9613 14.7385 10.9712 14.595 11.0097C14.4515 11.0482 14.3167 11.1145 14.199 11.2051Z\" fill=\"#615EFF\"/>\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M28.75 21L33.8915 7.81641H36.9062L42.0477 21H39.1738L38.0665 18.047H32.7315L31.624 21H28.75ZM37.1875 15.6738C36.836 14.6425 36.5225 13.7197 36.247 12.9053C35.9718 12.0908 35.6905 11.25 35.4033 10.3828C35.1163 11.25 34.832 12.0908 34.5508 12.9053C34.2755 13.7197 33.962 14.6425 33.6102 15.6738H37.1875ZM42.918 9.22266C42.918 8.80078 43.047 8.46096 43.3047 8.20313C43.5625 7.94531 43.9022 7.81641 44.3242 7.81641C44.746 7.81641 45.086 7.94531 45.3438 8.20313C45.6015 8.46096 45.7305 8.80078 45.7305 9.22266C45.7305 9.64453 45.6015 9.98438 45.3438 10.2422C45.086 10.5 44.746 10.6289 44.3242 10.6289C43.9022 10.6289 43.5625 10.5 43.3047 10.2422C43.047 9.98438 42.918 9.64453 42.918 9.22266ZM43.0585 21V12.211H45.5897V21H43.0585ZM47.7345 12.211V21H50.2655V17.124C50.2655 16.1983 50.4737 15.4863 50.8897 14.9883C51.3057 14.4844 51.8535 14.2324 52.5332 14.2324C52.8612 14.2324 53.1952 14.2881 53.5352 14.3994L53.8867 12.211C53.4825 12.0938 53.0898 12.0352 52.709 12.0352C51.5898 12.0352 50.711 12.5127 50.0723 13.4678V12.211H47.7345ZM54.8535 21V7.81641H57.3848V13.0811C57.754 12.7529 58.1757 12.4981 58.6505 12.3164C59.125 12.1289 59.6377 12.0352 60.1885 12.0352C61.0147 12.0352 61.75 12.2344 62.3945 12.6328C63.039 13.0254 63.546 13.5674 63.915 14.2588C64.2843 14.9443 64.4688 15.7265 64.4688 16.6055C64.4688 17.4845 64.2843 18.2695 63.915 18.961C63.546 19.6465 63.039 20.1885 62.3945 20.587C61.75 20.9795 61.0147 21.1758 60.1885 21.1758C59.62 21.1758 59.0897 21.079 58.5977 20.8858C58.1055 20.6865 57.6747 20.4083 57.3057 20.0508L57.2442 21H54.8535ZM59.8672 18.9785C60.5117 18.9785 61.045 18.753 61.4668 18.3018C61.8888 17.8505 62.0995 17.2853 62.0995 16.6055C62.0995 15.9258 61.8888 15.3603 61.4668 14.9093C61.045 14.458 60.5117 14.2324 59.8672 14.2324C59.2227 14.2324 58.6895 14.458 58.2675 14.9093C57.8458 15.3603 57.6348 15.9258 57.6348 16.6055C57.6348 17.2853 57.8458 17.8505 58.2675 18.3018C58.6895 18.753 59.2227 18.9785 59.8672 18.9785ZM68.6982 16.5088L66.6415 12.211H63.996L68.0918 20.5605L66.088 25.3945H68.751L74.2178 12.211H71.546L69.1728 17.9415C69.1143 17.6543 69.044 17.3905 68.962 17.1505C68.88 16.9103 68.792 16.6963 68.6982 16.5088ZM74.5605 12.211H76.0107V10.0137H78.542V12.211H80.6777V14.4082H78.542V17.6425C78.542 18.0585 78.6738 18.3868 78.9375 18.627C79.207 18.8613 79.547 18.9785 79.957 18.9785C80.2617 18.9785 80.5752 18.9113 80.8975 18.7763V20.8505C80.3407 21.0675 79.793 21.1758 79.254 21.1758C78.211 21.1758 77.4082 20.8975 76.8457 20.3408C76.289 19.7783 76.0107 18.9755 76.0107 17.9325V14.4082H74.5605V12.211ZM85.4765 18.5478C85.0548 18.2433 84.7647 17.8478 84.6065 17.3613H91.462V16.5968C91.462 15.712 91.2627 14.9268 90.8643 14.2412C90.4658 13.5557 89.921 13.0166 89.2295 12.624C88.544 12.2315 87.7588 12.0352 86.874 12.0352C85.9835 12.0352 85.1865 12.2344 84.4835 12.6328C83.7862 13.0254 83.2353 13.5645 82.831 14.25C82.4268 14.9298 82.2245 15.706 82.2245 16.579C82.2245 17.4638 82.4355 18.255 82.8575 18.9523C83.2792 19.6435 83.8622 20.1885 84.6065 20.587C85.3505 20.9795 86.209 21.1758 87.1817 21.1758C87.791 21.1758 88.4268 21.0763 89.0888 20.877C89.7568 20.6778 90.4308 20.3115 91.1103 19.7783L89.581 17.9503C89.253 18.2608 88.8867 18.5155 88.4825 18.7148C88.084 18.9083 87.58 19.005 86.9707 19.005C86.4022 19.005 85.9043 18.8525 85.4765 18.5478ZM88.7067 15.5C88.5667 15.1888 88.366 14.9243 88.1045 14.707C87.7238 14.3906 87.2665 14.2324 86.7335 14.2324C86.1942 14.2324 85.7255 14.3936 85.3272 14.7158C85.06 14.9353 84.8552 15.1965 84.713 15.5H88.7067Z\" fill=\"white\"/>\n</g>\n<defs>\n<clipPath id=\"clip0_2_3119\">\n<rect width=\"91.5\" height=\"25\" fill=\"white\" transform=\"translate(0 1.5)\"/>\n</clipPath>\n</defs>\n</svg>\n`;\n\n// URL encode the Airbyte logo for CSS\nconst encodedAirbyteLogo = encodeURIComponent(AIRBYTE_LOGO_SVG);\n\n// CSS styles for the widget\nconst WIDGET_STYLES = `\n.airbyte-widget-dialog-wrapper {\n  padding: 0;\n  border: none;\n  background: transparent;\n  max-height: 100vh;\n  max-width: 100vw;\n  overflow: hidden;\n  margin: auto;\n}\n\n.airbyte-widget-dialog-container {\n  padding: 0;\n  border: none;\n  background: transparent;\n  display: flex;\n  flex-direction: column;\n  max-height: 100vh;\n  max-width: 100vw;\n  overflow: hidden;\n}\n  \n.airbyte-widget-dialog-content {\n  width: 500px;\n  height: 722px;\n  border-radius: 10px;  \n  background: none;\n  overflow: hidden;\n  max-width: 100vw;\n  max-height: calc(100vh - 60px);\n}\n\n.airbyte-widget-dialog-branding {\n  height: 60px;\n  display: flex;\n  justify-content: center;\n  align-items: center;\n  background-image: url(\"data:image/svg+xml;charset=utf-8,${encodedAirbyteLogo}\");\n  background-repeat: no-repeat;\n  background-position: center;\n}\n\n@media (max-height: 782px) {\n  .airbyte-widget-dialog-branding {\n    display: none;\n  }\n  .airbyte-widget-dialog-content {\n    max-height: 100vh;\n  }\n}\n\n.airbyte-widget-dialog-wrapper::backdrop {\n  background-color: hsl(241, 51%, 20%);\n  opacity: 0.6;\n}\n`;\n\nexport class AirbyteEmbeddedWidget {\n  private decodedToken: EmbeddedToken;\n  private dialog: HTMLDialogElement = document.createElement(\"dialog\");\n  private iframe: HTMLIFrameElement = document.createElement(\"iframe\");\n  private onEvent?: (event: WidgetEvent) => void;\n\n  constructor(config: EmbeddedWidgetConfig) {\n    if (!config.token) {\n      throw new Error(\"Token is required to initialize AirbyteEmbeddedWidget\");\n    }\n\n    this.onEvent = config.onEvent;\n    this.decodedToken = this.decodeToken(config.token);\n\n    this.initialize();\n  }\n\n  private decodeToken(token: string): EmbeddedToken {\n    try {\n      // Decode base64\n      // Make sure the base64 string is properly padded\n      const padded = token.padEnd(token.length + ((4 - (token.length % 4)) % 4), \"=\");\n      // Replace URL-safe characters\n      const base64 = padded.replace(/-/g, \"+\").replace(/_/g, \"/\");\n\n      let decoded;\n      try {\n        decoded = atob(base64);\n      } catch (error) {\n        console.debug(\"Error decoding base64 string:\", error);\n        throw new Error(\"Invalid token format: could not decode base64\");\n      }\n\n      // Parse JSON\n      const parsed = JSON.parse(decoded);\n      if (!parsed.widgetUrl) {\n        throw new Error(\"Invalid token: missing widgetUrl\");\n      }\n      return parsed;\n    } catch (error: any) {\n      throw new Error(`Failed to decode token: ${error.message || \"Unknown error\"}`);\n    }\n  }\n\n  private initialize(): void {\n    this.setupStyles();\n    this.createDialogStructure();\n    this.setupIframe();\n\n    // Add dialog to document\n    document.body.appendChild(this.dialog);\n  }\n\n  private setupStyles(): void {\n    // Add styles\n    const style = document.createElement(\"style\");\n    style.textContent = WIDGET_STYLES;\n    document.head.appendChild(style);\n  }\n\n  private createDialogStructure(): void {\n    // Create dialog element\n    this.dialog.setAttribute(\"aria-label\", \"Airbyte Widget\");\n    this.dialog.classList.add(\"airbyte-widget-dialog-wrapper\");\n\n    // Create container for content and branding\n    const dialogContainer = document.createElement(\"div\");\n    dialogContainer.classList.add(\"airbyte-widget-dialog-container\");\n\n    // Create content and branding elements\n    const dialogContent = document.createElement(\"div\");\n    dialogContent.classList.add(\"airbyte-widget-dialog-content\");\n\n    const dialogBranding = document.createElement(\"div\");\n    dialogBranding.classList.add(\"airbyte-widget-dialog-branding\");\n\n    // Assemble the dialog structure\n    this.dialog.appendChild(dialogContainer);\n    dialogContainer.appendChild(dialogContent);\n    dialogContainer.appendChild(dialogBranding);\n  }\n\n  private setupIframe(): void {\n    // Get the dialog content area\n    const dialogContent = this.dialog.querySelector(\".airbyte-widget-dialog-content\");\n    if (!dialogContent) return;\n\n    // Create iframe only if we have a valid URL\n    if (this.decodedToken.widgetUrl) {\n      this.iframe.setAttribute(\"src\", this.decodedToken.widgetUrl);\n      this.iframe.setAttribute(\"frameborder\", \"0\");\n      this.iframe.setAttribute(\"allow\", \"fullscreen\");\n      this.iframe.style.width = \"100%\";\n      this.iframe.style.height = \"100%\";\n      this.iframe.style.border = \"none\";\n      dialogContent.appendChild(this.iframe);\n\n      // Listen for messages from the iframe\n      try {\n        // Add event listener using the bound handler method\n        window.addEventListener(\"message\", this.handleMessage);\n      } catch (error) {\n        console.debug(\"Error initializing widget. Please check your token configuration.\");\n      }\n    } else {\n      console.debug(\"Error: Missing widget URL. Please check your token configuration.\");\n    }\n  }\n\n  public updateToken(token: string): void {\n    if (!token) {\n      throw new Error(\"Token is required\");\n    }\n\n    this.decodedToken = this.decodeToken(token);\n\n    // Only proceed if we have a valid widget URL (should always be true after decodeToken validation)\n    if (!this.decodedToken.widgetUrl) {\n      console.warn(\"Cannot update token: Missing widget URL\");\n      return;\n    }\n\n    try {\n      const iframeOrigin = new URL(this.decodedToken.widgetUrl).origin;\n      const message = { scopedAuthToken: this.decodedToken.token };\n      this.iframe.contentWindow?.postMessage(message, iframeOrigin);\n    } catch (error) {\n      console.debug(\"Error sending updated token to iframe:\", error);\n    }\n  }\n\n  public open(): void {\n    this.dialog.showModal();\n  }\n\n  /**\n   * Clean up resources used by the widget\n   * Call this when the widget is no longer needed\n   */\n  public destroy(): void {\n    // Remove the dialog from the DOM\n    if (this.dialog.parentElement) {\n      this.dialog.parentElement.removeChild(this.dialog);\n    }\n\n    // Remove event listeners\n    window.removeEventListener(\"message\", this.handleMessage);\n  }\n\n  // Bound message handler to allow for removal\n  private handleMessage = (event: MessageEvent): void => {\n    if (!this.decodedToken.widgetUrl) return;\n\n    try {\n      const iframeOrigin = new URL(this.decodedToken.widgetUrl).origin;\n\n      // Skip if not from our iframe\n      if (!this.isFromOurIframe(event, iframeOrigin)) {\n        return;\n      }\n\n      this.processMessage(event, iframeOrigin);\n    } catch (error) {\n      console.error(\"Error handling message event:\", error);\n    }\n  };\n\n  // Check if the message is from our iframe\n  private isFromOurIframe(event: MessageEvent, iframeOrigin: string): boolean {\n    // Ensure the message is coming from the iframe we created\n    const isFromIframe = event.origin === iframeOrigin || event.source === this.iframe.contentWindow;\n    if (!isFromIframe) {\n      return false;\n    }\n\n    // Skip if the message is from ourselves (localhost)\n    if (event.origin === window.location.origin && event.source === window) {\n      return false;\n    }\n\n    return true;\n  }\n\n  // Process the message content\n  private processMessage(event: MessageEvent, iframeOrigin: string): void {\n    // Handle auth token request\n    if (event.data === \"auth_token_request\") {\n      this.sendAuthToken(iframeOrigin);\n      return;\n    }\n\n    // Handle close dialog message\n    if (event.data && event.data === \"CLOSE_DIALOG\") {\n      this.dialog.close();\n      return;\n    }\n\n    // Handle custom events\n    this.handleCustomEvent(event.data);\n  }\n\n  // Send auth token to iframe\n  private sendAuthToken(iframeOrigin: string): void {\n    const message = { scopedAuthToken: this.decodedToken.token };\n    try {\n      this.iframe.contentWindow?.postMessage(message, iframeOrigin);\n    } catch (error) {\n      console.debug(\"Error posting message to iframe:\", error);\n    }\n  }\n\n  // Handle custom event if it matches our expected format\n  private handleCustomEvent(data: any): void {\n    if (!this.onEvent || !data || typeof data !== \"object\" || !data.type) {\n      return;\n    }\n\n    this.onEvent(data as WidgetEvent);\n  }\n}\n","import { AirbyteEmbeddedWidget } from \"./EmbeddedWidget\";\n\n// Export for ES modules and CommonJS\nexport { AirbyteEmbeddedWidget };\n\n// Export for IIFE/UMD bundles\nexport default AirbyteEmbeddedWidget;\n\n// Also assign to window for direct script tag usage\nif (typeof window !== \"undefined\") {\n  (window as any).AirbyteEmbeddedWidget = AirbyteEmbeddedWidget;\n}\n\nexport type { EmbeddedWidgetConfig, WidgetEvent } from \"./EmbeddedWidget\";\n"]}