@zag-js/utils 0.0.0-dev-20220406144843

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,19 @@
1
+ export declare function toArray<T>(v: T | T[] | undefined | null): T[];
2
+ export declare const fromLength: (length: number) => number[];
3
+ export declare const first: <T>(v: T[]) => T;
4
+ export declare const last: <T>(v: T[]) => T;
5
+ export declare const isEmpty: <T>(v: T[]) => boolean;
6
+ export declare const has: <T>(v: T[], t: any) => boolean;
7
+ export declare const add: <T>(v: T[], ...items: T[]) => T[];
8
+ export declare const remove: <T>(v: T[], item: T) => T[];
9
+ export declare const removeAt: <T>(v: T[], i: number) => T[];
10
+ export declare function clear<T>(v: T[]): T[];
11
+ export declare type IndexOptions = {
12
+ step?: number;
13
+ loop?: boolean;
14
+ };
15
+ export declare function nextIndex<T>(v: T[], idx: number, opts?: IndexOptions): number;
16
+ export declare function next<T>(v: T[], idx: number, opts?: IndexOptions): T | undefined;
17
+ export declare function prevIndex<T>(v: T[], idx: number, opts?: IndexOptions): number;
18
+ export declare function prev<T>(v: T[], index: number, opts?: IndexOptions): T | undefined;
19
+ export declare const chunk: <T>(v: T[], size: number) => T[][];
@@ -0,0 +1,7 @@
1
+ export declare const runIfFn: <T>(v: T, ...a: T extends (...a: any[]) => void ? Parameters<T> : never) => T extends (...a: any[]) => void ? NonNullable<ReturnType<T>> : NonNullable<T>;
2
+ export declare const cast: <T>(v: unknown) => T;
3
+ export declare const noop: () => void;
4
+ export declare const pipe: <T>(...fns: ((a: T) => T)[]) => (v: T) => T;
5
+ export declare const callAll: <T extends (...a: any[]) => void>(...fns: T[]) => (...a: Parameters<T>) => void;
6
+ export declare const uuid: () => string;
7
+ export declare function merge<T, U>(origin: T, patch: U): T & U;
@@ -0,0 +1,25 @@
1
+ export declare const isDev: () => boolean;
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
+ export declare const isArray: (v: any) => v is any[];
12
+ export declare const isBoolean: (v: any) => v is boolean;
13
+ export declare const isObject: (v: any) => v is Record<string, any>;
14
+ export declare const isNumber: (v: any) => v is number;
15
+ export declare const isString: (v: any) => v is string;
16
+ export declare const isFunction: (v: any) => v is Function;
17
+ export declare const supportsPointerEvent: () => boolean;
18
+ export declare const supportsTouchEvent: () => boolean;
19
+ export declare const supportsMouseEvent: () => boolean;
20
+ export declare const isMouseEvent: (v: any) => v is MouseEvent;
21
+ export declare const isTouchEvent: (v: any) => v is TouchEvent;
22
+ export declare const isLeftClick: (v: MouseEvent | PointerEvent) => boolean;
23
+ export declare const isRightClick: (v: MouseEvent | PointerEvent) => boolean;
24
+ export declare const isModifiedEvent: (v: MouseEvent | PointerEvent | KeyboardEvent) => boolean;
25
+ export declare const isCtrlKey: (v: KeyboardEvent) => boolean;
@@ -0,0 +1,4 @@
1
+ export * from "./array";
2
+ export * from "./functions";
3
+ export * from "./guard";
4
+ export * from "./warning";
package/dist/index.js ADDED
@@ -0,0 +1,2 @@
1
+ var a=Object.defineProperty;var A=Object.getOwnPropertyDescriptor;var w=Object.getOwnPropertyNames;var N=Object.prototype.hasOwnProperty;var O=t=>a(t,"__esModule",{value:!0});var K=(t,n)=>{for(var e in n)a(t,e,{get:n[e],enumerable:!0})},I=(t,n,e,o)=>{if(n&&typeof n=="object"||typeof n=="function")for(let r of w(n))!N.call(t,r)&&(e||r!=="default")&&a(t,r,{get:()=>n[r],enumerable:!(o=A(n,r))||o.enumerable});return t};var P=(t=>(n,e)=>t&&t.get(n)||(e=I(O({}),n,1),t&&t.set(n,e),e))(typeof WeakMap!="undefined"?new WeakMap:0);var lt={};K(lt,{add:()=>R,callAll:()=>z,cast:()=>W,chunk:()=>_,clear:()=>S,first:()=>j,fromLength:()=>k,has:()=>F,invariant:()=>Tt,isApple:()=>Y,isArray:()=>v,isBoolean:()=>Z,isCtrlKey:()=>at,isDev:()=>H,isDom:()=>c,isEmpty:()=>D,isFirefox:()=>Q,isFunction:()=>nt,isIPad:()=>g,isIPhone:()=>E,isIos:()=>h,isLeftClick:()=>ct,isMac:()=>u,isModifiedEvent:()=>ut,isMouseEvent:()=>st,isNumber:()=>$,isObject:()=>l,isRightClick:()=>pt,isSafari:()=>J,isString:()=>tt,isTouchEvent:()=>it,isWebkit:()=>X,last:()=>d,merge:()=>b,next:()=>U,nextIndex:()=>x,noop:()=>B,pipe:()=>q,prev:()=>V,prevIndex:()=>m,remove:()=>C,removeAt:()=>y,runIfFn:()=>L,supportsMouseEvent:()=>rt,supportsPointerEvent:()=>et,supportsTouchEvent:()=>ot,toArray:()=>M,uuid:()=>G,warn:()=>xt});function M(t){return t?Array.isArray(t)?t:[t]:[]}var k=t=>Array.from(Array(t).keys()),j=t=>t[0],d=t=>t[t.length-1],D=t=>t.length===0,F=(t,n)=>t.indexOf(n)!==-1,R=(t,...n)=>t.concat(n),C=(t,n)=>y(t,t.indexOf(n)),y=(t,n)=>(n>-1&&t.splice(n,1),t);function S(t){for(;t.length>0;)t.pop();return t}function x(t,n,e={}){let{step:o=1,loop:r=!0}=e,s=n+o,i=t.length,f=i-1;return n===-1?o>0?0:f:s<0?r?f:0:s>=i?r?0:n>i?i:n:s}function U(t,n,e={}){return t[x(t,n,e)]}function m(t,n,e={}){let{step:o=1,loop:r=!0}=e;return x(t,n,{step:-o,loop:r})}function V(t,n,e={}){return t[m(t,n,e)]}var _=(t,n)=>{let e=[];return t.reduce((o,r,s)=>{var i;return s%n===0?o.push([r]):(i=d(o))==null||i.push(r),o},e)};var L=(t,...n)=>{let e=typeof t=="function"?t(...n):t;return e!=null?e:void 0},W=t=>t,B=()=>{},q=(...t)=>n=>t.reduce((e,o)=>o(e),n),z=(...t)=>(...n)=>{t.forEach(function(e){e==null||e(...n)})},G=(()=>{let t=0;return()=>(t++,t.toString(36))})();function b(t,n){if(typeof n!="object")return n;let e=typeof t!="object"?{}:Object.assign({},t);for(let o of Object.keys(n)){let r=n[o],s=e[o];r===null?delete e[o]:Array.isArray(r)||Array.isArray(s)?e[o]=(s||[]).concat(r||[]):e[o]=b(s,r)}return e}var T=t=>c()&&t.test(navigator.platform),p=t=>c()&&t.test(navigator.userAgent),H=()=>!1,c=()=>typeof window!="undefined",u=()=>T(/^Mac/),E=()=>T(/^iPhone/),g=()=>T(/^iPad/)||u()&&navigator.maxTouchPoints>1,h=()=>E()||g(),J=()=>p(/^((?!chrome|android).)*safari/i),Q=()=>p(/^Firefox/),X=()=>p(/^WebKit/)&&!p(/Chrome/),Y=()=>u()||h(),v=t=>Array.isArray(t),Z=t=>t===!0||t===!1,l=t=>!(t==null||typeof t!="object"||v(t)),$=t=>typeof t=="number"&&!Number.isNaN(t),tt=t=>typeof t=="string",nt=t=>typeof t=="function",et=()=>c()&&window.onpointerdown===null,ot=()=>c()&&window.ontouchstart===null,rt=()=>c()&&window.onmousedown===null,st=t=>l(t)&&"button"in t,it=t=>l(t)&&"touches"in t,ct=t=>t.button===0,pt=t=>t.button===2,ut=t=>t.ctrlKey||t.altKey||t.metaKey||t.shiftKey,at=t=>u()?t.metaKey&&!t.ctrlKey:t.ctrlKey&&!t.metaKey;function xt(...t){let n=t.length===1?t[0]:t[1],e=t.length===2?t[0]:!0}function Tt(...t){let n=t.length===1?t[0]:t[1],e=t.length===2?t[0]:!0}module.exports=P(lt);
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,7 @@
1
+ {
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 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) && \"button\" in v\nexport const isTouchEvent = (v: any): v is TouchEvent => isObject(v) && \"touches\" in v\nexport const isLeftClick = (v: MouseEvent | PointerEvent) => v.button === 0\nexport const isRightClick = (v: MouseEvent | PointerEvent) => v.button === 2\nexport const isModifiedEvent = (v: MouseEvent | PointerEvent | KeyboardEvent) =>\n v.ctrlKey || v.altKey || v.metaKey || v.shiftKey\nexport const isCtrlKey = (v: KeyboardEvent) => (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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",
6
+ "names": []
7
+ }
package/dist/index.mjs ADDED
@@ -0,0 +1,2 @@
1
+ function v(t){return t?Array.isArray(t)?t:[t]:[]}var A=t=>Array.from(Array(t).keys()),w=t=>t[0],f=t=>t[t.length-1],N=t=>t.length===0,O=(t,n)=>t.indexOf(n)!==-1,K=(t,...n)=>t.concat(n),I=(t,n)=>d(t,t.indexOf(n)),d=(t,n)=>(n>-1&&t.splice(n,1),t);function P(t){for(;t.length>0;)t.pop();return t}function T(t,n,e={}){let{step:o=1,loop:r=!0}=e,s=n+o,i=t.length,x=i-1;return n===-1?o>0?0:x:s<0?r?x:0:s>=i?r?0:n>i?i:n:s}function M(t,n,e={}){return t[T(t,n,e)]}function y(t,n,e={}){let{step:o=1,loop:r=!0}=e;return T(t,n,{step:-o,loop:r})}function k(t,n,e={}){return t[y(t,n,e)]}var j=(t,n)=>{let e=[];return t.reduce((o,r,s)=>{var i;return s%n===0?o.push([r]):(i=f(o))==null||i.push(r),o},e)};var F=(t,...n)=>{let e=typeof t=="function"?t(...n):t;return e!=null?e:void 0},R=t=>t,C=()=>{},S=(...t)=>n=>t.reduce((e,o)=>o(e),n),U=(...t)=>(...n)=>{t.forEach(function(e){e==null||e(...n)})},V=(()=>{let t=0;return()=>(t++,t.toString(36))})();function m(t,n){if(typeof n!="object")return n;let e=typeof t!="object"?{}:Object.assign({},t);for(let o of Object.keys(n)){let r=n[o],s=e[o];r===null?delete e[o]:Array.isArray(r)||Array.isArray(s)?e[o]=(s||[]).concat(r||[]):e[o]=m(s,r)}return e}var u=t=>c()&&t.test(navigator.platform),p=t=>c()&&t.test(navigator.userAgent),L=()=>!1,c=()=>typeof window!="undefined",a=()=>u(/^Mac/),b=()=>u(/^iPhone/),E=()=>u(/^iPad/)||a()&&navigator.maxTouchPoints>1,g=()=>b()||E(),W=()=>p(/^((?!chrome|android).)*safari/i),B=()=>p(/^Firefox/),q=()=>p(/^WebKit/)&&!p(/Chrome/),z=()=>a()||g(),h=t=>Array.isArray(t),G=t=>t===!0||t===!1,l=t=>!(t==null||typeof t!="object"||h(t)),H=t=>typeof t=="number"&&!Number.isNaN(t),J=t=>typeof t=="string",Q=t=>typeof t=="function",X=()=>c()&&window.onpointerdown===null,Y=()=>c()&&window.ontouchstart===null,Z=()=>c()&&window.onmousedown===null,$=t=>l(t)&&"button"in t,tt=t=>l(t)&&"touches"in t,nt=t=>t.button===0,et=t=>t.button===2,ot=t=>t.ctrlKey||t.altKey||t.metaKey||t.shiftKey,rt=t=>a()?t.metaKey&&!t.ctrlKey:t.ctrlKey&&!t.metaKey;function it(...t){let n=t.length===1?t[0]:t[1],e=t.length===2?t[0]:!0}function ct(...t){let n=t.length===1?t[0]:t[1],e=t.length===2?t[0]:!0}export{K as add,U as callAll,R as cast,j as chunk,P as clear,w as first,A as fromLength,O as has,ct as invariant,z as isApple,h as isArray,G as isBoolean,rt as isCtrlKey,L as isDev,c as isDom,N as isEmpty,B as isFirefox,Q as isFunction,E as isIPad,b as isIPhone,g as isIos,nt as isLeftClick,a as isMac,ot as isModifiedEvent,$ as isMouseEvent,H as isNumber,l as isObject,et as isRightClick,W as isSafari,J as isString,tt as isTouchEvent,q as isWebkit,f as last,m as merge,M as next,T as nextIndex,C as noop,S as pipe,k as prev,y as prevIndex,I as remove,d as removeAt,F as runIfFn,Z as supportsMouseEvent,X as supportsPointerEvent,Y as supportsTouchEvent,v as toArray,V as uuid,it as warn};
2
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1,7 @@
1
+ {
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 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) && \"button\" in v\nexport const isTouchEvent = (v: any): v is TouchEvent => isObject(v) && \"touches\" in v\nexport const isLeftClick = (v: MouseEvent | PointerEvent) => v.button === 0\nexport const isRightClick = (v: MouseEvent | PointerEvent) => v.button === 2\nexport const isModifiedEvent = (v: MouseEvent | PointerEvent | KeyboardEvent) =>\n v.ctrlKey || v.altKey || v.metaKey || v.shiftKey\nexport const isCtrlKey = (v: KeyboardEvent) => (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": "AAAO,WAAoB,EAAoC,CAC7D,MAAK,GACE,MAAM,QAAQ,GAAK,EAAI,CAAC,GADhB,GAIV,GAAM,GAAa,AAAC,GAAmB,MAAM,KAAK,MAAM,GAAQ,QAE1D,EAAQ,AAAI,GAA0B,EAAE,GAExC,EAAO,AAAI,GAA0B,EAAE,EAAE,OAAS,GAElD,EAAU,AAAI,GAAoB,EAAE,SAAW,EAE/C,EAAM,CAAI,EAAQ,IAAoB,EAAE,QAAQ,KAAO,GAEvD,EAAM,CAAI,KAAW,IAAoB,EAAE,OAAO,GAElD,EAAS,CAAI,EAAQ,IAAiB,EAAS,EAAG,EAAE,QAAQ,IAE5D,EAAW,CAAI,EAAQ,IAC9B,GAAI,IAAI,EAAE,OAAO,EAAG,GACjB,GAGF,WAAkB,EAAa,CACpC,KAAO,EAAE,OAAS,GAAG,EAAE,MACvB,MAAO,GAQF,WAAsB,EAAQ,EAAa,EAAqB,GAAY,CACjF,GAAM,CAAE,OAAO,EAAG,OAAO,IAAS,EAC5B,EAAO,EAAM,EACb,EAAM,EAAE,OACR,EAAO,EAAM,EACnB,MAAI,KAAQ,GAAW,EAAO,EAAI,EAAI,EAClC,EAAO,EAAU,EAAO,EAAO,EAC/B,GAAQ,EAAY,EAAO,EAAI,EAAM,EAAM,EAAM,EAC9C,EAGF,WAAiB,EAAQ,EAAa,EAAqB,GAAmB,CACnF,MAAO,GAAE,EAAU,EAAG,EAAK,IAGtB,WAAsB,EAAQ,EAAa,EAAqB,GAAY,CACjF,GAAM,CAAE,OAAO,EAAG,OAAO,IAAS,EAClC,MAAO,GAAU,EAAG,EAAK,CAAE,KAAM,CAAC,EAAM,SAGnC,WAAiB,EAAQ,EAAe,EAAqB,GAAmB,CACrF,MAAO,GAAE,EAAU,EAAG,EAAO,IAGxB,GAAM,GAAQ,CAAI,EAAQ,IAAwB,CACvD,GAAM,GAAa,GACnB,MAAO,GAAE,OAAO,CAAC,EAAM,EAAO,IAAU,CA5D1C,MA6DI,MAAI,GAAQ,IAAS,EAAG,EAAK,KAAK,CAAC,IAC9B,KAAK,KAAL,QAAY,KAAK,GACf,GACN,IChEE,GAAM,GAAU,CACrB,KACG,IAC+E,CAClF,GAAM,GAAM,MAAO,IAAM,WAAa,EAAE,GAAG,GAAK,EAChD,MAAO,WAAO,QAGH,EAAO,AAAI,GAAkB,EAE7B,EAAO,IAAM,GAEb,EACX,IAAO,IACP,AAAC,GACC,EAAI,OAAO,CAAC,EAAG,IAAM,EAAE,GAAI,GAElB,EACX,IAAqC,IACrC,IAAI,IAAqB,CACvB,EAAI,QAAQ,SAAU,EAAI,CACxB,WAAK,GAAG,MAID,EAAsB,KAAM,CACvC,GAAI,GAAK,EACT,MAAO,IACL,KACO,EAAG,SAAS,SAIhB,WAAqB,EAAW,EAAiB,CACtD,GAAM,MAAO,IAAU,SAAW,MAAO,GACzC,GAAM,GAAS,AAAE,MAAO,IAAW,SAAY,GAAK,OAAO,OAAO,GAAI,GACtE,OAAW,KAAO,QAAO,KAAK,GAAQ,CACpC,GAAM,GAAQ,EAAM,GACd,EAAM,EAAO,GACnB,AAAI,IAAU,KAAM,MAAO,GAAO,GAC7B,AAAI,MAAM,QAAQ,IAAU,MAAM,QAAQ,GAAM,EAAO,GAAQ,IAAO,IAAI,OAAO,GAAS,IAC1F,EAAO,GAAO,EAAM,EAAK,GAEhC,MAAO,GC3CT,GAAM,GAAW,AAAC,GAAc,KAAW,EAAE,KAAK,UAAU,UACtD,EAAK,AAAC,GAAc,KAAW,EAAE,KAAK,UAAU,WAEzC,EAAQ,IAAM,GACd,EAAQ,IAAS,MAAO,SAAW,YACnC,EAAQ,IAAM,EAAS,QACvB,EAAW,IAAM,EAAS,WAC1B,EAAS,IAAM,EAAS,UAAa,KAAW,UAAU,eAAiB,EAC3E,EAAQ,IAAM,KAAc,IAC5B,EAAW,IAAM,EAAG,kCACpB,EAAY,IAAM,EAAG,YACrB,EAAW,IAAM,EAAG,YAAc,CAAC,EAAG,UACtC,EAAU,IAAM,KAAW,IAE3B,EAAU,AAAC,GAAuB,MAAM,QAAQ,GAChD,EAAY,AAAC,GAAyB,IAAM,IAAQ,IAAM,GAC1D,EAAW,AAAC,GAAqC,CAAE,IAAK,MAAQ,MAAO,IAAM,UAAY,EAAQ,IACjG,EAAW,AAAC,GAAwB,MAAO,IAAM,UAAY,CAAC,OAAO,MAAM,GAC3E,EAAW,AAAC,GAAwB,MAAO,IAAM,SACjD,EAAa,AAAC,GAA0B,MAAO,IAAM,WAErD,EAAuB,IAAM,KAAW,OAAO,gBAAkB,KACjE,EAAqB,IAAM,KAAW,OAAO,eAAiB,KAC9D,EAAqB,IAAM,KAAW,OAAO,cAAgB,KAE7D,EAAe,AAAC,GAA4B,EAAS,IAAM,UAAY,GACvE,GAAe,AAAC,GAA4B,EAAS,IAAM,WAAa,GACxE,GAAc,AAAC,GAAiC,EAAE,SAAW,EAC7D,GAAe,AAAC,GAAiC,EAAE,SAAW,EAC9D,GAAkB,AAAC,GAC9B,EAAE,SAAW,EAAE,QAAU,EAAE,SAAW,EAAE,SAC7B,GAAY,AAAC,GAAsB,IAAU,EAAE,SAAW,CAAC,EAAE,QAAU,EAAE,SAAW,CAAC,EAAE,QC7B7F,eAAiB,EAAgB,CACtC,GAAM,GAAI,EAAE,SAAW,EAAI,EAAE,GAAK,EAAE,GAC9B,EAAI,EAAE,SAAW,EAAI,EAAE,GAAK,GAQ7B,eAAsB,EAAgB,CAC3C,GAAM,GAAI,EAAE,SAAW,EAAI,EAAE,GAAK,EAAE,GAC9B,EAAI,EAAE,SAAW,EAAI,EAAE,GAAK",
6
+ "names": []
7
+ }
@@ -0,0 +1,4 @@
1
+ export declare function warn(m: string): void;
2
+ export declare function warn(c: boolean, m: string): void;
3
+ export declare function invariant(m: string): void;
4
+ export declare function invariant(c: boolean, m: string): void;
package/package.json ADDED
@@ -0,0 +1,27 @@
1
+ {
2
+ "name": "@zag-js/utils",
3
+ "version": "0.0.0-dev-20220406144843",
4
+ "description": "",
5
+ "keywords": [
6
+ "js",
7
+ "utils",
8
+ "core"
9
+ ],
10
+ "author": "Segun Adebayo <sage@adebayosegun.com>",
11
+ "homepage": "https://github.com/chakra-ui/ui-machines#readme",
12
+ "license": "MIT",
13
+ "main": "dist/index.js",
14
+ "module": "dist/index.mjs",
15
+ "types": "dist/index.d.ts",
16
+ "repository": "https://github.com/chakra-ui/ui-machines/tree/main/packages/utilities/core",
17
+ "sideEffects": false,
18
+ "files": [
19
+ "dist"
20
+ ],
21
+ "publishConfig": {
22
+ "access": "public"
23
+ },
24
+ "bugs": {
25
+ "url": "https://github.com/chakra-ui/ui-machines/issues"
26
+ }
27
+ }