tsu 2.5.0 → 2.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -32,7 +32,7 @@ import { ... } from 'tsu'
32
32
 
33
33
  ## Documentation
34
34
 
35
- Full documentation is available [here](https://tsu-docs.netlify.app/).
35
+ Full documentation is available [here](https://tsu.pages.dev/).
36
36
 
37
37
  ## Credits
38
38
 
package/dist/index.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";var f=Object.defineProperty;var O=Object.getOwnPropertyDescriptor;var j=Object.getOwnPropertyNames;var k=Object.prototype.hasOwnProperty;var U=(n,e)=>{for(var t in e)f(n,t,{get:e[t],enumerable:!0})},M=(n,e,t,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of j(e))!k.call(n,o)&&o!==t&&f(n,o,{get:()=>e[o],enumerable:!(r=O(e,o))||r.enumerable});return n};var N=n=>M(f({},"__esModule",{value:!0}),n);var kn={};U(kn,{capitalise:()=>dn,ceil:()=>en,chars:()=>xn,clamp:()=>tn,debounce:()=>G,deepMerge:()=>w,drop:()=>A,floor:()=>rn,groupsOf:()=>F,head:()=>S,init:()=>E,isArray:()=>l,isBlank:()=>Tn,isBoolean:()=>L,isBrowser:()=>g,isDefined:()=>P,isEmpty:()=>gn,isEmptyObject:()=>W,isEven:()=>on,isFunction:()=>H,isNull:()=>_,isNumber:()=>m,isObject:()=>s,isOdd:()=>un,isString:()=>c,isTouchDevice:()=>$,isWindow:()=>z,last:()=>q,max:()=>sn,memoize:()=>Q,min:()=>ln,noop:()=>mn,once:()=>X,partition:()=>C,randomChance:()=>cn,randomNumber:()=>y,range:()=>I,round:()=>fn,scroll:()=>J,sleep:()=>pn,splitAt:()=>V,splitStrAt:()=>yn,sum:()=>an,tail:()=>B,take:()=>R,throttle:()=>nn,toArray:()=>D,toCamel:()=>hn,toKebab:()=>wn,toNumber:()=>vn,toOrdinal:()=>On,truncate:()=>jn,uniq:()=>a,uuid:()=>bn});module.exports=N(kn);function A(n,e){return n<=0?[...e]:e.slice(n)}function F(n,e){if(n<=0)throw new Error("[tsu] Invalid group size. Is it greater than 0?");if(n>=e.length)return[[...e]];let t=[];for(let r=0;r<e.length;r+=n)t.push(e.slice(r,r+n));return t}function S(n){return n[0]}function E(n){return n.slice(0,n.length-1)}function q(n){return n[n.length-1]}function C(n,e){let t=[],r=[];for(let o=0;o<e.length;o++){let u=e[o];n(u,o,e)?t.push(u):r.push(u)}return[t,r]}function I(...n){let e,t,r;n.length===1?(t=n[0],e=0,r=1):(e=n[0],t=n[1],r=n[2]||1),r<=0&&(console.warn("[tsu] warning: a step less than or equal to 0 will be set to 1."),r=1);let o=[],u=e;for(;u<t;)o.push(u),u+=r||1;return o}function V(n,e){return n<=0?[[],[...e]]:n>e.length?[[...e],[]]:[e.slice(0,n),e.slice(n)]}function B(n){return n.slice(1)}function R(n,e){return n<=0?[]:e.slice(0,n)}function D(n){return n?Array.isArray(n)?n:[n]:[]}function a(n){return Array.from(new Set(n))}function l(n){return Array.isArray(n)}function L(n){return typeof n=="boolean"}function g(){return typeof window<"u"}function P(n){return typeof n<"u"}function W(n){if(!s(n))return!1;for(let e in n)return!1;return!0}function H(n){return typeof n=="function"}function _(n){return Object.prototype.toString.call(n)==="[object Null]"}function m(n){return typeof n=="number"}function s(n){return Object.prototype.toString.call(n)==="[object Object]"}function c(n){return typeof n=="string"}function $(){return"ontouchstart"in window||navigator.maxTouchPoints>0}function z(n){return g()&&Object.prototype.toString.call(n)==="[object Window]"}function J({to:n,offset:e=0,duration:t=1e3,container:r=null}){let o=c(n)?document.querySelector(n):n,u=c(r)?document.querySelector(r):r,i=u?.scrollTop||window?.pageYOffset||0,p=(m(o)?o:Z(o,i))+e,v=Date.now();function b(){let d=Date.now()-v,x=d<t,T=x?Y(i,p,d,t):p;x&&requestAnimationFrame(b),u?u.scrollTop=T:window.scrollTo(0,T)}b()}function K(n){return n<.5?4*Math.pow(n,3):(n-1)*(2*n-2)*(2*n-2)+1}function Y(n,e,t,r){return n+(e-n)*K(t/r)}function Z(n,e){return n.nodeName==="HTML"?-e:n.getBoundingClientRect().top+e}function G(n,e){e<0&&console.warn("[tsu] warning: a debounce delay less than 0ms will be treated as 0ms.");let t;return function(...r){clearTimeout(t),t=setTimeout(()=>{clearTimeout(t),n(...r)},e)}}function Q(n){let e={};return function(...t){let r=JSON.stringify(t);if(r in e)return e[r];let o=n(...t);return e[r]=o,o}}function X(n){let e=!1;return(...t)=>{e||(n(...t),e=!0)}}function nn(n,e){e<0&&console.warn("[tsu] warning: a throttle limit less than 0ms will be treated as 0ms.");let t=!1;return function(...r){t||(n(...r),t=!0,setTimeout(()=>{t=!1},e))}}function en(n,e=1){let t=n/e;return Math.ceil(t)*e}function tn(n,e,t){return Math.min(t,Math.max(e,n))}function rn(n,e=1){let t=n/e;return Math.floor(t)*e}function on(n){return n%2===0}function un(n){return n%2!==0}function sn(n){if(n.length)return Math.max(...n)}function ln(n){if(n.length)return Math.min(...n)}function cn(n){return y(n)===0}function y(...n){let e,t;return n.length===1?(e=0,t=n[0]):(e=n[0],t=n[1]),Math.floor(Math.random()*(t-e))+e}function fn(n,e=1){let t=n/e;return Math.round(t)*e}function an(n){let e=0;for(let t=0;t<n.length;t++)e+=n[t];return e}function mn(){}async function pn(n){return n<0&&console.warn("[tsu] warning: a sleep duration less than 0ms will be treated as 0ms."),new Promise(e=>{setTimeout(e,n)})}var h="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict";function bn(n=16){let e=h.length,t=n,r="";for(;t--;)r+=h[Math.random()*e|0];return r}function w(...n){let e={};for(let t=0;t<n.length;t++){let r=n[t],o=Object.keys(r);for(let u=0;u<o.length;u++){let i=o[u];l(e[i])&&l(r[i])?e[i]=a(e[i].concat(r[i])):s(e[i])&&s(r[i])?e[i]=w(e[i],r[i]):e[i]=r[i]}}return e}function dn(n,e=!1,t=" "){return e?n.split(t).map(r=>r.charAt(0).toUpperCase()+r.slice(1)).join(t):n.charAt(0).toUpperCase()+n.slice(1)}function xn(n){return n.split("")}function Tn(n){return n.trim().length===0}function gn(n){return n.length===0}function yn(n,e){return n<=0?["",e]:n>e.length?[e,""]:[e.slice(0,n),e.slice(n)]}function hn(n){let e=/-(\w)/g;return n.replace(e,(t,r)=>r?r.toUpperCase():"")}function wn(n){let e=/\B([A-Z])/g;return n.replace(e,"-$1").toLowerCase()}function vn(n){return n.length?Number(n.replace(/[#£€$,%]/g,"")):NaN}function On(n){let t=["st","nd","rd"][(n/10%10^1&&n%10)-1]||"th";return`${n}${t}`}function jn(n,e,t="..."){return e<=0?t:n.slice(0,e)+t}0&&(module.exports={capitalise,ceil,chars,clamp,debounce,deepMerge,drop,floor,groupsOf,head,init,isArray,isBlank,isBoolean,isBrowser,isDefined,isEmpty,isEmptyObject,isEven,isFunction,isNull,isNumber,isObject,isOdd,isString,isTouchDevice,isWindow,last,max,memoize,min,noop,once,partition,randomChance,randomNumber,range,round,scroll,sleep,splitAt,splitStrAt,sum,tail,take,throttle,toArray,toCamel,toKebab,toNumber,toOrdinal,truncate,uniq,uuid});
1
+ "use strict";var a=Object.defineProperty;var O=Object.getOwnPropertyDescriptor;var k=Object.getOwnPropertyNames;var N=Object.prototype.hasOwnProperty;var U=(n,e)=>{for(var t in e)a(n,t,{get:e[t],enumerable:!0})},A=(n,e,t,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of k(e))!N.call(n,o)&&o!==t&&a(n,o,{get:()=>e[o],enumerable:!(r=O(e,o))||r.enumerable});return n};var M=n=>A(a({},"__esModule",{value:!0}),n);var An={};U(An,{capitalise:()=>gn,ceil:()=>F,chars:()=>yn,clamp:()=>S,clone:()=>y,debounce:()=>an,deepMerge:()=>v,drop:()=>P,floor:()=>E,groupsOf:()=>W,head:()=>H,init:()=>_,isArray:()=>c,isBlank:()=>hn,isBoolean:()=>X,isBrowser:()=>h,isDefined:()=>nn,isEmpty:()=>wn,isEmptyObject:()=>en,isEven:()=>C,isFunction:()=>tn,isNull:()=>rn,isNumber:()=>p,isObject:()=>l,isOdd:()=>q,isString:()=>f,isTouchDevice:()=>on,isWindow:()=>un,last:()=>$,max:()=>I,memoize:()=>mn,min:()=>V,noop:()=>dn,once:()=>pn,partition:()=>z,product:()=>B,randomChance:()=>R,randomNumber:()=>s,range:()=>J,round:()=>D,scroll:()=>ln,shuffle:()=>K,sleep:()=>xn,splitAt:()=>Y,splitStrAt:()=>vn,sum:()=>L,tail:()=>Z,take:()=>G,throttle:()=>bn,toArray:()=>Q,toCamel:()=>jn,toKebab:()=>On,toNumber:()=>kn,toOrdinal:()=>Nn,truncate:()=>Un,uniq:()=>m,uuid:()=>Tn});module.exports=M(An);function F(n,e=1){let t=n/e;return Math.ceil(t)*e}function S(n,e,t){return Math.min(t,Math.max(e,n))}function E(n,e=1){let t=n/e;return Math.floor(t)*e}function C(n){return n%2===0}function q(n){return n%2!==0}function I(n){if(n.length)return Math.max(...n)}function V(n){if(n.length)return Math.min(...n)}function B(n){let e=1;for(let t=0;t<n.length;t++)e*=n[t];return e}function R(n){return s(n)===0}function s(...n){let e,t;return n.length===1?(e=0,t=n[0]):(e=n[0],t=n[1]),Math.floor(Math.random()*(t-e))+e}function D(n,e=1){let t=n/e;return Math.round(t)*e}function L(n){let e=0;for(let t=0;t<n.length;t++)e+=n[t];return e}function y(n){if(n.length===0)return[];let e=[];for(let t=0;t<n.length;t++)e[t]=n[t];return e}function P(n,e){return n<=0?[...e]:e.slice(n)}function W(n,e){if(n<=0)throw new Error("[tsu] Invalid group size. Is it greater than 0?");if(n>=e.length)return[[...e]];let t=[];for(let r=0;r<e.length;r+=n)t.push(e.slice(r,r+n));return t}function H(n){return n[0]}function _(n){return n.slice(0,n.length-1)}function $(n){return n[n.length-1]}function z(n,e){let t=[],r=[];for(let o=0;o<n.length;o++){let u=n[o];e(u,o,n)?t.push(u):r.push(u)}return[t,r]}function J(...n){let e,t,r;n.length===1?(t=n[0],e=0,r=1):(e=n[0],t=n[1],r=n[2]||1),r<=0&&(console.warn("[tsu] warning: a step less than or equal to 0 will be set to 1."),r=1);let o=[],u=e;for(;u<t;)o.push(u),u+=r||1;return o}function K(n){let e=y(n),t,r,o;for(t=e.length;t;t-=1)r=s(t),o=e[t-1],e[t-1]=e[r],e[r]=o;return e}function Y(n,e){return n<=0?[[],[...e]]:n>e.length?[[...e],[]]:[e.slice(0,n),e.slice(n)]}function Z(n){return n.slice(1)}function G(n,e){return n<=0?[]:e.slice(0,n)}function Q(n){return n?Array.isArray(n)?n:[n]:[]}function m(n){return Array.from(new Set(n))}function c(n){return Array.isArray(n)}function X(n){return typeof n=="boolean"}function h(){return typeof window<"u"}function nn(n){return typeof n<"u"}function en(n){if(!l(n))return!1;for(let e in n)return!1;return!0}function tn(n){return typeof n=="function"}function rn(n){return Object.prototype.toString.call(n)==="[object Null]"}function p(n){return typeof n=="number"}function l(n){return Object.prototype.toString.call(n)==="[object Object]"}function f(n){return typeof n=="string"}function on(){return"ontouchstart"in window||navigator.maxTouchPoints>0}function un(n){return h()&&Object.prototype.toString.call(n)==="[object Window]"}function ln({to:n,offset:e=0,duration:t=1e3,container:r=null}){let o=f(n)?document.querySelector(n):n,u=f(r)?document.querySelector(r):r,i=u?.scrollTop||window?.pageYOffset||0,b=(p(o)?o:fn(o,i))+e,j=Date.now();function d(){let x=Date.now()-j,T=x<t,g=T?cn(i,b,x,t):b;T&&requestAnimationFrame(d),u?u.scrollTop=g:window.scrollTo(0,g)}d()}function sn(n){return n<.5?4*Math.pow(n,3):(n-1)*(2*n-2)*(2*n-2)+1}function cn(n,e,t,r){return n+(e-n)*sn(t/r)}function fn(n,e){return n.nodeName==="HTML"?-e:n.getBoundingClientRect().top+e}function an(n,e){e<0&&console.warn("[tsu] warning: a debounce delay less than 0ms will be treated as 0ms.");let t;return function(...r){clearTimeout(t),t=setTimeout(()=>{clearTimeout(t),n(...r)},e)}}function mn(n){let e={};return function(...t){let r=JSON.stringify(t);if(r in e)return e[r];let o=n(...t);return e[r]=o,o}}function pn(n){let e=!1;return(...t)=>{e||(n(...t),e=!0)}}function bn(n,e){e<0&&console.warn("[tsu] warning: a throttle limit less than 0ms will be treated as 0ms.");let t=!1;return function(...r){t||(n(...r),t=!0,setTimeout(()=>{t=!1},e))}}function dn(){}async function xn(n){return n<0&&console.warn("[tsu] warning: a sleep duration less than 0ms will be treated as 0ms."),new Promise(e=>{setTimeout(e,n)})}var w="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict";function Tn(n=16){let e=w.length,t=n,r="";for(;t--;)r+=w[Math.random()*e|0];return r}function v(...n){let e={};for(let t=0;t<n.length;t++){let r=n[t],o=Object.keys(r);for(let u=0;u<o.length;u++){let i=o[u];c(e[i])&&c(r[i])?e[i]=m(e[i].concat(r[i])):l(e[i])&&l(r[i])?e[i]=v(e[i],r[i]):e[i]=r[i]}}return e}function gn(n,e=!1,t=" "){return e?n.split(t).map(r=>r.charAt(0).toUpperCase()+r.slice(1)).join(t):n.charAt(0).toUpperCase()+n.slice(1)}function yn(n){return n.split("")}function hn(n){return n.trim().length===0}function wn(n){return n.length===0}function vn(n,e){return n<=0?["",e]:n>e.length?[e,""]:[e.slice(0,n),e.slice(n)]}function jn(n){let e=/-(\w)/g;return n.replace(e,(t,r)=>r?r.toUpperCase():"")}function On(n){let e=/\B([A-Z])/g;return n.replace(e,"-$1").toLowerCase()}function kn(n){return n.length?Number(n.replace(/[#£€$,%]/g,"")):NaN}function Nn(n){let t=["st","nd","rd"][(n/10%10^1&&n%10)-1]||"th";return`${n}${t}`}function Un(n,e,t="..."){return e<=0?t:n.slice(0,e)+t}0&&(module.exports={capitalise,ceil,chars,clamp,clone,debounce,deepMerge,drop,floor,groupsOf,head,init,isArray,isBlank,isBoolean,isBrowser,isDefined,isEmpty,isEmptyObject,isEven,isFunction,isNull,isNumber,isObject,isOdd,isString,isTouchDevice,isWindow,last,max,memoize,min,noop,once,partition,product,randomChance,randomNumber,range,round,scroll,shuffle,sleep,splitAt,splitStrAt,sum,tail,take,throttle,toArray,toCamel,toKebab,toNumber,toOrdinal,truncate,uniq,uuid});
package/dist/index.d.cts CHANGED
@@ -4,6 +4,13 @@ type Fn<T = any> = (...args: any[]) => T;
4
4
  type VoidFn = Fn<void>;
5
5
  type Obj<V = unknown> = Record<string | symbol | number, V>;
6
6
 
7
+ /**
8
+ * Clones an array.
9
+ *
10
+ * @param array - The array.
11
+ * @returns A clone of the array.
12
+ */
13
+ declare function clone<T>(array: readonly T[]): T[];
7
14
  /**
8
15
  * Removes the first `n` items of an array.
9
16
  *
@@ -46,11 +53,11 @@ declare function last<T>(array: readonly T[]): T;
46
53
  /**
47
54
  * Splits an array into two based on a predicate function.
48
55
  *
49
- * @param filter - The predicate function.
50
56
  * @param array - The array.
57
+ * @param filter - The predicate function.
51
58
  * @returns The tuple of values that satisfy the predicate and those that don't.
52
59
  */
53
- declare function partition<T, U = T>(filter: (current: T | U, idx: number, array: readonly (T | U)[]) => boolean, array: readonly (T | U)[]): [T[], U[]];
60
+ declare function partition<T, U = T>(array: readonly (T | U)[], filter: (current: T | U, idx: number, array: readonly (T | U)[]) => boolean): [T[], U[]];
54
61
  /**
55
62
  * Generates a range of numbers.
56
63
  *
@@ -61,6 +68,13 @@ declare function partition<T, U = T>(filter: (current: T | U, idx: number, array
61
68
  */
62
69
  declare function range(stop: number): number[];
63
70
  declare function range(start: number, stop: number, step?: number): number[];
71
+ /**
72
+ * Randomly shuffles items in an array.
73
+ *
74
+ * @param array - The array.
75
+ * @returns A copy of the array with its items randomly shuffled.
76
+ */
77
+ declare function shuffle<T>(array: readonly T[]): T[];
64
78
  /**
65
79
  * Splits an array into two at a specified index.
66
80
  *
@@ -285,6 +299,13 @@ declare function max(array: readonly number[]): number;
285
299
  */
286
300
  declare function min(array: readonly []): undefined;
287
301
  declare function min(array: readonly number[]): number;
302
+ /**
303
+ * Returns the product of a number array.
304
+ *
305
+ * @param ns - The number array.
306
+ * @returns The product.
307
+ */
308
+ declare function product(ns: readonly number[]): number;
288
309
  /**
289
310
  * Rolls an n-sided die.
290
311
  *
@@ -423,4 +444,4 @@ declare function toOrdinal(n: number): string;
423
444
  */
424
445
  declare function truncate(str: string, length: number, suffix?: string): string;
425
446
 
426
- export { type Arrayable, type Fn, type Nullable, type Obj, type VoidFn, capitalise, ceil, chars, clamp, debounce, deepMerge, drop, floor, groupsOf, head, init, isArray, isBlank, isBoolean, isBrowser, isDefined, isEmpty, isEmptyObject, isEven, isFunction, isNull, isNumber, isObject, isOdd, isString, isTouchDevice, isWindow, last, max, memoize, min, noop, once, partition, randomChance, randomNumber, range, round, scroll, sleep, splitAt, splitStrAt, sum, tail, take, throttle, toArray, toCamel, toKebab, toNumber, toOrdinal, truncate, uniq, uuid };
447
+ export { type Arrayable, type Fn, type Nullable, type Obj, type VoidFn, capitalise, ceil, chars, clamp, clone, debounce, deepMerge, drop, floor, groupsOf, head, init, isArray, isBlank, isBoolean, isBrowser, isDefined, isEmpty, isEmptyObject, isEven, isFunction, isNull, isNumber, isObject, isOdd, isString, isTouchDevice, isWindow, last, max, memoize, min, noop, once, partition, product, randomChance, randomNumber, range, round, scroll, shuffle, sleep, splitAt, splitStrAt, sum, tail, take, throttle, toArray, toCamel, toKebab, toNumber, toOrdinal, truncate, uniq, uuid };
package/dist/index.d.ts CHANGED
@@ -4,6 +4,13 @@ type Fn<T = any> = (...args: any[]) => T;
4
4
  type VoidFn = Fn<void>;
5
5
  type Obj<V = unknown> = Record<string | symbol | number, V>;
6
6
 
7
+ /**
8
+ * Clones an array.
9
+ *
10
+ * @param array - The array.
11
+ * @returns A clone of the array.
12
+ */
13
+ declare function clone<T>(array: readonly T[]): T[];
7
14
  /**
8
15
  * Removes the first `n` items of an array.
9
16
  *
@@ -46,11 +53,11 @@ declare function last<T>(array: readonly T[]): T;
46
53
  /**
47
54
  * Splits an array into two based on a predicate function.
48
55
  *
49
- * @param filter - The predicate function.
50
56
  * @param array - The array.
57
+ * @param filter - The predicate function.
51
58
  * @returns The tuple of values that satisfy the predicate and those that don't.
52
59
  */
53
- declare function partition<T, U = T>(filter: (current: T | U, idx: number, array: readonly (T | U)[]) => boolean, array: readonly (T | U)[]): [T[], U[]];
60
+ declare function partition<T, U = T>(array: readonly (T | U)[], filter: (current: T | U, idx: number, array: readonly (T | U)[]) => boolean): [T[], U[]];
54
61
  /**
55
62
  * Generates a range of numbers.
56
63
  *
@@ -61,6 +68,13 @@ declare function partition<T, U = T>(filter: (current: T | U, idx: number, array
61
68
  */
62
69
  declare function range(stop: number): number[];
63
70
  declare function range(start: number, stop: number, step?: number): number[];
71
+ /**
72
+ * Randomly shuffles items in an array.
73
+ *
74
+ * @param array - The array.
75
+ * @returns A copy of the array with its items randomly shuffled.
76
+ */
77
+ declare function shuffle<T>(array: readonly T[]): T[];
64
78
  /**
65
79
  * Splits an array into two at a specified index.
66
80
  *
@@ -285,6 +299,13 @@ declare function max(array: readonly number[]): number;
285
299
  */
286
300
  declare function min(array: readonly []): undefined;
287
301
  declare function min(array: readonly number[]): number;
302
+ /**
303
+ * Returns the product of a number array.
304
+ *
305
+ * @param ns - The number array.
306
+ * @returns The product.
307
+ */
308
+ declare function product(ns: readonly number[]): number;
288
309
  /**
289
310
  * Rolls an n-sided die.
290
311
  *
@@ -423,4 +444,4 @@ declare function toOrdinal(n: number): string;
423
444
  */
424
445
  declare function truncate(str: string, length: number, suffix?: string): string;
425
446
 
426
- export { type Arrayable, type Fn, type Nullable, type Obj, type VoidFn, capitalise, ceil, chars, clamp, debounce, deepMerge, drop, floor, groupsOf, head, init, isArray, isBlank, isBoolean, isBrowser, isDefined, isEmpty, isEmptyObject, isEven, isFunction, isNull, isNumber, isObject, isOdd, isString, isTouchDevice, isWindow, last, max, memoize, min, noop, once, partition, randomChance, randomNumber, range, round, scroll, sleep, splitAt, splitStrAt, sum, tail, take, throttle, toArray, toCamel, toKebab, toNumber, toOrdinal, truncate, uniq, uuid };
447
+ export { type Arrayable, type Fn, type Nullable, type Obj, type VoidFn, capitalise, ceil, chars, clamp, clone, debounce, deepMerge, drop, floor, groupsOf, head, init, isArray, isBlank, isBoolean, isBrowser, isDefined, isEmpty, isEmptyObject, isEven, isFunction, isNull, isNumber, isObject, isOdd, isString, isTouchDevice, isWindow, last, max, memoize, min, noop, once, partition, product, randomChance, randomNumber, range, round, scroll, shuffle, sleep, splitAt, splitStrAt, sum, tail, take, throttle, toArray, toCamel, toKebab, toNumber, toOrdinal, truncate, uniq, uuid };
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- function k(n,e){return n<=0?[...e]:e.slice(n)}function U(n,e){if(n<=0)throw new Error("[tsu] Invalid group size. Is it greater than 0?");if(n>=e.length)return[[...e]];let t=[];for(let r=0;r<e.length;r+=n)t.push(e.slice(r,r+n));return t}function M(n){return n[0]}function N(n){return n.slice(0,n.length-1)}function A(n){return n[n.length-1]}function F(n,e){let t=[],r=[];for(let o=0;o<e.length;o++){let u=e[o];n(u,o,e)?t.push(u):r.push(u)}return[t,r]}function S(...n){let e,t,r;n.length===1?(t=n[0],e=0,r=1):(e=n[0],t=n[1],r=n[2]||1),r<=0&&(console.warn("[tsu] warning: a step less than or equal to 0 will be set to 1."),r=1);let o=[],u=e;for(;u<t;)o.push(u),u+=r||1;return o}function E(n,e){return n<=0?[[],[...e]]:n>e.length?[[...e],[]]:[e.slice(0,n),e.slice(n)]}function q(n){return n.slice(1)}function C(n,e){return n<=0?[]:e.slice(0,n)}function I(n){return n?Array.isArray(n)?n:[n]:[]}function d(n){return Array.from(new Set(n))}function l(n){return Array.isArray(n)}function B(n){return typeof n=="boolean"}function y(){return typeof window<"u"}function R(n){return typeof n<"u"}function D(n){if(!s(n))return!1;for(let e in n)return!1;return!0}function L(n){return typeof n=="function"}function P(n){return Object.prototype.toString.call(n)==="[object Null]"}function x(n){return typeof n=="number"}function s(n){return Object.prototype.toString.call(n)==="[object Object]"}function c(n){return typeof n=="string"}function W(){return"ontouchstart"in window||navigator.maxTouchPoints>0}function H(n){return y()&&Object.prototype.toString.call(n)==="[object Window]"}function z({to:n,offset:e=0,duration:t=1e3,container:r=null}){let o=c(n)?document.querySelector(n):n,u=c(r)?document.querySelector(r):r,i=u?.scrollTop||window?.pageYOffset||0,f=(x(o)?o:v(o,i))+e,g=Date.now();function a(){let m=Date.now()-g,p=m<t,b=p?w(i,f,m,t):f;p&&requestAnimationFrame(a),u?u.scrollTop=b:window.scrollTo(0,b)}a()}function h(n){return n<.5?4*Math.pow(n,3):(n-1)*(2*n-2)*(2*n-2)+1}function w(n,e,t,r){return n+(e-n)*h(t/r)}function v(n,e){return n.nodeName==="HTML"?-e:n.getBoundingClientRect().top+e}function K(n,e){e<0&&console.warn("[tsu] warning: a debounce delay less than 0ms will be treated as 0ms.");let t;return function(...r){clearTimeout(t),t=setTimeout(()=>{clearTimeout(t),n(...r)},e)}}function Y(n){let e={};return function(...t){let r=JSON.stringify(t);if(r in e)return e[r];let o=n(...t);return e[r]=o,o}}function Z(n){let e=!1;return(...t)=>{e||(n(...t),e=!0)}}function G(n,e){e<0&&console.warn("[tsu] warning: a throttle limit less than 0ms will be treated as 0ms.");let t=!1;return function(...r){t||(n(...r),t=!0,setTimeout(()=>{t=!1},e))}}function X(n,e=1){let t=n/e;return Math.ceil(t)*e}function nn(n,e,t){return Math.min(t,Math.max(e,n))}function en(n,e=1){let t=n/e;return Math.floor(t)*e}function tn(n){return n%2===0}function rn(n){return n%2!==0}function on(n){if(n.length)return Math.max(...n)}function un(n){if(n.length)return Math.min(...n)}function sn(n){return O(n)===0}function O(...n){let e,t;return n.length===1?(e=0,t=n[0]):(e=n[0],t=n[1]),Math.floor(Math.random()*(t-e))+e}function ln(n,e=1){let t=n/e;return Math.round(t)*e}function cn(n){let e=0;for(let t=0;t<n.length;t++)e+=n[t];return e}function an(){}async function mn(n){return n<0&&console.warn("[tsu] warning: a sleep duration less than 0ms will be treated as 0ms."),new Promise(e=>{setTimeout(e,n)})}var T="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict";function pn(n=16){let e=T.length,t=n,r="";for(;t--;)r+=T[Math.random()*e|0];return r}function j(...n){let e={};for(let t=0;t<n.length;t++){let r=n[t],o=Object.keys(r);for(let u=0;u<o.length;u++){let i=o[u];l(e[i])&&l(r[i])?e[i]=d(e[i].concat(r[i])):s(e[i])&&s(r[i])?e[i]=j(e[i],r[i]):e[i]=r[i]}}return e}function gn(n,e=!1,t=" "){return e?n.split(t).map(r=>r.charAt(0).toUpperCase()+r.slice(1)).join(t):n.charAt(0).toUpperCase()+n.slice(1)}function yn(n){return n.split("")}function hn(n){return n.trim().length===0}function wn(n){return n.length===0}function vn(n,e){return n<=0?["",e]:n>e.length?[e,""]:[e.slice(0,n),e.slice(n)]}function On(n){let e=/-(\w)/g;return n.replace(e,(t,r)=>r?r.toUpperCase():"")}function jn(n){let e=/\B([A-Z])/g;return n.replace(e,"-$1").toLowerCase()}function kn(n){return n.length?Number(n.replace(/[#£€$,%]/g,"")):NaN}function Un(n){let t=["st","nd","rd"][(n/10%10^1&&n%10)-1]||"th";return`${n}${t}`}function Mn(n,e,t="..."){return e<=0?t:n.slice(0,e)+t}export{gn as capitalise,X as ceil,yn as chars,nn as clamp,K as debounce,j as deepMerge,k as drop,en as floor,U as groupsOf,M as head,N as init,l as isArray,hn as isBlank,B as isBoolean,y as isBrowser,R as isDefined,wn as isEmpty,D as isEmptyObject,tn as isEven,L as isFunction,P as isNull,x as isNumber,s as isObject,rn as isOdd,c as isString,W as isTouchDevice,H as isWindow,A as last,on as max,Y as memoize,un as min,an as noop,Z as once,F as partition,sn as randomChance,O as randomNumber,S as range,ln as round,z as scroll,mn as sleep,E as splitAt,vn as splitStrAt,cn as sum,q as tail,C as take,G as throttle,I as toArray,On as toCamel,jn as toKebab,kn as toNumber,Un as toOrdinal,Mn as truncate,d as uniq,pn as uuid};
1
+ function N(n,e=1){let t=n/e;return Math.ceil(t)*e}function U(n,e,t){return Math.min(t,Math.max(e,n))}function A(n,e=1){let t=n/e;return Math.floor(t)*e}function M(n){return n%2===0}function F(n){return n%2!==0}function S(n){if(n.length)return Math.max(...n)}function E(n){if(n.length)return Math.min(...n)}function C(n){let e=1;for(let t=0;t<n.length;t++)e*=n[t];return e}function q(n){return s(n)===0}function s(...n){let e,t;return n.length===1?(e=0,t=n[0]):(e=n[0],t=n[1]),Math.floor(Math.random()*(t-e))+e}function I(n,e=1){let t=n/e;return Math.round(t)*e}function V(n){let e=0;for(let t=0;t<n.length;t++)e+=n[t];return e}function h(n){if(n.length===0)return[];let e=[];for(let t=0;t<n.length;t++)e[t]=n[t];return e}function D(n,e){return n<=0?[...e]:e.slice(n)}function L(n,e){if(n<=0)throw new Error("[tsu] Invalid group size. Is it greater than 0?");if(n>=e.length)return[[...e]];let t=[];for(let r=0;r<e.length;r+=n)t.push(e.slice(r,r+n));return t}function P(n){return n[0]}function W(n){return n.slice(0,n.length-1)}function H(n){return n[n.length-1]}function _(n,e){let t=[],r=[];for(let o=0;o<n.length;o++){let u=n[o];e(u,o,n)?t.push(u):r.push(u)}return[t,r]}function $(...n){let e,t,r;n.length===1?(t=n[0],e=0,r=1):(e=n[0],t=n[1],r=n[2]||1),r<=0&&(console.warn("[tsu] warning: a step less than or equal to 0 will be set to 1."),r=1);let o=[],u=e;for(;u<t;)o.push(u),u+=r||1;return o}function z(n){let e=h(n),t,r,o;for(t=e.length;t;t-=1)r=s(t),o=e[t-1],e[t-1]=e[r],e[r]=o;return e}function J(n,e){return n<=0?[[],[...e]]:n>e.length?[[...e],[]]:[e.slice(0,n),e.slice(n)]}function K(n){return n.slice(1)}function Y(n,e){return n<=0?[]:e.slice(0,n)}function Z(n){return n?Array.isArray(n)?n:[n]:[]}function x(n){return Array.from(new Set(n))}function c(n){return Array.isArray(n)}function Q(n){return typeof n=="boolean"}function w(){return typeof window<"u"}function X(n){return typeof n<"u"}function nn(n){if(!l(n))return!1;for(let e in n)return!1;return!0}function en(n){return typeof n=="function"}function tn(n){return Object.prototype.toString.call(n)==="[object Null]"}function T(n){return typeof n=="number"}function l(n){return Object.prototype.toString.call(n)==="[object Object]"}function f(n){return typeof n=="string"}function rn(){return"ontouchstart"in window||navigator.maxTouchPoints>0}function on(n){return w()&&Object.prototype.toString.call(n)==="[object Window]"}function sn({to:n,offset:e=0,duration:t=1e3,container:r=null}){let o=f(n)?document.querySelector(n):n,u=f(r)?document.querySelector(r):r,i=u?.scrollTop||window?.pageYOffset||0,a=(T(o)?o:O(o,i))+e,y=Date.now();function m(){let p=Date.now()-y,b=p<t,d=b?j(i,a,p,t):a;b&&requestAnimationFrame(m),u?u.scrollTop=d:window.scrollTo(0,d)}m()}function v(n){return n<.5?4*Math.pow(n,3):(n-1)*(2*n-2)*(2*n-2)+1}function j(n,e,t,r){return n+(e-n)*v(t/r)}function O(n,e){return n.nodeName==="HTML"?-e:n.getBoundingClientRect().top+e}function fn(n,e){e<0&&console.warn("[tsu] warning: a debounce delay less than 0ms will be treated as 0ms.");let t;return function(...r){clearTimeout(t),t=setTimeout(()=>{clearTimeout(t),n(...r)},e)}}function an(n){let e={};return function(...t){let r=JSON.stringify(t);if(r in e)return e[r];let o=n(...t);return e[r]=o,o}}function mn(n){let e=!1;return(...t)=>{e||(n(...t),e=!0)}}function pn(n,e){e<0&&console.warn("[tsu] warning: a throttle limit less than 0ms will be treated as 0ms.");let t=!1;return function(...r){t||(n(...r),t=!0,setTimeout(()=>{t=!1},e))}}function dn(){}async function xn(n){return n<0&&console.warn("[tsu] warning: a sleep duration less than 0ms will be treated as 0ms."),new Promise(e=>{setTimeout(e,n)})}var g="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict";function Tn(n=16){let e=g.length,t=n,r="";for(;t--;)r+=g[Math.random()*e|0];return r}function k(...n){let e={};for(let t=0;t<n.length;t++){let r=n[t],o=Object.keys(r);for(let u=0;u<o.length;u++){let i=o[u];c(e[i])&&c(r[i])?e[i]=x(e[i].concat(r[i])):l(e[i])&&l(r[i])?e[i]=k(e[i],r[i]):e[i]=r[i]}}return e}function vn(n,e=!1,t=" "){return e?n.split(t).map(r=>r.charAt(0).toUpperCase()+r.slice(1)).join(t):n.charAt(0).toUpperCase()+n.slice(1)}function jn(n){return n.split("")}function On(n){return n.trim().length===0}function kn(n){return n.length===0}function Nn(n,e){return n<=0?["",e]:n>e.length?[e,""]:[e.slice(0,n),e.slice(n)]}function Un(n){let e=/-(\w)/g;return n.replace(e,(t,r)=>r?r.toUpperCase():"")}function An(n){let e=/\B([A-Z])/g;return n.replace(e,"-$1").toLowerCase()}function Mn(n){return n.length?Number(n.replace(/[#£€$,%]/g,"")):NaN}function Fn(n){let t=["st","nd","rd"][(n/10%10^1&&n%10)-1]||"th";return`${n}${t}`}function Sn(n,e,t="..."){return e<=0?t:n.slice(0,e)+t}export{vn as capitalise,N as ceil,jn as chars,U as clamp,h as clone,fn as debounce,k as deepMerge,D as drop,A as floor,L as groupsOf,P as head,W as init,c as isArray,On as isBlank,Q as isBoolean,w as isBrowser,X as isDefined,kn as isEmpty,nn as isEmptyObject,M as isEven,en as isFunction,tn as isNull,T as isNumber,l as isObject,F as isOdd,f as isString,rn as isTouchDevice,on as isWindow,H as last,S as max,an as memoize,E as min,dn as noop,mn as once,_ as partition,C as product,q as randomChance,s as randomNumber,$ as range,I as round,sn as scroll,z as shuffle,xn as sleep,J as splitAt,Nn as splitStrAt,V as sum,K as tail,Y as take,pn as throttle,Z as toArray,Un as toCamel,An as toKebab,Mn as toNumber,Fn as toOrdinal,Sn as truncate,x as uniq,Tn as uuid};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tsu",
3
- "version": "2.5.0",
3
+ "version": "2.6.1",
4
4
  "type": "module",
5
5
  "description": "TypeScript utilities",
6
6
  "license": "MIT",