{"version":3,"file":"index.js","names":["unavailable"],"sources":["esm/platform/share/index.js"],"sourcesContent":["import { Share as unavailable } from \"./unavailable\";\nlet busy = false;\nasync function share(items) {\n  if (typeof window === \"undefined\" || !navigator.share) return unavailable.share(items);\n  if (busy) throw new Error(\"Share.share: a share sheet is already open\");\n  if (!items.length) throw new Error(\"Share.share: at least one item is required\");\n  busy = true;\n  try {\n    const data = {}, text = [], files = [];\n    for (const item of items) {\n      if (item.type === \"text\") {\n        if (!item.value.trim()) throw new Error(\"Share.share: text cannot be empty\");\n        text.push(item.value);\n      } else if (item.type === \"url\") {\n        const url = new URL(item.value);\n        if (url.protocol === \"file:\")\n          throw new Error(\"Share.share: expected a browser URL\");\n        if (data.url)\n          throw new Error(\"Share.share: the browser supports one URL per share\");\n        data.url = url.href;\n      } else if (item.type === \"file\") {\n        const url = new URL(item.value);\n        if (![\"blob:\", \"data:\", \"https:\", \"http:\"].includes(url.protocol))\n          throw new Error(\"Share.share: expected a browser file URL\");\n        const response = await fetch(url);\n        if (!response.ok) throw new Error(\"Share.share: file could not be read\");\n        const blob = await response.blob();\n        files.push(\n          new File([blob], decodeURIComponent(url.pathname.split(\"/\").at(-1) || \"file\"), {\n            type: blob.type\n          })\n        );\n      } else throw new Error(\"Share.share: invalid item type\");\n    }\n    if (text.length) data.text = text.join(\"\\n\");\n    if (files.length) data.files = files;\n    if (navigator.canShare && !navigator.canShare(data))\n      throw new Error(\"Share.share: these items cannot be shared\");\n    try {\n      await navigator.share(data);\n      return { completed: true };\n    } catch (error) {\n      if (error.name === \"AbortError\") return { completed: false };\n      throw error;\n    }\n  } finally {\n    busy = false;\n  }\n}\nconst Share = Object.freeze({ share });\nexport {\n  Share\n};\n//# sourceMappingURL=index.js.map\n"],"mappings":";;;AACA,IAAI,OAAO;AACX,eAAe,MAAM,OAAO;CAC1B,IAAI,OAAO,WAAW,eAAe,CAAC,UAAU,OAAO,OAAOA,QAAY,MAAM,KAAK;CACrF,IAAI,MAAM,MAAM,IAAI,MAAM,4CAA4C;CACtE,IAAI,CAAC,MAAM,QAAQ,MAAM,IAAI,MAAM,4CAA4C;CAC/E,OAAO;CACP,IAAI;EACF,MAAM,OAAO,CAAC,GAAG,OAAO,CAAC,GAAG,QAAQ,CAAC;EACrC,KAAK,MAAM,QAAQ,OAAO;GACxB,IAAI,KAAK,SAAS,QAAQ;IACxB,IAAI,CAAC,KAAK,MAAM,KAAK,GAAG,MAAM,IAAI,MAAM,mCAAmC;IAC3E,KAAK,KAAK,KAAK,KAAK;GACtB,OAAO,IAAI,KAAK,SAAS,OAAO;IAC9B,MAAM,MAAM,IAAI,IAAI,KAAK,KAAK;IAC9B,IAAI,IAAI,aAAa,SACnB,MAAM,IAAI,MAAM,qCAAqC;IACvD,IAAI,KAAK,KACP,MAAM,IAAI,MAAM,qDAAqD;IACvE,KAAK,MAAM,IAAI;GACjB,OAAO,IAAI,KAAK,SAAS,QAAQ;IAC/B,MAAM,MAAM,IAAI,IAAI,KAAK,KAAK;IAC9B,IAAI,CAAC;KAAC;KAAS;KAAS;KAAU;IAAO,CAAC,CAAC,SAAS,IAAI,QAAQ,GAC9D,MAAM,IAAI,MAAM,0CAA0C;IAC5D,MAAM,WAAW,MAAM,MAAM,GAAG;IAChC,IAAI,CAAC,SAAS,IAAI,MAAM,IAAI,MAAM,qCAAqC;IACvE,MAAM,OAAO,MAAM,SAAS,KAAK;IACjC,MAAM,KACJ,IAAI,KAAK,CAAC,IAAI,GAAG,mBAAmB,IAAI,SAAS,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,MAAM,GAAG,EAC7E,MAAM,KAAK,KACb,CAAC,CACH;GACF,OAAO,MAAM,IAAI,MAAM,gCAAgC;EACzD;EACA,IAAI,KAAK,QAAQ,KAAK,OAAO,KAAK,KAAK,IAAI;EAC3C,IAAI,MAAM,QAAQ,KAAK,QAAQ;EAC/B,IAAI,UAAU,YAAY,CAAC,UAAU,SAAS,IAAI,GAChD,MAAM,IAAI,MAAM,2CAA2C;EAC7D,IAAI;GACF,MAAM,UAAU,MAAM,IAAI;GAC1B,OAAO,EAAE,WAAW,KAAK;EAC3B,SAAS,OAAO;GACd,IAAI,MAAM,SAAS,cAAc,OAAO,EAAE,WAAW,MAAM;GAC3D,MAAM;EACR;CACF,UAAU;EACR,OAAO;CACT;AACF;AACA,MAAM,QAAQ,OAAO,OAAO,EAAE,MAAM,CAAC"}