tsu 2.4.0 → 2.6.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.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})},N=(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 A=n=>N(f({},"__esModule",{value:!0}),n);var jn={};U(jn,{capitalise:()=>bn,ceil:()=>en,chars:()=>dn,debounce:()=>G,deepMerge:()=>w,drop:()=>F,floor:()=>tn,groupsOf:()=>S,head:()=>E,init:()=>M,isArray:()=>l,isBlank:()=>xn,isBoolean:()=>L,isBrowser:()=>g,isDefined:()=>P,isEmpty:()=>Tn,isEmptyObject:()=>W,isEven:()=>rn,isFunction:()=>H,isNull:()=>_,isNumber:()=>p,isObject:()=>s,isOdd:()=>on,isString:()=>c,isTouchDevice:()=>$,isWindow:()=>z,last:()=>q,max:()=>un,memoize:()=>Q,min:()=>sn,noop:()=>an,once:()=>X,partition:()=>C,randomChance:()=>ln,randomNumber:()=>y,range:()=>I,round:()=>cn,scroll:()=>J,sleep:()=>pn,splitAt:()=>V,splitStrAt:()=>gn,sum:()=>fn,tail:()=>B,take:()=>R,throttle:()=>nn,toArray:()=>D,toCamel:()=>yn,toKebab:()=>hn,toNumber:()=>wn,toOrdinal:()=>vn,truncate:()=>On,uniq:()=>a,uuid:()=>mn});module.exports=A(jn);function F(n,e){return n<=0?[...e]:e.slice(n)}function S(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 E(n){return n[0]}function M(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 i=e[o];n(i,o,e)?t.push(i):r.push(i)}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=[],i=e;for(;i<t;)o.push(i),i+=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 p(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,i=c(r)?document.querySelector(r):r,u=i?.scrollTop||window?.pageYOffset||0,m=(p(o)?o:Z(o,u))+e,v=Date.now();function b(){let d=Date.now()-v,x=d<t,T=x?Y(u,m,d,t):m;x&&requestAnimationFrame(b),i?i.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=1){let t=n/e;return Math.floor(t)*e}function rn(n){return n%2===0}function on(n){return n%2!==0}function un(n){if(n.length)return Math.max(...n)}function sn(n){if(n.length)return Math.min(...n)}function ln(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 cn(n,e=1){let t=n/e;return Math.round(t)*e}function fn(n){let e=0;for(let t=0;t<n.length;t++)e+=n[t];return e}function an(){}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 mn(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 i=0;i<o.length;i++){let u=o[i];l(e[u])&&l(r[u])?e[u]=a(e[u].concat(r[u])):s(e[u])&&s(r[u])?e[u]=w(e[u],r[u]):e[u]=r[u]}}return e}function bn(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 dn(n){return n.split("")}function xn(n){return n.trim().length===0}function Tn(n){return n.length===0}function gn(n,e){return n<=0?["",e]:n>e.length?[e,""]:[e.slice(0,n),e.slice(n)]}function yn(n){let e=/-(\w)/g;return n.replace(e,(t,r)=>r?r.toUpperCase():"")}function hn(n){let e=/\B([A-Z])/g;return n.replace(e,"-$1").toLowerCase()}function wn(n){return n.length?Number(n.replace(/[#£€$,%]/g,"")):NaN}function vn(n){let t=["st","nd","rd"][(n/10%10^1&&n%10)-1]||"th";return`${n}${t}`}function On(n,e,t="..."){return e<=0?t:n.slice(0,e)+t}0&&(module.exports={capitalise,ceil,chars,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
  *
@@ -238,6 +252,15 @@ declare function isWindow(val: unknown): val is Window;
238
252
  * @returns The rounded number.
239
253
  */
240
254
  declare function ceil(n: number, factor?: number): number;
255
+ /**
256
+ * Restricts a number between two bounds.
257
+ *
258
+ * @param n - The number to restrict.
259
+ * @param min - The minimum bound.
260
+ * @param max - The maximum bound.
261
+ * @returns The number restricted between the specified bounds.
262
+ */
263
+ declare function clamp(n: number, min: number, max: number): number;
241
264
  /**
242
265
  * Rounds a number down to the nearest multiple of the specified factor.
243
266
  *
@@ -276,6 +299,13 @@ declare function max(array: readonly number[]): number;
276
299
  */
277
300
  declare function min(array: readonly []): undefined;
278
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;
279
309
  /**
280
310
  * Rolls an n-sided die.
281
311
  *
@@ -414,4 +444,4 @@ declare function toOrdinal(n: number): string;
414
444
  */
415
445
  declare function truncate(str: string, length: number, suffix?: string): string;
416
446
 
417
- export { type Arrayable, type Fn, type Nullable, type Obj, type VoidFn, capitalise, ceil, chars, 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
  *
@@ -238,6 +252,15 @@ declare function isWindow(val: unknown): val is Window;
238
252
  * @returns The rounded number.
239
253
  */
240
254
  declare function ceil(n: number, factor?: number): number;
255
+ /**
256
+ * Restricts a number between two bounds.
257
+ *
258
+ * @param n - The number to restrict.
259
+ * @param min - The minimum bound.
260
+ * @param max - The maximum bound.
261
+ * @returns The number restricted between the specified bounds.
262
+ */
263
+ declare function clamp(n: number, min: number, max: number): number;
241
264
  /**
242
265
  * Rounds a number down to the nearest multiple of the specified factor.
243
266
  *
@@ -276,6 +299,13 @@ declare function max(array: readonly number[]): number;
276
299
  */
277
300
  declare function min(array: readonly []): undefined;
278
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;
279
309
  /**
280
310
  * Rolls an n-sided die.
281
311
  *
@@ -414,4 +444,4 @@ declare function toOrdinal(n: number): string;
414
444
  */
415
445
  declare function truncate(str: string, length: number, suffix?: string): string;
416
446
 
417
- export { type Arrayable, type Fn, type Nullable, type Obj, type VoidFn, capitalise, ceil, chars, 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 N(n){return n[0]}function A(n){return n.slice(0,n.length-1)}function F(n){return n[n.length-1]}function S(n,e){let t=[],r=[];for(let o=0;o<e.length;o++){let i=e[o];n(i,o,e)?t.push(i):r.push(i)}return[t,r]}function E(...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=[],i=e;for(;i<t;)o.push(i),i+=r||1;return o}function M(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,i=c(r)?document.querySelector(r):r,u=i?.scrollTop||window?.pageYOffset||0,f=(x(o)?o:v(o,u))+e,g=Date.now();function a(){let p=Date.now()-g,m=p<t,b=m?w(u,f,p,t):f;m&&requestAnimationFrame(a),i?i.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=1){let t=n/e;return Math.floor(t)*e}function en(n){return n%2===0}function tn(n){return n%2!==0}function rn(n){if(n.length)return Math.max(...n)}function on(n){if(n.length)return Math.min(...n)}function un(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 sn(n,e=1){let t=n/e;return Math.round(t)*e}function ln(n){let e=0;for(let t=0;t<n.length;t++)e+=n[t];return e}function fn(){}async function an(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 i=0;i<o.length;i++){let u=o[i];l(e[u])&&l(r[u])?e[u]=d(e[u].concat(r[u])):s(e[u])&&s(r[u])?e[u]=j(e[u],r[u]):e[u]=r[u]}}return e}function Tn(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 gn(n){return n.split("")}function yn(n){return n.trim().length===0}function hn(n){return n.length===0}function wn(n,e){return n<=0?["",e]:n>e.length?[e,""]:[e.slice(0,n),e.slice(n)]}function vn(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 jn(n){return n.length?Number(n.replace(/[#£€$,%]/g,"")):NaN}function kn(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}export{Tn as capitalise,X as ceil,gn as chars,K as debounce,j as deepMerge,k as drop,nn as floor,U as groupsOf,N as head,A as init,l as isArray,yn as isBlank,B as isBoolean,y as isBrowser,R as isDefined,hn as isEmpty,D as isEmptyObject,en as isEven,L as isFunction,P as isNull,x as isNumber,s as isObject,tn as isOdd,c as isString,W as isTouchDevice,H as isWindow,F as last,rn as max,Y as memoize,on as min,fn as noop,Z as once,S as partition,un as randomChance,O as randomNumber,E as range,sn as round,z as scroll,an as sleep,M as splitAt,wn as splitStrAt,ln as sum,q as tail,C as take,G as throttle,I as toArray,vn as toCamel,On as toKebab,jn as toNumber,kn as toOrdinal,Un 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.4.0",
3
+ "version": "2.6.0",
4
4
  "type": "module",
5
5
  "description": "TypeScript utilities",
6
6
  "license": "MIT",