Socket
Socket
Sign inDemoInstall

@mantine/hooks

Package Overview
Dependencies
Maintainers
1
Versions
373
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@mantine/hooks - npm Package Compare versions

Comparing version 1.3.0-alpha.0 to 1.3.0-alpha.1

594

lib/index.umd.js

@@ -1,594 +0,2 @@

(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('react')) :
typeof define === 'function' && define.amd ? define(['exports', 'react'], factory) :
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global['@mantine/hooks'] = {}, global.React));
}(this, (function (exports, react) { 'use strict';
function randomId() {
return `mantine-${Math.random().toString(36).substr(2, 9)}`;
}
function upperFirst(value) {
return typeof value !== "string" ? "" : value.charAt(0).toUpperCase() + value.slice(1);
}
function useClickOutside(handler, events = ["mousedown", "touchstart"]) {
const ref = react.useRef();
react.useEffect(() => {
const listener = (event) => {
if (ref.current && !ref.current.contains(event.target)) {
handler();
}
};
events.forEach((fn) => document.addEventListener(fn, listener));
return () => {
events.forEach((fn) => document.removeEventListener(fn, listener));
};
}, [ref, handler]);
return ref;
}
function useClipboard({ timeout = 2e3 } = {}) {
const [error, setError] = react.useState(null);
const [copied, setCopied] = react.useState(false);
const [copyTimeout, setCopyTimeout] = react.useState(null);
const handleCopyResult = (value) => {
clearTimeout(copyTimeout);
setCopyTimeout(setTimeout(() => setCopied(false), timeout));
setCopied(value);
};
const copy = (valueToCopy) => {
if ("clipboard" in navigator) {
navigator.clipboard.writeText(valueToCopy).then(() => handleCopyResult(true)).catch((err) => setError(err));
} else {
setError(new Error("useClipboard: navigator.clipboard is not supported"));
}
};
const reset = () => {
setCopied(false);
setError(null);
clearTimeout(copyTimeout);
};
return { copy, reset, error, copied };
}
function attachMediaListener(query, callback) {
try {
query.addEventListener("change", callback);
return () => query.removeEventListener("change", callback);
} catch (e) {
query.addListener(callback);
return () => query.removeListener(callback);
}
}
function getInitialValue(query) {
if (typeof window !== "undefined" && "matchMedia" in window) {
return window.matchMedia(query).matches;
}
return false;
}
function useMediaQuery(query) {
const [matches, setMatches] = react.useState(getInitialValue(query));
const queryRef = react.useRef();
react.useEffect(() => {
if ("matchMedia" in window) {
queryRef.current = window.matchMedia(query);
setMatches(queryRef.current.matches);
return attachMediaListener(queryRef.current, (event) => setMatches(event.matches));
}
}, [query]);
return matches;
}
function useColorScheme() {
return useMediaQuery("(prefers-color-scheme: dark)") ? "dark" : "light";
}
function useDebouncedValue(value, wait, options = { leading: false }) {
const [_value, setValue] = react.useState(value);
const mountedRef = react.useRef(false);
const timeoutRef = react.useRef(null);
const cooldownRef = react.useRef(false);
const cancel = () => window.clearTimeout(timeoutRef.current);
react.useEffect(() => {
if (mountedRef.current) {
if (!cooldownRef.current && options.leading) {
cooldownRef.current = true;
setValue(value);
} else {
cancel();
timeoutRef.current = window.setTimeout(() => {
cooldownRef.current = false;
setValue(value);
}, wait);
}
}
}, [value, options.leading]);
react.useEffect(() => {
mountedRef.current = true;
return cancel;
}, []);
return [_value, cancel];
}
function useDocumentTitle(title) {
react.useLayoutEffect(() => {
if (typeof title === "string" && title.trim().length > 0) {
document.title = title.trim();
}
}, [title]);
}
const TABBABLE_NODES = /input|select|textarea|button|object/;
const FOCUS_SELECTOR = "a, input, select, textarea, button, object, [tabindex]";
function hidden(element) {
if (process.env.NODE_ENV === "test") {
return false;
}
return element.offsetWidth <= 0 && element.offsetHeight <= 0 || element.style.display === "none";
}
function visible(element) {
let parentElement = element;
while (parentElement) {
if (parentElement === document.body) {
break;
}
if (hidden(parentElement)) {
return false;
}
parentElement = parentElement.parentNode;
}
return true;
}
function getElementTabIndex(element) {
let tabIndex = element.getAttribute("tabindex");
if (tabIndex === null) {
tabIndex = void 0;
}
return parseInt(tabIndex, 10);
}
function focusable(element) {
const nodeName = element.nodeName.toLowerCase();
const isTabIndexNotNaN = !Number.isNaN(getElementTabIndex(element));
const res = TABBABLE_NODES.test(nodeName) && !element.disabled || (element instanceof HTMLAnchorElement ? element.href || isTabIndexNotNaN : isTabIndexNotNaN);
return res && visible(element);
}
function tabbable(element) {
const tabIndex = getElementTabIndex(element);
const isTabIndexNaN = Number.isNaN(tabIndex);
return (isTabIndexNaN || tabIndex >= 0) && focusable(element);
}
function findTabbableDescendants(element) {
return Array.from(element.querySelectorAll(FOCUS_SELECTOR)).filter(tabbable);
}
const focusLaterElements = [];
let focusElement = null;
let needToFocus = false;
function handleBlur() {
needToFocus = true;
}
function handleFocus() {
if (needToFocus) {
needToFocus = false;
if (!focusElement) {
return;
}
if (!focusElement) {
return;
}
if (focusElement.contains(document.activeElement)) {
return;
}
const el = findTabbableDescendants(focusElement)[0] || focusElement;
el.focus();
}
}
function markForFocusLater() {
focusLaterElements.push(document.activeElement);
}
function returnFocus() {
let toFocus = null;
try {
toFocus = focusLaterElements.pop();
if (toFocus)
toFocus.focus();
} catch (e) {
console.warn([
"[@mantine/hooks/use-focus-trap] Focus was returned to",
toFocus,
"but dom node does not exist"
].join(" "));
}
}
function setupScopedFocus(element) {
focusElement = element;
document.addEventListener("focusout", handleBlur, false);
document.addEventListener("focusin", handleFocus, true);
}
function teardownScopedFocus() {
focusElement = null;
document.removeEventListener("focusout", handleBlur);
document.removeEventListener("focusin", handleFocus);
}
function scopeTab(node, event) {
const tabbable = findTabbableDescendants(node);
if (!tabbable.length) {
event.preventDefault();
return;
}
const finalTabbable = tabbable[event.shiftKey ? 0 : tabbable.length - 1];
const leavingFinalTabbable = finalTabbable === document.activeElement || node === document.activeElement;
if (!leavingFinalTabbable) {
return;
}
event.preventDefault();
const target = tabbable[event.shiftKey ? tabbable.length - 1 : 0];
if (target) {
target.focus();
}
}
function createAriaHider(containerNode, selector = "body > :not(script)") {
const rootNodes = Array.from(document.querySelectorAll(selector)).map((node) => {
if (node.contains(containerNode)) {
return void 0;
}
const ariaHidden = node.getAttribute("aria-hidden");
if (ariaHidden === null || ariaHidden === "false") {
node.setAttribute("aria-hidden", "true");
}
return { node, ariaHidden };
});
return () => {
rootNodes.forEach((item) => {
if (!item) {
return;
}
if (item.ariaHidden === null) {
item.node.removeAttribute("aria-hidden");
} else {
item.node.setAttribute("aria-hidden", item.ariaHidden);
}
});
};
}
function useFocusTrap(active = true) {
const ref = react.useRef();
const restoreAria = react.useRef(null);
const setRef = react.useCallback((node) => {
if (restoreAria.current) {
restoreAria.current();
}
if (ref.current) {
returnFocus();
teardownScopedFocus();
}
if (active && node) {
setupScopedFocus(node);
markForFocusLater();
const processNode = (_node) => {
restoreAria.current = createAriaHider(_node);
let focusElement = node.querySelector("[data-autofocus]");
if (!focusElement) {
const children = Array.from(node.querySelectorAll(FOCUS_SELECTOR));
focusElement = children.find(tabbable) || children.find(focusable) || null;
if (!focusElement && focusable(node))
focusElement = node;
}
if (focusElement) {
focusElement.focus();
} else if (process.env.NODE_ENV === "development") {
console.warn("[@mantine/hooks/use-focus-trap] Failed to find focusable element within provided node", node);
}
};
setTimeout(() => {
if (node.ownerDocument) {
processNode(node);
} else if (process.env.NODE_ENV === "development") {
console.warn("[@mantine/hooks/use-focus-trap] Ref node is not part of the dom", node);
}
});
ref.current = node;
} else {
ref.current = null;
}
}, [active]);
react.useEffect(() => {
if (!active)
return void 0;
const handleKeyDown = (event) => {
if (event.key === "Tab" && ref.current) {
scopeTab(ref.current, event);
}
};
document.addEventListener("keydown", handleKeyDown);
return () => {
document.removeEventListener("keydown", handleKeyDown);
};
}, [active]);
return setRef;
}
var __defProp$1 = Object.defineProperty;
var __defProps$1 = Object.defineProperties;
var __getOwnPropDescs$1 = Object.getOwnPropertyDescriptors;
var __getOwnPropSymbols$1 = Object.getOwnPropertySymbols;
var __hasOwnProp$1 = Object.prototype.hasOwnProperty;
var __propIsEnum$1 = Object.prototype.propertyIsEnumerable;
var __defNormalProp$1 = (obj, key, value) => key in obj ? __defProp$1(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
var __spreadValues$1 = (a, b) => {
for (var prop in b || (b = {}))
if (__hasOwnProp$1.call(b, prop))
__defNormalProp$1(a, prop, b[prop]);
if (__getOwnPropSymbols$1)
for (var prop of __getOwnPropSymbols$1(b)) {
if (__propIsEnum$1.call(b, prop))
__defNormalProp$1(a, prop, b[prop]);
}
return a;
};
var __spreadProps$1 = (a, b) => __defProps$1(a, __getOwnPropDescs$1(b));
function useForm({
initialValues,
validationRules = {}
}) {
const initialErrors = Object.keys(initialValues).reduce((acc, field) => {
acc[field] = false;
return acc;
}, {});
const [errors, setErrors] = react.useState(initialErrors);
const [values, setValues] = react.useState(initialValues);
const resetErrors = () => setErrors(initialErrors);
const reset = () => {
setValues(initialValues);
resetErrors();
};
const validate = () => {
let isValid = true;
const validationErrors = Object.keys(values).reduce((acc, field) => {
if (validationRules && typeof validationRules[field] === "function" && !validationRules[field](values[field])) {
acc[field] = true;
isValid = false;
} else {
acc[field] = false;
}
return acc;
}, {});
setErrors(validationErrors);
return isValid;
};
const validateField = (field) => setErrors((currentErrors) => __spreadProps$1(__spreadValues$1({}, currentErrors), {
[field]: typeof validationRules[field] === "function" ? !validationRules[field](values[field]) : false
}));
const setFieldError = (field, error) => setErrors((currentErrors) => __spreadProps$1(__spreadValues$1({}, currentErrors), { [field]: error }));
const setFieldValue = (field, value) => {
setValues((currentValues) => __spreadProps$1(__spreadValues$1({}, currentValues), { [field]: value }));
setFieldError(field, false);
};
const onSubmit = (handleSubmit) => (event) => {
event && event.preventDefault();
validate() && handleSubmit(values);
};
return {
values,
errors,
validate,
reset,
setErrors,
setValues,
setFieldValue,
setFieldError,
validateField,
resetErrors,
onSubmit
};
}
function useId(id, generateId = randomId) {
const generatedId = react.useRef(generateId());
return id || generatedId.current;
}
const useIsomorphicEffect = typeof document !== "undefined" ? react.useLayoutEffect : react.useEffect;
var __defProp = Object.defineProperty;
var __defProps = Object.defineProperties;
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __propIsEnum = Object.prototype.propertyIsEnumerable;
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
var __spreadValues = (a, b) => {
for (var prop in b || (b = {}))
if (__hasOwnProp.call(b, prop))
__defNormalProp(a, prop, b[prop]);
if (__getOwnPropSymbols)
for (var prop of __getOwnPropSymbols(b)) {
if (__propIsEnum.call(b, prop))
__defNormalProp(a, prop, b[prop]);
}
return a;
};
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
function useListState(initialValue = []) {
const [state, setState] = react.useState(initialValue);
const append = (...items) => setState((current) => [...current, ...items]);
const prepend = (...items) => setState((current) => [...items, ...current]);
const insert = (index, ...items) => setState((current) => [...current.slice(0, index), ...items, ...current.slice(index)]);
const apply = (fn) => setState((current) => current.map((item, index) => fn(item, index)));
const remove = (...indices) => setState((current) => current.filter((_, index) => !indices.includes(index)));
const reorder = ({ from, to }) => setState((current) => {
const cloned = [...current];
const item = current[from];
cloned.splice(from, 1);
cloned.splice(to, 0, item);
return cloned;
});
const setItem = (index, item) => setState((current) => {
const cloned = [...current];
cloned[index] = item;
return cloned;
});
const setItemProp = (index, prop, value) => setState((current) => {
const cloned = [...current];
cloned[index] = __spreadProps(__spreadValues({}, cloned[index]), { [prop]: value });
return cloned;
});
return [
state,
{
setState,
append,
prepend,
insert,
apply,
remove,
reorder,
setItem,
setItemProp
}
];
}
function useWindowEvent(type, listener, options) {
react.useEffect(() => {
window.addEventListener(type, listener, options);
return () => window.removeEventListener(type, listener, options);
}, []);
}
function useLocalStorageValue({
key,
defaultValue = void 0
}) {
const [value, setValue] = react.useState(typeof window !== "undefined" && "localStorage" in window ? window.localStorage.getItem(key) : defaultValue != null ? defaultValue : "");
const setLocalStorageValue = react.useCallback((val) => {
if (typeof val === "function") {
setValue((current) => {
const result = val(current);
window.localStorage.setItem(key, result);
return result;
});
} else {
window.localStorage.setItem(key, val);
setValue(val);
}
}, [key]);
useWindowEvent("storage", (event) => {
if (event.storageArea === window.localStorage && event.key === key) {
setValue(event.newValue);
}
});
react.useEffect(() => {
if (defaultValue && !value) {
setLocalStorageValue(defaultValue);
}
}, [defaultValue, value, setLocalStorageValue]);
return [value, setLocalStorageValue];
}
function useMergedRef(...refs) {
return (node) => {
refs.forEach((ref) => {
if (typeof ref === "function") {
ref(node);
} else if (ref != null) {
ref.current = node;
}
});
};
}
function useQueue({ initialValues = [], limit }) {
const [{ state, queue }, setState] = react.useState({
state: initialValues.slice(0, limit),
queue: initialValues.slice(limit)
});
const add = (...items) => setState((current) => {
const results = [...current.state, ...current.queue, ...items];
return {
state: results.slice(0, limit),
queue: results.slice(limit)
};
});
const update = (fn) => setState((current) => {
const results = fn([...current.state, ...current.queue]);
return {
state: results.slice(0, limit),
queue: results.slice(limit)
};
});
const cleanQueue = () => setState((current) => ({ state: current.state, queue: [] }));
return {
state,
queue,
add,
update,
cleanQueue
};
}
function useReducedMotion() {
return useMediaQuery("(prefers-reduced-motion: reduce)");
}
const preventDefault = (event) => {
event.preventDefault();
};
function useScrollLock(lock, options = { disableTouchEvents: false }) {
const locked = react.useRef(false);
const bodyOverflow = react.useRef(null);
const unlockScroll = () => {
if (locked.current) {
locked.current = false;
document.body.style.overflow = bodyOverflow.current || "";
if (options.disableTouchEvents) {
document.body.removeEventListener("touchmove", preventDefault);
}
}
};
const lockScroll = () => {
locked.current = true;
bodyOverflow.current = document.body.style.overflow;
document.body.style.overflow = "hidden";
if (options.disableTouchEvents) {
document.body.addEventListener("touchmove", preventDefault, { passive: false });
}
};
react.useEffect(() => {
if (lock) {
lockScroll();
} else {
unlockScroll();
}
return unlockScroll;
}, [lock]);
}
exports.randomId = randomId;
exports.upperFirst = upperFirst;
exports.useClickOutside = useClickOutside;
exports.useClipboard = useClipboard;
exports.useColorScheme = useColorScheme;
exports.useDebouncedValue = useDebouncedValue;
exports.useDocumentTitle = useDocumentTitle;
exports.useFocusTrap = useFocusTrap;
exports.useForm = useForm;
exports.useId = useId;
exports.useIsomorphicEffect = useIsomorphicEffect;
exports.useListState = useListState;
exports.useLocalStorageValue = useLocalStorageValue;
exports.useMediaQuery = useMediaQuery;
exports.useMergedRef = useMergedRef;
exports.useQueue = useQueue;
exports.useReducedMotion = useReducedMotion;
exports.useScrollLock = useScrollLock;
exports.useWindowEvent = useWindowEvent;
Object.defineProperty(exports, '__esModule', { value: true });
})));
(function(i,o){typeof exports=="object"&&typeof module!="undefined"?o(exports,require("react")):typeof define=="function"&&define.amd?define(["exports","react"],o):(i=typeof globalThis!="undefined"?globalThis:i||self,o(i["@mantine/hooks"]={},i.React))})(this,function(i,o){"use strict";function L(){return`mantine-${Math.random().toString(36).substr(2,9)}`}function q(e){return typeof e!="string"?"":e.charAt(0).toUpperCase()+e.slice(1)}function H(e,t=["mousedown","touchstart"]){const n=o.useRef();return o.useEffect(()=>{const s=r=>{n.current&&!n.current.contains(r.target)&&e()};return t.forEach(r=>document.addEventListener(r,s)),()=>{t.forEach(r=>document.removeEventListener(r,s))}},[n,e]),n}function Q({timeout:e=2e3}={}){const[t,n]=o.useState(null),[s,r]=o.useState(!1),[u,m]=o.useState(null),f=h=>{clearTimeout(u),m(setTimeout(()=>r(!1),e)),r(h)};return{copy:h=>{"clipboard"in navigator?navigator.clipboard.writeText(h).then(()=>f(!0)).catch(a=>n(a)):n(new Error("useClipboard: navigator.clipboard is not supported"))},reset:()=>{r(!1),n(null),clearTimeout(u)},error:t,copied:s}}function B(e,t){try{return e.addEventListener("change",t),()=>e.removeEventListener("change",t)}catch(n){return e.addListener(t),()=>e.removeListener(t)}}function K(e){return typeof window!="undefined"&&"matchMedia"in window?window.matchMedia(e).matches:!1}function g(e){const[t,n]=o.useState(K(e)),s=o.useRef();return o.useEffect(()=>{if("matchMedia"in window)return s.current=window.matchMedia(e),n(s.current.matches),B(s.current,r=>n(r.matches))},[e]),t}function W(){return g("(prefers-color-scheme: dark)")?"dark":"light"}function U(e,t,n={leading:!1}){const[s,r]=o.useState(e),u=o.useRef(!1),m=o.useRef(null),f=o.useRef(!1),d=()=>window.clearTimeout(m.current);return o.useEffect(()=>{u.current&&(!f.current&&n.leading?(f.current=!0,r(e)):(d(),m.current=window.setTimeout(()=>{f.current=!1,r(e)},t)))},[e,n.leading]),o.useEffect(()=>(u.current=!0,d),[]),[s,d]}function z(e){o.useLayoutEffect(()=>{typeof e=="string"&&e.trim().length>0&&(document.title=e.trim())},[e])}const G=/input|select|textarea|button|object/,N="a, input, select, textarea, button, object, [tabindex]";function J(e){return process.env.NODE_ENV==="test"?!1:e.offsetWidth<=0&&e.offsetHeight<=0||e.style.display==="none"}function X(e){let t=e;for(;t&&t!==document.body;){if(J(t))return!1;t=t.parentNode}return!0}function P(e){let t=e.getAttribute("tabindex");return t===null&&(t=void 0),parseInt(t,10)}function _(e){const t=e.nodeName.toLowerCase(),n=!Number.isNaN(P(e));return(G.test(t)&&!e.disabled||e instanceof HTMLAnchorElement&&e.href||n)&&X(e)}function I(e){const t=P(e);return(Number.isNaN(t)||t>=0)&&_(e)}function F(e){return Array.from(e.querySelectorAll(N)).filter(I)}const D=[];let E=null,S=!1;function R(){S=!0}function A(){if(S){if(S=!1,!E||!E||E.contains(document.activeElement))return;(F(E)[0]||E).focus()}}function Y(){D.push(document.activeElement)}function Z(){let e=null;try{e=D.pop(),e&&e.focus()}catch(t){console.warn(["[@mantine/hooks/use-focus-trap] Focus was returned to",e,"but dom node does not exist"].join(" "))}}function x(e){E=e,document.addEventListener("focusout",R,!1),document.addEventListener("focusin",A,!0)}function ee(){E=null,document.removeEventListener("focusout",R),document.removeEventListener("focusin",A)}function te(e,t){const n=F(e);if(!n.length){t.preventDefault();return}if(!(n[t.shiftKey?0:n.length-1]===document.activeElement||e===document.activeElement))return;t.preventDefault();const u=n[t.shiftKey?n.length-1:0];u&&u.focus()}function ne(e,t="body > :not(script)"){const n=Array.from(document.querySelectorAll(t)).map(s=>{if(s.contains(e))return;const r=s.getAttribute("aria-hidden");return(r===null||r==="false")&&s.setAttribute("aria-hidden","true"),{node:s,ariaHidden:r}});return()=>{n.forEach(s=>{!s||(s.ariaHidden===null?s.node.removeAttribute("aria-hidden"):s.node.setAttribute("aria-hidden",s.ariaHidden))})}}function re(e=!0){const t=o.useRef(),n=o.useRef(null),s=o.useCallback(r=>{if(n.current&&n.current(),t.current&&(Z(),ee()),e&&r){x(r),Y();const u=m=>{n.current=ne(m);let f=r.querySelector("[data-autofocus]");if(!f){const d=Array.from(r.querySelectorAll(N));f=d.find(I)||d.find(_)||null,!f&&_(r)&&(f=r)}f?f.focus():process.env.NODE_ENV==="development"&&console.warn("[@mantine/hooks/use-focus-trap] Failed to find focusable element within provided node",r)};setTimeout(()=>{r.ownerDocument?u(r):process.env.NODE_ENV==="development"&&console.warn("[@mantine/hooks/use-focus-trap] Ref node is not part of the dom",r)}),t.current=r}else t.current=null},[e]);return o.useEffect(()=>{if(!e)return;const r=u=>{u.key==="Tab"&&t.current&&te(t.current,u)};return document.addEventListener("keydown",r),()=>{document.removeEventListener("keydown",r)}},[e]),s}var oe=Object.defineProperty,se=Object.defineProperties,ue=Object.getOwnPropertyDescriptors,C=Object.getOwnPropertySymbols,ce=Object.prototype.hasOwnProperty,ie=Object.prototype.propertyIsEnumerable,j=(e,t,n)=>t in e?oe(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,O=(e,t)=>{for(var n in t||(t={}))ce.call(t,n)&&j(e,n,t[n]);if(C)for(var n of C(t))ie.call(t,n)&&j(e,n,t[n]);return e},T=(e,t)=>se(e,ue(t));function ae({initialValues:e,validationRules:t={}}){const n=Object.keys(e).reduce((c,l)=>(c[l]=!1,c),{}),[s,r]=o.useState(n),[u,m]=o.useState(e),f=()=>r(n),d=()=>{m(e),f()},w=()=>{let c=!0;const l=Object.keys(u).reduce((v,y)=>(t&&typeof t[y]=="function"&&!t[y](u[y])?(v[y]=!0,c=!1):v[y]=!1,v),{});return r(l),c},h=c=>r(l=>T(O({},l),{[c]:typeof t[c]=="function"?!t[c](u[c]):!1})),a=(c,l)=>r(v=>T(O({},v),{[c]:l}));return{values:u,errors:s,validate:w,reset:d,setErrors:r,setValues:m,setFieldValue:(c,l)=>{m(v=>T(O({},v),{[c]:l})),a(c,!1)},setFieldError:a,validateField:h,resetErrors:f,onSubmit:c=>l=>{l&&l.preventDefault(),w()&&c(u)}}}function fe(e,t=L){const n=o.useRef(t());return e||n.current}const le=typeof document!="undefined"?o.useLayoutEffect:o.useEffect;var de=Object.defineProperty,pe=Object.defineProperties,me=Object.getOwnPropertyDescriptors,M=Object.getOwnPropertySymbols,be=Object.prototype.hasOwnProperty,he=Object.prototype.propertyIsEnumerable,k=(e,t,n)=>t in e?de(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,we=(e,t)=>{for(var n in t||(t={}))be.call(t,n)&&k(e,n,t[n]);if(M)for(var n of M(t))he.call(t,n)&&k(e,n,t[n]);return e},Ee=(e,t)=>pe(e,me(t));function ve(e=[]){const[t,n]=o.useState(e);return[t,{setState:n,append:(...a)=>n(p=>[...p,...a]),prepend:(...a)=>n(p=>[...a,...p]),insert:(a,...p)=>n(b=>[...b.slice(0,a),...p,...b.slice(a)]),apply:a=>n(p=>p.map((b,c)=>a(b,c))),remove:(...a)=>n(p=>p.filter((b,c)=>!a.includes(c))),reorder:({from:a,to:p})=>n(b=>{const c=[...b],l=b[a];return c.splice(a,1),c.splice(p,0,l),c}),setItem:(a,p)=>n(b=>{const c=[...b];return c[a]=p,c}),setItemProp:(a,p,b)=>n(c=>{const l=[...c];return l[a]=Ee(we({},l[a]),{[p]:b}),l})}]}function V(e,t,n){o.useEffect(()=>(window.addEventListener(e,t,n),()=>window.removeEventListener(e,t,n)),[])}function ye({key:e,defaultValue:t=void 0}){const[n,s]=o.useState(typeof window!="undefined"&&"localStorage"in window?window.localStorage.getItem(e):t!=null?t:""),r=o.useCallback(u=>{typeof u=="function"?s(m=>{const f=u(m);return window.localStorage.setItem(e,f),f}):(window.localStorage.setItem(e,u),s(u))},[e]);return V("storage",u=>{u.storageArea===window.localStorage&&u.key===e&&s(u.newValue)}),o.useEffect(()=>{t&&!n&&r(t)},[t,n,r]),[n,r]}function ge(...e){return t=>{e.forEach(n=>{typeof n=="function"?n(t):n!=null&&(n.current=t)})}}function _e({initialValues:e=[],limit:t}){const[{state:n,queue:s},r]=o.useState({state:e.slice(0,t),queue:e.slice(t)});return{state:n,queue:s,add:(...d)=>r(w=>{const h=[...w.state,...w.queue,...d];return{state:h.slice(0,t),queue:h.slice(t)}}),update:d=>r(w=>{const h=d([...w.state,...w.queue]);return{state:h.slice(0,t),queue:h.slice(t)}}),cleanQueue:()=>r(d=>({state:d.state,queue:[]}))}}function Se(){return g("(prefers-reduced-motion: reduce)")}const $=e=>{e.preventDefault()};function Oe(e,t={disableTouchEvents:!1}){const n=o.useRef(!1),s=o.useRef(null),r=()=>{n.current&&(n.current=!1,document.body.style.overflow=s.current||"",t.disableTouchEvents&&document.body.removeEventListener("touchmove",$))},u=()=>{n.current=!0,s.current=document.body.style.overflow,document.body.style.overflow="hidden",t.disableTouchEvents&&document.body.addEventListener("touchmove",$,{passive:!1})};o.useEffect(()=>(e?u():r(),r),[e])}i.randomId=L,i.upperFirst=q,i.useClickOutside=H,i.useClipboard=Q,i.useColorScheme=W,i.useDebouncedValue=U,i.useDocumentTitle=z,i.useFocusTrap=re,i.useForm=ae,i.useId=fe,i.useIsomorphicEffect=le,i.useListState=ve,i.useLocalStorageValue=ye,i.useMediaQuery=g,i.useMergedRef=ge,i.useQueue=_e,i.useReducedMotion=Se,i.useScrollLock=Oe,i.useWindowEvent=V,Object.defineProperty(i,"__esModule",{value:!0})});
//# sourceMappingURL=index.umd.js.map

4

lib/use-form/use-form.d.ts

@@ -13,6 +13,6 @@ import React from 'react';

values: T;
errors: { [P in keyof T]: boolean; };
errors: Record<keyof T, boolean>;
validate: () => boolean;
reset: () => void;
setErrors: React.Dispatch<React.SetStateAction<{ [P in keyof T]: boolean; }>>;
setErrors: React.Dispatch<React.SetStateAction<Record<keyof T, boolean>>>;
setValues: React.Dispatch<React.SetStateAction<T>>;

@@ -19,0 +19,0 @@ setFieldValue: <K extends keyof T, U extends T[K]>(field: K, value: U) => void;

{
"name": "@mantine/hooks",
"version": "1.3.0-alpha.0",
"version": "1.3.0-alpha.1",
"main": "cjs/index.js",

@@ -5,0 +5,0 @@ "module": "esm/index.js",

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc