@ailuracode/alpine-share 0.2.0 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -22,7 +22,7 @@ Alpine.start();
22
22
 
23
23
  ```html
24
24
  <button
25
- x-show="$share.isSupported()"
25
+ x-show="$share.isSupported"
26
26
  @click="await $share({ title: 'Hello', url: window.location.href })"
27
27
  >
28
28
  Share page
@@ -34,7 +34,7 @@ Alpine.start();
34
34
  | | |
35
35
  |-|-|
36
36
  | **Magic** | `$share(data)` |
37
- | **Helpers** | `$share.isSupported()`, `$share.canShare(data?)` |
37
+ | **Helpers** | `$share.isSupported` (getter), `$share.canShare(data?)` |
38
38
 
39
39
  Callable like `$clipboard`.
40
40
 
package/dist/index.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import AlpineType from 'alpinejs';
2
2
 
3
3
  type ShareMagic = ((data: ShareData) => Promise<boolean>) & {
4
- isSupported(): boolean;
4
+ readonly isSupported: boolean;
5
5
  canShare(data?: ShareData): boolean;
6
6
  };
7
7
  /** Returns whether the Web Share API is available in this environment. */
package/dist/index.js CHANGED
@@ -39,8 +39,8 @@ async function shareData(data) {
39
39
  }
40
40
  }
41
41
  function createShareMagic() {
42
- const share = (data) => shareData(data);
43
- share.isSupported = isShareSupported;
42
+ const share = ((data) => shareData(data));
43
+ Object.defineProperty(share, "isSupported", { get: isShareSupported });
44
44
  share.canShare = canShareData;
45
45
  return share;
46
46
  }
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"sourcesContent":["import type AlpineType from \"alpinejs\";\n\nexport type ShareMagic = ((data: ShareData) => Promise<boolean>) & {\n isSupported(): boolean;\n canShare(data?: ShareData): boolean;\n};\n\nfunction isSecureContext(): boolean {\n return typeof globalThis !== \"undefined\" && globalThis.isSecureContext === true;\n}\n\nfunction hasShareApi(): boolean {\n return typeof navigator !== \"undefined\" && typeof navigator.share === \"function\";\n}\n\n/** Returns whether the Web Share API is available in this environment. */\nexport function isShareSupported(): boolean {\n return isSecureContext() && hasShareApi();\n}\n\n/** Returns whether the given payload can be shared, or whether sharing is available when omitted. */\nexport function canShareData(data?: ShareData): boolean {\n if (!isShareSupported()) {\n return false;\n }\n\n if (data === undefined) {\n return true;\n }\n\n if (typeof navigator.canShare === \"function\") {\n try {\n return navigator.canShare(data);\n } catch {\n return false;\n }\n }\n\n if (data.files?.length) {\n return false;\n }\n\n return Boolean(data.title || data.text || data.url);\n}\n\n/** Invokes `navigator.share` and resolves to `true` on success. Never throws. */\nexport async function shareData(data: ShareData): Promise<boolean> {\n if (!canShareData(data)) {\n return false;\n }\n\n try {\n await navigator.share(data);\n return true;\n } catch {\n return false;\n }\n}\n\n/** Builds callable `$share` magic with `isSupported` and `canShare` helpers. */\nexport function createShareMagic(): ShareMagic {\n const share = (data: ShareData) => shareData(data);\n share.isSupported = isShareSupported;\n share.canShare = canShareData;\n return share;\n}\n\n/** Alpine.js share plugin. Registers callable magic `$share`. */\nexport default function sharePlugin(Alpine: AlpineType.Alpine): void {\n Alpine.magic(\"share\", () => createShareMagic());\n}\n\ndeclare global {\n namespace Alpine {\n interface Magics<T> {\n $share: ShareMagic;\n }\n }\n}\n"],"mappings":";AAOA,SAAS,kBAA2B;AAClC,SAAO,OAAO,eAAe,eAAe,WAAW,oBAAoB;AAC7E;AAEA,SAAS,cAAuB;AAC9B,SAAO,OAAO,cAAc,eAAe,OAAO,UAAU,UAAU;AACxE;AAGO,SAAS,mBAA4B;AAC1C,SAAO,gBAAgB,KAAK,YAAY;AAC1C;AAGO,SAAS,aAAa,MAA2B;AACtD,MAAI,CAAC,iBAAiB,GAAG;AACvB,WAAO;AAAA,EACT;AAEA,MAAI,SAAS,QAAW;AACtB,WAAO;AAAA,EACT;AAEA,MAAI,OAAO,UAAU,aAAa,YAAY;AAC5C,QAAI;AACF,aAAO,UAAU,SAAS,IAAI;AAAA,IAChC,QAAQ;AACN,aAAO;AAAA,IACT;AAAA,EACF;AAEA,MAAI,KAAK,OAAO,QAAQ;AACtB,WAAO;AAAA,EACT;AAEA,SAAO,QAAQ,KAAK,SAAS,KAAK,QAAQ,KAAK,GAAG;AACpD;AAGA,eAAsB,UAAU,MAAmC;AACjE,MAAI,CAAC,aAAa,IAAI,GAAG;AACvB,WAAO;AAAA,EACT;AAEA,MAAI;AACF,UAAM,UAAU,MAAM,IAAI;AAC1B,WAAO;AAAA,EACT,QAAQ;AACN,WAAO;AAAA,EACT;AACF;AAGO,SAAS,mBAA+B;AAC7C,QAAM,QAAQ,CAAC,SAAoB,UAAU,IAAI;AACjD,QAAM,cAAc;AACpB,QAAM,WAAW;AACjB,SAAO;AACT;AAGe,SAAR,YAA6B,QAAiC;AACnE,SAAO,MAAM,SAAS,MAAM,iBAAiB,CAAC;AAChD;","names":[]}
1
+ {"version":3,"sources":["../src/index.ts"],"sourcesContent":["import type AlpineType from \"alpinejs\";\n\nexport type ShareMagic = ((data: ShareData) => Promise<boolean>) & {\n readonly isSupported: boolean;\n canShare(data?: ShareData): boolean;\n};\n\nfunction isSecureContext(): boolean {\n return typeof globalThis !== \"undefined\" && globalThis.isSecureContext === true;\n}\n\nfunction hasShareApi(): boolean {\n return typeof navigator !== \"undefined\" && typeof navigator.share === \"function\";\n}\n\n/** Returns whether the Web Share API is available in this environment. */\nexport function isShareSupported(): boolean {\n return isSecureContext() && hasShareApi();\n}\n\n/** Returns whether the given payload can be shared, or whether sharing is available when omitted. */\nexport function canShareData(data?: ShareData): boolean {\n if (!isShareSupported()) {\n return false;\n }\n\n if (data === undefined) {\n return true;\n }\n\n if (typeof navigator.canShare === \"function\") {\n try {\n return navigator.canShare(data);\n } catch {\n return false;\n }\n }\n\n if (data.files?.length) {\n return false;\n }\n\n return Boolean(data.title || data.text || data.url);\n}\n\n/** Invokes `navigator.share` and resolves to `true` on success. Never throws. */\nexport async function shareData(data: ShareData): Promise<boolean> {\n if (!canShareData(data)) {\n return false;\n }\n\n try {\n await navigator.share(data);\n return true;\n } catch {\n return false;\n }\n}\n\n/** Builds callable `$share` magic with `isSupported` and `canShare` helpers. */\nexport function createShareMagic(): ShareMagic {\n const share = ((data: ShareData) => shareData(data)) as ShareMagic;\n Object.defineProperty(share, \"isSupported\", { get: isShareSupported });\n share.canShare = canShareData;\n return share;\n}\n\n/** Alpine.js share plugin. Registers callable magic `$share`. */\nexport default function sharePlugin(Alpine: AlpineType.Alpine): void {\n Alpine.magic(\"share\", () => createShareMagic());\n}\n\ndeclare global {\n namespace Alpine {\n interface Magics<T> {\n $share: ShareMagic;\n }\n }\n}\n"],"mappings":";AAOA,SAAS,kBAA2B;AAClC,SAAO,OAAO,eAAe,eAAe,WAAW,oBAAoB;AAC7E;AAEA,SAAS,cAAuB;AAC9B,SAAO,OAAO,cAAc,eAAe,OAAO,UAAU,UAAU;AACxE;AAGO,SAAS,mBAA4B;AAC1C,SAAO,gBAAgB,KAAK,YAAY;AAC1C;AAGO,SAAS,aAAa,MAA2B;AACtD,MAAI,CAAC,iBAAiB,GAAG;AACvB,WAAO;AAAA,EACT;AAEA,MAAI,SAAS,QAAW;AACtB,WAAO;AAAA,EACT;AAEA,MAAI,OAAO,UAAU,aAAa,YAAY;AAC5C,QAAI;AACF,aAAO,UAAU,SAAS,IAAI;AAAA,IAChC,QAAQ;AACN,aAAO;AAAA,IACT;AAAA,EACF;AAEA,MAAI,KAAK,OAAO,QAAQ;AACtB,WAAO;AAAA,EACT;AAEA,SAAO,QAAQ,KAAK,SAAS,KAAK,QAAQ,KAAK,GAAG;AACpD;AAGA,eAAsB,UAAU,MAAmC;AACjE,MAAI,CAAC,aAAa,IAAI,GAAG;AACvB,WAAO;AAAA,EACT;AAEA,MAAI;AACF,UAAM,UAAU,MAAM,IAAI;AAC1B,WAAO;AAAA,EACT,QAAQ;AACN,WAAO;AAAA,EACT;AACF;AAGO,SAAS,mBAA+B;AAC7C,QAAM,SAAS,CAAC,SAAoB,UAAU,IAAI;AAClD,SAAO,eAAe,OAAO,eAAe,EAAE,KAAK,iBAAiB,CAAC;AACrE,QAAM,WAAW;AACjB,SAAO;AACT;AAGe,SAAR,YAA6B,QAAiC;AACnE,SAAO,MAAM,SAAS,MAAM,iBAAiB,CAAC;AAChD;","names":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ailuracode/alpine-share",
3
- "version": "0.2.0",
3
+ "version": "0.2.1",
4
4
  "description": "Alpine.js Web Share API magic",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -49,6 +49,6 @@
49
49
  ],
50
50
  "scripts": {
51
51
  "build": "tsup src/index.ts --format esm --dts --clean --sourcemap --out-dir dist && cp src/global.d.ts dist/global.d.ts",
52
- "test": "vitest run --config ../../vitest.config.js test"
52
+ "test": "vitest run --config ../../vitest.config.ts test"
53
53
  }
54
54
  }