@mantine/core 9.0.1 → 9.0.2

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.
@@ -96,6 +96,7 @@ function TextareaAutosize({ maxRows, minRows, onChange, ref: userRef, ...props }
96
96
  const heightRef = (0, react.useRef)(0);
97
97
  const resizeTextarea = () => {
98
98
  const node = libRef.current;
99
+ if (!node) return;
99
100
  const nodeSizingData = getSizingData(node);
100
101
  if (!nodeSizingData) return;
101
102
  const [height] = calculateNodeHeight(nodeSizingData, node.value || node.placeholder || "x", minRows, maxRows);
@@ -1 +1 @@
1
- {"version":3,"file":"Autosize.cjs","names":[],"sources":["../../../src/components/Textarea/Autosize.tsx"],"sourcesContent":["import React, { useEffect, useLayoutEffect, useRef } from 'react';\nimport { useMergedRef } from '@mantine/hooks';\n\ntype TextareaProps = React.TextareaHTMLAttributes<HTMLTextAreaElement>;\n\nexport interface TextareaAutosizeProps extends Omit<TextareaProps, 'style'> {\n ref?: React.Ref<HTMLTextAreaElement>;\n maxRows?: number;\n minRows?: number;\n style?: Omit<NonNullable<TextareaProps['style']>, 'maxHeight' | 'minHeight'> & {\n height?: number;\n };\n}\n\nconst SIZING_STYLE_KEYS = [\n 'borderBottomWidth',\n 'borderLeftWidth',\n 'borderRightWidth',\n 'borderTopWidth',\n 'boxSizing',\n 'fontFamily',\n 'fontSize',\n 'fontStyle',\n 'fontWeight',\n 'letterSpacing',\n 'lineHeight',\n 'paddingBottom',\n 'paddingLeft',\n 'paddingRight',\n 'paddingTop',\n 'tabSize',\n 'textIndent',\n 'textRendering',\n 'textTransform',\n 'width',\n 'wordBreak',\n 'wordSpacing',\n 'scrollbarGutter',\n] as const;\n\ntype SizingStyleKey = (typeof SIZING_STYLE_KEYS)[number];\n\ninterface SizingData {\n sizingStyle: Pick<CSSStyleDeclaration, Extract<SizingStyleKey, keyof CSSStyleDeclaration>>;\n paddingSize: number;\n borderSize: number;\n}\n\nconst HIDDEN_TEXTAREA_STYLE: Record<string, string> = {\n 'min-height': '0',\n 'max-height': 'none',\n height: '0',\n visibility: 'hidden',\n overflow: 'hidden',\n position: 'absolute',\n 'z-index': '-1000',\n top: '0',\n right: '0',\n display: 'block',\n};\n\nfunction forceHiddenStyles(node: HTMLElement) {\n Object.keys(HIDDEN_TEXTAREA_STYLE).forEach((key) => {\n node.style.setProperty(key, HIDDEN_TEXTAREA_STYLE[key], 'important');\n });\n}\n\nfunction getSizingData(node: HTMLElement): SizingData | null {\n const style = window.getComputedStyle(node);\n\n if (style === null) {\n return null;\n }\n\n const sizingStyle = {} as SizingData['sizingStyle'];\n for (const key of SIZING_STYLE_KEYS) {\n (sizingStyle as any)[key] = style[key as keyof CSSStyleDeclaration];\n }\n\n if ((sizingStyle as any).boxSizing === '') {\n return null;\n }\n\n const paddingSize = parseFloat(sizingStyle.paddingBottom!) + parseFloat(sizingStyle.paddingTop!);\n\n const borderSize =\n parseFloat(sizingStyle.borderBottomWidth!) + parseFloat(sizingStyle.borderTopWidth!);\n\n return { sizingStyle, paddingSize, borderSize };\n}\n\nlet hiddenTextarea: HTMLTextAreaElement | null = null;\n\nfunction calculateNodeHeight(\n sizingData: SizingData,\n value: string,\n minRows = 1,\n maxRows = Infinity\n): [number, number] {\n if (!hiddenTextarea) {\n hiddenTextarea = document.createElement('textarea');\n hiddenTextarea.setAttribute('tabindex', '-1');\n hiddenTextarea.setAttribute('aria-hidden', 'true');\n hiddenTextarea.setAttribute('aria-label', 'autosize measurement');\n forceHiddenStyles(hiddenTextarea);\n }\n\n if (hiddenTextarea.parentNode === null) {\n document.body.appendChild(hiddenTextarea);\n }\n\n const { paddingSize, borderSize, sizingStyle } = sizingData;\n const { boxSizing } = sizingStyle;\n\n Object.keys(sizingStyle).forEach((key) => {\n (hiddenTextarea!.style as any)[key] = (sizingStyle as any)[key];\n });\n\n forceHiddenStyles(hiddenTextarea);\n\n hiddenTextarea.value = value;\n let height =\n boxSizing === 'border-box'\n ? hiddenTextarea.scrollHeight + borderSize\n : hiddenTextarea.scrollHeight - paddingSize;\n\n // Double set and calc due to Firefox bug: https://bugzilla.mozilla.org/show_bug.cgi?id=1795904\n hiddenTextarea.value = value;\n height =\n boxSizing === 'border-box'\n ? hiddenTextarea.scrollHeight + borderSize\n : hiddenTextarea.scrollHeight - paddingSize;\n\n hiddenTextarea.value = 'x';\n const rowHeight = hiddenTextarea.scrollHeight - paddingSize;\n\n let minHeight = rowHeight * minRows;\n if (boxSizing === 'border-box') {\n minHeight = minHeight + paddingSize + borderSize;\n }\n height = Math.max(minHeight, height);\n\n let maxHeight = rowHeight * maxRows;\n if (boxSizing === 'border-box') {\n maxHeight = maxHeight + paddingSize + borderSize;\n }\n height = Math.min(maxHeight, height);\n\n return [height, rowHeight];\n}\n\nexport function TextareaAutosize({\n maxRows,\n minRows,\n onChange,\n ref: userRef,\n ...props\n}: TextareaAutosizeProps) {\n const isControlled = props.value !== undefined;\n const libRef = useRef<HTMLTextAreaElement | null>(null);\n const ref = useMergedRef(libRef, userRef);\n const heightRef = useRef(0);\n\n const resizeTextarea = () => {\n const node = libRef.current!;\n const nodeSizingData = getSizingData(node);\n\n if (!nodeSizingData) {\n return;\n }\n\n const [height] = calculateNodeHeight(\n nodeSizingData,\n node.value || node.placeholder || 'x',\n minRows,\n maxRows\n );\n\n if (heightRef.current !== height) {\n heightRef.current = height;\n node.style.setProperty('height', `${height}px`, 'important');\n }\n };\n\n const handleChange = (event: React.ChangeEvent<HTMLTextAreaElement>) => {\n if (!isControlled) {\n resizeTextarea();\n }\n onChange?.(event);\n };\n\n useLayoutEffect(resizeTextarea);\n\n useEffect(() => {\n const handleResize = () => resizeTextarea();\n window.addEventListener('resize', handleResize);\n return () => window.removeEventListener('resize', handleResize);\n }, []);\n\n useEffect(() => {\n const handleFontsLoaded = () => resizeTextarea();\n document.fonts.addEventListener('loadingdone', handleFontsLoaded);\n return () => document.fonts.removeEventListener('loadingdone', handleFontsLoaded);\n }, []);\n\n useEffect(() => {\n const handleReset = (event: Event) => {\n if (libRef.current?.form === event.target && !isControlled) {\n const currentValue = libRef.current!.value;\n requestAnimationFrame(() => {\n if (libRef.current && currentValue !== libRef.current.value) {\n resizeTextarea();\n }\n });\n }\n };\n document.body.addEventListener('reset', handleReset);\n return () => document.body.removeEventListener('reset', handleReset);\n }, [isControlled]);\n\n return <textarea {...props} onChange={handleChange} ref={ref} />;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"Autosize.cjs","names":[],"sources":["../../../src/components/Textarea/Autosize.tsx"],"sourcesContent":["import React, { useEffect, useLayoutEffect, useRef } from 'react';\nimport { useMergedRef } from '@mantine/hooks';\n\ntype TextareaProps = React.TextareaHTMLAttributes<HTMLTextAreaElement>;\n\nexport interface TextareaAutosizeProps extends Omit<TextareaProps, 'style'> {\n ref?: React.Ref<HTMLTextAreaElement>;\n maxRows?: number;\n minRows?: number;\n style?: Omit<NonNullable<TextareaProps['style']>, 'maxHeight' | 'minHeight'> & {\n height?: number;\n };\n}\n\nconst SIZING_STYLE_KEYS = [\n 'borderBottomWidth',\n 'borderLeftWidth',\n 'borderRightWidth',\n 'borderTopWidth',\n 'boxSizing',\n 'fontFamily',\n 'fontSize',\n 'fontStyle',\n 'fontWeight',\n 'letterSpacing',\n 'lineHeight',\n 'paddingBottom',\n 'paddingLeft',\n 'paddingRight',\n 'paddingTop',\n 'tabSize',\n 'textIndent',\n 'textRendering',\n 'textTransform',\n 'width',\n 'wordBreak',\n 'wordSpacing',\n 'scrollbarGutter',\n] as const;\n\ntype SizingStyleKey = (typeof SIZING_STYLE_KEYS)[number];\n\ninterface SizingData {\n sizingStyle: Pick<CSSStyleDeclaration, Extract<SizingStyleKey, keyof CSSStyleDeclaration>>;\n paddingSize: number;\n borderSize: number;\n}\n\nconst HIDDEN_TEXTAREA_STYLE: Record<string, string> = {\n 'min-height': '0',\n 'max-height': 'none',\n height: '0',\n visibility: 'hidden',\n overflow: 'hidden',\n position: 'absolute',\n 'z-index': '-1000',\n top: '0',\n right: '0',\n display: 'block',\n};\n\nfunction forceHiddenStyles(node: HTMLElement) {\n Object.keys(HIDDEN_TEXTAREA_STYLE).forEach((key) => {\n node.style.setProperty(key, HIDDEN_TEXTAREA_STYLE[key], 'important');\n });\n}\n\nfunction getSizingData(node: HTMLElement): SizingData | null {\n const style = window.getComputedStyle(node);\n\n if (style === null) {\n return null;\n }\n\n const sizingStyle = {} as SizingData['sizingStyle'];\n for (const key of SIZING_STYLE_KEYS) {\n (sizingStyle as any)[key] = style[key as keyof CSSStyleDeclaration];\n }\n\n if ((sizingStyle as any).boxSizing === '') {\n return null;\n }\n\n const paddingSize = parseFloat(sizingStyle.paddingBottom!) + parseFloat(sizingStyle.paddingTop!);\n\n const borderSize =\n parseFloat(sizingStyle.borderBottomWidth!) + parseFloat(sizingStyle.borderTopWidth!);\n\n return { sizingStyle, paddingSize, borderSize };\n}\n\nlet hiddenTextarea: HTMLTextAreaElement | null = null;\n\nfunction calculateNodeHeight(\n sizingData: SizingData,\n value: string,\n minRows = 1,\n maxRows = Infinity\n): [number, number] {\n if (!hiddenTextarea) {\n hiddenTextarea = document.createElement('textarea');\n hiddenTextarea.setAttribute('tabindex', '-1');\n hiddenTextarea.setAttribute('aria-hidden', 'true');\n hiddenTextarea.setAttribute('aria-label', 'autosize measurement');\n forceHiddenStyles(hiddenTextarea);\n }\n\n if (hiddenTextarea.parentNode === null) {\n document.body.appendChild(hiddenTextarea);\n }\n\n const { paddingSize, borderSize, sizingStyle } = sizingData;\n const { boxSizing } = sizingStyle;\n\n Object.keys(sizingStyle).forEach((key) => {\n (hiddenTextarea!.style as any)[key] = (sizingStyle as any)[key];\n });\n\n forceHiddenStyles(hiddenTextarea);\n\n hiddenTextarea.value = value;\n let height =\n boxSizing === 'border-box'\n ? hiddenTextarea.scrollHeight + borderSize\n : hiddenTextarea.scrollHeight - paddingSize;\n\n // Double set and calc due to Firefox bug: https://bugzilla.mozilla.org/show_bug.cgi?id=1795904\n hiddenTextarea.value = value;\n height =\n boxSizing === 'border-box'\n ? hiddenTextarea.scrollHeight + borderSize\n : hiddenTextarea.scrollHeight - paddingSize;\n\n hiddenTextarea.value = 'x';\n const rowHeight = hiddenTextarea.scrollHeight - paddingSize;\n\n let minHeight = rowHeight * minRows;\n if (boxSizing === 'border-box') {\n minHeight = minHeight + paddingSize + borderSize;\n }\n height = Math.max(minHeight, height);\n\n let maxHeight = rowHeight * maxRows;\n if (boxSizing === 'border-box') {\n maxHeight = maxHeight + paddingSize + borderSize;\n }\n height = Math.min(maxHeight, height);\n\n return [height, rowHeight];\n}\n\nexport function TextareaAutosize({\n maxRows,\n minRows,\n onChange,\n ref: userRef,\n ...props\n}: TextareaAutosizeProps) {\n const isControlled = props.value !== undefined;\n const libRef = useRef<HTMLTextAreaElement | null>(null);\n const ref = useMergedRef(libRef, userRef);\n const heightRef = useRef(0);\n\n const resizeTextarea = () => {\n const node = libRef.current;\n\n if (!node) {\n return;\n }\n\n const nodeSizingData = getSizingData(node);\n\n if (!nodeSizingData) {\n return;\n }\n\n const [height] = calculateNodeHeight(\n nodeSizingData,\n node.value || node.placeholder || 'x',\n minRows,\n maxRows\n );\n\n if (heightRef.current !== height) {\n heightRef.current = height;\n node.style.setProperty('height', `${height}px`, 'important');\n }\n };\n\n const handleChange = (event: React.ChangeEvent<HTMLTextAreaElement>) => {\n if (!isControlled) {\n resizeTextarea();\n }\n onChange?.(event);\n };\n\n useLayoutEffect(resizeTextarea);\n\n useEffect(() => {\n const handleResize = () => resizeTextarea();\n window.addEventListener('resize', handleResize);\n return () => window.removeEventListener('resize', handleResize);\n }, []);\n\n useEffect(() => {\n const handleFontsLoaded = () => resizeTextarea();\n document.fonts.addEventListener('loadingdone', handleFontsLoaded);\n return () => document.fonts.removeEventListener('loadingdone', handleFontsLoaded);\n }, []);\n\n useEffect(() => {\n const handleReset = (event: Event) => {\n if (libRef.current?.form === event.target && !isControlled) {\n const currentValue = libRef.current!.value;\n requestAnimationFrame(() => {\n if (libRef.current && currentValue !== libRef.current.value) {\n resizeTextarea();\n }\n });\n }\n };\n document.body.addEventListener('reset', handleReset);\n return () => document.body.removeEventListener('reset', handleReset);\n }, [isControlled]);\n\n return <textarea {...props} onChange={handleChange} ref={ref} />;\n}\n"],"mappings":"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"}
@@ -1,6 +1,5 @@
1
1
  "use client";
2
2
  const require_rem = require("../../../utils/units-converters/rem.cjs");
3
- const require_luminance = require("../luminance/luminance.cjs");
4
3
  const require_parse_theme_color = require("../parse-theme-color/parse-theme-color.cjs");
5
4
  const require_darken = require("../darken/darken.cjs");
6
5
  const require_get_gradient = require("../get-gradient/get-gradient.cjs");
@@ -58,9 +57,9 @@ const defaultVariantColorsResolver = ({ color, theme, variant, gradient, autoCon
58
57
  };
59
58
  }
60
59
  return {
61
- background: color,
62
- hover: require_darken.darken(color, .1),
63
- color: require_luminance.isLightColor(color) ? "var(--mantine-color-black)" : "var(--mantine-color-white)",
60
+ background: require_rgba.rgba(color, .1),
61
+ hover: require_rgba.rgba(color, .12),
62
+ color,
64
63
  border: `${require_rem.rem(1)} solid transparent`
65
64
  };
66
65
  }
@@ -1 +1 @@
1
- {"version":3,"file":"default-variant-colors-resolver.cjs","names":["parseThemeColor","rem","darken","isLightColor","rgba","getGradient"],"sources":["../../../../../src/core/MantineProvider/color-functions/default-variant-colors-resolver/default-variant-colors-resolver.ts"],"sourcesContent":["import { rem } from '../../../utils';\nimport { MantineColor, MantineGradient, MantineTheme } from '../../theme.types';\nimport { darken } from '../darken/darken';\nimport { getGradient } from '../get-gradient/get-gradient';\nimport { isLightColor } from '../luminance/luminance';\nimport { parseThemeColor } from '../parse-theme-color/parse-theme-color';\nimport { rgba } from '../rgba/rgba';\n\nexport interface VariantColorsResolverInput {\n color: MantineColor | undefined;\n theme: MantineTheme;\n variant: string;\n gradient?: MantineGradient;\n autoContrast?: boolean;\n}\n\nexport interface VariantColorResolverResult {\n background: string;\n hover: string;\n color: string;\n border: string;\n hoverColor?: string;\n}\n\nexport type VariantColorsResolver = (\n input: VariantColorsResolverInput\n) => VariantColorResolverResult;\n\nexport const defaultVariantColorsResolver: VariantColorsResolver = ({\n color,\n theme,\n variant,\n gradient,\n autoContrast,\n}) => {\n const parsed = parseThemeColor({ color, theme });\n\n const _autoContrast = typeof autoContrast === 'boolean' ? autoContrast : theme.autoContrast;\n\n if (variant === 'none') {\n return {\n background: 'transparent',\n hover: 'transparent',\n color: 'inherit',\n border: 'none',\n };\n }\n\n if (variant === 'filled') {\n const textColor = _autoContrast\n ? parsed.isLight\n ? 'var(--mantine-color-black)'\n : 'var(--mantine-color-white)'\n : 'var(--mantine-color-white)';\n if (parsed.isThemeColor) {\n if (parsed.shade === undefined) {\n return {\n background: `var(--mantine-color-${color}-filled)`,\n hover: `var(--mantine-color-${color}-filled-hover)`,\n color: textColor,\n border: `${rem(1)} solid transparent`,\n };\n }\n\n return {\n background: `var(--mantine-color-${parsed.color}-${parsed.shade})`,\n hover: `var(--mantine-color-${parsed.color}-${parsed.shade === 9 ? 8 : parsed.shade + 1})`,\n color: textColor,\n border: `${rem(1)} solid transparent`,\n };\n }\n\n return {\n background: color!,\n hover: darken(color!, 0.1),\n color: textColor,\n border: `${rem(1)} solid transparent`,\n };\n }\n\n if (variant === 'light') {\n if (parsed.isThemeColor) {\n if (parsed.shade === undefined) {\n return {\n background: `var(--mantine-color-${color}-light)`,\n hover: `var(--mantine-color-${color}-light-hover)`,\n color: `var(--mantine-color-${color}-light-color)`,\n border: `${rem(1)} solid transparent`,\n };\n }\n\n const parsedColor = theme.colors[parsed.color][parsed.shade];\n\n return {\n background: parsedColor,\n hover: darken(parsedColor, 0.1),\n color: `var(--mantine-color-${parsed.color}-light-color)`,\n border: `${rem(1)} solid transparent`,\n };\n }\n\n return {\n background: color!,\n hover: darken(color!, 0.1),\n color: isLightColor(color!) ? 'var(--mantine-color-black)' : 'var(--mantine-color-white)',\n border: `${rem(1)} solid transparent`,\n };\n }\n\n if (variant === 'outline') {\n if (parsed.isThemeColor) {\n if (parsed.shade === undefined) {\n return {\n background: 'transparent',\n hover: `var(--mantine-color-${color}-outline-hover)`,\n color: `var(--mantine-color-${color}-outline)`,\n border: `${rem(1)} solid var(--mantine-color-${color}-outline)`,\n };\n }\n\n return {\n background: 'transparent',\n hover: rgba(theme.colors[parsed.color][parsed.shade], 0.05),\n color: `var(--mantine-color-${parsed.color}-${parsed.shade})`,\n border: `${rem(1)} solid var(--mantine-color-${parsed.color}-${parsed.shade})`,\n };\n }\n\n return {\n background: 'transparent',\n hover: rgba(color!, 0.05),\n color: color!,\n border: `${rem(1)} solid ${color}`,\n };\n }\n\n if (variant === 'subtle') {\n if (parsed.isThemeColor) {\n if (parsed.shade === undefined) {\n return {\n background: 'transparent',\n hover: `var(--mantine-color-${color}-light-hover)`,\n color: `var(--mantine-color-${color}-light-color)`,\n border: `${rem(1)} solid transparent`,\n };\n }\n\n const parsedColor = theme.colors[parsed.color][parsed.shade];\n\n return {\n background: 'transparent',\n hover: rgba(parsedColor, 0.12),\n color: `var(--mantine-color-${parsed.color}-${Math.min(parsed.shade, 6)})`,\n border: `${rem(1)} solid transparent`,\n };\n }\n\n return {\n background: 'transparent',\n hover: rgba(color!, 0.12),\n color: color!,\n border: `${rem(1)} solid transparent`,\n };\n }\n\n if (variant === 'transparent') {\n if (parsed.isThemeColor) {\n if (parsed.shade === undefined) {\n return {\n background: 'transparent',\n hover: 'transparent',\n color: `var(--mantine-color-${color}-light-color)`,\n border: `${rem(1)} solid transparent`,\n };\n }\n\n return {\n background: 'transparent',\n hover: 'transparent',\n color: `var(--mantine-color-${parsed.color}-${Math.min(parsed.shade, 6)})`,\n border: `${rem(1)} solid transparent`,\n };\n }\n\n return {\n background: 'transparent',\n hover: 'transparent',\n color: color!,\n border: `${rem(1)} solid transparent`,\n };\n }\n\n if (variant === 'white') {\n if (parsed.isThemeColor) {\n if (parsed.shade === undefined) {\n return {\n background: 'var(--mantine-color-white)',\n hover: darken(theme.white, 0.01),\n color: `var(--mantine-color-${color}-filled)`,\n border: `${rem(1)} solid transparent`,\n };\n }\n\n return {\n background: 'var(--mantine-color-white)',\n hover: darken(theme.white, 0.01),\n color: `var(--mantine-color-${parsed.color}-${parsed.shade})`,\n border: `${rem(1)} solid transparent`,\n };\n }\n\n return {\n background: 'var(--mantine-color-white)',\n hover: darken(theme.white, 0.01),\n color: color!,\n border: `${rem(1)} solid transparent`,\n };\n }\n\n if (variant === 'gradient') {\n return {\n background: getGradient(gradient, theme),\n hover: getGradient(gradient, theme),\n color: 'var(--mantine-color-white)',\n border: 'none',\n };\n }\n\n if (variant === 'default') {\n return {\n background: 'var(--mantine-color-default)',\n hover: 'var(--mantine-color-default-hover)',\n color: 'var(--mantine-color-default-color)',\n border: `${rem(1)} solid var(--mantine-color-default-border)`,\n };\n }\n\n return {} as VariantColorResolverResult;\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"default-variant-colors-resolver.cjs","names":["parseThemeColor","rem","darken","rgba","getGradient"],"sources":["../../../../../src/core/MantineProvider/color-functions/default-variant-colors-resolver/default-variant-colors-resolver.ts"],"sourcesContent":["import { rem } from '../../../utils';\nimport { MantineColor, MantineGradient, MantineTheme } from '../../theme.types';\nimport { darken } from '../darken/darken';\nimport { getGradient } from '../get-gradient/get-gradient';\nimport { parseThemeColor } from '../parse-theme-color/parse-theme-color';\nimport { rgba } from '../rgba/rgba';\n\nexport interface VariantColorsResolverInput {\n color: MantineColor | undefined;\n theme: MantineTheme;\n variant: string;\n gradient?: MantineGradient;\n autoContrast?: boolean;\n}\n\nexport interface VariantColorResolverResult {\n background: string;\n hover: string;\n color: string;\n border: string;\n hoverColor?: string;\n}\n\nexport type VariantColorsResolver = (\n input: VariantColorsResolverInput\n) => VariantColorResolverResult;\n\nexport const defaultVariantColorsResolver: VariantColorsResolver = ({\n color,\n theme,\n variant,\n gradient,\n autoContrast,\n}) => {\n const parsed = parseThemeColor({ color, theme });\n\n const _autoContrast = typeof autoContrast === 'boolean' ? autoContrast : theme.autoContrast;\n\n if (variant === 'none') {\n return {\n background: 'transparent',\n hover: 'transparent',\n color: 'inherit',\n border: 'none',\n };\n }\n\n if (variant === 'filled') {\n const textColor = _autoContrast\n ? parsed.isLight\n ? 'var(--mantine-color-black)'\n : 'var(--mantine-color-white)'\n : 'var(--mantine-color-white)';\n if (parsed.isThemeColor) {\n if (parsed.shade === undefined) {\n return {\n background: `var(--mantine-color-${color}-filled)`,\n hover: `var(--mantine-color-${color}-filled-hover)`,\n color: textColor,\n border: `${rem(1)} solid transparent`,\n };\n }\n\n return {\n background: `var(--mantine-color-${parsed.color}-${parsed.shade})`,\n hover: `var(--mantine-color-${parsed.color}-${parsed.shade === 9 ? 8 : parsed.shade + 1})`,\n color: textColor,\n border: `${rem(1)} solid transparent`,\n };\n }\n\n return {\n background: color!,\n hover: darken(color!, 0.1),\n color: textColor,\n border: `${rem(1)} solid transparent`,\n };\n }\n\n if (variant === 'light') {\n if (parsed.isThemeColor) {\n if (parsed.shade === undefined) {\n return {\n background: `var(--mantine-color-${color}-light)`,\n hover: `var(--mantine-color-${color}-light-hover)`,\n color: `var(--mantine-color-${color}-light-color)`,\n border: `${rem(1)} solid transparent`,\n };\n }\n\n const parsedColor = theme.colors[parsed.color][parsed.shade];\n\n return {\n background: parsedColor,\n hover: darken(parsedColor, 0.1),\n color: `var(--mantine-color-${parsed.color}-light-color)`,\n border: `${rem(1)} solid transparent`,\n };\n }\n\n return {\n background: rgba(color!, 0.1),\n hover: rgba(color!, 0.12),\n color: color!,\n border: `${rem(1)} solid transparent`,\n };\n }\n\n if (variant === 'outline') {\n if (parsed.isThemeColor) {\n if (parsed.shade === undefined) {\n return {\n background: 'transparent',\n hover: `var(--mantine-color-${color}-outline-hover)`,\n color: `var(--mantine-color-${color}-outline)`,\n border: `${rem(1)} solid var(--mantine-color-${color}-outline)`,\n };\n }\n\n return {\n background: 'transparent',\n hover: rgba(theme.colors[parsed.color][parsed.shade], 0.05),\n color: `var(--mantine-color-${parsed.color}-${parsed.shade})`,\n border: `${rem(1)} solid var(--mantine-color-${parsed.color}-${parsed.shade})`,\n };\n }\n\n return {\n background: 'transparent',\n hover: rgba(color!, 0.05),\n color: color!,\n border: `${rem(1)} solid ${color}`,\n };\n }\n\n if (variant === 'subtle') {\n if (parsed.isThemeColor) {\n if (parsed.shade === undefined) {\n return {\n background: 'transparent',\n hover: `var(--mantine-color-${color}-light-hover)`,\n color: `var(--mantine-color-${color}-light-color)`,\n border: `${rem(1)} solid transparent`,\n };\n }\n\n const parsedColor = theme.colors[parsed.color][parsed.shade];\n\n return {\n background: 'transparent',\n hover: rgba(parsedColor, 0.12),\n color: `var(--mantine-color-${parsed.color}-${Math.min(parsed.shade, 6)})`,\n border: `${rem(1)} solid transparent`,\n };\n }\n\n return {\n background: 'transparent',\n hover: rgba(color!, 0.12),\n color: color!,\n border: `${rem(1)} solid transparent`,\n };\n }\n\n if (variant === 'transparent') {\n if (parsed.isThemeColor) {\n if (parsed.shade === undefined) {\n return {\n background: 'transparent',\n hover: 'transparent',\n color: `var(--mantine-color-${color}-light-color)`,\n border: `${rem(1)} solid transparent`,\n };\n }\n\n return {\n background: 'transparent',\n hover: 'transparent',\n color: `var(--mantine-color-${parsed.color}-${Math.min(parsed.shade, 6)})`,\n border: `${rem(1)} solid transparent`,\n };\n }\n\n return {\n background: 'transparent',\n hover: 'transparent',\n color: color!,\n border: `${rem(1)} solid transparent`,\n };\n }\n\n if (variant === 'white') {\n if (parsed.isThemeColor) {\n if (parsed.shade === undefined) {\n return {\n background: 'var(--mantine-color-white)',\n hover: darken(theme.white, 0.01),\n color: `var(--mantine-color-${color}-filled)`,\n border: `${rem(1)} solid transparent`,\n };\n }\n\n return {\n background: 'var(--mantine-color-white)',\n hover: darken(theme.white, 0.01),\n color: `var(--mantine-color-${parsed.color}-${parsed.shade})`,\n border: `${rem(1)} solid transparent`,\n };\n }\n\n return {\n background: 'var(--mantine-color-white)',\n hover: darken(theme.white, 0.01),\n color: color!,\n border: `${rem(1)} solid transparent`,\n };\n }\n\n if (variant === 'gradient') {\n return {\n background: getGradient(gradient, theme),\n hover: getGradient(gradient, theme),\n color: 'var(--mantine-color-white)',\n border: 'none',\n };\n }\n\n if (variant === 'default') {\n return {\n background: 'var(--mantine-color-default)',\n hover: 'var(--mantine-color-default-hover)',\n color: 'var(--mantine-color-default-color)',\n border: `${rem(1)} solid var(--mantine-color-default-border)`,\n };\n }\n\n return {} as VariantColorResolverResult;\n};\n"],"mappings":"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"}
@@ -94,6 +94,7 @@ function TextareaAutosize({ maxRows, minRows, onChange, ref: userRef, ...props }
94
94
  const heightRef = useRef(0);
95
95
  const resizeTextarea = () => {
96
96
  const node = libRef.current;
97
+ if (!node) return;
97
98
  const nodeSizingData = getSizingData(node);
98
99
  if (!nodeSizingData) return;
99
100
  const [height] = calculateNodeHeight(nodeSizingData, node.value || node.placeholder || "x", minRows, maxRows);
@@ -1 +1 @@
1
- {"version":3,"file":"Autosize.mjs","names":[],"sources":["../../../src/components/Textarea/Autosize.tsx"],"sourcesContent":["import React, { useEffect, useLayoutEffect, useRef } from 'react';\nimport { useMergedRef } from '@mantine/hooks';\n\ntype TextareaProps = React.TextareaHTMLAttributes<HTMLTextAreaElement>;\n\nexport interface TextareaAutosizeProps extends Omit<TextareaProps, 'style'> {\n ref?: React.Ref<HTMLTextAreaElement>;\n maxRows?: number;\n minRows?: number;\n style?: Omit<NonNullable<TextareaProps['style']>, 'maxHeight' | 'minHeight'> & {\n height?: number;\n };\n}\n\nconst SIZING_STYLE_KEYS = [\n 'borderBottomWidth',\n 'borderLeftWidth',\n 'borderRightWidth',\n 'borderTopWidth',\n 'boxSizing',\n 'fontFamily',\n 'fontSize',\n 'fontStyle',\n 'fontWeight',\n 'letterSpacing',\n 'lineHeight',\n 'paddingBottom',\n 'paddingLeft',\n 'paddingRight',\n 'paddingTop',\n 'tabSize',\n 'textIndent',\n 'textRendering',\n 'textTransform',\n 'width',\n 'wordBreak',\n 'wordSpacing',\n 'scrollbarGutter',\n] as const;\n\ntype SizingStyleKey = (typeof SIZING_STYLE_KEYS)[number];\n\ninterface SizingData {\n sizingStyle: Pick<CSSStyleDeclaration, Extract<SizingStyleKey, keyof CSSStyleDeclaration>>;\n paddingSize: number;\n borderSize: number;\n}\n\nconst HIDDEN_TEXTAREA_STYLE: Record<string, string> = {\n 'min-height': '0',\n 'max-height': 'none',\n height: '0',\n visibility: 'hidden',\n overflow: 'hidden',\n position: 'absolute',\n 'z-index': '-1000',\n top: '0',\n right: '0',\n display: 'block',\n};\n\nfunction forceHiddenStyles(node: HTMLElement) {\n Object.keys(HIDDEN_TEXTAREA_STYLE).forEach((key) => {\n node.style.setProperty(key, HIDDEN_TEXTAREA_STYLE[key], 'important');\n });\n}\n\nfunction getSizingData(node: HTMLElement): SizingData | null {\n const style = window.getComputedStyle(node);\n\n if (style === null) {\n return null;\n }\n\n const sizingStyle = {} as SizingData['sizingStyle'];\n for (const key of SIZING_STYLE_KEYS) {\n (sizingStyle as any)[key] = style[key as keyof CSSStyleDeclaration];\n }\n\n if ((sizingStyle as any).boxSizing === '') {\n return null;\n }\n\n const paddingSize = parseFloat(sizingStyle.paddingBottom!) + parseFloat(sizingStyle.paddingTop!);\n\n const borderSize =\n parseFloat(sizingStyle.borderBottomWidth!) + parseFloat(sizingStyle.borderTopWidth!);\n\n return { sizingStyle, paddingSize, borderSize };\n}\n\nlet hiddenTextarea: HTMLTextAreaElement | null = null;\n\nfunction calculateNodeHeight(\n sizingData: SizingData,\n value: string,\n minRows = 1,\n maxRows = Infinity\n): [number, number] {\n if (!hiddenTextarea) {\n hiddenTextarea = document.createElement('textarea');\n hiddenTextarea.setAttribute('tabindex', '-1');\n hiddenTextarea.setAttribute('aria-hidden', 'true');\n hiddenTextarea.setAttribute('aria-label', 'autosize measurement');\n forceHiddenStyles(hiddenTextarea);\n }\n\n if (hiddenTextarea.parentNode === null) {\n document.body.appendChild(hiddenTextarea);\n }\n\n const { paddingSize, borderSize, sizingStyle } = sizingData;\n const { boxSizing } = sizingStyle;\n\n Object.keys(sizingStyle).forEach((key) => {\n (hiddenTextarea!.style as any)[key] = (sizingStyle as any)[key];\n });\n\n forceHiddenStyles(hiddenTextarea);\n\n hiddenTextarea.value = value;\n let height =\n boxSizing === 'border-box'\n ? hiddenTextarea.scrollHeight + borderSize\n : hiddenTextarea.scrollHeight - paddingSize;\n\n // Double set and calc due to Firefox bug: https://bugzilla.mozilla.org/show_bug.cgi?id=1795904\n hiddenTextarea.value = value;\n height =\n boxSizing === 'border-box'\n ? hiddenTextarea.scrollHeight + borderSize\n : hiddenTextarea.scrollHeight - paddingSize;\n\n hiddenTextarea.value = 'x';\n const rowHeight = hiddenTextarea.scrollHeight - paddingSize;\n\n let minHeight = rowHeight * minRows;\n if (boxSizing === 'border-box') {\n minHeight = minHeight + paddingSize + borderSize;\n }\n height = Math.max(minHeight, height);\n\n let maxHeight = rowHeight * maxRows;\n if (boxSizing === 'border-box') {\n maxHeight = maxHeight + paddingSize + borderSize;\n }\n height = Math.min(maxHeight, height);\n\n return [height, rowHeight];\n}\n\nexport function TextareaAutosize({\n maxRows,\n minRows,\n onChange,\n ref: userRef,\n ...props\n}: TextareaAutosizeProps) {\n const isControlled = props.value !== undefined;\n const libRef = useRef<HTMLTextAreaElement | null>(null);\n const ref = useMergedRef(libRef, userRef);\n const heightRef = useRef(0);\n\n const resizeTextarea = () => {\n const node = libRef.current!;\n const nodeSizingData = getSizingData(node);\n\n if (!nodeSizingData) {\n return;\n }\n\n const [height] = calculateNodeHeight(\n nodeSizingData,\n node.value || node.placeholder || 'x',\n minRows,\n maxRows\n );\n\n if (heightRef.current !== height) {\n heightRef.current = height;\n node.style.setProperty('height', `${height}px`, 'important');\n }\n };\n\n const handleChange = (event: React.ChangeEvent<HTMLTextAreaElement>) => {\n if (!isControlled) {\n resizeTextarea();\n }\n onChange?.(event);\n };\n\n useLayoutEffect(resizeTextarea);\n\n useEffect(() => {\n const handleResize = () => resizeTextarea();\n window.addEventListener('resize', handleResize);\n return () => window.removeEventListener('resize', handleResize);\n }, []);\n\n useEffect(() => {\n const handleFontsLoaded = () => resizeTextarea();\n document.fonts.addEventListener('loadingdone', handleFontsLoaded);\n return () => document.fonts.removeEventListener('loadingdone', handleFontsLoaded);\n }, []);\n\n useEffect(() => {\n const handleReset = (event: Event) => {\n if (libRef.current?.form === event.target && !isControlled) {\n const currentValue = libRef.current!.value;\n requestAnimationFrame(() => {\n if (libRef.current && currentValue !== libRef.current.value) {\n resizeTextarea();\n }\n });\n }\n };\n document.body.addEventListener('reset', handleReset);\n return () => document.body.removeEventListener('reset', handleReset);\n }, [isControlled]);\n\n return <textarea {...props} onChange={handleChange} ref={ref} />;\n}\n"],"mappings":";;;;;AAcA,MAAM,oBAAoB;CACxB;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACD;AAUD,MAAM,wBAAgD;CACpD,cAAc;CACd,cAAc;CACd,QAAQ;CACR,YAAY;CACZ,UAAU;CACV,UAAU;CACV,WAAW;CACX,KAAK;CACL,OAAO;CACP,SAAS;CACV;AAED,SAAS,kBAAkB,MAAmB;AAC5C,QAAO,KAAK,sBAAsB,CAAC,SAAS,QAAQ;AAClD,OAAK,MAAM,YAAY,KAAK,sBAAsB,MAAM,YAAY;GACpE;;AAGJ,SAAS,cAAc,MAAsC;CAC3D,MAAM,QAAQ,OAAO,iBAAiB,KAAK;AAE3C,KAAI,UAAU,KACZ,QAAO;CAGT,MAAM,cAAc,EAAE;AACtB,MAAK,MAAM,OAAO,kBACf,aAAoB,OAAO,MAAM;AAGpC,KAAK,YAAoB,cAAc,GACrC,QAAO;AAQT,QAAO;EAAE;EAAa,aALF,WAAW,YAAY,cAAe,GAAG,WAAW,YAAY,WAAY;EAK7D,YAFjC,WAAW,YAAY,kBAAmB,GAAG,WAAW,YAAY,eAAgB;EAEvC;;AAGjD,IAAI,iBAA6C;AAEjD,SAAS,oBACP,YACA,OACA,UAAU,GACV,UAAU,UACQ;AAClB,KAAI,CAAC,gBAAgB;AACnB,mBAAiB,SAAS,cAAc,WAAW;AACnD,iBAAe,aAAa,YAAY,KAAK;AAC7C,iBAAe,aAAa,eAAe,OAAO;AAClD,iBAAe,aAAa,cAAc,uBAAuB;AACjE,oBAAkB,eAAe;;AAGnC,KAAI,eAAe,eAAe,KAChC,UAAS,KAAK,YAAY,eAAe;CAG3C,MAAM,EAAE,aAAa,YAAY,gBAAgB;CACjD,MAAM,EAAE,cAAc;AAEtB,QAAO,KAAK,YAAY,CAAC,SAAS,QAAQ;AACvC,iBAAgB,MAAc,OAAQ,YAAoB;GAC3D;AAEF,mBAAkB,eAAe;AAEjC,gBAAe,QAAQ;CACvB,IAAI,SACF,cAAc,eACV,eAAe,eAAe,aAC9B,eAAe,eAAe;AAGpC,gBAAe,QAAQ;AACvB,UACE,cAAc,eACV,eAAe,eAAe,aAC9B,eAAe,eAAe;AAEpC,gBAAe,QAAQ;CACvB,MAAM,YAAY,eAAe,eAAe;CAEhD,IAAI,YAAY,YAAY;AAC5B,KAAI,cAAc,aAChB,aAAY,YAAY,cAAc;AAExC,UAAS,KAAK,IAAI,WAAW,OAAO;CAEpC,IAAI,YAAY,YAAY;AAC5B,KAAI,cAAc,aAChB,aAAY,YAAY,cAAc;AAExC,UAAS,KAAK,IAAI,WAAW,OAAO;AAEpC,QAAO,CAAC,QAAQ,UAAU;;AAG5B,SAAgB,iBAAiB,EAC/B,SACA,SACA,UACA,KAAK,SACL,GAAG,SACqB;CACxB,MAAM,eAAe,MAAM,UAAU,KAAA;CACrC,MAAM,SAAS,OAAmC,KAAK;CACvD,MAAM,MAAM,aAAa,QAAQ,QAAQ;CACzC,MAAM,YAAY,OAAO,EAAE;CAE3B,MAAM,uBAAuB;EAC3B,MAAM,OAAO,OAAO;EACpB,MAAM,iBAAiB,cAAc,KAAK;AAE1C,MAAI,CAAC,eACH;EAGF,MAAM,CAAC,UAAU,oBACf,gBACA,KAAK,SAAS,KAAK,eAAe,KAClC,SACA,QACD;AAED,MAAI,UAAU,YAAY,QAAQ;AAChC,aAAU,UAAU;AACpB,QAAK,MAAM,YAAY,UAAU,GAAG,OAAO,KAAK,YAAY;;;CAIhE,MAAM,gBAAgB,UAAkD;AACtE,MAAI,CAAC,aACH,iBAAgB;AAElB,aAAW,MAAM;;AAGnB,iBAAgB,eAAe;AAE/B,iBAAgB;EACd,MAAM,qBAAqB,gBAAgB;AAC3C,SAAO,iBAAiB,UAAU,aAAa;AAC/C,eAAa,OAAO,oBAAoB,UAAU,aAAa;IAC9D,EAAE,CAAC;AAEN,iBAAgB;EACd,MAAM,0BAA0B,gBAAgB;AAChD,WAAS,MAAM,iBAAiB,eAAe,kBAAkB;AACjE,eAAa,SAAS,MAAM,oBAAoB,eAAe,kBAAkB;IAChF,EAAE,CAAC;AAEN,iBAAgB;EACd,MAAM,eAAe,UAAiB;AACpC,OAAI,OAAO,SAAS,SAAS,MAAM,UAAU,CAAC,cAAc;IAC1D,MAAM,eAAe,OAAO,QAAS;AACrC,gCAA4B;AAC1B,SAAI,OAAO,WAAW,iBAAiB,OAAO,QAAQ,MACpD,iBAAgB;MAElB;;;AAGN,WAAS,KAAK,iBAAiB,SAAS,YAAY;AACpD,eAAa,SAAS,KAAK,oBAAoB,SAAS,YAAY;IACnE,CAAC,aAAa,CAAC;AAElB,QAAO,oBAAC,YAAD;EAAU,GAAI;EAAO,UAAU;EAAmB;EAAO,CAAA"}
1
+ {"version":3,"file":"Autosize.mjs","names":[],"sources":["../../../src/components/Textarea/Autosize.tsx"],"sourcesContent":["import React, { useEffect, useLayoutEffect, useRef } from 'react';\nimport { useMergedRef } from '@mantine/hooks';\n\ntype TextareaProps = React.TextareaHTMLAttributes<HTMLTextAreaElement>;\n\nexport interface TextareaAutosizeProps extends Omit<TextareaProps, 'style'> {\n ref?: React.Ref<HTMLTextAreaElement>;\n maxRows?: number;\n minRows?: number;\n style?: Omit<NonNullable<TextareaProps['style']>, 'maxHeight' | 'minHeight'> & {\n height?: number;\n };\n}\n\nconst SIZING_STYLE_KEYS = [\n 'borderBottomWidth',\n 'borderLeftWidth',\n 'borderRightWidth',\n 'borderTopWidth',\n 'boxSizing',\n 'fontFamily',\n 'fontSize',\n 'fontStyle',\n 'fontWeight',\n 'letterSpacing',\n 'lineHeight',\n 'paddingBottom',\n 'paddingLeft',\n 'paddingRight',\n 'paddingTop',\n 'tabSize',\n 'textIndent',\n 'textRendering',\n 'textTransform',\n 'width',\n 'wordBreak',\n 'wordSpacing',\n 'scrollbarGutter',\n] as const;\n\ntype SizingStyleKey = (typeof SIZING_STYLE_KEYS)[number];\n\ninterface SizingData {\n sizingStyle: Pick<CSSStyleDeclaration, Extract<SizingStyleKey, keyof CSSStyleDeclaration>>;\n paddingSize: number;\n borderSize: number;\n}\n\nconst HIDDEN_TEXTAREA_STYLE: Record<string, string> = {\n 'min-height': '0',\n 'max-height': 'none',\n height: '0',\n visibility: 'hidden',\n overflow: 'hidden',\n position: 'absolute',\n 'z-index': '-1000',\n top: '0',\n right: '0',\n display: 'block',\n};\n\nfunction forceHiddenStyles(node: HTMLElement) {\n Object.keys(HIDDEN_TEXTAREA_STYLE).forEach((key) => {\n node.style.setProperty(key, HIDDEN_TEXTAREA_STYLE[key], 'important');\n });\n}\n\nfunction getSizingData(node: HTMLElement): SizingData | null {\n const style = window.getComputedStyle(node);\n\n if (style === null) {\n return null;\n }\n\n const sizingStyle = {} as SizingData['sizingStyle'];\n for (const key of SIZING_STYLE_KEYS) {\n (sizingStyle as any)[key] = style[key as keyof CSSStyleDeclaration];\n }\n\n if ((sizingStyle as any).boxSizing === '') {\n return null;\n }\n\n const paddingSize = parseFloat(sizingStyle.paddingBottom!) + parseFloat(sizingStyle.paddingTop!);\n\n const borderSize =\n parseFloat(sizingStyle.borderBottomWidth!) + parseFloat(sizingStyle.borderTopWidth!);\n\n return { sizingStyle, paddingSize, borderSize };\n}\n\nlet hiddenTextarea: HTMLTextAreaElement | null = null;\n\nfunction calculateNodeHeight(\n sizingData: SizingData,\n value: string,\n minRows = 1,\n maxRows = Infinity\n): [number, number] {\n if (!hiddenTextarea) {\n hiddenTextarea = document.createElement('textarea');\n hiddenTextarea.setAttribute('tabindex', '-1');\n hiddenTextarea.setAttribute('aria-hidden', 'true');\n hiddenTextarea.setAttribute('aria-label', 'autosize measurement');\n forceHiddenStyles(hiddenTextarea);\n }\n\n if (hiddenTextarea.parentNode === null) {\n document.body.appendChild(hiddenTextarea);\n }\n\n const { paddingSize, borderSize, sizingStyle } = sizingData;\n const { boxSizing } = sizingStyle;\n\n Object.keys(sizingStyle).forEach((key) => {\n (hiddenTextarea!.style as any)[key] = (sizingStyle as any)[key];\n });\n\n forceHiddenStyles(hiddenTextarea);\n\n hiddenTextarea.value = value;\n let height =\n boxSizing === 'border-box'\n ? hiddenTextarea.scrollHeight + borderSize\n : hiddenTextarea.scrollHeight - paddingSize;\n\n // Double set and calc due to Firefox bug: https://bugzilla.mozilla.org/show_bug.cgi?id=1795904\n hiddenTextarea.value = value;\n height =\n boxSizing === 'border-box'\n ? hiddenTextarea.scrollHeight + borderSize\n : hiddenTextarea.scrollHeight - paddingSize;\n\n hiddenTextarea.value = 'x';\n const rowHeight = hiddenTextarea.scrollHeight - paddingSize;\n\n let minHeight = rowHeight * minRows;\n if (boxSizing === 'border-box') {\n minHeight = minHeight + paddingSize + borderSize;\n }\n height = Math.max(minHeight, height);\n\n let maxHeight = rowHeight * maxRows;\n if (boxSizing === 'border-box') {\n maxHeight = maxHeight + paddingSize + borderSize;\n }\n height = Math.min(maxHeight, height);\n\n return [height, rowHeight];\n}\n\nexport function TextareaAutosize({\n maxRows,\n minRows,\n onChange,\n ref: userRef,\n ...props\n}: TextareaAutosizeProps) {\n const isControlled = props.value !== undefined;\n const libRef = useRef<HTMLTextAreaElement | null>(null);\n const ref = useMergedRef(libRef, userRef);\n const heightRef = useRef(0);\n\n const resizeTextarea = () => {\n const node = libRef.current;\n\n if (!node) {\n return;\n }\n\n const nodeSizingData = getSizingData(node);\n\n if (!nodeSizingData) {\n return;\n }\n\n const [height] = calculateNodeHeight(\n nodeSizingData,\n node.value || node.placeholder || 'x',\n minRows,\n maxRows\n );\n\n if (heightRef.current !== height) {\n heightRef.current = height;\n node.style.setProperty('height', `${height}px`, 'important');\n }\n };\n\n const handleChange = (event: React.ChangeEvent<HTMLTextAreaElement>) => {\n if (!isControlled) {\n resizeTextarea();\n }\n onChange?.(event);\n };\n\n useLayoutEffect(resizeTextarea);\n\n useEffect(() => {\n const handleResize = () => resizeTextarea();\n window.addEventListener('resize', handleResize);\n return () => window.removeEventListener('resize', handleResize);\n }, []);\n\n useEffect(() => {\n const handleFontsLoaded = () => resizeTextarea();\n document.fonts.addEventListener('loadingdone', handleFontsLoaded);\n return () => document.fonts.removeEventListener('loadingdone', handleFontsLoaded);\n }, []);\n\n useEffect(() => {\n const handleReset = (event: Event) => {\n if (libRef.current?.form === event.target && !isControlled) {\n const currentValue = libRef.current!.value;\n requestAnimationFrame(() => {\n if (libRef.current && currentValue !== libRef.current.value) {\n resizeTextarea();\n }\n });\n }\n };\n document.body.addEventListener('reset', handleReset);\n return () => document.body.removeEventListener('reset', handleReset);\n }, [isControlled]);\n\n return <textarea {...props} onChange={handleChange} ref={ref} />;\n}\n"],"mappings":"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"}
@@ -1,6 +1,5 @@
1
1
  "use client";
2
2
  import { rem } from "../../../utils/units-converters/rem.mjs";
3
- import { isLightColor } from "../luminance/luminance.mjs";
4
3
  import { parseThemeColor } from "../parse-theme-color/parse-theme-color.mjs";
5
4
  import { darken } from "../darken/darken.mjs";
6
5
  import { getGradient } from "../get-gradient/get-gradient.mjs";
@@ -58,9 +57,9 @@ const defaultVariantColorsResolver = ({ color, theme, variant, gradient, autoCon
58
57
  };
59
58
  }
60
59
  return {
61
- background: color,
62
- hover: darken(color, .1),
63
- color: isLightColor(color) ? "var(--mantine-color-black)" : "var(--mantine-color-white)",
60
+ background: rgba(color, .1),
61
+ hover: rgba(color, .12),
62
+ color,
64
63
  border: `${rem(1)} solid transparent`
65
64
  };
66
65
  }
@@ -1 +1 @@
1
- {"version":3,"file":"default-variant-colors-resolver.mjs","names":[],"sources":["../../../../../src/core/MantineProvider/color-functions/default-variant-colors-resolver/default-variant-colors-resolver.ts"],"sourcesContent":["import { rem } from '../../../utils';\nimport { MantineColor, MantineGradient, MantineTheme } from '../../theme.types';\nimport { darken } from '../darken/darken';\nimport { getGradient } from '../get-gradient/get-gradient';\nimport { isLightColor } from '../luminance/luminance';\nimport { parseThemeColor } from '../parse-theme-color/parse-theme-color';\nimport { rgba } from '../rgba/rgba';\n\nexport interface VariantColorsResolverInput {\n color: MantineColor | undefined;\n theme: MantineTheme;\n variant: string;\n gradient?: MantineGradient;\n autoContrast?: boolean;\n}\n\nexport interface VariantColorResolverResult {\n background: string;\n hover: string;\n color: string;\n border: string;\n hoverColor?: string;\n}\n\nexport type VariantColorsResolver = (\n input: VariantColorsResolverInput\n) => VariantColorResolverResult;\n\nexport const defaultVariantColorsResolver: VariantColorsResolver = ({\n color,\n theme,\n variant,\n gradient,\n autoContrast,\n}) => {\n const parsed = parseThemeColor({ color, theme });\n\n const _autoContrast = typeof autoContrast === 'boolean' ? autoContrast : theme.autoContrast;\n\n if (variant === 'none') {\n return {\n background: 'transparent',\n hover: 'transparent',\n color: 'inherit',\n border: 'none',\n };\n }\n\n if (variant === 'filled') {\n const textColor = _autoContrast\n ? parsed.isLight\n ? 'var(--mantine-color-black)'\n : 'var(--mantine-color-white)'\n : 'var(--mantine-color-white)';\n if (parsed.isThemeColor) {\n if (parsed.shade === undefined) {\n return {\n background: `var(--mantine-color-${color}-filled)`,\n hover: `var(--mantine-color-${color}-filled-hover)`,\n color: textColor,\n border: `${rem(1)} solid transparent`,\n };\n }\n\n return {\n background: `var(--mantine-color-${parsed.color}-${parsed.shade})`,\n hover: `var(--mantine-color-${parsed.color}-${parsed.shade === 9 ? 8 : parsed.shade + 1})`,\n color: textColor,\n border: `${rem(1)} solid transparent`,\n };\n }\n\n return {\n background: color!,\n hover: darken(color!, 0.1),\n color: textColor,\n border: `${rem(1)} solid transparent`,\n };\n }\n\n if (variant === 'light') {\n if (parsed.isThemeColor) {\n if (parsed.shade === undefined) {\n return {\n background: `var(--mantine-color-${color}-light)`,\n hover: `var(--mantine-color-${color}-light-hover)`,\n color: `var(--mantine-color-${color}-light-color)`,\n border: `${rem(1)} solid transparent`,\n };\n }\n\n const parsedColor = theme.colors[parsed.color][parsed.shade];\n\n return {\n background: parsedColor,\n hover: darken(parsedColor, 0.1),\n color: `var(--mantine-color-${parsed.color}-light-color)`,\n border: `${rem(1)} solid transparent`,\n };\n }\n\n return {\n background: color!,\n hover: darken(color!, 0.1),\n color: isLightColor(color!) ? 'var(--mantine-color-black)' : 'var(--mantine-color-white)',\n border: `${rem(1)} solid transparent`,\n };\n }\n\n if (variant === 'outline') {\n if (parsed.isThemeColor) {\n if (parsed.shade === undefined) {\n return {\n background: 'transparent',\n hover: `var(--mantine-color-${color}-outline-hover)`,\n color: `var(--mantine-color-${color}-outline)`,\n border: `${rem(1)} solid var(--mantine-color-${color}-outline)`,\n };\n }\n\n return {\n background: 'transparent',\n hover: rgba(theme.colors[parsed.color][parsed.shade], 0.05),\n color: `var(--mantine-color-${parsed.color}-${parsed.shade})`,\n border: `${rem(1)} solid var(--mantine-color-${parsed.color}-${parsed.shade})`,\n };\n }\n\n return {\n background: 'transparent',\n hover: rgba(color!, 0.05),\n color: color!,\n border: `${rem(1)} solid ${color}`,\n };\n }\n\n if (variant === 'subtle') {\n if (parsed.isThemeColor) {\n if (parsed.shade === undefined) {\n return {\n background: 'transparent',\n hover: `var(--mantine-color-${color}-light-hover)`,\n color: `var(--mantine-color-${color}-light-color)`,\n border: `${rem(1)} solid transparent`,\n };\n }\n\n const parsedColor = theme.colors[parsed.color][parsed.shade];\n\n return {\n background: 'transparent',\n hover: rgba(parsedColor, 0.12),\n color: `var(--mantine-color-${parsed.color}-${Math.min(parsed.shade, 6)})`,\n border: `${rem(1)} solid transparent`,\n };\n }\n\n return {\n background: 'transparent',\n hover: rgba(color!, 0.12),\n color: color!,\n border: `${rem(1)} solid transparent`,\n };\n }\n\n if (variant === 'transparent') {\n if (parsed.isThemeColor) {\n if (parsed.shade === undefined) {\n return {\n background: 'transparent',\n hover: 'transparent',\n color: `var(--mantine-color-${color}-light-color)`,\n border: `${rem(1)} solid transparent`,\n };\n }\n\n return {\n background: 'transparent',\n hover: 'transparent',\n color: `var(--mantine-color-${parsed.color}-${Math.min(parsed.shade, 6)})`,\n border: `${rem(1)} solid transparent`,\n };\n }\n\n return {\n background: 'transparent',\n hover: 'transparent',\n color: color!,\n border: `${rem(1)} solid transparent`,\n };\n }\n\n if (variant === 'white') {\n if (parsed.isThemeColor) {\n if (parsed.shade === undefined) {\n return {\n background: 'var(--mantine-color-white)',\n hover: darken(theme.white, 0.01),\n color: `var(--mantine-color-${color}-filled)`,\n border: `${rem(1)} solid transparent`,\n };\n }\n\n return {\n background: 'var(--mantine-color-white)',\n hover: darken(theme.white, 0.01),\n color: `var(--mantine-color-${parsed.color}-${parsed.shade})`,\n border: `${rem(1)} solid transparent`,\n };\n }\n\n return {\n background: 'var(--mantine-color-white)',\n hover: darken(theme.white, 0.01),\n color: color!,\n border: `${rem(1)} solid transparent`,\n };\n }\n\n if (variant === 'gradient') {\n return {\n background: getGradient(gradient, theme),\n hover: getGradient(gradient, theme),\n color: 'var(--mantine-color-white)',\n border: 'none',\n };\n }\n\n if (variant === 'default') {\n return {\n background: 'var(--mantine-color-default)',\n hover: 'var(--mantine-color-default-hover)',\n color: 'var(--mantine-color-default-color)',\n border: `${rem(1)} solid var(--mantine-color-default-border)`,\n };\n }\n\n return {} as VariantColorResolverResult;\n};\n"],"mappings":";;;;;;;;AA4BA,MAAa,gCAAuD,EAClE,OACA,OACA,SACA,UACA,mBACI;CACJ,MAAM,SAAS,gBAAgB;EAAE;EAAO;EAAO,CAAC;CAEhD,MAAM,gBAAgB,OAAO,iBAAiB,YAAY,eAAe,MAAM;AAE/E,KAAI,YAAY,OACd,QAAO;EACL,YAAY;EACZ,OAAO;EACP,OAAO;EACP,QAAQ;EACT;AAGH,KAAI,YAAY,UAAU;EACxB,MAAM,YAAY,gBACd,OAAO,UACL,+BACA,+BACF;AACJ,MAAI,OAAO,cAAc;AACvB,OAAI,OAAO,UAAU,KAAA,EACnB,QAAO;IACL,YAAY,uBAAuB,MAAM;IACzC,OAAO,uBAAuB,MAAM;IACpC,OAAO;IACP,QAAQ,GAAG,IAAI,EAAE,CAAC;IACnB;AAGH,UAAO;IACL,YAAY,uBAAuB,OAAO,MAAM,GAAG,OAAO,MAAM;IAChE,OAAO,uBAAuB,OAAO,MAAM,GAAG,OAAO,UAAU,IAAI,IAAI,OAAO,QAAQ,EAAE;IACxF,OAAO;IACP,QAAQ,GAAG,IAAI,EAAE,CAAC;IACnB;;AAGH,SAAO;GACL,YAAY;GACZ,OAAO,OAAO,OAAQ,GAAI;GAC1B,OAAO;GACP,QAAQ,GAAG,IAAI,EAAE,CAAC;GACnB;;AAGH,KAAI,YAAY,SAAS;AACvB,MAAI,OAAO,cAAc;AACvB,OAAI,OAAO,UAAU,KAAA,EACnB,QAAO;IACL,YAAY,uBAAuB,MAAM;IACzC,OAAO,uBAAuB,MAAM;IACpC,OAAO,uBAAuB,MAAM;IACpC,QAAQ,GAAG,IAAI,EAAE,CAAC;IACnB;GAGH,MAAM,cAAc,MAAM,OAAO,OAAO,OAAO,OAAO;AAEtD,UAAO;IACL,YAAY;IACZ,OAAO,OAAO,aAAa,GAAI;IAC/B,OAAO,uBAAuB,OAAO,MAAM;IAC3C,QAAQ,GAAG,IAAI,EAAE,CAAC;IACnB;;AAGH,SAAO;GACL,YAAY;GACZ,OAAO,OAAO,OAAQ,GAAI;GAC1B,OAAO,aAAa,MAAO,GAAG,+BAA+B;GAC7D,QAAQ,GAAG,IAAI,EAAE,CAAC;GACnB;;AAGH,KAAI,YAAY,WAAW;AACzB,MAAI,OAAO,cAAc;AACvB,OAAI,OAAO,UAAU,KAAA,EACnB,QAAO;IACL,YAAY;IACZ,OAAO,uBAAuB,MAAM;IACpC,OAAO,uBAAuB,MAAM;IACpC,QAAQ,GAAG,IAAI,EAAE,CAAC,6BAA6B,MAAM;IACtD;AAGH,UAAO;IACL,YAAY;IACZ,OAAO,KAAK,MAAM,OAAO,OAAO,OAAO,OAAO,QAAQ,IAAK;IAC3D,OAAO,uBAAuB,OAAO,MAAM,GAAG,OAAO,MAAM;IAC3D,QAAQ,GAAG,IAAI,EAAE,CAAC,6BAA6B,OAAO,MAAM,GAAG,OAAO,MAAM;IAC7E;;AAGH,SAAO;GACL,YAAY;GACZ,OAAO,KAAK,OAAQ,IAAK;GAClB;GACP,QAAQ,GAAG,IAAI,EAAE,CAAC,SAAS;GAC5B;;AAGH,KAAI,YAAY,UAAU;AACxB,MAAI,OAAO,cAAc;AACvB,OAAI,OAAO,UAAU,KAAA,EACnB,QAAO;IACL,YAAY;IACZ,OAAO,uBAAuB,MAAM;IACpC,OAAO,uBAAuB,MAAM;IACpC,QAAQ,GAAG,IAAI,EAAE,CAAC;IACnB;GAGH,MAAM,cAAc,MAAM,OAAO,OAAO,OAAO,OAAO;AAEtD,UAAO;IACL,YAAY;IACZ,OAAO,KAAK,aAAa,IAAK;IAC9B,OAAO,uBAAuB,OAAO,MAAM,GAAG,KAAK,IAAI,OAAO,OAAO,EAAE,CAAC;IACxE,QAAQ,GAAG,IAAI,EAAE,CAAC;IACnB;;AAGH,SAAO;GACL,YAAY;GACZ,OAAO,KAAK,OAAQ,IAAK;GAClB;GACP,QAAQ,GAAG,IAAI,EAAE,CAAC;GACnB;;AAGH,KAAI,YAAY,eAAe;AAC7B,MAAI,OAAO,cAAc;AACvB,OAAI,OAAO,UAAU,KAAA,EACnB,QAAO;IACL,YAAY;IACZ,OAAO;IACP,OAAO,uBAAuB,MAAM;IACpC,QAAQ,GAAG,IAAI,EAAE,CAAC;IACnB;AAGH,UAAO;IACL,YAAY;IACZ,OAAO;IACP,OAAO,uBAAuB,OAAO,MAAM,GAAG,KAAK,IAAI,OAAO,OAAO,EAAE,CAAC;IACxE,QAAQ,GAAG,IAAI,EAAE,CAAC;IACnB;;AAGH,SAAO;GACL,YAAY;GACZ,OAAO;GACA;GACP,QAAQ,GAAG,IAAI,EAAE,CAAC;GACnB;;AAGH,KAAI,YAAY,SAAS;AACvB,MAAI,OAAO,cAAc;AACvB,OAAI,OAAO,UAAU,KAAA,EACnB,QAAO;IACL,YAAY;IACZ,OAAO,OAAO,MAAM,OAAO,IAAK;IAChC,OAAO,uBAAuB,MAAM;IACpC,QAAQ,GAAG,IAAI,EAAE,CAAC;IACnB;AAGH,UAAO;IACL,YAAY;IACZ,OAAO,OAAO,MAAM,OAAO,IAAK;IAChC,OAAO,uBAAuB,OAAO,MAAM,GAAG,OAAO,MAAM;IAC3D,QAAQ,GAAG,IAAI,EAAE,CAAC;IACnB;;AAGH,SAAO;GACL,YAAY;GACZ,OAAO,OAAO,MAAM,OAAO,IAAK;GACzB;GACP,QAAQ,GAAG,IAAI,EAAE,CAAC;GACnB;;AAGH,KAAI,YAAY,WACd,QAAO;EACL,YAAY,YAAY,UAAU,MAAM;EACxC,OAAO,YAAY,UAAU,MAAM;EACnC,OAAO;EACP,QAAQ;EACT;AAGH,KAAI,YAAY,UACd,QAAO;EACL,YAAY;EACZ,OAAO;EACP,OAAO;EACP,QAAQ,GAAG,IAAI,EAAE,CAAC;EACnB;AAGH,QAAO,EAAE"}
1
+ {"version":3,"file":"default-variant-colors-resolver.mjs","names":[],"sources":["../../../../../src/core/MantineProvider/color-functions/default-variant-colors-resolver/default-variant-colors-resolver.ts"],"sourcesContent":["import { rem } from '../../../utils';\nimport { MantineColor, MantineGradient, MantineTheme } from '../../theme.types';\nimport { darken } from '../darken/darken';\nimport { getGradient } from '../get-gradient/get-gradient';\nimport { parseThemeColor } from '../parse-theme-color/parse-theme-color';\nimport { rgba } from '../rgba/rgba';\n\nexport interface VariantColorsResolverInput {\n color: MantineColor | undefined;\n theme: MantineTheme;\n variant: string;\n gradient?: MantineGradient;\n autoContrast?: boolean;\n}\n\nexport interface VariantColorResolverResult {\n background: string;\n hover: string;\n color: string;\n border: string;\n hoverColor?: string;\n}\n\nexport type VariantColorsResolver = (\n input: VariantColorsResolverInput\n) => VariantColorResolverResult;\n\nexport const defaultVariantColorsResolver: VariantColorsResolver = ({\n color,\n theme,\n variant,\n gradient,\n autoContrast,\n}) => {\n const parsed = parseThemeColor({ color, theme });\n\n const _autoContrast = typeof autoContrast === 'boolean' ? autoContrast : theme.autoContrast;\n\n if (variant === 'none') {\n return {\n background: 'transparent',\n hover: 'transparent',\n color: 'inherit',\n border: 'none',\n };\n }\n\n if (variant === 'filled') {\n const textColor = _autoContrast\n ? parsed.isLight\n ? 'var(--mantine-color-black)'\n : 'var(--mantine-color-white)'\n : 'var(--mantine-color-white)';\n if (parsed.isThemeColor) {\n if (parsed.shade === undefined) {\n return {\n background: `var(--mantine-color-${color}-filled)`,\n hover: `var(--mantine-color-${color}-filled-hover)`,\n color: textColor,\n border: `${rem(1)} solid transparent`,\n };\n }\n\n return {\n background: `var(--mantine-color-${parsed.color}-${parsed.shade})`,\n hover: `var(--mantine-color-${parsed.color}-${parsed.shade === 9 ? 8 : parsed.shade + 1})`,\n color: textColor,\n border: `${rem(1)} solid transparent`,\n };\n }\n\n return {\n background: color!,\n hover: darken(color!, 0.1),\n color: textColor,\n border: `${rem(1)} solid transparent`,\n };\n }\n\n if (variant === 'light') {\n if (parsed.isThemeColor) {\n if (parsed.shade === undefined) {\n return {\n background: `var(--mantine-color-${color}-light)`,\n hover: `var(--mantine-color-${color}-light-hover)`,\n color: `var(--mantine-color-${color}-light-color)`,\n border: `${rem(1)} solid transparent`,\n };\n }\n\n const parsedColor = theme.colors[parsed.color][parsed.shade];\n\n return {\n background: parsedColor,\n hover: darken(parsedColor, 0.1),\n color: `var(--mantine-color-${parsed.color}-light-color)`,\n border: `${rem(1)} solid transparent`,\n };\n }\n\n return {\n background: rgba(color!, 0.1),\n hover: rgba(color!, 0.12),\n color: color!,\n border: `${rem(1)} solid transparent`,\n };\n }\n\n if (variant === 'outline') {\n if (parsed.isThemeColor) {\n if (parsed.shade === undefined) {\n return {\n background: 'transparent',\n hover: `var(--mantine-color-${color}-outline-hover)`,\n color: `var(--mantine-color-${color}-outline)`,\n border: `${rem(1)} solid var(--mantine-color-${color}-outline)`,\n };\n }\n\n return {\n background: 'transparent',\n hover: rgba(theme.colors[parsed.color][parsed.shade], 0.05),\n color: `var(--mantine-color-${parsed.color}-${parsed.shade})`,\n border: `${rem(1)} solid var(--mantine-color-${parsed.color}-${parsed.shade})`,\n };\n }\n\n return {\n background: 'transparent',\n hover: rgba(color!, 0.05),\n color: color!,\n border: `${rem(1)} solid ${color}`,\n };\n }\n\n if (variant === 'subtle') {\n if (parsed.isThemeColor) {\n if (parsed.shade === undefined) {\n return {\n background: 'transparent',\n hover: `var(--mantine-color-${color}-light-hover)`,\n color: `var(--mantine-color-${color}-light-color)`,\n border: `${rem(1)} solid transparent`,\n };\n }\n\n const parsedColor = theme.colors[parsed.color][parsed.shade];\n\n return {\n background: 'transparent',\n hover: rgba(parsedColor, 0.12),\n color: `var(--mantine-color-${parsed.color}-${Math.min(parsed.shade, 6)})`,\n border: `${rem(1)} solid transparent`,\n };\n }\n\n return {\n background: 'transparent',\n hover: rgba(color!, 0.12),\n color: color!,\n border: `${rem(1)} solid transparent`,\n };\n }\n\n if (variant === 'transparent') {\n if (parsed.isThemeColor) {\n if (parsed.shade === undefined) {\n return {\n background: 'transparent',\n hover: 'transparent',\n color: `var(--mantine-color-${color}-light-color)`,\n border: `${rem(1)} solid transparent`,\n };\n }\n\n return {\n background: 'transparent',\n hover: 'transparent',\n color: `var(--mantine-color-${parsed.color}-${Math.min(parsed.shade, 6)})`,\n border: `${rem(1)} solid transparent`,\n };\n }\n\n return {\n background: 'transparent',\n hover: 'transparent',\n color: color!,\n border: `${rem(1)} solid transparent`,\n };\n }\n\n if (variant === 'white') {\n if (parsed.isThemeColor) {\n if (parsed.shade === undefined) {\n return {\n background: 'var(--mantine-color-white)',\n hover: darken(theme.white, 0.01),\n color: `var(--mantine-color-${color}-filled)`,\n border: `${rem(1)} solid transparent`,\n };\n }\n\n return {\n background: 'var(--mantine-color-white)',\n hover: darken(theme.white, 0.01),\n color: `var(--mantine-color-${parsed.color}-${parsed.shade})`,\n border: `${rem(1)} solid transparent`,\n };\n }\n\n return {\n background: 'var(--mantine-color-white)',\n hover: darken(theme.white, 0.01),\n color: color!,\n border: `${rem(1)} solid transparent`,\n };\n }\n\n if (variant === 'gradient') {\n return {\n background: getGradient(gradient, theme),\n hover: getGradient(gradient, theme),\n color: 'var(--mantine-color-white)',\n border: 'none',\n };\n }\n\n if (variant === 'default') {\n return {\n background: 'var(--mantine-color-default)',\n hover: 'var(--mantine-color-default-hover)',\n color: 'var(--mantine-color-default-color)',\n border: `${rem(1)} solid var(--mantine-color-default-border)`,\n };\n }\n\n return {} as VariantColorResolverResult;\n};\n"],"mappings":";;;;;;;AA2BA,MAAa,gCAAuD,EAClE,OACA,OACA,SACA,UACA,mBACI;CACJ,MAAM,SAAS,gBAAgB;EAAE;EAAO;EAAO,CAAC;CAEhD,MAAM,gBAAgB,OAAO,iBAAiB,YAAY,eAAe,MAAM;AAE/E,KAAI,YAAY,OACd,QAAO;EACL,YAAY;EACZ,OAAO;EACP,OAAO;EACP,QAAQ;EACT;AAGH,KAAI,YAAY,UAAU;EACxB,MAAM,YAAY,gBACd,OAAO,UACL,+BACA,+BACF;AACJ,MAAI,OAAO,cAAc;AACvB,OAAI,OAAO,UAAU,KAAA,EACnB,QAAO;IACL,YAAY,uBAAuB,MAAM;IACzC,OAAO,uBAAuB,MAAM;IACpC,OAAO;IACP,QAAQ,GAAG,IAAI,EAAE,CAAC;IACnB;AAGH,UAAO;IACL,YAAY,uBAAuB,OAAO,MAAM,GAAG,OAAO,MAAM;IAChE,OAAO,uBAAuB,OAAO,MAAM,GAAG,OAAO,UAAU,IAAI,IAAI,OAAO,QAAQ,EAAE;IACxF,OAAO;IACP,QAAQ,GAAG,IAAI,EAAE,CAAC;IACnB;;AAGH,SAAO;GACL,YAAY;GACZ,OAAO,OAAO,OAAQ,GAAI;GAC1B,OAAO;GACP,QAAQ,GAAG,IAAI,EAAE,CAAC;GACnB;;AAGH,KAAI,YAAY,SAAS;AACvB,MAAI,OAAO,cAAc;AACvB,OAAI,OAAO,UAAU,KAAA,EACnB,QAAO;IACL,YAAY,uBAAuB,MAAM;IACzC,OAAO,uBAAuB,MAAM;IACpC,OAAO,uBAAuB,MAAM;IACpC,QAAQ,GAAG,IAAI,EAAE,CAAC;IACnB;GAGH,MAAM,cAAc,MAAM,OAAO,OAAO,OAAO,OAAO;AAEtD,UAAO;IACL,YAAY;IACZ,OAAO,OAAO,aAAa,GAAI;IAC/B,OAAO,uBAAuB,OAAO,MAAM;IAC3C,QAAQ,GAAG,IAAI,EAAE,CAAC;IACnB;;AAGH,SAAO;GACL,YAAY,KAAK,OAAQ,GAAI;GAC7B,OAAO,KAAK,OAAQ,IAAK;GAClB;GACP,QAAQ,GAAG,IAAI,EAAE,CAAC;GACnB;;AAGH,KAAI,YAAY,WAAW;AACzB,MAAI,OAAO,cAAc;AACvB,OAAI,OAAO,UAAU,KAAA,EACnB,QAAO;IACL,YAAY;IACZ,OAAO,uBAAuB,MAAM;IACpC,OAAO,uBAAuB,MAAM;IACpC,QAAQ,GAAG,IAAI,EAAE,CAAC,6BAA6B,MAAM;IACtD;AAGH,UAAO;IACL,YAAY;IACZ,OAAO,KAAK,MAAM,OAAO,OAAO,OAAO,OAAO,QAAQ,IAAK;IAC3D,OAAO,uBAAuB,OAAO,MAAM,GAAG,OAAO,MAAM;IAC3D,QAAQ,GAAG,IAAI,EAAE,CAAC,6BAA6B,OAAO,MAAM,GAAG,OAAO,MAAM;IAC7E;;AAGH,SAAO;GACL,YAAY;GACZ,OAAO,KAAK,OAAQ,IAAK;GAClB;GACP,QAAQ,GAAG,IAAI,EAAE,CAAC,SAAS;GAC5B;;AAGH,KAAI,YAAY,UAAU;AACxB,MAAI,OAAO,cAAc;AACvB,OAAI,OAAO,UAAU,KAAA,EACnB,QAAO;IACL,YAAY;IACZ,OAAO,uBAAuB,MAAM;IACpC,OAAO,uBAAuB,MAAM;IACpC,QAAQ,GAAG,IAAI,EAAE,CAAC;IACnB;GAGH,MAAM,cAAc,MAAM,OAAO,OAAO,OAAO,OAAO;AAEtD,UAAO;IACL,YAAY;IACZ,OAAO,KAAK,aAAa,IAAK;IAC9B,OAAO,uBAAuB,OAAO,MAAM,GAAG,KAAK,IAAI,OAAO,OAAO,EAAE,CAAC;IACxE,QAAQ,GAAG,IAAI,EAAE,CAAC;IACnB;;AAGH,SAAO;GACL,YAAY;GACZ,OAAO,KAAK,OAAQ,IAAK;GAClB;GACP,QAAQ,GAAG,IAAI,EAAE,CAAC;GACnB;;AAGH,KAAI,YAAY,eAAe;AAC7B,MAAI,OAAO,cAAc;AACvB,OAAI,OAAO,UAAU,KAAA,EACnB,QAAO;IACL,YAAY;IACZ,OAAO;IACP,OAAO,uBAAuB,MAAM;IACpC,QAAQ,GAAG,IAAI,EAAE,CAAC;IACnB;AAGH,UAAO;IACL,YAAY;IACZ,OAAO;IACP,OAAO,uBAAuB,OAAO,MAAM,GAAG,KAAK,IAAI,OAAO,OAAO,EAAE,CAAC;IACxE,QAAQ,GAAG,IAAI,EAAE,CAAC;IACnB;;AAGH,SAAO;GACL,YAAY;GACZ,OAAO;GACA;GACP,QAAQ,GAAG,IAAI,EAAE,CAAC;GACnB;;AAGH,KAAI,YAAY,SAAS;AACvB,MAAI,OAAO,cAAc;AACvB,OAAI,OAAO,UAAU,KAAA,EACnB,QAAO;IACL,YAAY;IACZ,OAAO,OAAO,MAAM,OAAO,IAAK;IAChC,OAAO,uBAAuB,MAAM;IACpC,QAAQ,GAAG,IAAI,EAAE,CAAC;IACnB;AAGH,UAAO;IACL,YAAY;IACZ,OAAO,OAAO,MAAM,OAAO,IAAK;IAChC,OAAO,uBAAuB,OAAO,MAAM,GAAG,OAAO,MAAM;IAC3D,QAAQ,GAAG,IAAI,EAAE,CAAC;IACnB;;AAGH,SAAO;GACL,YAAY;GACZ,OAAO,OAAO,MAAM,OAAO,IAAK;GACzB;GACP,QAAQ,GAAG,IAAI,EAAE,CAAC;GACnB;;AAGH,KAAI,YAAY,WACd,QAAO;EACL,YAAY,YAAY,UAAU,MAAM;EACxC,OAAO,YAAY,UAAU,MAAM;EACnC,OAAO;EACP,QAAQ;EACT;AAGH,KAAI,YAAY,UACd,QAAO;EACL,YAAY;EACZ,OAAO;EACP,OAAO;EACP,QAAQ,GAAG,IAAI,EAAE,CAAC;EACnB;AAGH,QAAO,EAAE"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mantine/core",
3
- "version": "9.0.1",
3
+ "version": "9.0.2",
4
4
  "description": "React components library focused on usability, accessibility and developer experience",
5
5
  "homepage": "https://mantine.dev/",
6
6
  "license": "MIT",
@@ -43,7 +43,7 @@
43
43
  "directory": "packages/@mantine/core"
44
44
  },
45
45
  "peerDependencies": {
46
- "@mantine/hooks": "9.0.1",
46
+ "@mantine/hooks": "9.0.2",
47
47
  "react": "^19.2.0",
48
48
  "react-dom": "^19.2.0"
49
49
  },