UNPKG

one

Version:

One is a React framework for web, iOS, and Android apps.

1 lines • 3.7 kB
{"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"}