browser-haptic 1.0.10 → 1.0.11

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/dist/haptic.d.ts CHANGED
@@ -1,4 +1,12 @@
1
- export type VibrationPattern = number | number[];
1
+ export type VibrationPattern = number | number[] | readonly number[];
2
+ export declare enum HapticPreset {
3
+ Light = "light",
4
+ Medium = "medium",
5
+ Heavy = "heavy",
6
+ Success = "success",
7
+ Warning = "warning",
8
+ Error = "error"
9
+ }
2
10
  export interface Haptic {
3
11
  hasVibration(): boolean;
4
12
  isSupported(): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"haptic.d.ts","sourceRoot":"","sources":["../src/haptic.ts"],"names":[],"mappings":"AA4BA,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,MAAM,EAAE,CAAC;AAUjD,MAAM,WAAW,MAAM;IACrB,YAAY,IAAI,OAAO,CAAC;IACxB,WAAW,IAAI,OAAO,CAAC;IACvB,OAAO,CAAC,OAAO,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACzC,KAAK,IAAI,IAAI,CAAC;IACd,MAAM,IAAI,IAAI,CAAC;IACf,KAAK,IAAI,IAAI,CAAC;IACd,OAAO,IAAI,IAAI,CAAC;IAChB,OAAO,IAAI,IAAI,CAAC;IAChB,KAAK,IAAI,IAAI,CAAC;CACf;AA6ED,eAAO,MAAM,YAAY,QAAO,OAA4B,CAAC;AAmB7D,eAAO,MAAM,WAAW,QAAO,OAG9B,CAAC;AAoBF,eAAO,MAAM,OAAO,GAAI,SAAS,gBAAgB,KAAG,IAAwB,CAAC;AAQ7E,eAAO,MAAM,KAAK,QAAO,IAA8B,CAAC;AAQxD,eAAO,MAAM,MAAM,QAAO,IAA+B,CAAC;AAQ1D,eAAO,MAAM,KAAK,QAAO,IAA8B,CAAC;AAQxD,eAAO,MAAM,OAAO,QAAO,IAAqC,CAAC;AASjE,eAAO,MAAM,OAAO,QAAO,IAAqC,CAAC;AAQjE,eAAO,MAAM,KAAK,QAAO,IAAmC,CAAC;AAE7D,QAAA,MAAM,MAAM,EAAE,MAUb,CAAC;AAiBF,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"haptic.d.ts","sourceRoot":"","sources":["../src/haptic.ts"],"names":[],"mappings":"AA4BA,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,MAAM,EAAE,CAAC;AAGrE,oBAAY,YAAY;IACtB,KAAK,UAAU;IACf,MAAM,WAAW;IACjB,KAAK,UAAU;IACf,OAAO,YAAY;IACnB,OAAO,YAAY;IACnB,KAAK,UAAU;CAChB;AAUD,MAAM,WAAW,MAAM;IACrB,YAAY,IAAI,OAAO,CAAC;IACxB,WAAW,IAAI,OAAO,CAAC;IACvB,OAAO,CAAC,OAAO,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACzC,KAAK,IAAI,IAAI,CAAC;IACd,MAAM,IAAI,IAAI,CAAC;IACf,KAAK,IAAI,IAAI,CAAC;IACd,OAAO,IAAI,IAAI,CAAC;IAChB,OAAO,IAAI,IAAI,CAAC;IAChB,KAAK,IAAI,IAAI,CAAC;CACf;AA6FD,eAAO,MAAM,YAAY,QAAO,OAA4B,CAAC;AAmB7D,eAAO,MAAM,WAAW,QAAO,OAG9B,CAAC;AAoBF,eAAO,MAAM,OAAO,GAAI,SAAS,gBAAgB,KAAG,IAAwB,CAAC;AAQ7E,eAAO,MAAM,KAAK,QAAO,IAA8C,CAAC;AAQxE,eAAO,MAAM,MAAM,QAAO,IAA+C,CAAC;AAQ1E,eAAO,MAAM,KAAK,QAAO,IAA8C,CAAC;AAQxE,eAAO,MAAM,OAAO,QAAO,IAAgD,CAAC;AAQ5E,eAAO,MAAM,OAAO,QAAO,IAAgD,CAAC;AAQ5E,eAAO,MAAM,KAAK,QAAO,IAA8C,CAAC;AAExE,QAAA,MAAM,MAAM,EAAE,MAUb,CAAC;AAiBF,eAAe,MAAM,CAAC"}
package/dist/haptic.js CHANGED
@@ -1,10 +1,31 @@
1
- const PRESETS = {
2
- light: 10,
3
- medium: 20,
4
- heavy: 40,
5
- success: [10, 50, 10],
6
- warning: [30, 30, 30],
7
- error: [50, 30, 50, 30, 50],
1
+ export var HapticPreset;
2
+ (function (HapticPreset) {
3
+ HapticPreset["Light"] = "light";
4
+ HapticPreset["Medium"] = "medium";
5
+ HapticPreset["Heavy"] = "heavy";
6
+ HapticPreset["Success"] = "success";
7
+ HapticPreset["Warning"] = "warning";
8
+ HapticPreset["Error"] = "error";
9
+ })(HapticPreset || (HapticPreset = {}));
10
+ const VIBRATION_PRESETS = new Map([
11
+ [HapticPreset.Light, 30],
12
+ [HapticPreset.Medium, 50],
13
+ [HapticPreset.Heavy, 80],
14
+ [HapticPreset.Success, [20, 50, 20]],
15
+ [HapticPreset.Warning, [40, 30, 40]],
16
+ [HapticPreset.Error, [50, 30, 50, 30, 50]],
17
+ ]);
18
+ const IOS_PRESETS = new Map([
19
+ [HapticPreset.Light, [15, 40, 15]],
20
+ [HapticPreset.Medium, [15, 35, 15, 35, 15]],
21
+ [HapticPreset.Heavy, [15, 30, 15, 30, 15, 30, 15]],
22
+ [HapticPreset.Success, [20, 50, 20]],
23
+ [HapticPreset.Warning, [40, 30, 40]],
24
+ [HapticPreset.Error, [50, 30, 50, 30, 50]],
25
+ ]);
26
+ const getPreset = (variant) => {
27
+ const presets = hasVibrationAPI() ? VIBRATION_PRESETS : IOS_PRESETS;
28
+ return presets.get(variant);
8
29
  };
9
30
  const hasVibrationAPI = () => typeof navigator !== "undefined" && typeof navigator.vibrate === "function";
10
31
  const hasDOM = () => typeof document !== "undefined" && !!document.body;
@@ -27,7 +48,7 @@ const fireIOSSwitch = () => {
27
48
  catch {
28
49
  }
29
50
  };
30
- const toPatternArray = (pattern) => Array.isArray(pattern) ? [...pattern] : [pattern];
51
+ const toPatternArray = (pattern) => (Array.isArray(pattern) ? [...pattern] : [pattern]);
31
52
  const trigger = (pattern) => {
32
53
  if (hasVibrationAPI()) {
33
54
  try {
@@ -55,12 +76,12 @@ export const isSupported = () => {
55
76
  return hasVibrationAPI() || hasDOM();
56
77
  };
57
78
  export const vibrate = (pattern) => trigger(pattern);
58
- export const light = () => trigger(PRESETS.light);
59
- export const medium = () => trigger(PRESETS.medium);
60
- export const heavy = () => trigger(PRESETS.heavy);
61
- export const success = () => trigger([...PRESETS.success]);
62
- export const warning = () => trigger([...PRESETS.warning]);
63
- export const error = () => trigger([...PRESETS.error]);
79
+ export const light = () => trigger(getPreset(HapticPreset.Light));
80
+ export const medium = () => trigger(getPreset(HapticPreset.Medium));
81
+ export const heavy = () => trigger(getPreset(HapticPreset.Heavy));
82
+ export const success = () => trigger(getPreset(HapticPreset.Success));
83
+ export const warning = () => trigger(getPreset(HapticPreset.Warning));
84
+ export const error = () => trigger(getPreset(HapticPreset.Error));
64
85
  const Haptic = {
65
86
  hasVibration,
66
87
  isSupported,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "browser-haptic",
3
- "version": "1.0.10",
3
+ "version": "1.0.11",
4
4
  "description": "Lightweight haptic feedback for web apps. Vibration API (Android) + iOS Safari 17.4+ switch fallback. Zero dependencies.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",