minimal-shared 0.0.2 → 0.0.3

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.
Files changed (49) hide show
  1. package/README.md +1 -1
  2. package/dist/hooks/index.d.ts +2 -4
  3. package/dist/hooks/index.js +0 -2
  4. package/dist/hooks/use-back-to-top/use-back-to-top.js +1 -64
  5. package/dist/hooks/use-boolean/use-boolean.js +1 -24
  6. package/dist/hooks/use-client-rect/use-client-rect.js +1 -47
  7. package/dist/hooks/use-cookies/index.d.ts +1 -1
  8. package/dist/hooks/use-cookies/use-cookies.d.ts +11 -10
  9. package/dist/hooks/use-cookies/use-cookies.js +1 -110
  10. package/dist/hooks/use-copy-to-clipboard/use-copy-to-clipboard.js +1 -27
  11. package/dist/hooks/use-countdown-date/use-countdown-date.js +1 -41
  12. package/dist/hooks/use-countdown-seconds/use-countdown-seconds.js +1 -36
  13. package/dist/hooks/use-debounce/use-debounce.js +1 -17
  14. package/dist/hooks/use-double-click/use-double-click.js +1 -33
  15. package/dist/hooks/use-is-client/use-is-client.js +1 -12
  16. package/dist/hooks/use-local-storage/index.d.ts +1 -1
  17. package/dist/hooks/use-local-storage/use-local-storage.d.ts +11 -10
  18. package/dist/hooks/use-local-storage/use-local-storage.js +1 -113
  19. package/dist/hooks/use-multi-select/use-multi-select.js +1 -36
  20. package/dist/hooks/use-popover/use-popover.js +1 -21
  21. package/dist/hooks/use-popover-hover/use-popover-hover.js +1 -24
  22. package/dist/hooks/use-scroll-offset-top/use-scroll-offset-top.js +1 -29
  23. package/dist/hooks/use-set-state/use-set-state.d.ts +5 -5
  24. package/dist/hooks/use-set-state/use-set-state.js +1 -26
  25. package/dist/hooks/use-tabs/use-tabs.js +1 -16
  26. package/dist/index.d.ts +4 -6
  27. package/dist/utils/active-link/active-link.js +1 -43
  28. package/dist/utils/classes/classes.js +1 -14
  29. package/dist/utils/color/color.js +2 -40
  30. package/dist/utils/cookies/cookies.js +1 -46
  31. package/dist/utils/font/font.js +1 -20
  32. package/dist/utils/index.d.ts +2 -2
  33. package/dist/utils/local-storage/index.d.ts +1 -1
  34. package/dist/utils/local-storage/local-storage.d.ts +2 -14
  35. package/dist/utils/local-storage/local-storage.js +1 -51
  36. package/dist/utils/object/object.js +1 -10
  37. package/dist/utils/url/index.d.ts +1 -1
  38. package/dist/utils/url/url.d.ts +9 -1
  39. package/dist/utils/url/url.js +1 -28
  40. package/dist/utils/uuidv4/uuidv4.js +1 -11
  41. package/package.json +6 -2
  42. package/dist/hooks/use-event-listener/index.d.ts +0 -2
  43. package/dist/hooks/use-event-listener/index.js +0 -1
  44. package/dist/hooks/use-event-listener/use-event-listener.d.ts +0 -7
  45. package/dist/hooks/use-event-listener/use-event-listener.js +0 -23
  46. package/dist/hooks/use-text-input/index.d.ts +0 -2
  47. package/dist/hooks/use-text-input/index.js +0 -1
  48. package/dist/hooks/use-text-input/use-text-input.d.ts +0 -16
  49. package/dist/hooks/use-text-input/use-text-input.js +0 -16
@@ -1,113 +1 @@
1
- // src/hooks/use-local-storage/use-local-storage.ts
2
- import { useMemo, useState, useEffect, useCallback } from "react";
3
-
4
- // src/utils/local-storage/local-storage.ts
5
- function getStorage(key) {
6
- const storedValue = localStorageGetItem(key);
7
- if (storedValue) {
8
- try {
9
- return JSON.parse(storedValue);
10
- } catch {
11
- return storedValue;
12
- }
13
- }
14
- return null;
15
- }
16
- function setStorage(key, value) {
17
- try {
18
- const serializedValue = JSON.stringify(value);
19
- window.localStorage.setItem(key, serializedValue);
20
- } catch (error) {
21
- console.error("Error while setting storage:", error);
22
- }
23
- }
24
- function removeStorage(key) {
25
- try {
26
- window.localStorage.removeItem(key);
27
- } catch (error) {
28
- console.error("Error while removing from storage:", error);
29
- }
30
- }
31
- function localStorageAvailable() {
32
- try {
33
- const key = "__some_random_key_you_are_not_going_to_use__";
34
- window.localStorage.setItem(key, key);
35
- window.localStorage.removeItem(key);
36
- return true;
37
- } catch {
38
- return false;
39
- }
40
- }
41
- function localStorageGetItem(key, defaultValue = "") {
42
- if (!localStorageAvailable()) {
43
- return defaultValue;
44
- }
45
- const value = localStorage.getItem(key);
46
- return value ?? defaultValue;
47
- }
48
-
49
- // src/hooks/use-local-storage/use-local-storage.ts
50
- function useLocalStorage(key, initialState, options) {
51
- const isValuePresent = !!getStorage(key);
52
- const storedValue = getStorage(key) ?? initialState;
53
- const [state, set] = useState(storedValue);
54
- const { initOnLoad = true } = options ?? {};
55
- const hasMultipleValues = state && typeof state === "object";
56
- useEffect(() => {
57
- if (storedValue) {
58
- if (hasMultipleValues) {
59
- set((prevValue) => ({ ...prevValue, ...storedValue }));
60
- } else {
61
- set(storedValue);
62
- }
63
- if (!isValuePresent && initOnLoad) {
64
- setStorage(key, storedValue);
65
- }
66
- }
67
- }, []);
68
- const setState = useCallback(
69
- (newState) => {
70
- if (hasMultipleValues) {
71
- set((prevValue) => {
72
- const updatedState = { ...prevValue, ...newState };
73
- setStorage(key, updatedState);
74
- return updatedState;
75
- });
76
- } else {
77
- setStorage(key, newState);
78
- set(newState);
79
- }
80
- },
81
- [key, hasMultipleValues]
82
- );
83
- const setField = useCallback(
84
- (name, updateValue) => {
85
- if (hasMultipleValues) {
86
- setState({ [name]: updateValue });
87
- }
88
- },
89
- [hasMultipleValues, setState]
90
- );
91
- const resetState = useCallback(
92
- (defaultState) => {
93
- if (defaultState) {
94
- set(defaultState);
95
- }
96
- removeStorage(key);
97
- },
98
- [key]
99
- );
100
- const memoizedValue = useMemo(
101
- () => ({
102
- state,
103
- setState,
104
- setField,
105
- resetState
106
- }),
107
- [resetState, setField, setState, state]
108
- );
109
- return memoizedValue;
110
- }
111
- export {
112
- useLocalStorage
113
- };
1
+ import{useMemo as _,useState as v,useEffect as w,useCallback as u}from"react";function f(e,t){if(!p())return t??null;let r=localStorage.getItem(e);if(r!=="undefined"){if(r)try{return JSON.parse(r)}catch{return r??t??null}return t??null}}function i(e,t){try{let r=JSON.stringify(t);window.localStorage.setItem(e,r)}catch(r){console.error("Error while setting storage:",r)}}function m(e){try{window.localStorage.removeItem(e)}catch(t){console.error("Error while removing from storage:",t)}}function p(){try{let e="__some_random_key_you_are_not_going_to_use__";return window.localStorage.setItem(e,e),window.localStorage.removeItem(e),!0}catch{return!1}}function V(e,t,r){let{initializeWithValue:S=!0}=r??{},a=t&&typeof t=="object",[c,s]=v(t);w(()=>{let o=f(e);o?s(a?n=>({...n,...o}):o):t&&S&&i(e,t)},[]);let l=u(o=>{a?s(n=>{let g={...n,...o};return i(e,g),g}):(i(e,o),s(o))},[e,a]),T=u((o,n)=>{a&&l({[o]:n})},[a,l]),d=u(o=>{s(o??t),m(e)},[t,e]);return _(()=>({state:c,setState:l,setField:T,resetState:d}),[d,T,l,c])}export{V as useLocalStorage};
@@ -1,36 +1 @@
1
- // src/hooks/use-multi-select/use-multi-select.ts
2
- import { useMemo, useState, useCallback } from "react";
3
- function useMultiSelect(listItems, defaultSelectedItems) {
4
- const [values, setValues] = useState(defaultSelectedItems ?? []);
5
- const onToggleSelectItem = useCallback((newItem) => {
6
- setValues((prevSelectedItems) => updateSelectedItems(prevSelectedItems, newItem));
7
- }, []);
8
- const onSelectAllItems = useCallback(() => {
9
- setValues(
10
- (prevSelectedItems) => prevSelectedItems.length === listItems.length ? [] : listItems
11
- );
12
- }, [listItems]);
13
- const onDeSelectAllItems = useCallback(() => {
14
- setValues([]);
15
- }, []);
16
- const status = useMemo(() => {
17
- if (values.length === 0) return "unchecked";
18
- if (values.length === listItems.length) return "checked";
19
- return "indeterminate";
20
- }, [listItems.length, values.length]);
21
- return {
22
- values,
23
- status,
24
- setValues,
25
- onSelectAllItems,
26
- onDeSelectAllItems,
27
- onToggleSelectItem
28
- };
29
- }
30
- function updateSelectedItems(selectedItems, newItem) {
31
- return selectedItems.includes(newItem) ? selectedItems.filter((existingItem) => existingItem !== newItem) : [...selectedItems, newItem];
32
- }
33
- export {
34
- updateSelectedItems,
35
- useMultiSelect
36
- };
1
+ import{useMemo as a,useState as S,useCallback as c}from"react";function d(e,n){let[t,l]=S(n??[]),i=c(r=>{l(g=>h(g,r))},[]),o=c(()=>{l(r=>r.length===e.length?[]:e)},[e]),u=c(()=>{l([])},[]),s=a(()=>t.length===0?"unchecked":t.length===e.length?"checked":"indeterminate",[e.length,t.length]);return{values:t,status:s,setValues:l,onSelectAllItems:o,onDeSelectAllItems:u,onToggleSelectItem:i}}function h(e,n){return e.includes(n)?e.filter(t=>t!==n):[...e,n]}export{h as updateSelectedItems,d as useMultiSelect};
@@ -1,21 +1 @@
1
- // src/hooks/use-popover/use-popover.ts
2
- import { useState, useCallback } from "react";
3
- function usePopover() {
4
- const [anchorEl, setAnchorEl] = useState(null);
5
- const onOpen = useCallback((event) => {
6
- setAnchorEl(event.currentTarget);
7
- }, []);
8
- const onClose = useCallback(() => {
9
- setAnchorEl(null);
10
- }, []);
11
- return {
12
- open: !!anchorEl,
13
- anchorEl,
14
- onOpen,
15
- onClose,
16
- setAnchorEl
17
- };
18
- }
19
- export {
20
- usePopover
21
- };
1
+ import{useState as s,useCallback as n}from"react";function c(){let[t,e]=s(null),o=n(r=>{e(r.currentTarget)},[]),l=n(()=>{e(null)},[]);return{open:!!t,anchorEl:t,onOpen:o,onClose:l,setAnchorEl:e}}export{c as usePopover};
@@ -1,24 +1 @@
1
- // src/hooks/use-popover-hover/use-popover-hover.ts
2
- import { useRef, useState, useCallback } from "react";
3
- function usePopoverHover(inputRef) {
4
- const initialRef = useRef(null);
5
- const elementRef = inputRef || initialRef;
6
- const [open, setOpen] = useState(false);
7
- const onOpen = useCallback(() => {
8
- setOpen(true);
9
- }, []);
10
- const onClose = useCallback(() => {
11
- setOpen(false);
12
- }, []);
13
- return {
14
- elementRef,
15
- anchorEl: elementRef.current,
16
- open,
17
- onOpen,
18
- onClose,
19
- setOpen
20
- };
21
- }
22
- export {
23
- usePopoverHover
24
- };
1
+ import{useRef as a,useState as p,useCallback as t}from"react";function f(n){let l=a(null),o=n||l,[r,e]=p(!1),s=t(()=>{e(!0)},[]),c=t(()=>{e(!1)},[]);return{elementRef:o,anchorEl:o.current,open:r,onOpen:s,onClose:c,setOpen:e}}export{f as usePopoverHover};
@@ -1,29 +1 @@
1
- // src/hooks/use-scroll-offset-top/use-scroll-offset-top.ts
2
- import { useRef, useState, useEffect, useCallback } from "react";
3
- function useScrollOffsetTop(defaultValue = 0) {
4
- const elementRef = useRef(null);
5
- const [offsetTop, setOffsetTop] = useState(false);
6
- const handleScroll = useCallback(() => {
7
- const windowScrollY = window.scrollY;
8
- if (elementRef.current) {
9
- const elementOffsetTop = elementRef.current.offsetTop;
10
- setOffsetTop(windowScrollY > elementOffsetTop - defaultValue);
11
- } else {
12
- setOffsetTop(windowScrollY > defaultValue);
13
- }
14
- }, [defaultValue]);
15
- useEffect(() => {
16
- handleScroll();
17
- window.addEventListener("scroll", handleScroll);
18
- return () => {
19
- window.removeEventListener("scroll", handleScroll);
20
- };
21
- }, [handleScroll]);
22
- return {
23
- elementRef,
24
- offsetTop
25
- };
26
- }
27
- export {
28
- useScrollOffsetTop
29
- };
1
+ import{useRef as f,useState as c,useEffect as p,useCallback as T}from"react";function i(o=0){let t=f(null),[s,n]=c(!1),e=T(()=>{let r=window.scrollY;if(t.current){let l=t.current.offsetTop;n(r>l-o)}else n(r>o)},[o]);return p(()=>(e(),window.addEventListener("scroll",e),()=>{window.removeEventListener("scroll",e)}),[e]),{elementRef:t,offsetTop:s}}export{i as useScrollOffsetTop};
@@ -5,28 +5,28 @@
5
5
  *
6
6
  * @returns {UseSetStateReturn<T>} - An object containing:
7
7
  * - `state`: The current state.
8
- * - `onReset`: A function to reset the state to the initial value.
8
+ * - `resetState`: A function to reset the state to the initial value.
9
9
  * - `setState`: A function to update the state.
10
10
  * - `setField`: A function to update a specific field in the state.
11
11
  *
12
12
  * @example
13
- * const { state, setState, setField, onReset } = useSetState({ name: '', age: 0 });
13
+ * const { state, setState, setField, resetState } = useSetState({ name: '', age: 0 });
14
14
  *
15
15
  * return (
16
16
  * <div>
17
17
  * <p>Name: {state.name}</p>
18
18
  * <p>Age: {state.age}</p>
19
19
  * <button onClick={() => setField('name', 'John')}>Set Name</button>
20
- * <button onClick={onReset}>Reset</button>
20
+ * <button onClick={resetState}>Reset</button>
21
21
  * </div>
22
22
  * );
23
23
  */
24
24
  type UseSetStateReturn<T> = {
25
25
  state: T;
26
- onReset: () => void;
26
+ resetState: (defaultState?: T) => void;
27
27
  setState: (updateState: T | Partial<T>) => void;
28
28
  setField: (name: keyof T, updateValue: T[keyof T]) => void;
29
29
  };
30
- declare function useSetState<T>(initialState: T): UseSetStateReturn<T>;
30
+ declare function useSetState<T>(initialState?: T): UseSetStateReturn<T>;
31
31
 
32
32
  export { type UseSetStateReturn, useSetState };
@@ -1,26 +1 @@
1
- // src/hooks/use-set-state/use-set-state.ts
2
- import { useState, useCallback } from "react";
3
- function useSetState(initialState) {
4
- const [state, set] = useState(initialState);
5
- const setState = useCallback((updateState) => {
6
- set((prevValue) => ({ ...prevValue, ...updateState }));
7
- }, []);
8
- const setField = useCallback(
9
- (name, updateValue) => {
10
- setState({ [name]: updateValue });
11
- },
12
- [setState]
13
- );
14
- const onReset = useCallback(() => {
15
- set(initialState);
16
- }, [initialState]);
17
- return {
18
- state,
19
- setState,
20
- setField,
21
- onReset
22
- };
23
- }
24
- export {
25
- useSetState
26
- };
1
+ import{useState as S,useCallback as T}from"react";function f(e){let[u,o]=S(e),a=T(t=>{o(s=>({...s,...t}))},[]),d=T((t,s)=>{a({[t]:s})},[a]),r=T(t=>{o(t??e)},[e]);return{state:u,setState:a,setField:d,resetState:r}}export{f as useSetState};
@@ -1,16 +1 @@
1
- // src/hooks/use-tabs/use-tabs.ts
2
- import { useState, useCallback } from "react";
3
- function useTabs(defaultValue) {
4
- const [value, setValue] = useState(defaultValue);
5
- const onChange = useCallback((event, newValue) => {
6
- setValue(newValue);
7
- }, []);
8
- return {
9
- value,
10
- setValue,
11
- onChange
12
- };
13
- }
14
- export {
15
- useTabs
16
- };
1
+ import{useState as i,useCallback as r}from"react";function u(e){let[n,t]=i(e),s=r((o,a)=>{t(a)},[]);return{value:n,setValue:t,onChange:s}}export{u as useTabs};
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export { hasParams, isExternalLink, removeLastSlash, removeParams } from './utils/url/url.js';
1
+ export { hasParams, isEqualPath, isExternalLink, removeLastSlash, removeParams } from './utils/url/url.js';
2
2
  export { pxToRem, remToPx, setFont } from './utils/font/font.js';
3
3
  export { ChannelPalette, InputPalette, createPaletteChannel, hexToRgbChannel, varAlpha } from './utils/color/color.js';
4
4
  export { hasKeys } from './utils/object/object.js';
@@ -6,23 +6,21 @@ export { uuidv4 } from './utils/uuidv4/uuidv4.js';
6
6
  export { StateProps, mergeClasses } from './utils/classes/classes.js';
7
7
  export { getCookie, removeCookie, setCookie } from './utils/cookies/cookies.js';
8
8
  export { isActiveLink } from './utils/active-link/active-link.js';
9
- export { getStorage, localStorageAvailable, localStorageGetItem, removeStorage, setStorage } from './utils/local-storage/local-storage.js';
9
+ export { getStorage, localStorageAvailable, removeStorage, setStorage } from './utils/local-storage/local-storage.js';
10
10
  export { UseTabsReturn, useTabs } from './hooks/use-tabs/use-tabs.js';
11
11
  export { UseBooleanReturn, useBoolean } from './hooks/use-boolean/use-boolean.js';
12
12
  export { UsePopoverReturn, usePopover } from './hooks/use-popover/use-popover.js';
13
- export { UseCookiesReturn, useCookies } from './hooks/use-cookies/use-cookies.js';
13
+ export { UseCookiesOptions, UseCookiesReturn, useCookies } from './hooks/use-cookies/use-cookies.js';
14
14
  export { UseDebounceReturn, useDebounce } from './hooks/use-debounce/use-debounce.js';
15
15
  export { UseSetStateReturn, useSetState } from './hooks/use-set-state/use-set-state.js';
16
16
  export { UseIsClientReturn, useIsClient } from './hooks/use-is-client/use-is-client.js';
17
- export { UseTextInputReturn, useTextInput } from './hooks/use-text-input/use-text-input.js';
18
17
  export { UseBackToTopReturn, useBackToTop } from './hooks/use-back-to-top/use-back-to-top.js';
19
18
  export { UseClientRectReturn, useClientRect } from './hooks/use-client-rect/use-client-rect.js';
20
19
  export { UseMultiSelectReturn, updateSelectedItems, useMultiSelect } from './hooks/use-multi-select/use-multi-select.js';
21
20
  export { UseDoubleClickReturn, useDoubleClick } from './hooks/use-double-click/use-double-click.js';
22
- export { UseLocalStorageReturn, useLocalStorage } from './hooks/use-local-storage/use-local-storage.js';
21
+ export { UseLocalStorageOptions, UseLocalStorageReturn, useLocalStorage } from './hooks/use-local-storage/use-local-storage.js';
23
22
  export { usePopoverHover } from './hooks/use-popover-hover/use-popover-hover.js';
24
23
  export { UseCountdownDateReturn, useCountdownDate } from './hooks/use-countdown-date/use-countdown-date.js';
25
- export { useEventListener } from './hooks/use-event-listener/use-event-listener.js';
26
24
  export { UseScrollOffsetTopReturn, useScrollOffsetTop } from './hooks/use-scroll-offset-top/use-scroll-offset-top.js';
27
25
  export { UseCountdownSecondsReturn, useCountdownSeconds } from './hooks/use-countdown-seconds/use-countdown-seconds.js';
28
26
  export { CopiedValue, CopyFn, UseCopyToClipboardReturn, useCopyToClipboard } from './hooks/use-copy-to-clipboard/use-copy-to-clipboard.js';
@@ -1,43 +1 @@
1
- // src/utils/url/url.ts
2
- var hasParams = (url) => {
3
- const queryString = url.split("?")[1];
4
- return queryString ? new URLSearchParams(queryString).toString().length > 0 : false;
5
- };
6
- function removeLastSlash(pathname) {
7
- if (pathname !== "/" && pathname.endsWith("/")) {
8
- return pathname.slice(0, -1);
9
- }
10
- return pathname;
11
- }
12
- function removeParams(url) {
13
- try {
14
- const urlObj = new URL(url, window.location.origin);
15
- return removeLastSlash(urlObj.pathname);
16
- } catch {
17
- return url;
18
- }
19
- }
20
- function isExternalLink(url) {
21
- return url.startsWith("http");
22
- }
23
-
24
- // src/utils/active-link/active-link.ts
25
- function isActiveLink(pathnameProps, itemPath, deep = true) {
26
- const pathname = removeLastSlash(pathnameProps);
27
- const pathHasParams = hasParams(itemPath);
28
- const notValid = itemPath.startsWith("#") || isExternalLink(itemPath);
29
- if (notValid) {
30
- return false;
31
- }
32
- const isDeep = deep || pathHasParams;
33
- if (isDeep) {
34
- const defaultActive = pathname.includes(itemPath);
35
- const originItemPath = removeParams(itemPath);
36
- const hasParamsActive = pathHasParams && originItemPath === pathname;
37
- return defaultActive || hasParamsActive;
38
- }
39
- return pathname === itemPath;
40
- }
41
- export {
42
- isActiveLink
43
- };
1
+ var o=t=>{let n=t.split("?")[1];return n?new URLSearchParams(n).toString().length>0:!1};function s(t){return t!=="/"&&t.endsWith("/")?t.slice(0,-1):t}function i(t){try{let n=new URL(t,window.location.origin);return s(n.pathname)}catch{return t}}function a(t){return t.startsWith("http")}function v(t,n,c=!0){let r=s(t),e=o(n);if(n.startsWith("#")||a(n))return!1;if(c||e){let l=r.includes(n),u=i(n);return l||e&&u===r}return r===n}export{v as isActiveLink};
@@ -1,14 +1 @@
1
- // src/utils/classes/classes.ts
2
- function mergeClasses(className, state) {
3
- const classList = className ? Array.isArray(className) ? className : [className] : [];
4
- const dynamicStateClassesArray = Object.entries(state || {}).filter(([key, value]) => value !== void 0 && value !== false).map(([key, value]) => {
5
- if (Array.isArray(value)) {
6
- return value[0] ? value[1] : "";
7
- }
8
- return value ? key : "";
9
- }).filter(Boolean);
10
- return [...classList.filter(Boolean), ...dynamicStateClassesArray].join(" ");
11
- }
12
- export {
13
- mergeClasses
14
- };
1
+ function s(n,e){let i=n?Array.isArray(n)?n:[n]:[],o=Object.entries(e||{}).filter(([t,r])=>r!==void 0&&r!==!1).map(([t,r])=>Array.isArray(r)?r[0]?r[1]:"":r?t:"").filter(Boolean);return[...i.filter(Boolean),...o].join(" ")}export{s as mergeClasses};
@@ -1,33 +1,4 @@
1
- // src/utils/color/color.ts
2
- function hexToRgbChannel(hexColor) {
3
- if (!hexColor) {
4
- throw new Error("Hex color is undefined!");
5
- }
6
- if (!/^#[0-9A-F]{6}$/i.test(hexColor)) {
7
- throw new Error(`Invalid hex color: ${hexColor}`);
8
- }
9
- const r = parseInt(hexColor.substring(1, 3), 16);
10
- const g = parseInt(hexColor.substring(3, 5), 16);
11
- const b = parseInt(hexColor.substring(5, 7), 16);
12
- return `${r} ${g} ${b}`;
13
- }
14
- function createPaletteChannel(hexPalette) {
15
- const channelPalette = {};
16
- Object.entries(hexPalette).forEach(([key, value]) => {
17
- if (value) {
18
- channelPalette[`${key}Channel`] = hexToRgbChannel(value);
19
- }
20
- });
21
- return { ...hexPalette, ...channelPalette };
22
- }
23
- function varAlpha(color, opacity = 1) {
24
- if (!color) {
25
- throw new Error("[Alpha]: Color is undefined!");
26
- }
27
- const unsupported = color.startsWith("#") || color.startsWith("rgb") || color.startsWith("rgba") || !color.includes("var") && color.includes("Channel");
28
- if (unsupported) {
29
- throw new Error(
30
- `[Alpha]: Unsupported color format "${color}".
1
+ function s(n){if(!n)throw new Error("Hex color is undefined!");if(!/^#[0-9A-F]{6}$/i.test(n))throw new Error(`Invalid hex color: ${n}`);let t=parseInt(n.substring(1,3),16),e=parseInt(n.substring(3,5),16),r=parseInt(n.substring(5,7),16);return`${t} ${e} ${r}`}function a(n){let t={};return Object.entries(n).forEach(([e,r])=>{r&&(t[`${e}Channel`]=s(r))}),{...n,...t}}function i(n,t=1){if(!n)throw new Error("[Alpha]: Color is undefined!");if(n.startsWith("#")||n.startsWith("rgb")||n.startsWith("rgba")||!n.includes("var")&&n.includes("Channel"))throw new Error(`[Alpha]: Unsupported color format "${n}".
31
2
  Supported formats are:
32
3
  - RGB channels: "0 184 217".
33
4
  - CSS variables with "Channel" prefix: "var(--palette-common-blackChannel, #000000)".
@@ -35,13 +6,4 @@ function varAlpha(color, opacity = 1) {
35
6
  - Hex: "#00B8D9".
36
7
  - RGB: "rgb(0, 184, 217)".
37
8
  - RGBA: "rgba(0, 184, 217, 1)".
38
- `
39
- );
40
- }
41
- return `rgba(${color} / ${opacity})`;
42
- }
43
- export {
44
- createPaletteChannel,
45
- hexToRgbChannel,
46
- varAlpha
47
- };
9
+ `);return`rgba(${n} / ${t})`}export{a as createPaletteChannel,s as hexToRgbChannel,i as varAlpha};
@@ -1,46 +1 @@
1
- // src/utils/cookies/cookies.ts
2
- function getCookie(key) {
3
- try {
4
- const keyName = `${key}=`;
5
- const cDecoded = decodeURIComponent(document.cookie);
6
- const cArr = cDecoded.split("; ");
7
- for (const val of cArr) {
8
- if (val.startsWith(keyName)) {
9
- const cookieValue = val.substring(keyName.length);
10
- try {
11
- return JSON.parse(cookieValue);
12
- } catch {
13
- return cookieValue;
14
- }
15
- }
16
- }
17
- } catch {
18
- return null;
19
- }
20
- return null;
21
- }
22
- function setCookie(key, value, daysUntilExpiration = 0) {
23
- try {
24
- const serializedValue = encodeURIComponent(JSON.stringify(value));
25
- let cookieOptions = `${key}=${serializedValue}; path=/`;
26
- if (daysUntilExpiration > 0) {
27
- const expirationDate = new Date(Date.now() + daysUntilExpiration * 24 * 60 * 60 * 1e3);
28
- cookieOptions += `; expires=${expirationDate.toUTCString()}`;
29
- }
30
- document.cookie = cookieOptions;
31
- } catch (error) {
32
- console.error("Error while setting cookie:", error);
33
- }
34
- }
35
- function removeCookie(key) {
36
- try {
37
- document.cookie = `${key}=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;`;
38
- } catch (error) {
39
- console.error("Error while removing cookie:", error);
40
- }
41
- }
42
- export {
43
- getCookie,
44
- removeCookie,
45
- setCookie
46
- };
1
+ function i(o){try{let e=`${o}=`,t=decodeURIComponent(document.cookie).split("; ");for(let r of t)if(r.startsWith(e)){let n=r.substring(e.length);try{return JSON.parse(n)}catch{return n}}}catch{return null}return null}function s(o,e,c=0){try{let t=encodeURIComponent(JSON.stringify(e)),r=`${o}=${t}; path=/`;if(c>0){let n=new Date(Date.now()+c*24*60*60*1e3);r+=`; expires=${n.toUTCString()}`}document.cookie=r}catch(t){console.error("Error while setting cookie:",t)}}function u(o){try{document.cookie=`${o}=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;`}catch(e){console.error("Error while removing cookie:",e)}}export{i as getCookie,u as removeCookie,s as setCookie};
@@ -1,20 +1 @@
1
- // src/utils/font/font.ts
2
- var DEFAULT_FONT_FAMILY = `-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"`;
3
- function setFont(fontName) {
4
- return fontName ? `"${fontName}", ${DEFAULT_FONT_FAMILY}` : DEFAULT_FONT_FAMILY;
5
- }
6
- function remToPx(value) {
7
- const remValue = parseFloat(value);
8
- return Math.round(remValue * 16);
9
- }
10
- function pxToRem(value) {
11
- if (typeof value !== "number" || isNaN(value)) {
12
- throw new Error(`Invalid pixel value: ${value}`);
13
- }
14
- return `${value / 16}rem`;
15
- }
16
- export {
17
- pxToRem,
18
- remToPx,
19
- setFont
20
- };
1
+ var o='-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"';function t(e){return e?`"${e}", ${o}`:o}function n(e){let r=parseFloat(e);return Math.round(r*16)}function i(e){if(typeof e!="number"||isNaN(e))throw new Error(`Invalid pixel value: ${e}`);return`${e/16}rem`}export{i as pxToRem,n as remToPx,t as setFont};
@@ -1,4 +1,4 @@
1
- export { hasParams, isExternalLink, removeLastSlash, removeParams } from './url/url.js';
1
+ export { hasParams, isEqualPath, isExternalLink, removeLastSlash, removeParams } from './url/url.js';
2
2
  export { pxToRem, remToPx, setFont } from './font/font.js';
3
3
  export { ChannelPalette, InputPalette, createPaletteChannel, hexToRgbChannel, varAlpha } from './color/color.js';
4
4
  export { hasKeys } from './object/object.js';
@@ -6,4 +6,4 @@ export { uuidv4 } from './uuidv4/uuidv4.js';
6
6
  export { StateProps, mergeClasses } from './classes/classes.js';
7
7
  export { getCookie, removeCookie, setCookie } from './cookies/cookies.js';
8
8
  export { isActiveLink } from './active-link/active-link.js';
9
- export { getStorage, localStorageAvailable, localStorageGetItem, removeStorage, setStorage } from './local-storage/local-storage.js';
9
+ export { getStorage, localStorageAvailable, removeStorage, setStorage } from './local-storage/local-storage.js';
@@ -1 +1 @@
1
- export { getStorage, localStorageAvailable, localStorageGetItem, removeStorage, setStorage } from './local-storage.js';
1
+ export { getStorage, localStorageAvailable, removeStorage, setStorage } from './local-storage.js';
@@ -8,7 +8,7 @@
8
8
  * const user = getStorage('user');
9
9
  * console.log(user); // { name: 'John', age: 30 }
10
10
  */
11
- declare function getStorage(key: string): any | null;
11
+ declare function getStorage<T>(key: string, defaultValue?: T): T | null | undefined;
12
12
  /**
13
13
  * Sets a value in local storage with a specified key.
14
14
  *
@@ -39,17 +39,5 @@ declare function removeStorage(key: string): void;
39
39
  * console.log(isAvailable); // true or false
40
40
  */
41
41
  declare function localStorageAvailable(): boolean;
42
- /**
43
- * Retrieves a value from local storage by key, with an optional default value.
44
- *
45
- * @param {string} key - The key of the item to retrieve.
46
- * @param {string} [defaultValue=''] - The default value to return if the item is not found.
47
- * @returns {string | undefined} - The value of the item, or the default value if not found.
48
- *
49
- * @example
50
- * const value = localStorageGetItem('theme', 'light');
51
- * console.log(value); // 'dark' or 'light'
52
- */
53
- declare function localStorageGetItem(key: string, defaultValue?: string): string | undefined;
54
42
 
55
- export { getStorage, localStorageAvailable, localStorageGetItem, removeStorage, setStorage };
43
+ export { getStorage, localStorageAvailable, removeStorage, setStorage };
@@ -1,51 +1 @@
1
- // src/utils/local-storage/local-storage.ts
2
- function getStorage(key) {
3
- const storedValue = localStorageGetItem(key);
4
- if (storedValue) {
5
- try {
6
- return JSON.parse(storedValue);
7
- } catch {
8
- return storedValue;
9
- }
10
- }
11
- return null;
12
- }
13
- function setStorage(key, value) {
14
- try {
15
- const serializedValue = JSON.stringify(value);
16
- window.localStorage.setItem(key, serializedValue);
17
- } catch (error) {
18
- console.error("Error while setting storage:", error);
19
- }
20
- }
21
- function removeStorage(key) {
22
- try {
23
- window.localStorage.removeItem(key);
24
- } catch (error) {
25
- console.error("Error while removing from storage:", error);
26
- }
27
- }
28
- function localStorageAvailable() {
29
- try {
30
- const key = "__some_random_key_you_are_not_going_to_use__";
31
- window.localStorage.setItem(key, key);
32
- window.localStorage.removeItem(key);
33
- return true;
34
- } catch {
35
- return false;
36
- }
37
- }
38
- function localStorageGetItem(key, defaultValue = "") {
39
- if (!localStorageAvailable()) {
40
- return defaultValue;
41
- }
42
- const value = localStorage.getItem(key);
43
- return value ?? defaultValue;
44
- }
45
- export {
46
- getStorage,
47
- localStorageAvailable,
48
- localStorageGetItem,
49
- removeStorage,
50
- setStorage
51
- };
1
+ function n(r,o){if(!t())return o??null;let e=localStorage.getItem(r);if(e!=="undefined"){if(e)try{return JSON.parse(e)}catch{return e??o??null}return o??null}}function a(r,o){try{let e=JSON.stringify(o);window.localStorage.setItem(r,e)}catch(e){console.error("Error while setting storage:",e)}}function i(r){try{window.localStorage.removeItem(r)}catch(o){console.error("Error while removing from storage:",o)}}function t(){try{let r="__some_random_key_you_are_not_going_to_use__";return window.localStorage.setItem(r,r),window.localStorage.removeItem(r),!0}catch{return!1}}export{n as getStorage,t as localStorageAvailable,i as removeStorage,a as setStorage};
@@ -1,10 +1 @@
1
- // src/utils/object/object.ts
2
- function hasKeys(obj, keys) {
3
- if (!obj || !keys.length || typeof obj !== "object") {
4
- return false;
5
- }
6
- return keys.every((key) => key in obj);
7
- }
8
- export {
9
- hasKeys
10
- };
1
+ function r(e,n){return!e||!n.length||typeof e!="object"?!1:n.every(t=>t in e)}export{r as hasKeys};
@@ -1 +1 @@
1
- export { hasParams, isExternalLink, removeLastSlash, removeParams } from './url.js';
1
+ export { hasParams, isEqualPath, isExternalLink, removeLastSlash, removeParams } from './url.js';