@zag-js/utils 0.49.0 → 0.51.0

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/index.js CHANGED
@@ -1,318 +1,2 @@
1
- "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __export = (target, all) => {
7
- for (var name in all)
8
- __defProp(target, name, { get: all[name], enumerable: true });
9
- };
10
- var __copyProps = (to, from, except, desc) => {
11
- if (from && typeof from === "object" || typeof from === "function") {
12
- for (let key of __getOwnPropNames(from))
13
- if (!__hasOwnProp.call(to, key) && key !== except)
14
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
- }
16
- return to;
17
- };
18
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
-
20
- // src/index.ts
21
- var src_exports = {};
22
- __export(src_exports, {
23
- add: () => add,
24
- addOrRemove: () => addOrRemove,
25
- callAll: () => callAll,
26
- cast: () => cast,
27
- chunk: () => chunk,
28
- clear: () => clear,
29
- compact: () => compact,
30
- createSplitProps: () => createSplitProps,
31
- first: () => first,
32
- fromLength: () => fromLength,
33
- has: () => has,
34
- hasProp: () => hasProp,
35
- invariant: () => invariant,
36
- isArray: () => isArray,
37
- isBoolean: () => isBoolean,
38
- isDev: () => isDev,
39
- isEmpty: () => isEmpty,
40
- isEqual: () => isEqual,
41
- isFunction: () => isFunction,
42
- isNull: () => isNull,
43
- isNumber: () => isNumber,
44
- isObject: () => isObject,
45
- isString: () => isString,
46
- json: () => json,
47
- last: () => last,
48
- match: () => match,
49
- next: () => next,
50
- nextIndex: () => nextIndex,
51
- noop: () => noop,
52
- pick: () => pick,
53
- prev: () => prev,
54
- prevIndex: () => prevIndex,
55
- remove: () => remove,
56
- removeAt: () => removeAt,
57
- runIfFn: () => runIfFn,
58
- splitProps: () => splitProps,
59
- toArray: () => toArray,
60
- tryCatch: () => tryCatch,
61
- uuid: () => uuid,
62
- warn: () => warn
63
- });
64
- module.exports = __toCommonJS(src_exports);
65
-
66
- // src/array.ts
67
- function toArray(v) {
68
- if (!v)
69
- return [];
70
- return Array.isArray(v) ? v : [v];
71
- }
72
- var fromLength = (length) => Array.from(Array(length).keys());
73
- var first = (v) => v[0];
74
- var last = (v) => v[v.length - 1];
75
- var isEmpty = (v) => v.length === 0;
76
- var has = (v, t) => v.indexOf(t) !== -1;
77
- var add = (v, ...items) => v.concat(items);
78
- var remove = (v, item) => v.filter((t) => t !== item);
79
- var removeAt = (v, i) => v.filter((_, idx) => idx !== i);
80
- var addOrRemove = (v, item) => {
81
- if (has(v, item))
82
- return remove(v, item);
83
- return add(v, item);
84
- };
85
- function clear(v) {
86
- while (v.length > 0)
87
- v.pop();
88
- return v;
89
- }
90
- function nextIndex(v, idx, opts = {}) {
91
- const { step = 1, loop = true } = opts;
92
- const next2 = idx + step;
93
- const len = v.length;
94
- const last2 = len - 1;
95
- if (idx === -1)
96
- return step > 0 ? 0 : last2;
97
- if (next2 < 0)
98
- return loop ? last2 : 0;
99
- if (next2 >= len)
100
- return loop ? 0 : idx > len ? len : idx;
101
- return next2;
102
- }
103
- function next(v, idx, opts = {}) {
104
- return v[nextIndex(v, idx, opts)];
105
- }
106
- function prevIndex(v, idx, opts = {}) {
107
- const { step = 1, loop = true } = opts;
108
- return nextIndex(v, idx, { step: -step, loop });
109
- }
110
- function prev(v, index, opts = {}) {
111
- return v[prevIndex(v, index, opts)];
112
- }
113
- var chunk = (v, size) => {
114
- const res = [];
115
- return v.reduce((rows, value, index) => {
116
- if (index % size === 0)
117
- rows.push([value]);
118
- else
119
- last(rows)?.push(value);
120
- return rows;
121
- }, res);
122
- };
123
-
124
- // src/equal.ts
125
- var isArrayLike = (value) => value?.constructor.name === "Array";
126
- var isEqual = (a, b) => {
127
- if (Object.is(a, b))
128
- return true;
129
- if (a == null && b != null || a != null && b == null)
130
- return false;
131
- if (typeof a?.isEqual === "function" && typeof b?.isEqual === "function") {
132
- return a.isEqual(b);
133
- }
134
- if (typeof a === "function" && typeof b === "function") {
135
- return a.toString() === b.toString();
136
- }
137
- if (isArrayLike(a) && isArrayLike(b)) {
138
- return Array.from(a).toString() === Array.from(b).toString();
139
- }
140
- if (!(typeof a === "object") || !(typeof b === "object"))
141
- return false;
142
- const keys = Object.keys(b ?? /* @__PURE__ */ Object.create(null));
143
- const length = keys.length;
144
- for (let i = 0; i < length; i++) {
145
- const hasKey = Reflect.has(a, keys[i]);
146
- if (!hasKey)
147
- return false;
148
- }
149
- for (let i = 0; i < length; i++) {
150
- const key = keys[i];
151
- if (!isEqual(a[key], b[key]))
152
- return false;
153
- }
154
- return true;
155
- };
156
-
157
- // src/functions.ts
158
- var runIfFn = (v, ...a) => {
159
- const res = typeof v === "function" ? v(...a) : v;
160
- return res ?? void 0;
161
- };
162
- var cast = (v) => v;
163
- var noop = () => {
164
- };
165
- var callAll = (...fns) => (...a) => {
166
- fns.forEach(function(fn) {
167
- fn?.(...a);
168
- });
169
- };
170
- var uuid = /* @__PURE__ */ (() => {
171
- let id = 0;
172
- return () => {
173
- id++;
174
- return id.toString(36);
175
- };
176
- })();
177
- function match(key, record, ...args) {
178
- if (key in record) {
179
- const fn = record[key];
180
- return typeof fn === "function" ? fn(...args) : fn;
181
- }
182
- const error = new Error(`No matching key: ${JSON.stringify(key)} in ${JSON.stringify(Object.keys(record))}`);
183
- Error.captureStackTrace?.(error, match);
184
- throw error;
185
- }
186
- var tryCatch = (fn, fallback) => {
187
- try {
188
- return fn();
189
- } catch (error) {
190
- if (error instanceof Error) {
191
- Error.captureStackTrace?.(error, tryCatch);
192
- }
193
- return fallback?.();
194
- }
195
- };
196
-
197
- // src/guard.ts
198
- var isDev = () => process.env.NODE_ENV !== "production";
199
- var isArray = (v) => Array.isArray(v);
200
- var isBoolean = (v) => v === true || v === false;
201
- var isObject = (v) => !(v == null || typeof v !== "object" || isArray(v));
202
- var isNumber = (v) => typeof v === "number" && !Number.isNaN(v);
203
- var isString = (v) => typeof v === "string";
204
- var isFunction = (v) => typeof v === "function";
205
- var isNull = (v) => v == null;
206
- var hasProp = (obj, prop) => Object.prototype.hasOwnProperty.call(obj, prop);
207
-
208
- // src/object.ts
209
- function compact(obj) {
210
- if (!isPlainObject(obj) || obj === void 0) {
211
- return obj;
212
- }
213
- const keys = Reflect.ownKeys(obj).filter((key) => typeof key === "string");
214
- const filtered = {};
215
- for (const key of keys) {
216
- const value = obj[key];
217
- if (value !== void 0) {
218
- filtered[key] = compact(value);
219
- }
220
- }
221
- return filtered;
222
- }
223
- function json(value) {
224
- return JSON.parse(JSON.stringify(value));
225
- }
226
- var isPlainObject = (value) => {
227
- return value && typeof value === "object" && value.constructor === Object;
228
- };
229
- function pick(obj, keys) {
230
- const filtered = {};
231
- for (const key of keys) {
232
- const value = obj[key];
233
- if (value !== void 0) {
234
- filtered[key] = value;
235
- }
236
- }
237
- return filtered;
238
- }
239
-
240
- // src/split-props.ts
241
- function splitProps(props, keys) {
242
- const rest = {};
243
- const result = {};
244
- const keySet = new Set(keys);
245
- for (const key in props) {
246
- if (keySet.has(key)) {
247
- result[key] = props[key];
248
- } else {
249
- rest[key] = props[key];
250
- }
251
- }
252
- return [result, rest];
253
- }
254
- var createSplitProps = (keys) => {
255
- return function split(props) {
256
- return splitProps(props, keys);
257
- };
258
- };
259
-
260
- // src/warning.ts
261
- function warn(...a) {
262
- const m = a.length === 1 ? a[0] : a[1];
263
- const c = a.length === 2 ? a[0] : true;
264
- if (c && process.env.NODE_ENV !== "production") {
265
- console.warn(m);
266
- }
267
- }
268
- function invariant(...a) {
269
- const m = a.length === 1 ? a[0] : a[1];
270
- const c = a.length === 2 ? a[0] : true;
271
- if (c && process.env.NODE_ENV !== "production") {
272
- throw new Error(m);
273
- }
274
- }
275
- // Annotate the CommonJS export names for ESM import in node:
276
- 0 && (module.exports = {
277
- add,
278
- addOrRemove,
279
- callAll,
280
- cast,
281
- chunk,
282
- clear,
283
- compact,
284
- createSplitProps,
285
- first,
286
- fromLength,
287
- has,
288
- hasProp,
289
- invariant,
290
- isArray,
291
- isBoolean,
292
- isDev,
293
- isEmpty,
294
- isEqual,
295
- isFunction,
296
- isNull,
297
- isNumber,
298
- isObject,
299
- isString,
300
- json,
301
- last,
302
- match,
303
- next,
304
- nextIndex,
305
- noop,
306
- pick,
307
- prev,
308
- prevIndex,
309
- remove,
310
- removeAt,
311
- runIfFn,
312
- splitProps,
313
- toArray,
314
- tryCatch,
315
- uuid,
316
- warn
317
- });
1
+ "use strict";var __defProp=Object.defineProperty;var __getOwnPropDesc=Object.getOwnPropertyDescriptor;var __getOwnPropNames=Object.getOwnPropertyNames;var __hasOwnProp=Object.prototype.hasOwnProperty;var __export=(target,all)=>{for(var name in all)__defProp(target,name,{get:all[name],enumerable:true})};var __copyProps=(to,from,except,desc)=>{if(from&&typeof from==="object"||typeof from==="function"){for(let key of __getOwnPropNames(from))if(!__hasOwnProp.call(to,key)&&key!==except)__defProp(to,key,{get:()=>from[key],enumerable:!(desc=__getOwnPropDesc(from,key))||desc.enumerable})}return to};var __toCommonJS=mod=>__copyProps(__defProp({},"__esModule",{value:true}),mod);var src_exports={};__export(src_exports,{add:()=>add,addOrRemove:()=>addOrRemove,callAll:()=>callAll,cast:()=>cast,chunk:()=>chunk,clear:()=>clear,compact:()=>compact,createSplitProps:()=>createSplitProps,first:()=>first,fromLength:()=>fromLength,has:()=>has,hasProp:()=>hasProp,invariant:()=>invariant,isArray:()=>isArray,isBoolean:()=>isBoolean,isDev:()=>isDev,isEmpty:()=>isEmpty,isEqual:()=>isEqual,isFunction:()=>isFunction,isNull:()=>isNull,isNumber:()=>isNumber,isObject:()=>isObject,isString:()=>isString,json:()=>json,last:()=>last,match:()=>match,next:()=>next,nextIndex:()=>nextIndex,noop:()=>noop,pick:()=>pick,prev:()=>prev,prevIndex:()=>prevIndex,remove:()=>remove,removeAt:()=>removeAt,runIfFn:()=>runIfFn,splitProps:()=>splitProps,toArray:()=>toArray,tryCatch:()=>tryCatch,uuid:()=>uuid,warn:()=>warn});module.exports=__toCommonJS(src_exports);function toArray(v){if(!v)return[];return Array.isArray(v)?v:[v]}var fromLength=length=>Array.from(Array(length).keys());var first=v=>v[0];var last=v=>v[v.length-1];var isEmpty=v=>v.length===0;var has=(v,t)=>v.indexOf(t)!==-1;var add=(v,...items)=>v.concat(items);var remove=(v,item)=>v.filter(t=>t!==item);var removeAt=(v,i)=>v.filter((_,idx)=>idx!==i);var addOrRemove=(v,item)=>{if(has(v,item))return remove(v,item);return add(v,item)};function clear(v){while(v.length>0)v.pop();return v}function nextIndex(v,idx,opts={}){const{step=1,loop=true}=opts;const next2=idx+step;const len=v.length;const last2=len-1;if(idx===-1)return step>0?0:last2;if(next2<0)return loop?last2:0;if(next2>=len)return loop?0:idx>len?len:idx;return next2}function next(v,idx,opts={}){return v[nextIndex(v,idx,opts)]}function prevIndex(v,idx,opts={}){const{step=1,loop=true}=opts;return nextIndex(v,idx,{step:-step,loop})}function prev(v,index,opts={}){return v[prevIndex(v,index,opts)]}var chunk=(v,size)=>{const res=[];return v.reduce((rows,value,index)=>{if(index%size===0)rows.push([value]);else last(rows)?.push(value);return rows},res)};var isArrayLike=value=>value?.constructor.name==="Array";var isEqual=(a,b)=>{if(Object.is(a,b))return true;if(a==null&&b!=null||a!=null&&b==null)return false;if(typeof a?.isEqual==="function"&&typeof b?.isEqual==="function"){return a.isEqual(b)}if(typeof a==="function"&&typeof b==="function"){return a.toString()===b.toString()}if(isArrayLike(a)&&isArrayLike(b)){return Array.from(a).toString()===Array.from(b).toString()}if(!(typeof a==="object")||!(typeof b==="object"))return false;const keys=Object.keys(b??Object.create(null));const length=keys.length;for(let i=0;i<length;i++){const hasKey=Reflect.has(a,keys[i]);if(!hasKey)return false}for(let i=0;i<length;i++){const key=keys[i];if(!isEqual(a[key],b[key]))return false}return true};var runIfFn=(v,...a)=>{const res=typeof v==="function"?v(...a):v;return res??void 0};var cast=v=>v;var noop=()=>{};var callAll=(...fns)=>(...a)=>{fns.forEach(function(fn){fn?.(...a)})};var uuid=(()=>{let id=0;return()=>{id++;return id.toString(36)}})();function match(key,record,...args){if(key in record){const fn=record[key];return typeof fn==="function"?fn(...args):fn}const error=new Error(`No matching key: ${JSON.stringify(key)} in ${JSON.stringify(Object.keys(record))}`);Error.captureStackTrace?.(error,match);throw error}var tryCatch=(fn,fallback)=>{try{return fn()}catch(error){if(error instanceof Error){Error.captureStackTrace?.(error,tryCatch)}return fallback?.()}};var isDev=()=>process.env.NODE_ENV!=="production";var isArray=v=>Array.isArray(v);var isBoolean=v=>v===true||v===false;var isObject=v=>!(v==null||typeof v!=="object"||isArray(v));var isNumber=v=>typeof v==="number"&&!Number.isNaN(v);var isString=v=>typeof v==="string";var isFunction=v=>typeof v==="function";var isNull=v=>v==null;var hasProp=(obj,prop)=>Object.prototype.hasOwnProperty.call(obj,prop);function compact(obj){if(!isPlainObject(obj)||obj===void 0){return obj}const keys=Reflect.ownKeys(obj).filter(key=>typeof key==="string");const filtered={};for(const key of keys){const value=obj[key];if(value!==void 0){filtered[key]=compact(value)}}return filtered}function json(value){return JSON.parse(JSON.stringify(value))}var isPlainObject=value=>{return value&&typeof value==="object"&&value.constructor===Object};function pick(obj,keys){const filtered={};for(const key of keys){const value=obj[key];if(value!==void 0){filtered[key]=value}}return filtered}function splitProps(props,keys){const rest={};const result={};const keySet=new Set(keys);for(const key in props){if(keySet.has(key)){result[key]=props[key]}else{rest[key]=props[key]}}return[result,rest]}var createSplitProps=keys=>{return function split(props){return splitProps(props,keys)}};function warn(...a){const m=a.length===1?a[0]:a[1];const c=a.length===2?a[0]:true;if(c&&process.env.NODE_ENV!=="production"){console.warn(m)}}function invariant(...a){const m=a.length===1?a[0]:a[1];const c=a.length===2?a[0]:true;if(c&&process.env.NODE_ENV!=="production"){throw new Error(m)}}0&&(module.exports={add,addOrRemove,callAll,cast,chunk,clear,compact,createSplitProps,first,fromLength,has,hasProp,invariant,isArray,isBoolean,isDev,isEmpty,isEqual,isFunction,isNull,isNumber,isObject,isString,json,last,match,next,nextIndex,noop,pick,prev,prevIndex,remove,removeAt,runIfFn,splitProps,toArray,tryCatch,uuid,warn});
318
2
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/array.ts","../src/equal.ts","../src/functions.ts","../src/guard.ts","../src/object.ts","../src/split-props.ts","../src/warning.ts"],"sourcesContent":["export * from \"./array\"\nexport * from \"./equal\"\nexport * from \"./functions\"\nexport * from \"./guard\"\nexport * from \"./object\"\nexport * from \"./split-props\"\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[] => v.filter((t) => t !== item)\n\nexport const removeAt = <T>(v: T[], i: number): T[] => v.filter((_, idx) => idx !== i)\n\nexport const addOrRemove = <T>(v: T[], item: T): T[] => {\n if (has(v, item)) return remove(v, item)\n return add(v, item)\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","const isArrayLike = (value: any) => value?.constructor.name === \"Array\"\n\nexport const isEqual = (a: any, b: any): boolean => {\n if (Object.is(a, b)) return true\n\n if ((a == null && b != null) || (a != null && b == null)) return false\n\n if (typeof a?.isEqual === \"function\" && typeof b?.isEqual === \"function\") {\n return a.isEqual(b)\n }\n\n if (typeof a === \"function\" && typeof b === \"function\") {\n return a.toString() === b.toString()\n }\n\n if (isArrayLike(a) && isArrayLike(b)) {\n return Array.from(a).toString() === Array.from(b).toString()\n }\n\n if (!(typeof a === \"object\") || !(typeof b === \"object\")) return false\n\n const keys = Object.keys(b ?? Object.create(null))\n const length = keys.length\n\n for (let i = 0; i < length; i++) {\n const hasKey = Reflect.has(a, keys[i])\n if (!hasKey) return false\n }\n\n for (let i = 0; i < length; i++) {\n const key = keys[i]\n if (!isEqual(a[key], b[key])) return false\n }\n\n return true\n}\n","export type MaybeFunction<T> = T | (() => T)\n\nexport type Nullable<T> = T | null | undefined\n\nexport 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 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 match<V extends string | number = string, R = unknown>(\n key: V,\n record: Record<V, R | ((...args: any[]) => R)>,\n ...args: any[]\n): R {\n if (key in record) {\n const fn = record[key]\n return typeof fn === \"function\" ? fn(...args) : fn\n }\n\n const error = new Error(`No matching key: ${JSON.stringify(key)} in ${JSON.stringify(Object.keys(record))}`)\n Error.captureStackTrace?.(error, match)\n\n throw error\n}\n\nexport const tryCatch = <R>(fn: () => R, fallback: () => R) => {\n try {\n return fn()\n } catch (error) {\n if (error instanceof Error) {\n Error.captureStackTrace?.(error, tryCatch)\n }\n return fallback?.()\n }\n}\n","export const isDev = () => process.env.NODE_ENV !== \"production\"\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\"\nexport const isNull = (v: any): v is null | undefined => v == null\n\nexport const hasProp = <T extends string>(obj: any, prop: T): obj is Record<T, any> =>\n Object.prototype.hasOwnProperty.call(obj, prop)\n","export function compact<T extends Record<string, unknown> | undefined>(obj: T): T {\n if (!isPlainObject(obj) || obj === undefined) {\n return obj\n }\n\n const keys = Reflect.ownKeys(obj).filter((key) => typeof key === \"string\")\n const filtered: Partial<T> = {}\n for (const key of keys) {\n const value = (obj as any)[key]\n if (value !== undefined) {\n filtered[key as keyof T] = compact(value)\n }\n }\n return filtered as T\n}\n\nexport function json(value: any) {\n return JSON.parse(JSON.stringify(value))\n}\n\nconst isPlainObject = (value: any) => {\n return value && typeof value === \"object\" && value.constructor === Object\n}\n\nexport function pick<T extends Record<string, any>, K extends keyof T>(obj: T, keys: K[]): Pick<T, K> {\n const filtered: Partial<T> = {}\n\n for (const key of keys) {\n const value = obj[key]\n if (value !== undefined) {\n filtered[key] = value\n }\n }\n\n return filtered as any\n}\n","type Dict = Record<string, any>\n\nexport function splitProps<T extends Dict>(props: T, keys: (keyof T)[]) {\n const rest: Dict = {}\n const result: Dict = {}\n\n const keySet = new Set(keys)\n\n for (const key in props) {\n if (keySet.has(key)) {\n result[key] = props[key]\n } else {\n rest[key] = props[key]\n }\n }\n\n return [result, rest]\n}\n\nexport const createSplitProps = <T extends Dict>(keys: (keyof T)[]) => {\n return function split<Props extends T>(props: Props) {\n return splitProps(props, keys) as [T, Omit<Props, keyof T>]\n }\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"],"mappings":"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","names":["next","last"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/array.ts","../src/equal.ts","../src/functions.ts","../src/guard.ts","../src/object.ts","../src/split-props.ts","../src/warning.ts"],"sourcesContent":["export * from \"./array\"\nexport * from \"./equal\"\nexport * from \"./functions\"\nexport * from \"./guard\"\nexport * from \"./object\"\nexport * from \"./split-props\"\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[] => v.filter((t) => t !== item)\n\nexport const removeAt = <T>(v: T[], i: number): T[] => v.filter((_, idx) => idx !== i)\n\nexport const addOrRemove = <T>(v: T[], item: T): T[] => {\n if (has(v, item)) return remove(v, item)\n return add(v, item)\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","const isArrayLike = (value: any) => value?.constructor.name === \"Array\"\n\nexport const isEqual = (a: any, b: any): boolean => {\n if (Object.is(a, b)) return true\n\n if ((a == null && b != null) || (a != null && b == null)) return false\n\n if (typeof a?.isEqual === \"function\" && typeof b?.isEqual === \"function\") {\n return a.isEqual(b)\n }\n\n if (typeof a === \"function\" && typeof b === \"function\") {\n return a.toString() === b.toString()\n }\n\n if (isArrayLike(a) && isArrayLike(b)) {\n return Array.from(a).toString() === Array.from(b).toString()\n }\n\n if (!(typeof a === \"object\") || !(typeof b === \"object\")) return false\n\n const keys = Object.keys(b ?? Object.create(null))\n const length = keys.length\n\n for (let i = 0; i < length; i++) {\n const hasKey = Reflect.has(a, keys[i])\n if (!hasKey) return false\n }\n\n for (let i = 0; i < length; i++) {\n const key = keys[i]\n if (!isEqual(a[key], b[key])) return false\n }\n\n return true\n}\n","export type MaybeFunction<T> = T | (() => T)\n\nexport type Nullable<T> = T | null | undefined\n\nexport 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 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 match<V extends string | number = string, R = unknown>(\n key: V,\n record: Record<V, R | ((...args: any[]) => R)>,\n ...args: any[]\n): R {\n if (key in record) {\n const fn = record[key]\n return typeof fn === \"function\" ? fn(...args) : fn\n }\n\n const error = new Error(`No matching key: ${JSON.stringify(key)} in ${JSON.stringify(Object.keys(record))}`)\n Error.captureStackTrace?.(error, match)\n\n throw error\n}\n\nexport const tryCatch = <R>(fn: () => R, fallback: () => R) => {\n try {\n return fn()\n } catch (error) {\n if (error instanceof Error) {\n Error.captureStackTrace?.(error, tryCatch)\n }\n return fallback?.()\n }\n}\n","export const isDev = () => process.env.NODE_ENV !== \"production\"\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\"\nexport const isNull = (v: any): v is null | undefined => v == null\n\nexport const hasProp = <T extends string>(obj: any, prop: T): obj is Record<T, any> =>\n Object.prototype.hasOwnProperty.call(obj, prop)\n","export function compact<T extends Record<string, unknown> | undefined>(obj: T): T {\n if (!isPlainObject(obj) || obj === undefined) {\n return obj\n }\n\n const keys = Reflect.ownKeys(obj).filter((key) => typeof key === \"string\")\n const filtered: Partial<T> = {}\n for (const key of keys) {\n const value = (obj as any)[key]\n if (value !== undefined) {\n filtered[key as keyof T] = compact(value)\n }\n }\n return filtered as T\n}\n\nexport function json(value: any) {\n return JSON.parse(JSON.stringify(value))\n}\n\nconst isPlainObject = (value: any) => {\n return value && typeof value === \"object\" && value.constructor === Object\n}\n\nexport function pick<T extends Record<string, any>, K extends keyof T>(obj: T, keys: K[]): Pick<T, K> {\n const filtered: Partial<T> = {}\n\n for (const key of keys) {\n const value = obj[key]\n if (value !== undefined) {\n filtered[key] = value\n }\n }\n\n return filtered as any\n}\n","type Dict = Record<string, any>\n\nexport function splitProps<T extends Dict>(props: T, keys: (keyof T)[]) {\n const rest: Dict = {}\n const result: Dict = {}\n\n const keySet = new Set(keys)\n\n for (const key in props) {\n if (keySet.has(key)) {\n result[key] = props[key]\n } else {\n rest[key] = props[key]\n }\n }\n\n return [result, rest]\n}\n\nexport const createSplitProps = <T extends Dict>(keys: (keyof T)[]) => {\n return function split<Props extends T>(props: Props) {\n return splitProps(props, keys) as [T, Omit<Props, keyof T>]\n }\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"],"mappings":"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","names":["next","last"]}
package/dist/index.mjs CHANGED
@@ -1,252 +1,2 @@
1
- // src/array.ts
2
- function toArray(v) {
3
- if (!v)
4
- return [];
5
- return Array.isArray(v) ? v : [v];
6
- }
7
- var fromLength = (length) => Array.from(Array(length).keys());
8
- var first = (v) => v[0];
9
- var last = (v) => v[v.length - 1];
10
- var isEmpty = (v) => v.length === 0;
11
- var has = (v, t) => v.indexOf(t) !== -1;
12
- var add = (v, ...items) => v.concat(items);
13
- var remove = (v, item) => v.filter((t) => t !== item);
14
- var removeAt = (v, i) => v.filter((_, idx) => idx !== i);
15
- var addOrRemove = (v, item) => {
16
- if (has(v, item))
17
- return remove(v, item);
18
- return add(v, item);
19
- };
20
- function clear(v) {
21
- while (v.length > 0)
22
- v.pop();
23
- return v;
24
- }
25
- function nextIndex(v, idx, opts = {}) {
26
- const { step = 1, loop = true } = opts;
27
- const next2 = idx + step;
28
- const len = v.length;
29
- const last2 = len - 1;
30
- if (idx === -1)
31
- return step > 0 ? 0 : last2;
32
- if (next2 < 0)
33
- return loop ? last2 : 0;
34
- if (next2 >= len)
35
- return loop ? 0 : idx > len ? len : idx;
36
- return next2;
37
- }
38
- function next(v, idx, opts = {}) {
39
- return v[nextIndex(v, idx, opts)];
40
- }
41
- function prevIndex(v, idx, opts = {}) {
42
- const { step = 1, loop = true } = opts;
43
- return nextIndex(v, idx, { step: -step, loop });
44
- }
45
- function prev(v, index, opts = {}) {
46
- return v[prevIndex(v, index, opts)];
47
- }
48
- var chunk = (v, size) => {
49
- const res = [];
50
- return v.reduce((rows, value, index) => {
51
- if (index % size === 0)
52
- rows.push([value]);
53
- else
54
- last(rows)?.push(value);
55
- return rows;
56
- }, res);
57
- };
58
-
59
- // src/equal.ts
60
- var isArrayLike = (value) => value?.constructor.name === "Array";
61
- var isEqual = (a, b) => {
62
- if (Object.is(a, b))
63
- return true;
64
- if (a == null && b != null || a != null && b == null)
65
- return false;
66
- if (typeof a?.isEqual === "function" && typeof b?.isEqual === "function") {
67
- return a.isEqual(b);
68
- }
69
- if (typeof a === "function" && typeof b === "function") {
70
- return a.toString() === b.toString();
71
- }
72
- if (isArrayLike(a) && isArrayLike(b)) {
73
- return Array.from(a).toString() === Array.from(b).toString();
74
- }
75
- if (!(typeof a === "object") || !(typeof b === "object"))
76
- return false;
77
- const keys = Object.keys(b ?? /* @__PURE__ */ Object.create(null));
78
- const length = keys.length;
79
- for (let i = 0; i < length; i++) {
80
- const hasKey = Reflect.has(a, keys[i]);
81
- if (!hasKey)
82
- return false;
83
- }
84
- for (let i = 0; i < length; i++) {
85
- const key = keys[i];
86
- if (!isEqual(a[key], b[key]))
87
- return false;
88
- }
89
- return true;
90
- };
91
-
92
- // src/functions.ts
93
- var runIfFn = (v, ...a) => {
94
- const res = typeof v === "function" ? v(...a) : v;
95
- return res ?? void 0;
96
- };
97
- var cast = (v) => v;
98
- var noop = () => {
99
- };
100
- var callAll = (...fns) => (...a) => {
101
- fns.forEach(function(fn) {
102
- fn?.(...a);
103
- });
104
- };
105
- var uuid = /* @__PURE__ */ (() => {
106
- let id = 0;
107
- return () => {
108
- id++;
109
- return id.toString(36);
110
- };
111
- })();
112
- function match(key, record, ...args) {
113
- if (key in record) {
114
- const fn = record[key];
115
- return typeof fn === "function" ? fn(...args) : fn;
116
- }
117
- const error = new Error(`No matching key: ${JSON.stringify(key)} in ${JSON.stringify(Object.keys(record))}`);
118
- Error.captureStackTrace?.(error, match);
119
- throw error;
120
- }
121
- var tryCatch = (fn, fallback) => {
122
- try {
123
- return fn();
124
- } catch (error) {
125
- if (error instanceof Error) {
126
- Error.captureStackTrace?.(error, tryCatch);
127
- }
128
- return fallback?.();
129
- }
130
- };
131
-
132
- // src/guard.ts
133
- var isDev = () => process.env.NODE_ENV !== "production";
134
- var isArray = (v) => Array.isArray(v);
135
- var isBoolean = (v) => v === true || v === false;
136
- var isObject = (v) => !(v == null || typeof v !== "object" || isArray(v));
137
- var isNumber = (v) => typeof v === "number" && !Number.isNaN(v);
138
- var isString = (v) => typeof v === "string";
139
- var isFunction = (v) => typeof v === "function";
140
- var isNull = (v) => v == null;
141
- var hasProp = (obj, prop) => Object.prototype.hasOwnProperty.call(obj, prop);
142
-
143
- // src/object.ts
144
- function compact(obj) {
145
- if (!isPlainObject(obj) || obj === void 0) {
146
- return obj;
147
- }
148
- const keys = Reflect.ownKeys(obj).filter((key) => typeof key === "string");
149
- const filtered = {};
150
- for (const key of keys) {
151
- const value = obj[key];
152
- if (value !== void 0) {
153
- filtered[key] = compact(value);
154
- }
155
- }
156
- return filtered;
157
- }
158
- function json(value) {
159
- return JSON.parse(JSON.stringify(value));
160
- }
161
- var isPlainObject = (value) => {
162
- return value && typeof value === "object" && value.constructor === Object;
163
- };
164
- function pick(obj, keys) {
165
- const filtered = {};
166
- for (const key of keys) {
167
- const value = obj[key];
168
- if (value !== void 0) {
169
- filtered[key] = value;
170
- }
171
- }
172
- return filtered;
173
- }
174
-
175
- // src/split-props.ts
176
- function splitProps(props, keys) {
177
- const rest = {};
178
- const result = {};
179
- const keySet = new Set(keys);
180
- for (const key in props) {
181
- if (keySet.has(key)) {
182
- result[key] = props[key];
183
- } else {
184
- rest[key] = props[key];
185
- }
186
- }
187
- return [result, rest];
188
- }
189
- var createSplitProps = (keys) => {
190
- return function split(props) {
191
- return splitProps(props, keys);
192
- };
193
- };
194
-
195
- // src/warning.ts
196
- function warn(...a) {
197
- const m = a.length === 1 ? a[0] : a[1];
198
- const c = a.length === 2 ? a[0] : true;
199
- if (c && process.env.NODE_ENV !== "production") {
200
- console.warn(m);
201
- }
202
- }
203
- function invariant(...a) {
204
- const m = a.length === 1 ? a[0] : a[1];
205
- const c = a.length === 2 ? a[0] : true;
206
- if (c && process.env.NODE_ENV !== "production") {
207
- throw new Error(m);
208
- }
209
- }
210
- export {
211
- add,
212
- addOrRemove,
213
- callAll,
214
- cast,
215
- chunk,
216
- clear,
217
- compact,
218
- createSplitProps,
219
- first,
220
- fromLength,
221
- has,
222
- hasProp,
223
- invariant,
224
- isArray,
225
- isBoolean,
226
- isDev,
227
- isEmpty,
228
- isEqual,
229
- isFunction,
230
- isNull,
231
- isNumber,
232
- isObject,
233
- isString,
234
- json,
235
- last,
236
- match,
237
- next,
238
- nextIndex,
239
- noop,
240
- pick,
241
- prev,
242
- prevIndex,
243
- remove,
244
- removeAt,
245
- runIfFn,
246
- splitProps,
247
- toArray,
248
- tryCatch,
249
- uuid,
250
- warn
251
- };
1
+ function toArray(v){if(!v)return[];return Array.isArray(v)?v:[v]}var fromLength=length=>Array.from(Array(length).keys());var first=v=>v[0];var last=v=>v[v.length-1];var isEmpty=v=>v.length===0;var has=(v,t)=>v.indexOf(t)!==-1;var add=(v,...items)=>v.concat(items);var remove=(v,item)=>v.filter(t=>t!==item);var removeAt=(v,i)=>v.filter((_,idx)=>idx!==i);var addOrRemove=(v,item)=>{if(has(v,item))return remove(v,item);return add(v,item)};function clear(v){while(v.length>0)v.pop();return v}function nextIndex(v,idx,opts={}){const{step=1,loop=true}=opts;const next2=idx+step;const len=v.length;const last2=len-1;if(idx===-1)return step>0?0:last2;if(next2<0)return loop?last2:0;if(next2>=len)return loop?0:idx>len?len:idx;return next2}function next(v,idx,opts={}){return v[nextIndex(v,idx,opts)]}function prevIndex(v,idx,opts={}){const{step=1,loop=true}=opts;return nextIndex(v,idx,{step:-step,loop})}function prev(v,index,opts={}){return v[prevIndex(v,index,opts)]}var chunk=(v,size)=>{const res=[];return v.reduce((rows,value,index)=>{if(index%size===0)rows.push([value]);else last(rows)?.push(value);return rows},res)};var isArrayLike=value=>value?.constructor.name==="Array";var isEqual=(a,b)=>{if(Object.is(a,b))return true;if(a==null&&b!=null||a!=null&&b==null)return false;if(typeof a?.isEqual==="function"&&typeof b?.isEqual==="function"){return a.isEqual(b)}if(typeof a==="function"&&typeof b==="function"){return a.toString()===b.toString()}if(isArrayLike(a)&&isArrayLike(b)){return Array.from(a).toString()===Array.from(b).toString()}if(!(typeof a==="object")||!(typeof b==="object"))return false;const keys=Object.keys(b??Object.create(null));const length=keys.length;for(let i=0;i<length;i++){const hasKey=Reflect.has(a,keys[i]);if(!hasKey)return false}for(let i=0;i<length;i++){const key=keys[i];if(!isEqual(a[key],b[key]))return false}return true};var runIfFn=(v,...a)=>{const res=typeof v==="function"?v(...a):v;return res??void 0};var cast=v=>v;var noop=()=>{};var callAll=(...fns)=>(...a)=>{fns.forEach(function(fn){fn?.(...a)})};var uuid=(()=>{let id=0;return()=>{id++;return id.toString(36)}})();function match(key,record,...args){if(key in record){const fn=record[key];return typeof fn==="function"?fn(...args):fn}const error=new Error(`No matching key: ${JSON.stringify(key)} in ${JSON.stringify(Object.keys(record))}`);Error.captureStackTrace?.(error,match);throw error}var tryCatch=(fn,fallback)=>{try{return fn()}catch(error){if(error instanceof Error){Error.captureStackTrace?.(error,tryCatch)}return fallback?.()}};var isDev=()=>process.env.NODE_ENV!=="production";var isArray=v=>Array.isArray(v);var isBoolean=v=>v===true||v===false;var isObject=v=>!(v==null||typeof v!=="object"||isArray(v));var isNumber=v=>typeof v==="number"&&!Number.isNaN(v);var isString=v=>typeof v==="string";var isFunction=v=>typeof v==="function";var isNull=v=>v==null;var hasProp=(obj,prop)=>Object.prototype.hasOwnProperty.call(obj,prop);function compact(obj){if(!isPlainObject(obj)||obj===void 0){return obj}const keys=Reflect.ownKeys(obj).filter(key=>typeof key==="string");const filtered={};for(const key of keys){const value=obj[key];if(value!==void 0){filtered[key]=compact(value)}}return filtered}function json(value){return JSON.parse(JSON.stringify(value))}var isPlainObject=value=>{return value&&typeof value==="object"&&value.constructor===Object};function pick(obj,keys){const filtered={};for(const key of keys){const value=obj[key];if(value!==void 0){filtered[key]=value}}return filtered}function splitProps(props,keys){const rest={};const result={};const keySet=new Set(keys);for(const key in props){if(keySet.has(key)){result[key]=props[key]}else{rest[key]=props[key]}}return[result,rest]}var createSplitProps=keys=>{return function split(props){return splitProps(props,keys)}};function warn(...a){const m=a.length===1?a[0]:a[1];const c=a.length===2?a[0]:true;if(c&&process.env.NODE_ENV!=="production"){console.warn(m)}}function invariant(...a){const m=a.length===1?a[0]:a[1];const c=a.length===2?a[0]:true;if(c&&process.env.NODE_ENV!=="production"){throw new Error(m)}}export{add,addOrRemove,callAll,cast,chunk,clear,compact,createSplitProps,first,fromLength,has,hasProp,invariant,isArray,isBoolean,isDev,isEmpty,isEqual,isFunction,isNull,isNumber,isObject,isString,json,last,match,next,nextIndex,noop,pick,prev,prevIndex,remove,removeAt,runIfFn,splitProps,toArray,tryCatch,uuid,warn};
252
2
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/array.ts","../src/equal.ts","../src/functions.ts","../src/guard.ts","../src/object.ts","../src/split-props.ts","../src/warning.ts"],"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[] => v.filter((t) => t !== item)\n\nexport const removeAt = <T>(v: T[], i: number): T[] => v.filter((_, idx) => idx !== i)\n\nexport const addOrRemove = <T>(v: T[], item: T): T[] => {\n if (has(v, item)) return remove(v, item)\n return add(v, item)\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","const isArrayLike = (value: any) => value?.constructor.name === \"Array\"\n\nexport const isEqual = (a: any, b: any): boolean => {\n if (Object.is(a, b)) return true\n\n if ((a == null && b != null) || (a != null && b == null)) return false\n\n if (typeof a?.isEqual === \"function\" && typeof b?.isEqual === \"function\") {\n return a.isEqual(b)\n }\n\n if (typeof a === \"function\" && typeof b === \"function\") {\n return a.toString() === b.toString()\n }\n\n if (isArrayLike(a) && isArrayLike(b)) {\n return Array.from(a).toString() === Array.from(b).toString()\n }\n\n if (!(typeof a === \"object\") || !(typeof b === \"object\")) return false\n\n const keys = Object.keys(b ?? Object.create(null))\n const length = keys.length\n\n for (let i = 0; i < length; i++) {\n const hasKey = Reflect.has(a, keys[i])\n if (!hasKey) return false\n }\n\n for (let i = 0; i < length; i++) {\n const key = keys[i]\n if (!isEqual(a[key], b[key])) return false\n }\n\n return true\n}\n","export type MaybeFunction<T> = T | (() => T)\n\nexport type Nullable<T> = T | null | undefined\n\nexport 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 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 match<V extends string | number = string, R = unknown>(\n key: V,\n record: Record<V, R | ((...args: any[]) => R)>,\n ...args: any[]\n): R {\n if (key in record) {\n const fn = record[key]\n return typeof fn === \"function\" ? fn(...args) : fn\n }\n\n const error = new Error(`No matching key: ${JSON.stringify(key)} in ${JSON.stringify(Object.keys(record))}`)\n Error.captureStackTrace?.(error, match)\n\n throw error\n}\n\nexport const tryCatch = <R>(fn: () => R, fallback: () => R) => {\n try {\n return fn()\n } catch (error) {\n if (error instanceof Error) {\n Error.captureStackTrace?.(error, tryCatch)\n }\n return fallback?.()\n }\n}\n","export const isDev = () => process.env.NODE_ENV !== \"production\"\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\"\nexport const isNull = (v: any): v is null | undefined => v == null\n\nexport const hasProp = <T extends string>(obj: any, prop: T): obj is Record<T, any> =>\n Object.prototype.hasOwnProperty.call(obj, prop)\n","export function compact<T extends Record<string, unknown> | undefined>(obj: T): T {\n if (!isPlainObject(obj) || obj === undefined) {\n return obj\n }\n\n const keys = Reflect.ownKeys(obj).filter((key) => typeof key === \"string\")\n const filtered: Partial<T> = {}\n for (const key of keys) {\n const value = (obj as any)[key]\n if (value !== undefined) {\n filtered[key as keyof T] = compact(value)\n }\n }\n return filtered as T\n}\n\nexport function json(value: any) {\n return JSON.parse(JSON.stringify(value))\n}\n\nconst isPlainObject = (value: any) => {\n return value && typeof value === \"object\" && value.constructor === Object\n}\n\nexport function pick<T extends Record<string, any>, K extends keyof T>(obj: T, keys: K[]): Pick<T, K> {\n const filtered: Partial<T> = {}\n\n for (const key of keys) {\n const value = obj[key]\n if (value !== undefined) {\n filtered[key] = value\n }\n }\n\n return filtered as any\n}\n","type Dict = Record<string, any>\n\nexport function splitProps<T extends Dict>(props: T, keys: (keyof T)[]) {\n const rest: Dict = {}\n const result: Dict = {}\n\n const keySet = new Set(keys)\n\n for (const key in props) {\n if (keySet.has(key)) {\n result[key] = props[key]\n } else {\n rest[key] = props[key]\n }\n }\n\n return [result, rest]\n}\n\nexport const createSplitProps = <T extends Dict>(keys: (keyof T)[]) => {\n return function split<Props extends T>(props: Props) {\n return splitProps(props, keys) as [T, Omit<Props, keyof T>]\n }\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"],"mappings":"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","names":["next","last"]}
1
+ {"version":3,"sources":["../src/array.ts","../src/equal.ts","../src/functions.ts","../src/guard.ts","../src/object.ts","../src/split-props.ts","../src/warning.ts"],"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[] => v.filter((t) => t !== item)\n\nexport const removeAt = <T>(v: T[], i: number): T[] => v.filter((_, idx) => idx !== i)\n\nexport const addOrRemove = <T>(v: T[], item: T): T[] => {\n if (has(v, item)) return remove(v, item)\n return add(v, item)\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","const isArrayLike = (value: any) => value?.constructor.name === \"Array\"\n\nexport const isEqual = (a: any, b: any): boolean => {\n if (Object.is(a, b)) return true\n\n if ((a == null && b != null) || (a != null && b == null)) return false\n\n if (typeof a?.isEqual === \"function\" && typeof b?.isEqual === \"function\") {\n return a.isEqual(b)\n }\n\n if (typeof a === \"function\" && typeof b === \"function\") {\n return a.toString() === b.toString()\n }\n\n if (isArrayLike(a) && isArrayLike(b)) {\n return Array.from(a).toString() === Array.from(b).toString()\n }\n\n if (!(typeof a === \"object\") || !(typeof b === \"object\")) return false\n\n const keys = Object.keys(b ?? Object.create(null))\n const length = keys.length\n\n for (let i = 0; i < length; i++) {\n const hasKey = Reflect.has(a, keys[i])\n if (!hasKey) return false\n }\n\n for (let i = 0; i < length; i++) {\n const key = keys[i]\n if (!isEqual(a[key], b[key])) return false\n }\n\n return true\n}\n","export type MaybeFunction<T> = T | (() => T)\n\nexport type Nullable<T> = T | null | undefined\n\nexport 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 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 match<V extends string | number = string, R = unknown>(\n key: V,\n record: Record<V, R | ((...args: any[]) => R)>,\n ...args: any[]\n): R {\n if (key in record) {\n const fn = record[key]\n return typeof fn === \"function\" ? fn(...args) : fn\n }\n\n const error = new Error(`No matching key: ${JSON.stringify(key)} in ${JSON.stringify(Object.keys(record))}`)\n Error.captureStackTrace?.(error, match)\n\n throw error\n}\n\nexport const tryCatch = <R>(fn: () => R, fallback: () => R) => {\n try {\n return fn()\n } catch (error) {\n if (error instanceof Error) {\n Error.captureStackTrace?.(error, tryCatch)\n }\n return fallback?.()\n }\n}\n","export const isDev = () => process.env.NODE_ENV !== \"production\"\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\"\nexport const isNull = (v: any): v is null | undefined => v == null\n\nexport const hasProp = <T extends string>(obj: any, prop: T): obj is Record<T, any> =>\n Object.prototype.hasOwnProperty.call(obj, prop)\n","export function compact<T extends Record<string, unknown> | undefined>(obj: T): T {\n if (!isPlainObject(obj) || obj === undefined) {\n return obj\n }\n\n const keys = Reflect.ownKeys(obj).filter((key) => typeof key === \"string\")\n const filtered: Partial<T> = {}\n for (const key of keys) {\n const value = (obj as any)[key]\n if (value !== undefined) {\n filtered[key as keyof T] = compact(value)\n }\n }\n return filtered as T\n}\n\nexport function json(value: any) {\n return JSON.parse(JSON.stringify(value))\n}\n\nconst isPlainObject = (value: any) => {\n return value && typeof value === \"object\" && value.constructor === Object\n}\n\nexport function pick<T extends Record<string, any>, K extends keyof T>(obj: T, keys: K[]): Pick<T, K> {\n const filtered: Partial<T> = {}\n\n for (const key of keys) {\n const value = obj[key]\n if (value !== undefined) {\n filtered[key] = value\n }\n }\n\n return filtered as any\n}\n","type Dict = Record<string, any>\n\nexport function splitProps<T extends Dict>(props: T, keys: (keyof T)[]) {\n const rest: Dict = {}\n const result: Dict = {}\n\n const keySet = new Set(keys)\n\n for (const key in props) {\n if (keySet.has(key)) {\n result[key] = props[key]\n } else {\n rest[key] = props[key]\n }\n }\n\n return [result, rest]\n}\n\nexport const createSplitProps = <T extends Dict>(keys: (keyof T)[]) => {\n return function split<Props extends T>(props: Props) {\n return splitProps(props, keys) as [T, Omit<Props, keyof T>]\n }\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"],"mappings":"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","names":["next","last"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zag-js/utils",
3
- "version": "0.49.0",
3
+ "version": "0.51.0",
4
4
  "description": "",
5
5
  "keywords": [
6
6
  "js",