{"version":3,"sources":["../../../src/lib/data-integration-icon.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport * as React from \"react\";\nimport type { DataIntegration } from \"../api/endpoint.js\";\nimport { ProviderIcon } from \"./provider-icon.js\";\nimport { isKnownProviderIconSlug } from \"./provider-icon-slugs.js\";\n\ninterface DataIntegrationIconProps {\n  integration: DataIntegration;\n  size?: \"1\" | \"2\" | \"3\" | \"4\";\n}\n\ntype CustomIconStyle = React.CSSProperties & {\n  \"--woswidgets-provider-icon-light\": string;\n  \"--woswidgets-provider-icon-dark\"?: string;\n};\n\nconst sanitizeIconUrl = (url: string): string | undefined => {\n  try {\n    const parsedUrl = new URL(url);\n    return parsedUrl.protocol === \"https:\" ? parsedUrl.href : undefined;\n  } catch {\n    return undefined;\n  }\n};\n\nconst DataIntegrationIcon: React.FC<DataIntegrationIconProps> = ({\n  integration,\n  size = \"4\",\n}) => {\n  const { iconSlug, iconUrl, iconDarkUrl, integrationType } = integration;\n\n  if (iconSlug && isKnownProviderIconSlug(iconSlug)) {\n    return <ProviderIcon provider={iconSlug} size={size} />;\n  }\n\n  const safeLight = iconUrl ? sanitizeIconUrl(iconUrl) : undefined;\n  const safeDark = iconDarkUrl ? sanitizeIconUrl(iconDarkUrl) : undefined;\n\n  if (safeLight || safeDark) {\n    const lightUrl = safeLight ?? safeDark;\n    const style: CustomIconStyle = {\n      \"--woswidgets-provider-icon-light\": `url(\"${lightUrl}\")`,\n      ...(safeDark\n        ? { \"--woswidgets-provider-icon-dark\": `url(\"${safeDark}\")` }\n        : {}),\n    };\n    return (\n      <div\n        data-custom-icon=\"\"\n        className={clsx(\"woswidgets-provider-icon\", `size-${size}`)}\n        style={style}\n      />\n    );\n  }\n\n  return <ProviderIcon provider={integrationType} size={size} />;\n};\n\nexport { DataIntegrationIcon };\nexport type { DataIntegrationIconProps };\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAgCW;AAhCX,kBAAiB;AAGjB,2BAA6B;AAC7B,iCAAwC;AAYxC,MAAM,kBAAkB,CAAC,QAAoC;AAC3D,MAAI;AACF,UAAM,YAAY,IAAI,IAAI,GAAG;AAC7B,WAAO,UAAU,aAAa,WAAW,UAAU,OAAO;AAAA,EAC5D,QAAQ;AACN,WAAO;AAAA,EACT;AACF;AAEA,MAAM,sBAA0D,CAAC;AAAA,EAC/D;AAAA,EACA,OAAO;AACT,MAAM;AACJ,QAAM,EAAE,UAAU,SAAS,aAAa,gBAAgB,IAAI;AAE5D,MAAI,gBAAY,oDAAwB,QAAQ,GAAG;AACjD,WAAO,4CAAC,qCAAa,UAAU,UAAU,MAAY;AAAA,EACvD;AAEA,QAAM,YAAY,UAAU,gBAAgB,OAAO,IAAI;AACvD,QAAM,WAAW,cAAc,gBAAgB,WAAW,IAAI;AAE9D,MAAI,aAAa,UAAU;AACzB,UAAM,WAAW,aAAa;AAC9B,UAAM,QAAyB;AAAA,MAC7B,oCAAoC,QAAQ,QAAQ;AAAA,MACpD,GAAI,WACA,EAAE,mCAAmC,QAAQ,QAAQ,KAAK,IAC1D,CAAC;AAAA,IACP;AACA,WACE;AAAA,MAAC;AAAA;AAAA,QACC,oBAAiB;AAAA,QACjB,eAAW,YAAAA,SAAK,4BAA4B,QAAQ,IAAI,EAAE;AAAA,QAC1D;AAAA;AAAA,IACF;AAAA,EAEJ;AAEA,SAAO,4CAAC,qCAAa,UAAU,iBAAiB,MAAY;AAC9D;","names":["clsx"]}