@zag-js/utils 0.0.0-dev-20220603135505 → 0.0.0-dev-20220604123458

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.
@@ -0,0 +1,14 @@
1
+ export declare const supportsPointerEvent: () => boolean;
2
+ export declare const supportsTouchEvent: () => boolean;
3
+ export declare const supportsMouseEvent: () => boolean;
4
+ export declare const isMouseEvent: (v: any) => v is MouseEvent;
5
+ export declare const isTouchEvent: (v: any) => v is TouchEvent;
6
+ export declare const isLeftClick: (v: {
7
+ button: number;
8
+ }) => boolean;
9
+ export declare const isRightClick: (v: {
10
+ button: number;
11
+ }) => boolean;
12
+ export declare const isModifiedEvent: (v: Pick<KeyboardEvent, "ctrlKey" | "metaKey" | "altKey">) => boolean;
13
+ export declare const isCtrlKey: (v: Pick<KeyboardEvent, "ctrlKey" | "metaKey">) => boolean;
14
+ //# sourceMappingURL=events.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,oBAAoB,eAAiD,CAAA;AAClF,eAAO,MAAM,kBAAkB,eAAgD,CAAA;AAC/E,eAAO,MAAM,kBAAkB,eAA+C,CAAA;AAE9E,eAAO,MAAM,YAAY,MAAO,GAAG,oBAAyD,CAAA;AAC5F,eAAO,MAAM,YAAY,MAAO,GAAG,oBAA0D,CAAA;AAC7F,eAAO,MAAM,WAAW,MAAO;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,YAAmB,CAAA;AACpE,eAAO,MAAM,YAAY,MAAO;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,YAAmB,CAAA;AACrE,eAAO,MAAM,eAAe,MAAO,KAAK,aAAa,EAAE,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAC,YACpD,CAAA;AAEpC,eAAO,MAAM,SAAS,MAAO,KAAK,aAAa,EAAE,SAAS,GAAG,SAAS,CAAC,YACV,CAAA"}
package/dist/guard.d.ts CHANGED
@@ -1,13 +1,5 @@
1
1
  export declare const isDev: () => boolean;
2
2
  export declare const isDom: () => boolean;
3
- export declare const isMac: () => boolean;
4
- export declare const isIPhone: () => boolean;
5
- export declare const isIPad: () => boolean;
6
- export declare const isIos: () => boolean;
7
- export declare const isSafari: () => boolean;
8
- export declare const isFirefox: () => boolean;
9
- export declare const isWebkit: () => boolean;
10
- export declare const isApple: () => boolean;
11
3
  export declare const isArray: (v: any) => v is any[];
12
4
  export declare const isBoolean: (v: any) => v is boolean;
13
5
  export declare const isObject: (v: any) => v is Record<string, any>;
@@ -15,17 +7,4 @@ export declare const isNumber: (v: any) => v is number;
15
7
  export declare const isString: (v: any) => v is string;
16
8
  export declare const isFunction: (v: any) => v is Function;
17
9
  export declare const hasProp: <T extends string>(obj: any, prop: T) => obj is Record<T, any>;
18
- export declare const supportsPointerEvent: () => boolean;
19
- export declare const supportsTouchEvent: () => boolean;
20
- export declare const supportsMouseEvent: () => boolean;
21
- export declare const isMouseEvent: (v: any) => v is MouseEvent;
22
- export declare const isTouchEvent: (v: any) => v is TouchEvent;
23
- export declare const isLeftClick: (v: {
24
- button: number;
25
- }) => boolean;
26
- export declare const isRightClick: (v: {
27
- button: number;
28
- }) => boolean;
29
- export declare const isModifiedEvent: (v: Pick<KeyboardEvent, "ctrlKey" | "metaKey" | "altKey">) => boolean;
30
- export declare const isCtrlKey: (v: Pick<KeyboardEvent, "ctrlKey" | "metaKey">) => boolean;
31
10
  //# sourceMappingURL=guard.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"guard.d.ts","sourceRoot":"","sources":["../src/guard.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,KAAK,eAA8C,CAAA;AAChE,eAAO,MAAM,KAAK,eAAsC,CAAA;AACxD,eAAO,MAAM,KAAK,eAAyB,CAAA;AAC3C,eAAO,MAAM,QAAQ,eAA4B,CAAA;AACjD,eAAO,MAAM,MAAM,eAAuE,CAAA;AAC1F,eAAO,MAAM,KAAK,eAA+B,CAAA;AACjD,eAAO,MAAM,QAAQ,eAA6C,CAAA;AAClE,eAAO,MAAM,SAAS,eAAuB,CAAA;AAC7C,eAAO,MAAM,QAAQ,eAAuC,CAAA;AAC5D,eAAO,MAAM,OAAO,eAA2B,CAAA;AAE/C,eAAO,MAAM,OAAO,MAAO,GAAG,eAAiC,CAAA;AAC/D,eAAO,MAAM,SAAS,MAAO,GAAG,iBAA4C,CAAA;AAC5E,eAAO,MAAM,QAAQ,MAAO,GAAG,6BAAkF,CAAA;AACjH,eAAO,MAAM,QAAQ,MAAO,GAAG,gBAA2D,CAAA;AAC1F,eAAO,MAAM,QAAQ,MAAO,GAAG,gBAAuC,CAAA;AACtE,eAAO,MAAM,UAAU,MAAO,GAAG,kBAA2C,CAAA;AAE5E,eAAO,MAAM,OAAO,0BAA2B,GAAG,mCACD,CAAA;AAEjD,eAAO,MAAM,oBAAoB,eAAiD,CAAA;AAClF,eAAO,MAAM,kBAAkB,eAAgD,CAAA;AAC/E,eAAO,MAAM,kBAAkB,eAA+C,CAAA;AAE9E,eAAO,MAAM,YAAY,MAAO,GAAG,oBAAyD,CAAA;AAC5F,eAAO,MAAM,YAAY,MAAO,GAAG,oBAA0D,CAAA;AAC7F,eAAO,MAAM,WAAW,MAAO;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,YAAmB,CAAA;AACpE,eAAO,MAAM,YAAY,MAAO;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,YAAmB,CAAA;AACrE,eAAO,MAAM,eAAe,MAAO,KAAK,aAAa,EAAE,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAC,YACpD,CAAA;AACpC,eAAO,MAAM,SAAS,MAAO,KAAK,aAAa,EAAE,SAAS,GAAG,SAAS,CAAC,YACV,CAAA"}
1
+ {"version":3,"file":"guard.d.ts","sourceRoot":"","sources":["../src/guard.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,KAAK,eAA8C,CAAA;AAChE,eAAO,MAAM,KAAK,eAAsC,CAAA;AAExD,eAAO,MAAM,OAAO,MAAO,GAAG,eAAiC,CAAA;AAC/D,eAAO,MAAM,SAAS,MAAO,GAAG,iBAA4C,CAAA;AAC5E,eAAO,MAAM,QAAQ,MAAO,GAAG,6BAAkF,CAAA;AACjH,eAAO,MAAM,QAAQ,MAAO,GAAG,gBAA2D,CAAA;AAC1F,eAAO,MAAM,QAAQ,MAAO,GAAG,gBAAuC,CAAA;AACtE,eAAO,MAAM,UAAU,MAAO,GAAG,kBAA2C,CAAA;AAE5E,eAAO,MAAM,OAAO,0BAA2B,GAAG,mCACD,CAAA"}
package/dist/index.d.ts CHANGED
@@ -1,5 +1,7 @@
1
1
  export * from "./array";
2
+ export * from "./events";
2
3
  export * from "./functions";
3
4
  export * from "./guard";
5
+ export * from "./platform";
4
6
  export * from "./warning";
5
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAA;AACvB,cAAc,aAAa,CAAA;AAC3B,cAAc,SAAS,CAAA;AACvB,cAAc,WAAW,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAA;AACvB,cAAc,UAAU,CAAA;AACxB,cAAc,aAAa,CAAA;AAC3B,cAAc,SAAS,CAAA;AACvB,cAAc,YAAY,CAAA;AAC1B,cAAc,WAAW,CAAA"}
package/dist/index.js CHANGED
@@ -26,6 +26,7 @@ __export(src_exports, {
26
26
  clear: () => clear,
27
27
  first: () => first,
28
28
  fromLength: () => fromLength,
29
+ getPlatform: () => getPlatform,
29
30
  has: () => has,
30
31
  hasProp: () => hasProp,
31
32
  invariant: () => invariant,
@@ -38,7 +39,6 @@ __export(src_exports, {
38
39
  isEmpty: () => isEmpty,
39
40
  isFirefox: () => isFirefox,
40
41
  isFunction: () => isFunction,
41
- isIPad: () => isIPad,
42
42
  isIPhone: () => isIPhone,
43
43
  isIos: () => isIos,
44
44
  isLeftClick: () => isLeftClick,
@@ -50,8 +50,8 @@ __export(src_exports, {
50
50
  isRightClick: () => isRightClick,
51
51
  isSafari: () => isSafari,
52
52
  isString: () => isString,
53
+ isTouchDevice: () => isTouchDevice,
53
54
  isTouchEvent: () => isTouchEvent,
54
- isWebkit: () => isWebkit,
55
55
  last: () => last,
56
56
  merge: () => merge,
57
57
  next: () => next,
@@ -130,6 +130,45 @@ var chunk = (v, size) => {
130
130
  }, res);
131
131
  };
132
132
 
133
+ // src/guard.ts
134
+ var isDev = () => void 0 !== "production";
135
+ var isDom = () => typeof window !== "undefined";
136
+ var isArray = (v) => Array.isArray(v);
137
+ var isBoolean = (v) => v === true || v === false;
138
+ var isObject = (v) => !(v == null || typeof v !== "object" || isArray(v));
139
+ var isNumber = (v) => typeof v === "number" && !Number.isNaN(v);
140
+ var isString = (v) => typeof v === "string";
141
+ var isFunction = (v) => typeof v === "function";
142
+ var hasProp = (obj, prop) => Object.prototype.hasOwnProperty.call(obj, prop);
143
+
144
+ // src/platform.ts
145
+ function getPlatform() {
146
+ var _a;
147
+ const agent = navigator.userAgentData;
148
+ return (_a = agent == null ? void 0 : agent.platform) != null ? _a : navigator.platform;
149
+ }
150
+ var pt = (v) => isDom() && v.test(getPlatform());
151
+ var ua = (v) => isDom() && v.test(navigator.userAgent);
152
+ var vn = (v) => isDom() && v.test(navigator.vendor);
153
+ var isTouchDevice = isDom() && !!navigator.maxTouchPoints;
154
+ var isMac = () => pt(/^Mac/) && !isTouchDevice;
155
+ var isIPhone = () => pt(/^iPhone/);
156
+ var isSafari = () => isApple() && vn(/apple/i);
157
+ var isFirefox = () => ua(/firefox\//i);
158
+ var isApple = () => pt(/mac|iphone|ipad|ipod/i);
159
+ var isIos = () => isApple() && !isMac();
160
+
161
+ // src/events.ts
162
+ var supportsPointerEvent = () => isDom() && window.onpointerdown === null;
163
+ var supportsTouchEvent = () => isDom() && window.ontouchstart === null;
164
+ var supportsMouseEvent = () => isDom() && window.onmousedown === null;
165
+ var isMouseEvent = (v) => isObject(v) && hasProp(v, "button");
166
+ var isTouchEvent = (v) => isObject(v) && hasProp(v, "touches");
167
+ var isLeftClick = (v) => v.button === 0;
168
+ var isRightClick = (v) => v.button === 2;
169
+ var isModifiedEvent = (v) => v.ctrlKey || v.altKey || v.metaKey;
170
+ var isCtrlKey = (v) => isMac() ? v.metaKey && !v.ctrlKey : v.ctrlKey && !v.metaKey;
171
+
133
172
  // src/functions.ts
134
173
  var runIfFn = (v, ...a) => {
135
174
  const res = typeof v === "function" ? v(...a) : v;
@@ -168,36 +207,6 @@ function merge(origin, patch) {
168
207
  return result;
169
208
  }
170
209
 
171
- // src/guard.ts
172
- var platform = (v) => isDom() && v.test(navigator.platform);
173
- var ua = (v) => isDom() && v.test(navigator.userAgent);
174
- var isDev = () => void 0 !== "production";
175
- var isDom = () => typeof window !== "undefined";
176
- var isMac = () => platform(/^Mac/);
177
- var isIPhone = () => platform(/^iPhone/);
178
- var isIPad = () => platform(/^iPad/) || isMac() && navigator.maxTouchPoints > 1;
179
- var isIos = () => isIPhone() || isIPad();
180
- var isSafari = () => ua(/^((?!chrome|android).)*safari/i);
181
- var isFirefox = () => ua(/^Firefox/);
182
- var isWebkit = () => ua(/^WebKit/) && !ua(/Chrome/);
183
- var isApple = () => isMac() || isIos();
184
- var isArray = (v) => Array.isArray(v);
185
- var isBoolean = (v) => v === true || v === false;
186
- var isObject = (v) => !(v == null || typeof v !== "object" || isArray(v));
187
- var isNumber = (v) => typeof v === "number" && !Number.isNaN(v);
188
- var isString = (v) => typeof v === "string";
189
- var isFunction = (v) => typeof v === "function";
190
- var hasProp = (obj, prop) => Object.prototype.hasOwnProperty.call(obj, prop);
191
- var supportsPointerEvent = () => isDom() && window.onpointerdown === null;
192
- var supportsTouchEvent = () => isDom() && window.ontouchstart === null;
193
- var supportsMouseEvent = () => isDom() && window.onmousedown === null;
194
- var isMouseEvent = (v) => isObject(v) && hasProp(v, "button");
195
- var isTouchEvent = (v) => isObject(v) && hasProp(v, "touches");
196
- var isLeftClick = (v) => v.button === 0;
197
- var isRightClick = (v) => v.button === 2;
198
- var isModifiedEvent = (v) => v.ctrlKey || v.altKey || v.metaKey;
199
- var isCtrlKey = (v) => isMac() ? v.metaKey && !v.ctrlKey : v.ctrlKey && !v.metaKey;
200
-
201
210
  // src/warning.ts
202
211
  function warn(...a) {
203
212
  const m = a.length === 1 ? a[0] : a[1];
package/dist/index.js.map CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../src/index.ts", "../src/array.ts", "../src/functions.ts", "../src/guard.ts", "../src/warning.ts"],
4
- "sourcesContent": ["export * from \"./array\"\nexport * from \"./functions\"\nexport * from \"./guard\"\nexport * from \"./warning\"\n", "export function toArray<T>(v: T | T[] | undefined | null): T[] {\n if (!v) return []\n return Array.isArray(v) ? v : [v]\n}\n\nexport const fromLength = (length: number) => Array.from(Array(length).keys())\n\nexport const first = <T>(v: T[]): T | undefined => v[0]\n\nexport const last = <T>(v: T[]): T | undefined => v[v.length - 1]\n\nexport const isEmpty = <T>(v: T[]): boolean => v.length === 0\n\nexport const has = <T>(v: T[], t: any): boolean => v.indexOf(t) !== -1\n\nexport const add = <T>(v: T[], ...items: T[]): T[] => v.concat(items)\n\nexport const remove = <T>(v: T[], item: T): T[] => removeAt(v, v.indexOf(item))\n\nexport const removeAt = <T>(v: T[], i: number): T[] => {\n if (i > -1) v.splice(i, 1)\n return v\n}\n\nexport function clear<T>(v: T[]): T[] {\n while (v.length > 0) v.pop()\n return v\n}\n\nexport type IndexOptions = {\n step?: number\n loop?: boolean\n}\n\nexport function nextIndex<T>(v: T[], idx: number, opts: IndexOptions = {}): number {\n const { step = 1, loop = true } = opts\n const next = idx + step\n const len = v.length\n const last = len - 1\n if (idx === -1) return step > 0 ? 0 : last\n if (next < 0) return loop ? last : 0\n if (next >= len) return loop ? 0 : idx > len ? len : idx\n return next\n}\n\nexport function next<T>(v: T[], idx: number, opts: IndexOptions = {}): T | undefined {\n return v[nextIndex(v, idx, opts)]\n}\n\nexport function prevIndex<T>(v: T[], idx: number, opts: IndexOptions = {}): number {\n const { step = 1, loop = true } = opts\n return nextIndex(v, idx, { step: -step, loop })\n}\n\nexport function prev<T>(v: T[], index: number, opts: IndexOptions = {}): T | undefined {\n return v[prevIndex(v, index, opts)]\n}\n\nexport const chunk = <T>(v: T[], size: number): T[][] => {\n const res: T[][] = []\n return v.reduce((rows, value, index) => {\n if (index % size === 0) rows.push([value])\n else last(rows)?.push(value)\n return rows\n }, res)\n}\n", "export const runIfFn = <T>(\n v: T | undefined,\n ...a: T extends (...a: any[]) => void ? Parameters<T> : never\n): T extends (...a: any[]) => void ? NonNullable<ReturnType<T>> : NonNullable<T> => {\n const res = typeof v === \"function\" ? v(...a) : v\n return res ?? undefined\n}\n\nexport const cast = <T>(v: unknown): T => v as T\n\nexport const noop = () => {}\n\nexport const pipe =\n <T>(...fns: Array<(a: T) => T>) =>\n (v: T) =>\n fns.reduce((a, b) => b(a), v)\n\nexport const callAll =\n <T extends (...a: any[]) => void>(...fns: (T | undefined)[]) =>\n (...a: Parameters<T>) => {\n fns.forEach(function (fn) {\n fn?.(...a)\n })\n }\n\nexport const uuid = /*#__PURE__*/ (() => {\n let id = 0\n return () => {\n id++\n return id.toString(36)\n }\n})()\n\nexport function merge<T, U>(origin: T, patch: U): T & U {\n if (!(typeof patch === \"object\")) return patch as any\n const result = !(typeof origin === \"object\") ? {} : Object.assign({}, origin)\n for (const key of Object.keys(patch)) {\n const value = patch[key]\n const src = result[key]\n if (value === null) delete result[key]\n else if (Array.isArray(value) || Array.isArray(src)) result[key] = (src || []).concat(value || [])\n else result[key] = merge(src, value)\n }\n return result as any\n}\n", "const platform = (v: RegExp) => isDom() && v.test(navigator.platform)\nconst ua = (v: RegExp) => isDom() && v.test(navigator.userAgent)\n\nexport const isDev = () => process.env.NODE_ENV !== \"production\"\nexport const isDom = () => typeof window !== \"undefined\"\nexport const isMac = () => platform(/^Mac/)\nexport const isIPhone = () => platform(/^iPhone/)\nexport const isIPad = () => platform(/^iPad/) || (isMac() && navigator.maxTouchPoints > 1)\nexport const isIos = () => isIPhone() || isIPad()\nexport const isSafari = () => ua(/^((?!chrome|android).)*safari/i)\nexport const isFirefox = () => ua(/^Firefox/)\nexport const isWebkit = () => ua(/^WebKit/) && !ua(/Chrome/)\nexport const isApple = () => isMac() || isIos()\n\nexport const isArray = (v: any): v is any[] => Array.isArray(v)\nexport const isBoolean = (v: any): v is boolean => v === true || v === false\nexport const isObject = (v: any): v is Record<string, any> => !(v == null || typeof v !== \"object\" || isArray(v))\nexport const isNumber = (v: any): v is number => typeof v === \"number\" && !Number.isNaN(v)\nexport const isString = (v: any): v is string => typeof v === \"string\"\nexport const isFunction = (v: any): v is Function => typeof v === \"function\"\n\nexport const hasProp = <T extends string>(obj: any, prop: T): obj is Record<T, any> =>\n Object.prototype.hasOwnProperty.call(obj, prop)\n\nexport const supportsPointerEvent = () => isDom() && window.onpointerdown === null\nexport const supportsTouchEvent = () => isDom() && window.ontouchstart === null\nexport const supportsMouseEvent = () => isDom() && window.onmousedown === null\n\nexport const isMouseEvent = (v: any): v is MouseEvent => isObject(v) && hasProp(v, \"button\")\nexport const isTouchEvent = (v: any): v is TouchEvent => isObject(v) && hasProp(v, \"touches\")\nexport const isLeftClick = (v: { button: number }) => v.button === 0\nexport const isRightClick = (v: { button: number }) => v.button === 2\nexport const isModifiedEvent = (v: Pick<KeyboardEvent, \"ctrlKey\" | \"metaKey\" | \"altKey\">) =>\n v.ctrlKey || v.altKey || v.metaKey\nexport const isCtrlKey = (v: Pick<KeyboardEvent, \"ctrlKey\" | \"metaKey\">) =>\n isMac() ? v.metaKey && !v.ctrlKey : v.ctrlKey && !v.metaKey\n", "export function warn(m: string): void\nexport function warn(c: boolean, m: string): void\nexport function warn(...a: any[]): void {\n const m = a.length === 1 ? a[0] : a[1]\n const c = a.length === 2 ? a[0] : true\n if (c && process.env.NODE_ENV !== \"production\") {\n console.warn(m)\n }\n}\n\nexport function invariant(m: string): void\nexport function invariant(c: boolean, m: string): void\nexport function invariant(...a: any[]): void {\n const m = a.length === 1 ? a[0] : a[1]\n const c = a.length === 2 ? a[0] : true\n if (c && process.env.NODE_ENV !== \"production\") {\n throw new Error(m)\n }\n}\n"],
5
- "mappings": "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",
3
+ "sources": ["../src/index.ts", "../src/array.ts", "../src/guard.ts", "../src/platform.ts", "../src/events.ts", "../src/functions.ts", "../src/warning.ts"],
4
+ "sourcesContent": ["export * from \"./array\"\nexport * from \"./events\"\nexport * from \"./functions\"\nexport * from \"./guard\"\nexport * from \"./platform\"\nexport * from \"./warning\"\n", "export function toArray<T>(v: T | T[] | undefined | null): T[] {\n if (!v) return []\n return Array.isArray(v) ? v : [v]\n}\n\nexport const fromLength = (length: number) => Array.from(Array(length).keys())\n\nexport const first = <T>(v: T[]): T | undefined => v[0]\n\nexport const last = <T>(v: T[]): T | undefined => v[v.length - 1]\n\nexport const isEmpty = <T>(v: T[]): boolean => v.length === 0\n\nexport const has = <T>(v: T[], t: any): boolean => v.indexOf(t) !== -1\n\nexport const add = <T>(v: T[], ...items: T[]): T[] => v.concat(items)\n\nexport const remove = <T>(v: T[], item: T): T[] => removeAt(v, v.indexOf(item))\n\nexport const removeAt = <T>(v: T[], i: number): T[] => {\n if (i > -1) v.splice(i, 1)\n return v\n}\n\nexport function clear<T>(v: T[]): T[] {\n while (v.length > 0) v.pop()\n return v\n}\n\nexport type IndexOptions = {\n step?: number\n loop?: boolean\n}\n\nexport function nextIndex<T>(v: T[], idx: number, opts: IndexOptions = {}): number {\n const { step = 1, loop = true } = opts\n const next = idx + step\n const len = v.length\n const last = len - 1\n if (idx === -1) return step > 0 ? 0 : last\n if (next < 0) return loop ? last : 0\n if (next >= len) return loop ? 0 : idx > len ? len : idx\n return next\n}\n\nexport function next<T>(v: T[], idx: number, opts: IndexOptions = {}): T | undefined {\n return v[nextIndex(v, idx, opts)]\n}\n\nexport function prevIndex<T>(v: T[], idx: number, opts: IndexOptions = {}): number {\n const { step = 1, loop = true } = opts\n return nextIndex(v, idx, { step: -step, loop })\n}\n\nexport function prev<T>(v: T[], index: number, opts: IndexOptions = {}): T | undefined {\n return v[prevIndex(v, index, opts)]\n}\n\nexport const chunk = <T>(v: T[], size: number): T[][] => {\n const res: T[][] = []\n return v.reduce((rows, value, index) => {\n if (index % size === 0) rows.push([value])\n else last(rows)?.push(value)\n return rows\n }, res)\n}\n", "export const isDev = () => process.env.NODE_ENV !== \"production\"\nexport const isDom = () => typeof window !== \"undefined\"\n\nexport const isArray = (v: any): v is any[] => Array.isArray(v)\nexport const isBoolean = (v: any): v is boolean => v === true || v === false\nexport const isObject = (v: any): v is Record<string, any> => !(v == null || typeof v !== \"object\" || isArray(v))\nexport const isNumber = (v: any): v is number => typeof v === \"number\" && !Number.isNaN(v)\nexport const isString = (v: any): v is string => typeof v === \"string\"\nexport const isFunction = (v: any): v is Function => typeof v === \"function\"\n\nexport const hasProp = <T extends string>(obj: any, prop: T): obj is Record<T, any> =>\n Object.prototype.hasOwnProperty.call(obj, prop)\n", "import { isDom } from \"./guard\"\n\nexport function getPlatform() {\n const agent = (navigator as any).userAgentData\n return agent?.platform ?? navigator.platform\n}\n\nconst pt = (v: RegExp) => isDom() && v.test(getPlatform())\nconst ua = (v: RegExp) => isDom() && v.test(navigator.userAgent)\nconst vn = (v: RegExp) => isDom() && v.test(navigator.vendor)\n\nexport const isTouchDevice = isDom() && !!navigator.maxTouchPoints\nexport const isMac = () => pt(/^Mac/) && !isTouchDevice\nexport const isIPhone = () => pt(/^iPhone/)\nexport const isSafari = () => isApple() && vn(/apple/i)\nexport const isFirefox = () => ua(/firefox\\//i)\nexport const isApple = () => pt(/mac|iphone|ipad|ipod/i)\nexport const isIos = () => isApple() && !isMac()\n", "import { hasProp, isDom, isObject } from \"./guard\"\nimport { isMac } from \"./platform\"\n\nexport const supportsPointerEvent = () => isDom() && window.onpointerdown === null\nexport const supportsTouchEvent = () => isDom() && window.ontouchstart === null\nexport const supportsMouseEvent = () => isDom() && window.onmousedown === null\n\nexport const isMouseEvent = (v: any): v is MouseEvent => isObject(v) && hasProp(v, \"button\")\nexport const isTouchEvent = (v: any): v is TouchEvent => isObject(v) && hasProp(v, \"touches\")\nexport const isLeftClick = (v: { button: number }) => v.button === 0\nexport const isRightClick = (v: { button: number }) => v.button === 2\nexport const isModifiedEvent = (v: Pick<KeyboardEvent, \"ctrlKey\" | \"metaKey\" | \"altKey\">) =>\n v.ctrlKey || v.altKey || v.metaKey\n\nexport const isCtrlKey = (v: Pick<KeyboardEvent, \"ctrlKey\" | \"metaKey\">) =>\n isMac() ? v.metaKey && !v.ctrlKey : v.ctrlKey && !v.metaKey\n", "export const runIfFn = <T>(\n v: T | undefined,\n ...a: T extends (...a: any[]) => void ? Parameters<T> : never\n): T extends (...a: any[]) => void ? NonNullable<ReturnType<T>> : NonNullable<T> => {\n const res = typeof v === \"function\" ? v(...a) : v\n return res ?? undefined\n}\n\nexport const cast = <T>(v: unknown): T => v as T\n\nexport const noop = () => {}\n\nexport const pipe =\n <T>(...fns: Array<(a: T) => T>) =>\n (v: T) =>\n fns.reduce((a, b) => b(a), v)\n\nexport const callAll =\n <T extends (...a: any[]) => void>(...fns: (T | undefined)[]) =>\n (...a: Parameters<T>) => {\n fns.forEach(function (fn) {\n fn?.(...a)\n })\n }\n\nexport const uuid = /*#__PURE__*/ (() => {\n let id = 0\n return () => {\n id++\n return id.toString(36)\n }\n})()\n\nexport function merge<T, U>(origin: T, patch: U): T & U {\n if (!(typeof patch === \"object\")) return patch as any\n const result = !(typeof origin === \"object\") ? {} : Object.assign({}, origin)\n for (const key of Object.keys(patch)) {\n const value = patch[key]\n const src = result[key]\n if (value === null) delete result[key]\n else if (Array.isArray(value) || Array.isArray(src)) result[key] = (src || []).concat(value || [])\n else result[key] = merge(src, value)\n }\n return result as any\n}\n", "export function warn(m: string): void\nexport function warn(c: boolean, m: string): void\nexport function warn(...a: any[]): void {\n const m = a.length === 1 ? a[0] : a[1]\n const c = a.length === 2 ? a[0] : true\n if (c && process.env.NODE_ENV !== \"production\") {\n console.warn(m)\n }\n}\n\nexport function invariant(m: string): void\nexport function invariant(c: boolean, m: string): void\nexport function invariant(...a: any[]): void {\n const m = a.length === 1 ? a[0] : a[1]\n const c = a.length === 2 ? a[0] : true\n if (c && process.env.NODE_ENV !== \"production\") {\n throw new Error(m)\n }\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
package/dist/index.mjs CHANGED
@@ -56,6 +56,45 @@ var chunk = (v, size) => {
56
56
  }, res);
57
57
  };
58
58
 
59
+ // src/guard.ts
60
+ var isDev = () => void 0 !== "production";
61
+ var isDom = () => typeof window !== "undefined";
62
+ var isArray = (v) => Array.isArray(v);
63
+ var isBoolean = (v) => v === true || v === false;
64
+ var isObject = (v) => !(v == null || typeof v !== "object" || isArray(v));
65
+ var isNumber = (v) => typeof v === "number" && !Number.isNaN(v);
66
+ var isString = (v) => typeof v === "string";
67
+ var isFunction = (v) => typeof v === "function";
68
+ var hasProp = (obj, prop) => Object.prototype.hasOwnProperty.call(obj, prop);
69
+
70
+ // src/platform.ts
71
+ function getPlatform() {
72
+ var _a;
73
+ const agent = navigator.userAgentData;
74
+ return (_a = agent == null ? void 0 : agent.platform) != null ? _a : navigator.platform;
75
+ }
76
+ var pt = (v) => isDom() && v.test(getPlatform());
77
+ var ua = (v) => isDom() && v.test(navigator.userAgent);
78
+ var vn = (v) => isDom() && v.test(navigator.vendor);
79
+ var isTouchDevice = isDom() && !!navigator.maxTouchPoints;
80
+ var isMac = () => pt(/^Mac/) && !isTouchDevice;
81
+ var isIPhone = () => pt(/^iPhone/);
82
+ var isSafari = () => isApple() && vn(/apple/i);
83
+ var isFirefox = () => ua(/firefox\//i);
84
+ var isApple = () => pt(/mac|iphone|ipad|ipod/i);
85
+ var isIos = () => isApple() && !isMac();
86
+
87
+ // src/events.ts
88
+ var supportsPointerEvent = () => isDom() && window.onpointerdown === null;
89
+ var supportsTouchEvent = () => isDom() && window.ontouchstart === null;
90
+ var supportsMouseEvent = () => isDom() && window.onmousedown === null;
91
+ var isMouseEvent = (v) => isObject(v) && hasProp(v, "button");
92
+ var isTouchEvent = (v) => isObject(v) && hasProp(v, "touches");
93
+ var isLeftClick = (v) => v.button === 0;
94
+ var isRightClick = (v) => v.button === 2;
95
+ var isModifiedEvent = (v) => v.ctrlKey || v.altKey || v.metaKey;
96
+ var isCtrlKey = (v) => isMac() ? v.metaKey && !v.ctrlKey : v.ctrlKey && !v.metaKey;
97
+
59
98
  // src/functions.ts
60
99
  var runIfFn = (v, ...a) => {
61
100
  const res = typeof v === "function" ? v(...a) : v;
@@ -94,36 +133,6 @@ function merge(origin, patch) {
94
133
  return result;
95
134
  }
96
135
 
97
- // src/guard.ts
98
- var platform = (v) => isDom() && v.test(navigator.platform);
99
- var ua = (v) => isDom() && v.test(navigator.userAgent);
100
- var isDev = () => void 0 !== "production";
101
- var isDom = () => typeof window !== "undefined";
102
- var isMac = () => platform(/^Mac/);
103
- var isIPhone = () => platform(/^iPhone/);
104
- var isIPad = () => platform(/^iPad/) || isMac() && navigator.maxTouchPoints > 1;
105
- var isIos = () => isIPhone() || isIPad();
106
- var isSafari = () => ua(/^((?!chrome|android).)*safari/i);
107
- var isFirefox = () => ua(/^Firefox/);
108
- var isWebkit = () => ua(/^WebKit/) && !ua(/Chrome/);
109
- var isApple = () => isMac() || isIos();
110
- var isArray = (v) => Array.isArray(v);
111
- var isBoolean = (v) => v === true || v === false;
112
- var isObject = (v) => !(v == null || typeof v !== "object" || isArray(v));
113
- var isNumber = (v) => typeof v === "number" && !Number.isNaN(v);
114
- var isString = (v) => typeof v === "string";
115
- var isFunction = (v) => typeof v === "function";
116
- var hasProp = (obj, prop) => Object.prototype.hasOwnProperty.call(obj, prop);
117
- var supportsPointerEvent = () => isDom() && window.onpointerdown === null;
118
- var supportsTouchEvent = () => isDom() && window.ontouchstart === null;
119
- var supportsMouseEvent = () => isDom() && window.onmousedown === null;
120
- var isMouseEvent = (v) => isObject(v) && hasProp(v, "button");
121
- var isTouchEvent = (v) => isObject(v) && hasProp(v, "touches");
122
- var isLeftClick = (v) => v.button === 0;
123
- var isRightClick = (v) => v.button === 2;
124
- var isModifiedEvent = (v) => v.ctrlKey || v.altKey || v.metaKey;
125
- var isCtrlKey = (v) => isMac() ? v.metaKey && !v.ctrlKey : v.ctrlKey && !v.metaKey;
126
-
127
136
  // src/warning.ts
128
137
  function warn(...a) {
129
138
  const m = a.length === 1 ? a[0] : a[1];
@@ -147,6 +156,7 @@ export {
147
156
  clear,
148
157
  first,
149
158
  fromLength,
159
+ getPlatform,
150
160
  has,
151
161
  hasProp,
152
162
  invariant,
@@ -159,7 +169,6 @@ export {
159
169
  isEmpty,
160
170
  isFirefox,
161
171
  isFunction,
162
- isIPad,
163
172
  isIPhone,
164
173
  isIos,
165
174
  isLeftClick,
@@ -171,8 +180,8 @@ export {
171
180
  isRightClick,
172
181
  isSafari,
173
182
  isString,
183
+ isTouchDevice,
174
184
  isTouchEvent,
175
- isWebkit,
176
185
  last,
177
186
  merge,
178
187
  next,
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../src/array.ts", "../src/functions.ts", "../src/guard.ts", "../src/warning.ts"],
4
- "sourcesContent": ["export function toArray<T>(v: T | T[] | undefined | null): T[] {\n if (!v) return []\n return Array.isArray(v) ? v : [v]\n}\n\nexport const fromLength = (length: number) => Array.from(Array(length).keys())\n\nexport const first = <T>(v: T[]): T | undefined => v[0]\n\nexport const last = <T>(v: T[]): T | undefined => v[v.length - 1]\n\nexport const isEmpty = <T>(v: T[]): boolean => v.length === 0\n\nexport const has = <T>(v: T[], t: any): boolean => v.indexOf(t) !== -1\n\nexport const add = <T>(v: T[], ...items: T[]): T[] => v.concat(items)\n\nexport const remove = <T>(v: T[], item: T): T[] => removeAt(v, v.indexOf(item))\n\nexport const removeAt = <T>(v: T[], i: number): T[] => {\n if (i > -1) v.splice(i, 1)\n return v\n}\n\nexport function clear<T>(v: T[]): T[] {\n while (v.length > 0) v.pop()\n return v\n}\n\nexport type IndexOptions = {\n step?: number\n loop?: boolean\n}\n\nexport function nextIndex<T>(v: T[], idx: number, opts: IndexOptions = {}): number {\n const { step = 1, loop = true } = opts\n const next = idx + step\n const len = v.length\n const last = len - 1\n if (idx === -1) return step > 0 ? 0 : last\n if (next < 0) return loop ? last : 0\n if (next >= len) return loop ? 0 : idx > len ? len : idx\n return next\n}\n\nexport function next<T>(v: T[], idx: number, opts: IndexOptions = {}): T | undefined {\n return v[nextIndex(v, idx, opts)]\n}\n\nexport function prevIndex<T>(v: T[], idx: number, opts: IndexOptions = {}): number {\n const { step = 1, loop = true } = opts\n return nextIndex(v, idx, { step: -step, loop })\n}\n\nexport function prev<T>(v: T[], index: number, opts: IndexOptions = {}): T | undefined {\n return v[prevIndex(v, index, opts)]\n}\n\nexport const chunk = <T>(v: T[], size: number): T[][] => {\n const res: T[][] = []\n return v.reduce((rows, value, index) => {\n if (index % size === 0) rows.push([value])\n else last(rows)?.push(value)\n return rows\n }, res)\n}\n", "export const runIfFn = <T>(\n v: T | undefined,\n ...a: T extends (...a: any[]) => void ? Parameters<T> : never\n): T extends (...a: any[]) => void ? NonNullable<ReturnType<T>> : NonNullable<T> => {\n const res = typeof v === \"function\" ? v(...a) : v\n return res ?? undefined\n}\n\nexport const cast = <T>(v: unknown): T => v as T\n\nexport const noop = () => {}\n\nexport const pipe =\n <T>(...fns: Array<(a: T) => T>) =>\n (v: T) =>\n fns.reduce((a, b) => b(a), v)\n\nexport const callAll =\n <T extends (...a: any[]) => void>(...fns: (T | undefined)[]) =>\n (...a: Parameters<T>) => {\n fns.forEach(function (fn) {\n fn?.(...a)\n })\n }\n\nexport const uuid = /*#__PURE__*/ (() => {\n let id = 0\n return () => {\n id++\n return id.toString(36)\n }\n})()\n\nexport function merge<T, U>(origin: T, patch: U): T & U {\n if (!(typeof patch === \"object\")) return patch as any\n const result = !(typeof origin === \"object\") ? {} : Object.assign({}, origin)\n for (const key of Object.keys(patch)) {\n const value = patch[key]\n const src = result[key]\n if (value === null) delete result[key]\n else if (Array.isArray(value) || Array.isArray(src)) result[key] = (src || []).concat(value || [])\n else result[key] = merge(src, value)\n }\n return result as any\n}\n", "const platform = (v: RegExp) => isDom() && v.test(navigator.platform)\nconst ua = (v: RegExp) => isDom() && v.test(navigator.userAgent)\n\nexport const isDev = () => process.env.NODE_ENV !== \"production\"\nexport const isDom = () => typeof window !== \"undefined\"\nexport const isMac = () => platform(/^Mac/)\nexport const isIPhone = () => platform(/^iPhone/)\nexport const isIPad = () => platform(/^iPad/) || (isMac() && navigator.maxTouchPoints > 1)\nexport const isIos = () => isIPhone() || isIPad()\nexport const isSafari = () => ua(/^((?!chrome|android).)*safari/i)\nexport const isFirefox = () => ua(/^Firefox/)\nexport const isWebkit = () => ua(/^WebKit/) && !ua(/Chrome/)\nexport const isApple = () => isMac() || isIos()\n\nexport const isArray = (v: any): v is any[] => Array.isArray(v)\nexport const isBoolean = (v: any): v is boolean => v === true || v === false\nexport const isObject = (v: any): v is Record<string, any> => !(v == null || typeof v !== \"object\" || isArray(v))\nexport const isNumber = (v: any): v is number => typeof v === \"number\" && !Number.isNaN(v)\nexport const isString = (v: any): v is string => typeof v === \"string\"\nexport const isFunction = (v: any): v is Function => typeof v === \"function\"\n\nexport const hasProp = <T extends string>(obj: any, prop: T): obj is Record<T, any> =>\n Object.prototype.hasOwnProperty.call(obj, prop)\n\nexport const supportsPointerEvent = () => isDom() && window.onpointerdown === null\nexport const supportsTouchEvent = () => isDom() && window.ontouchstart === null\nexport const supportsMouseEvent = () => isDom() && window.onmousedown === null\n\nexport const isMouseEvent = (v: any): v is MouseEvent => isObject(v) && hasProp(v, \"button\")\nexport const isTouchEvent = (v: any): v is TouchEvent => isObject(v) && hasProp(v, \"touches\")\nexport const isLeftClick = (v: { button: number }) => v.button === 0\nexport const isRightClick = (v: { button: number }) => v.button === 2\nexport const isModifiedEvent = (v: Pick<KeyboardEvent, \"ctrlKey\" | \"metaKey\" | \"altKey\">) =>\n v.ctrlKey || v.altKey || v.metaKey\nexport const isCtrlKey = (v: Pick<KeyboardEvent, \"ctrlKey\" | \"metaKey\">) =>\n isMac() ? v.metaKey && !v.ctrlKey : v.ctrlKey && !v.metaKey\n", "export function warn(m: string): void\nexport function warn(c: boolean, m: string): void\nexport function warn(...a: any[]): void {\n const m = a.length === 1 ? a[0] : a[1]\n const c = a.length === 2 ? a[0] : true\n if (c && process.env.NODE_ENV !== \"production\") {\n console.warn(m)\n }\n}\n\nexport function invariant(m: string): void\nexport function invariant(c: boolean, m: string): void\nexport function invariant(...a: any[]): void {\n const m = a.length === 1 ? a[0] : a[1]\n const c = a.length === 2 ? a[0] : true\n if (c && process.env.NODE_ENV !== \"production\") {\n throw new Error(m)\n }\n}\n"],
5
- "mappings": "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",
3
+ "sources": ["../src/array.ts", "../src/guard.ts", "../src/platform.ts", "../src/events.ts", "../src/functions.ts", "../src/warning.ts"],
4
+ "sourcesContent": ["export function toArray<T>(v: T | T[] | undefined | null): T[] {\n if (!v) return []\n return Array.isArray(v) ? v : [v]\n}\n\nexport const fromLength = (length: number) => Array.from(Array(length).keys())\n\nexport const first = <T>(v: T[]): T | undefined => v[0]\n\nexport const last = <T>(v: T[]): T | undefined => v[v.length - 1]\n\nexport const isEmpty = <T>(v: T[]): boolean => v.length === 0\n\nexport const has = <T>(v: T[], t: any): boolean => v.indexOf(t) !== -1\n\nexport const add = <T>(v: T[], ...items: T[]): T[] => v.concat(items)\n\nexport const remove = <T>(v: T[], item: T): T[] => removeAt(v, v.indexOf(item))\n\nexport const removeAt = <T>(v: T[], i: number): T[] => {\n if (i > -1) v.splice(i, 1)\n return v\n}\n\nexport function clear<T>(v: T[]): T[] {\n while (v.length > 0) v.pop()\n return v\n}\n\nexport type IndexOptions = {\n step?: number\n loop?: boolean\n}\n\nexport function nextIndex<T>(v: T[], idx: number, opts: IndexOptions = {}): number {\n const { step = 1, loop = true } = opts\n const next = idx + step\n const len = v.length\n const last = len - 1\n if (idx === -1) return step > 0 ? 0 : last\n if (next < 0) return loop ? last : 0\n if (next >= len) return loop ? 0 : idx > len ? len : idx\n return next\n}\n\nexport function next<T>(v: T[], idx: number, opts: IndexOptions = {}): T | undefined {\n return v[nextIndex(v, idx, opts)]\n}\n\nexport function prevIndex<T>(v: T[], idx: number, opts: IndexOptions = {}): number {\n const { step = 1, loop = true } = opts\n return nextIndex(v, idx, { step: -step, loop })\n}\n\nexport function prev<T>(v: T[], index: number, opts: IndexOptions = {}): T | undefined {\n return v[prevIndex(v, index, opts)]\n}\n\nexport const chunk = <T>(v: T[], size: number): T[][] => {\n const res: T[][] = []\n return v.reduce((rows, value, index) => {\n if (index % size === 0) rows.push([value])\n else last(rows)?.push(value)\n return rows\n }, res)\n}\n", "export const isDev = () => process.env.NODE_ENV !== \"production\"\nexport const isDom = () => typeof window !== \"undefined\"\n\nexport const isArray = (v: any): v is any[] => Array.isArray(v)\nexport const isBoolean = (v: any): v is boolean => v === true || v === false\nexport const isObject = (v: any): v is Record<string, any> => !(v == null || typeof v !== \"object\" || isArray(v))\nexport const isNumber = (v: any): v is number => typeof v === \"number\" && !Number.isNaN(v)\nexport const isString = (v: any): v is string => typeof v === \"string\"\nexport const isFunction = (v: any): v is Function => typeof v === \"function\"\n\nexport const hasProp = <T extends string>(obj: any, prop: T): obj is Record<T, any> =>\n Object.prototype.hasOwnProperty.call(obj, prop)\n", "import { isDom } from \"./guard\"\n\nexport function getPlatform() {\n const agent = (navigator as any).userAgentData\n return agent?.platform ?? navigator.platform\n}\n\nconst pt = (v: RegExp) => isDom() && v.test(getPlatform())\nconst ua = (v: RegExp) => isDom() && v.test(navigator.userAgent)\nconst vn = (v: RegExp) => isDom() && v.test(navigator.vendor)\n\nexport const isTouchDevice = isDom() && !!navigator.maxTouchPoints\nexport const isMac = () => pt(/^Mac/) && !isTouchDevice\nexport const isIPhone = () => pt(/^iPhone/)\nexport const isSafari = () => isApple() && vn(/apple/i)\nexport const isFirefox = () => ua(/firefox\\//i)\nexport const isApple = () => pt(/mac|iphone|ipad|ipod/i)\nexport const isIos = () => isApple() && !isMac()\n", "import { hasProp, isDom, isObject } from \"./guard\"\nimport { isMac } from \"./platform\"\n\nexport const supportsPointerEvent = () => isDom() && window.onpointerdown === null\nexport const supportsTouchEvent = () => isDom() && window.ontouchstart === null\nexport const supportsMouseEvent = () => isDom() && window.onmousedown === null\n\nexport const isMouseEvent = (v: any): v is MouseEvent => isObject(v) && hasProp(v, \"button\")\nexport const isTouchEvent = (v: any): v is TouchEvent => isObject(v) && hasProp(v, \"touches\")\nexport const isLeftClick = (v: { button: number }) => v.button === 0\nexport const isRightClick = (v: { button: number }) => v.button === 2\nexport const isModifiedEvent = (v: Pick<KeyboardEvent, \"ctrlKey\" | \"metaKey\" | \"altKey\">) =>\n v.ctrlKey || v.altKey || v.metaKey\n\nexport const isCtrlKey = (v: Pick<KeyboardEvent, \"ctrlKey\" | \"metaKey\">) =>\n isMac() ? v.metaKey && !v.ctrlKey : v.ctrlKey && !v.metaKey\n", "export const runIfFn = <T>(\n v: T | undefined,\n ...a: T extends (...a: any[]) => void ? Parameters<T> : never\n): T extends (...a: any[]) => void ? NonNullable<ReturnType<T>> : NonNullable<T> => {\n const res = typeof v === \"function\" ? v(...a) : v\n return res ?? undefined\n}\n\nexport const cast = <T>(v: unknown): T => v as T\n\nexport const noop = () => {}\n\nexport const pipe =\n <T>(...fns: Array<(a: T) => T>) =>\n (v: T) =>\n fns.reduce((a, b) => b(a), v)\n\nexport const callAll =\n <T extends (...a: any[]) => void>(...fns: (T | undefined)[]) =>\n (...a: Parameters<T>) => {\n fns.forEach(function (fn) {\n fn?.(...a)\n })\n }\n\nexport const uuid = /*#__PURE__*/ (() => {\n let id = 0\n return () => {\n id++\n return id.toString(36)\n }\n})()\n\nexport function merge<T, U>(origin: T, patch: U): T & U {\n if (!(typeof patch === \"object\")) return patch as any\n const result = !(typeof origin === \"object\") ? {} : Object.assign({}, origin)\n for (const key of Object.keys(patch)) {\n const value = patch[key]\n const src = result[key]\n if (value === null) delete result[key]\n else if (Array.isArray(value) || Array.isArray(src)) result[key] = (src || []).concat(value || [])\n else result[key] = merge(src, value)\n }\n return result as any\n}\n", "export function warn(m: string): void\nexport function warn(c: boolean, m: string): void\nexport function warn(...a: any[]): void {\n const m = a.length === 1 ? a[0] : a[1]\n const c = a.length === 2 ? a[0] : true\n if (c && process.env.NODE_ENV !== \"production\") {\n console.warn(m)\n }\n}\n\nexport function invariant(m: string): void\nexport function invariant(c: boolean, m: string): void\nexport function invariant(...a: any[]): void {\n const m = a.length === 1 ? a[0] : a[1]\n const c = a.length === 2 ? a[0] : true\n if (c && process.env.NODE_ENV !== \"production\") {\n throw new Error(m)\n }\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -0,0 +1,9 @@
1
+ export declare function getPlatform(): any;
2
+ export declare const isTouchDevice: boolean;
3
+ export declare const isMac: () => boolean;
4
+ export declare const isIPhone: () => boolean;
5
+ export declare const isSafari: () => boolean;
6
+ export declare const isFirefox: () => boolean;
7
+ export declare const isApple: () => boolean;
8
+ export declare const isIos: () => boolean;
9
+ //# sourceMappingURL=platform.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"platform.d.ts","sourceRoot":"","sources":["../src/platform.ts"],"names":[],"mappings":"AAEA,wBAAgB,WAAW,QAG1B;AAMD,eAAO,MAAM,aAAa,SAAwC,CAAA;AAClE,eAAO,MAAM,KAAK,eAAqC,CAAA;AACvD,eAAO,MAAM,QAAQ,eAAsB,CAAA;AAC3C,eAAO,MAAM,QAAQ,eAAkC,CAAA;AACvD,eAAO,MAAM,SAAS,eAAyB,CAAA;AAC/C,eAAO,MAAM,OAAO,eAAoC,CAAA;AACxD,eAAO,MAAM,KAAK,eAA8B,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zag-js/utils",
3
- "version": "0.0.0-dev-20220603135505",
3
+ "version": "0.0.0-dev-20220604123458",
4
4
  "description": "",
5
5
  "keywords": [
6
6
  "js",