@yamada-ui/ripple 1.0.46-next-20241126142838 → 1.0.46-next-20241127012228

Sign up to get free protection for your applications and to get access to all the features.
@@ -9,9 +9,10 @@ var useRipple = ({
9
9
  ...rest
10
10
  } = {}) => {
11
11
  const [ripples, setRipples] = useState([]);
12
+ disabled != null ? disabled : disabled = isDisabled;
12
13
  const onPointerDown = useCallback(
13
14
  (ev) => {
14
- if (disabled || isDisabled) return setRipples([]);
15
+ if (disabled) return setRipples([]);
15
16
  const trigger = ev.currentTarget;
16
17
  const size = Math.max(trigger.clientWidth, trigger.clientHeight);
17
18
  const rect = trigger.getBoundingClientRect();
@@ -25,7 +26,7 @@ var useRipple = ({
25
26
  }
26
27
  ]);
27
28
  },
28
- [disabled, isDisabled]
29
+ [disabled]
29
30
  );
30
31
  const onClear = useCallback((key) => {
31
32
  setRipples((prev) => prev.filter((item) => item.key !== key));
@@ -40,4 +41,4 @@ var useRipple = ({
40
41
  export {
41
42
  useRipple
42
43
  };
43
- //# sourceMappingURL=chunk-7NWWPF2L.mjs.map
44
+ //# sourceMappingURL=chunk-35NXY6DT.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/use-ripple.ts"],"sourcesContent":["import type React from \"react\"\nimport type { Key, PointerEventHandler } from \"react\"\nimport { createId, handlerAll } from \"@yamada-ui/utils\"\nimport { useCallback, useState } from \"react\"\n\nexport interface RippleOptions {\n key: React.Key\n size: number\n x: number\n y: number\n}\n\nexport interface UseRippleProps<T = HTMLElement> {\n disabled?: boolean\n /**\n * @deprecated Use `disabled` instead.\n */\n isDisabled?: boolean\n onPointerDown?: PointerEventHandler<T>\n}\n\nexport const useRipple = <T = HTMLElement>({\n disabled,\n isDisabled,\n ...rest\n}: UseRippleProps<T> = {}) => {\n const [ripples, setRipples] = useState<RippleOptions[]>([])\n\n disabled ??= isDisabled\n\n const onPointerDown: PointerEventHandler<T> = useCallback(\n (ev) => {\n if (disabled) return setRipples([])\n\n const trigger = ev.currentTarget as unknown as Element\n\n const size = Math.max(trigger.clientWidth, trigger.clientHeight)\n const rect = trigger.getBoundingClientRect()\n\n setRipples((prev) => [\n ...prev,\n {\n key: createId(prev.length.toString()),\n size,\n x: ev.clientX - rect.x - size / 2,\n y: ev.clientY - rect.y - size / 2,\n },\n ])\n },\n [disabled],\n )\n\n const onClear = useCallback((key: Key) => {\n setRipples((prev) => prev.filter((item) => item.key !== key))\n }, [])\n\n return {\n ripples,\n onClear,\n onPointerDown: handlerAll(onPointerDown, rest.onPointerDown),\n }\n}\n\nexport type UseRippleReturn = ReturnType<typeof useRipple>\n"],"mappings":";;;AAEA,SAAS,UAAU,kBAAkB;AACrC,SAAS,aAAa,gBAAgB;AAkB/B,IAAM,YAAY,CAAkB;AAAA,EACzC;AAAA,EACA;AAAA,EACA,GAAG;AACL,IAAuB,CAAC,MAAM;AAC5B,QAAM,CAAC,SAAS,UAAU,IAAI,SAA0B,CAAC,CAAC;AAE1D,2CAAa;AAEb,QAAM,gBAAwC;AAAA,IAC5C,CAAC,OAAO;AACN,UAAI,SAAU,QAAO,WAAW,CAAC,CAAC;AAElC,YAAM,UAAU,GAAG;AAEnB,YAAM,OAAO,KAAK,IAAI,QAAQ,aAAa,QAAQ,YAAY;AAC/D,YAAM,OAAO,QAAQ,sBAAsB;AAE3C,iBAAW,CAAC,SAAS;AAAA,QACnB,GAAG;AAAA,QACH;AAAA,UACE,KAAK,SAAS,KAAK,OAAO,SAAS,CAAC;AAAA,UACpC;AAAA,UACA,GAAG,GAAG,UAAU,KAAK,IAAI,OAAO;AAAA,UAChC,GAAG,GAAG,UAAU,KAAK,IAAI,OAAO;AAAA,QAClC;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IACA,CAAC,QAAQ;AAAA,EACX;AAEA,QAAM,UAAU,YAAY,CAAC,QAAa;AACxC,eAAW,CAAC,SAAS,KAAK,OAAO,CAAC,SAAS,KAAK,QAAQ,GAAG,CAAC;AAAA,EAC9D,GAAG,CAAC,CAAC;AAEL,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA,eAAe,WAAW,eAAe,KAAK,aAAa;AAAA,EAC7D;AACF;","names":[]}
@@ -9,12 +9,14 @@ var Ripple = ({
9
9
  className,
10
10
  style,
11
11
  color = "currentColor",
12
+ disabled,
12
13
  isDisabled,
13
14
  ripples,
14
15
  onAnimationComplete,
15
16
  onClear,
16
17
  ...rest
17
18
  }) => {
19
+ disabled != null ? disabled : disabled = isDisabled;
18
20
  if (isDisabled) return null;
19
21
  const css = {
20
22
  rounded: "fallback(full, 9999px)",
@@ -57,4 +59,4 @@ Ripple.__ui__ = "Ripple";
57
59
  export {
58
60
  Ripple
59
61
  };
60
- //# sourceMappingURL=chunk-YH24ZFF2.mjs.map
62
+ //# sourceMappingURL=chunk-PLZVHWSV.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/ripple.tsx"],"sourcesContent":["import type { CSSUIObject, FC } from \"@yamada-ui/core\"\nimport type { MotionProps } from \"@yamada-ui/motion\"\nimport type { Key } from \"react\"\nimport type { RippleOptions } from \"./use-ripple\"\nimport { AnimatePresence, motion } from \"@yamada-ui/motion\"\nimport { cx, handlerAll } from \"@yamada-ui/utils\"\n\nconst clamp = (value: number, min: number, max: number) =>\n Math.min(Math.max(value, min), max)\n\nexport interface RippleProps extends MotionProps<\"span\"> {\n ripples: RippleOptions[]\n onClear: (key: Key) => void\n /**\n * If `true`, disable ripple effects when pressing a element.\n *\n * @default false\n */\n disabled?: boolean\n /**\n * If `true`, disable ripple effects when pressing a element.\n *\n * @default false\n *\n * @deprecated Use `disabled` instead.\n */\n isDisabled?: boolean\n}\n\n/**\n * `Ripple` is a component that adds a ripple effect to elements, allowing users to recognize when they have clicked.\n *\n * @see Docs https://yamada-ui.com/components/other/ripple\n */\nexport const Ripple: FC<RippleProps> = ({\n className,\n style,\n color = \"currentColor\",\n disabled,\n isDisabled,\n ripples,\n onAnimationComplete,\n onClear,\n ...rest\n}) => {\n disabled ??= isDisabled\n\n if (isDisabled) return null\n\n const css: CSSUIObject = {\n rounded: \"fallback(full, 9999px)\",\n zIndex: \"fallback(kurillin, 9)\",\n }\n\n return (\n <>\n {ripples.map(({ key, size, x, y }) => {\n const duration = clamp(0.01 * size, 0.2, size > 100 ? 0.75 : 0.5)\n\n return (\n <AnimatePresence key={key} mode=\"popLayout\">\n <motion.span\n className={cx(\"ui-ripple\", className)}\n style={{\n height: `${size}px`,\n left: x,\n pointerEvents: \"none\",\n position: \"absolute\",\n top: y,\n transformOrigin: \"center\",\n width: `${size}px`,\n ...style,\n }}\n animate={{ opacity: 0, transform: \"scale(2)\" }}\n bgColor={color}\n exit={{ opacity: 0 }}\n initial={{ opacity: 0.35, transform: \"scale(0)\" }}\n transition={{ duration }}\n __css={css}\n {...rest}\n onAnimationComplete={handlerAll(onAnimationComplete, () =>\n onClear(key),\n )}\n />\n </AnimatePresence>\n )\n })}\n </>\n )\n}\n\nRipple.displayName = \"Ripple\"\nRipple.__ui__ = \"Ripple\"\n"],"mappings":";;;AAIA,SAAS,iBAAiB,cAAc;AACxC,SAAS,IAAI,kBAAkB;AAkD3B,mBAMQ,WANR;AAhDJ,IAAM,QAAQ,CAAC,OAAe,KAAa,QACzC,KAAK,IAAI,KAAK,IAAI,OAAO,GAAG,GAAG,GAAG;AA0B7B,IAAM,SAA0B,CAAC;AAAA,EACtC;AAAA,EACA;AAAA,EACA,QAAQ;AAAA,EACR;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,MAAM;AACJ,2CAAa;AAEb,MAAI,WAAY,QAAO;AAEvB,QAAM,MAAmB;AAAA,IACvB,SAAS;AAAA,IACT,QAAQ;AAAA,EACV;AAEA,SACE,gCACG,kBAAQ,IAAI,CAAC,EAAE,KAAK,MAAM,GAAG,EAAE,MAAM;AACpC,UAAM,WAAW,MAAM,OAAO,MAAM,KAAK,OAAO,MAAM,OAAO,GAAG;AAEhE,WACE,oBAAC,mBAA0B,MAAK,aAC9B;AAAA,MAAC,OAAO;AAAA,MAAP;AAAA,QACC,WAAW,GAAG,aAAa,SAAS;AAAA,QACpC,OAAO;AAAA,UACL,QAAQ,GAAG,IAAI;AAAA,UACf,MAAM;AAAA,UACN,eAAe;AAAA,UACf,UAAU;AAAA,UACV,KAAK;AAAA,UACL,iBAAiB;AAAA,UACjB,OAAO,GAAG,IAAI;AAAA,UACd,GAAG;AAAA,QACL;AAAA,QACA,SAAS,EAAE,SAAS,GAAG,WAAW,WAAW;AAAA,QAC7C,SAAS;AAAA,QACT,MAAM,EAAE,SAAS,EAAE;AAAA,QACnB,SAAS,EAAE,SAAS,MAAM,WAAW,WAAW;AAAA,QAChD,YAAY,EAAE,SAAS;AAAA,QACvB,OAAO;AAAA,QACN,GAAG;AAAA,QACJ,qBAAqB;AAAA,UAAW;AAAA,UAAqB,MACnD,QAAQ,GAAG;AAAA,QACb;AAAA;AAAA,IACF,KAvBoB,GAwBtB;AAAA,EAEJ,CAAC,GACH;AAEJ;AAEA,OAAO,cAAc;AACrB,OAAO,SAAS;","names":[]}
package/dist/index.js CHANGED
@@ -35,12 +35,14 @@ var Ripple = ({
35
35
  className,
36
36
  style,
37
37
  color = "currentColor",
38
+ disabled,
38
39
  isDisabled,
39
40
  ripples,
40
41
  onAnimationComplete,
41
42
  onClear,
42
43
  ...rest
43
44
  }) => {
45
+ disabled != null ? disabled : disabled = isDisabled;
44
46
  if (isDisabled) return null;
45
47
  const css = {
46
48
  rounded: "fallback(full, 9999px)",
@@ -89,9 +91,10 @@ var useRipple = ({
89
91
  ...rest
90
92
  } = {}) => {
91
93
  const [ripples, setRipples] = (0, import_react.useState)([]);
94
+ disabled != null ? disabled : disabled = isDisabled;
92
95
  const onPointerDown = (0, import_react.useCallback)(
93
96
  (ev) => {
94
- if (disabled || isDisabled) return setRipples([]);
97
+ if (disabled) return setRipples([]);
95
98
  const trigger = ev.currentTarget;
96
99
  const size = Math.max(trigger.clientWidth, trigger.clientHeight);
97
100
  const rect = trigger.getBoundingClientRect();
@@ -105,7 +108,7 @@ var useRipple = ({
105
108
  }
106
109
  ]);
107
110
  },
108
- [disabled, isDisabled]
111
+ [disabled]
109
112
  );
110
113
  const onClear = (0, import_react.useCallback)((key) => {
111
114
  setRipples((prev) => prev.filter((item) => item.key !== key));
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/ripple.tsx","../src/use-ripple.ts"],"sourcesContent":["export { Ripple } from \"./ripple\"\nexport type { RippleProps } from \"./ripple\"\nexport { useRipple } from \"./use-ripple\"\nexport type {\n RippleOptions,\n UseRippleProps,\n UseRippleReturn,\n} from \"./use-ripple\"\n","import type { CSSUIObject, FC } from \"@yamada-ui/core\"\nimport type { MotionProps } from \"@yamada-ui/motion\"\nimport type { Key } from \"react\"\nimport type { RippleOptions } from \"./use-ripple\"\nimport { AnimatePresence, motion } from \"@yamada-ui/motion\"\nimport { cx, handlerAll } from \"@yamada-ui/utils\"\n\nconst clamp = (value: number, min: number, max: number) =>\n Math.min(Math.max(value, min), max)\n\nexport interface RippleProps extends MotionProps<\"span\"> {\n ripples: RippleOptions[]\n onClear: (key: Key) => void\n /**\n * If `true`, disable ripple effects when pressing a element.\n *\n * @default false\n */\n isDisabled?: boolean\n}\n\n/**\n * `Ripple` is a component that adds a ripple effect to elements, allowing users to recognize when they have clicked.\n *\n * @see Docs https://yamada-ui.com/components/other/ripple\n */\nexport const Ripple: FC<RippleProps> = ({\n className,\n style,\n color = \"currentColor\",\n isDisabled,\n ripples,\n onAnimationComplete,\n onClear,\n ...rest\n}) => {\n if (isDisabled) return null\n\n const css: CSSUIObject = {\n rounded: \"fallback(full, 9999px)\",\n zIndex: \"fallback(kurillin, 9)\",\n }\n\n return (\n <>\n {ripples.map(({ key, size, x, y }) => {\n const duration = clamp(0.01 * size, 0.2, size > 100 ? 0.75 : 0.5)\n\n return (\n <AnimatePresence key={key} mode=\"popLayout\">\n <motion.span\n className={cx(\"ui-ripple\", className)}\n style={{\n height: `${size}px`,\n left: x,\n pointerEvents: \"none\",\n position: \"absolute\",\n top: y,\n transformOrigin: \"center\",\n width: `${size}px`,\n ...style,\n }}\n animate={{ opacity: 0, transform: \"scale(2)\" }}\n bgColor={color}\n exit={{ opacity: 0 }}\n initial={{ opacity: 0.35, transform: \"scale(0)\" }}\n transition={{ duration }}\n __css={css}\n {...rest}\n onAnimationComplete={handlerAll(onAnimationComplete, () =>\n onClear(key),\n )}\n />\n </AnimatePresence>\n )\n })}\n </>\n )\n}\n\nRipple.displayName = \"Ripple\"\nRipple.__ui__ = \"Ripple\"\n","import type React from \"react\"\nimport type { Key, PointerEventHandler } from \"react\"\nimport { createId, handlerAll } from \"@yamada-ui/utils\"\nimport { useCallback, useState } from \"react\"\n\nexport interface RippleOptions {\n key: React.Key\n size: number\n x: number\n y: number\n}\n\nexport interface UseRippleProps<T = HTMLElement> {\n disabled?: boolean\n isDisabled?: boolean\n onPointerDown?: PointerEventHandler<T>\n}\n\nexport const useRipple = <T = HTMLElement>({\n disabled,\n isDisabled,\n ...rest\n}: UseRippleProps<T> = {}) => {\n const [ripples, setRipples] = useState<RippleOptions[]>([])\n\n const onPointerDown: PointerEventHandler<T> = useCallback(\n (ev) => {\n if (disabled || isDisabled) return setRipples([])\n\n const trigger = ev.currentTarget as unknown as Element\n\n const size = Math.max(trigger.clientWidth, trigger.clientHeight)\n const rect = trigger.getBoundingClientRect()\n\n setRipples((prev) => [\n ...prev,\n {\n key: createId(prev.length.toString()),\n size,\n x: ev.clientX - rect.x - size / 2,\n y: ev.clientY - rect.y - size / 2,\n },\n ])\n },\n [disabled, isDisabled],\n )\n\n const onClear = useCallback((key: Key) => {\n setRipples((prev) => prev.filter((item) => item.key !== key))\n }, [])\n\n return {\n ripples,\n onClear,\n onPointerDown: handlerAll(onPointerDown, rest.onPointerDown),\n }\n}\n\nexport type UseRippleReturn = ReturnType<typeof useRipple>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACIA,oBAAwC;AACxC,mBAA+B;AAuC3B;AArCJ,IAAM,QAAQ,CAAC,OAAe,KAAa,QACzC,KAAK,IAAI,KAAK,IAAI,OAAO,GAAG,GAAG,GAAG;AAkB7B,IAAM,SAA0B,CAAC;AAAA,EACtC;AAAA,EACA;AAAA,EACA,QAAQ;AAAA,EACR;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,MAAM;AACJ,MAAI,WAAY,QAAO;AAEvB,QAAM,MAAmB;AAAA,IACvB,SAAS;AAAA,IACT,QAAQ;AAAA,EACV;AAEA,SACE,2EACG,kBAAQ,IAAI,CAAC,EAAE,KAAK,MAAM,GAAG,EAAE,MAAM;AACpC,UAAM,WAAW,MAAM,OAAO,MAAM,KAAK,OAAO,MAAM,OAAO,GAAG;AAEhE,WACE,4CAAC,iCAA0B,MAAK,aAC9B;AAAA,MAAC,qBAAO;AAAA,MAAP;AAAA,QACC,eAAW,iBAAG,aAAa,SAAS;AAAA,QACpC,OAAO;AAAA,UACL,QAAQ,GAAG,IAAI;AAAA,UACf,MAAM;AAAA,UACN,eAAe;AAAA,UACf,UAAU;AAAA,UACV,KAAK;AAAA,UACL,iBAAiB;AAAA,UACjB,OAAO,GAAG,IAAI;AAAA,UACd,GAAG;AAAA,QACL;AAAA,QACA,SAAS,EAAE,SAAS,GAAG,WAAW,WAAW;AAAA,QAC7C,SAAS;AAAA,QACT,MAAM,EAAE,SAAS,EAAE;AAAA,QACnB,SAAS,EAAE,SAAS,MAAM,WAAW,WAAW;AAAA,QAChD,YAAY,EAAE,SAAS;AAAA,QACvB,OAAO;AAAA,QACN,GAAG;AAAA,QACJ,yBAAqB;AAAA,UAAW;AAAA,UAAqB,MACnD,QAAQ,GAAG;AAAA,QACb;AAAA;AAAA,IACF,KAvBoB,GAwBtB;AAAA,EAEJ,CAAC,GACH;AAEJ;AAEA,OAAO,cAAc;AACrB,OAAO,SAAS;;;AC/EhB,IAAAA,gBAAqC;AACrC,mBAAsC;AAe/B,IAAM,YAAY,CAAkB;AAAA,EACzC;AAAA,EACA;AAAA,EACA,GAAG;AACL,IAAuB,CAAC,MAAM;AAC5B,QAAM,CAAC,SAAS,UAAU,QAAI,uBAA0B,CAAC,CAAC;AAE1D,QAAM,oBAAwC;AAAA,IAC5C,CAAC,OAAO;AACN,UAAI,YAAY,WAAY,QAAO,WAAW,CAAC,CAAC;AAEhD,YAAM,UAAU,GAAG;AAEnB,YAAM,OAAO,KAAK,IAAI,QAAQ,aAAa,QAAQ,YAAY;AAC/D,YAAM,OAAO,QAAQ,sBAAsB;AAE3C,iBAAW,CAAC,SAAS;AAAA,QACnB,GAAG;AAAA,QACH;AAAA,UACE,SAAK,wBAAS,KAAK,OAAO,SAAS,CAAC;AAAA,UACpC;AAAA,UACA,GAAG,GAAG,UAAU,KAAK,IAAI,OAAO;AAAA,UAChC,GAAG,GAAG,UAAU,KAAK,IAAI,OAAO;AAAA,QAClC;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IACA,CAAC,UAAU,UAAU;AAAA,EACvB;AAEA,QAAM,cAAU,0BAAY,CAAC,QAAa;AACxC,eAAW,CAAC,SAAS,KAAK,OAAO,CAAC,SAAS,KAAK,QAAQ,GAAG,CAAC;AAAA,EAC9D,GAAG,CAAC,CAAC;AAEL,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA,mBAAe,0BAAW,eAAe,KAAK,aAAa;AAAA,EAC7D;AACF;","names":["import_utils"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/ripple.tsx","../src/use-ripple.ts"],"sourcesContent":["export { Ripple } from \"./ripple\"\nexport type { RippleProps } from \"./ripple\"\nexport { useRipple } from \"./use-ripple\"\nexport type {\n RippleOptions,\n UseRippleProps,\n UseRippleReturn,\n} from \"./use-ripple\"\n","import type { CSSUIObject, FC } from \"@yamada-ui/core\"\nimport type { MotionProps } from \"@yamada-ui/motion\"\nimport type { Key } from \"react\"\nimport type { RippleOptions } from \"./use-ripple\"\nimport { AnimatePresence, motion } from \"@yamada-ui/motion\"\nimport { cx, handlerAll } from \"@yamada-ui/utils\"\n\nconst clamp = (value: number, min: number, max: number) =>\n Math.min(Math.max(value, min), max)\n\nexport interface RippleProps extends MotionProps<\"span\"> {\n ripples: RippleOptions[]\n onClear: (key: Key) => void\n /**\n * If `true`, disable ripple effects when pressing a element.\n *\n * @default false\n */\n disabled?: boolean\n /**\n * If `true`, disable ripple effects when pressing a element.\n *\n * @default false\n *\n * @deprecated Use `disabled` instead.\n */\n isDisabled?: boolean\n}\n\n/**\n * `Ripple` is a component that adds a ripple effect to elements, allowing users to recognize when they have clicked.\n *\n * @see Docs https://yamada-ui.com/components/other/ripple\n */\nexport const Ripple: FC<RippleProps> = ({\n className,\n style,\n color = \"currentColor\",\n disabled,\n isDisabled,\n ripples,\n onAnimationComplete,\n onClear,\n ...rest\n}) => {\n disabled ??= isDisabled\n\n if (isDisabled) return null\n\n const css: CSSUIObject = {\n rounded: \"fallback(full, 9999px)\",\n zIndex: \"fallback(kurillin, 9)\",\n }\n\n return (\n <>\n {ripples.map(({ key, size, x, y }) => {\n const duration = clamp(0.01 * size, 0.2, size > 100 ? 0.75 : 0.5)\n\n return (\n <AnimatePresence key={key} mode=\"popLayout\">\n <motion.span\n className={cx(\"ui-ripple\", className)}\n style={{\n height: `${size}px`,\n left: x,\n pointerEvents: \"none\",\n position: \"absolute\",\n top: y,\n transformOrigin: \"center\",\n width: `${size}px`,\n ...style,\n }}\n animate={{ opacity: 0, transform: \"scale(2)\" }}\n bgColor={color}\n exit={{ opacity: 0 }}\n initial={{ opacity: 0.35, transform: \"scale(0)\" }}\n transition={{ duration }}\n __css={css}\n {...rest}\n onAnimationComplete={handlerAll(onAnimationComplete, () =>\n onClear(key),\n )}\n />\n </AnimatePresence>\n )\n })}\n </>\n )\n}\n\nRipple.displayName = \"Ripple\"\nRipple.__ui__ = \"Ripple\"\n","import type React from \"react\"\nimport type { Key, PointerEventHandler } from \"react\"\nimport { createId, handlerAll } from \"@yamada-ui/utils\"\nimport { useCallback, useState } from \"react\"\n\nexport interface RippleOptions {\n key: React.Key\n size: number\n x: number\n y: number\n}\n\nexport interface UseRippleProps<T = HTMLElement> {\n disabled?: boolean\n /**\n * @deprecated Use `disabled` instead.\n */\n isDisabled?: boolean\n onPointerDown?: PointerEventHandler<T>\n}\n\nexport const useRipple = <T = HTMLElement>({\n disabled,\n isDisabled,\n ...rest\n}: UseRippleProps<T> = {}) => {\n const [ripples, setRipples] = useState<RippleOptions[]>([])\n\n disabled ??= isDisabled\n\n const onPointerDown: PointerEventHandler<T> = useCallback(\n (ev) => {\n if (disabled) return setRipples([])\n\n const trigger = ev.currentTarget as unknown as Element\n\n const size = Math.max(trigger.clientWidth, trigger.clientHeight)\n const rect = trigger.getBoundingClientRect()\n\n setRipples((prev) => [\n ...prev,\n {\n key: createId(prev.length.toString()),\n size,\n x: ev.clientX - rect.x - size / 2,\n y: ev.clientY - rect.y - size / 2,\n },\n ])\n },\n [disabled],\n )\n\n const onClear = useCallback((key: Key) => {\n setRipples((prev) => prev.filter((item) => item.key !== key))\n }, [])\n\n return {\n ripples,\n onClear,\n onPointerDown: handlerAll(onPointerDown, rest.onPointerDown),\n }\n}\n\nexport type UseRippleReturn = ReturnType<typeof useRipple>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACIA,oBAAwC;AACxC,mBAA+B;AAkD3B;AAhDJ,IAAM,QAAQ,CAAC,OAAe,KAAa,QACzC,KAAK,IAAI,KAAK,IAAI,OAAO,GAAG,GAAG,GAAG;AA0B7B,IAAM,SAA0B,CAAC;AAAA,EACtC;AAAA,EACA;AAAA,EACA,QAAQ;AAAA,EACR;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,MAAM;AACJ,2CAAa;AAEb,MAAI,WAAY,QAAO;AAEvB,QAAM,MAAmB;AAAA,IACvB,SAAS;AAAA,IACT,QAAQ;AAAA,EACV;AAEA,SACE,2EACG,kBAAQ,IAAI,CAAC,EAAE,KAAK,MAAM,GAAG,EAAE,MAAM;AACpC,UAAM,WAAW,MAAM,OAAO,MAAM,KAAK,OAAO,MAAM,OAAO,GAAG;AAEhE,WACE,4CAAC,iCAA0B,MAAK,aAC9B;AAAA,MAAC,qBAAO;AAAA,MAAP;AAAA,QACC,eAAW,iBAAG,aAAa,SAAS;AAAA,QACpC,OAAO;AAAA,UACL,QAAQ,GAAG,IAAI;AAAA,UACf,MAAM;AAAA,UACN,eAAe;AAAA,UACf,UAAU;AAAA,UACV,KAAK;AAAA,UACL,iBAAiB;AAAA,UACjB,OAAO,GAAG,IAAI;AAAA,UACd,GAAG;AAAA,QACL;AAAA,QACA,SAAS,EAAE,SAAS,GAAG,WAAW,WAAW;AAAA,QAC7C,SAAS;AAAA,QACT,MAAM,EAAE,SAAS,EAAE;AAAA,QACnB,SAAS,EAAE,SAAS,MAAM,WAAW,WAAW;AAAA,QAChD,YAAY,EAAE,SAAS;AAAA,QACvB,OAAO;AAAA,QACN,GAAG;AAAA,QACJ,yBAAqB;AAAA,UAAW;AAAA,UAAqB,MACnD,QAAQ,GAAG;AAAA,QACb;AAAA;AAAA,IACF,KAvBoB,GAwBtB;AAAA,EAEJ,CAAC,GACH;AAEJ;AAEA,OAAO,cAAc;AACrB,OAAO,SAAS;;;AC1FhB,IAAAA,gBAAqC;AACrC,mBAAsC;AAkB/B,IAAM,YAAY,CAAkB;AAAA,EACzC;AAAA,EACA;AAAA,EACA,GAAG;AACL,IAAuB,CAAC,MAAM;AAC5B,QAAM,CAAC,SAAS,UAAU,QAAI,uBAA0B,CAAC,CAAC;AAE1D,2CAAa;AAEb,QAAM,oBAAwC;AAAA,IAC5C,CAAC,OAAO;AACN,UAAI,SAAU,QAAO,WAAW,CAAC,CAAC;AAElC,YAAM,UAAU,GAAG;AAEnB,YAAM,OAAO,KAAK,IAAI,QAAQ,aAAa,QAAQ,YAAY;AAC/D,YAAM,OAAO,QAAQ,sBAAsB;AAE3C,iBAAW,CAAC,SAAS;AAAA,QACnB,GAAG;AAAA,QACH;AAAA,UACE,SAAK,wBAAS,KAAK,OAAO,SAAS,CAAC;AAAA,UACpC;AAAA,UACA,GAAG,GAAG,UAAU,KAAK,IAAI,OAAO;AAAA,UAChC,GAAG,GAAG,UAAU,KAAK,IAAI,OAAO;AAAA,QAClC;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IACA,CAAC,QAAQ;AAAA,EACX;AAEA,QAAM,cAAU,0BAAY,CAAC,QAAa;AACxC,eAAW,CAAC,SAAS,KAAK,OAAO,CAAC,SAAS,KAAK,QAAQ,GAAG,CAAC;AAAA,EAC9D,GAAG,CAAC,CAAC;AAEL,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA,mBAAe,0BAAW,eAAe,KAAK,aAAa;AAAA,EAC7D;AACF;","names":["import_utils"]}
package/dist/index.mjs CHANGED
@@ -1,10 +1,10 @@
1
1
  "use client"
2
2
  import {
3
3
  Ripple
4
- } from "./chunk-YH24ZFF2.mjs";
4
+ } from "./chunk-PLZVHWSV.mjs";
5
5
  import {
6
6
  useRipple
7
- } from "./chunk-7NWWPF2L.mjs";
7
+ } from "./chunk-35NXY6DT.mjs";
8
8
  export {
9
9
  Ripple,
10
10
  useRipple
package/dist/ripple.d.mts CHANGED
@@ -11,6 +11,14 @@ interface RippleProps extends MotionProps<"span"> {
11
11
  *
12
12
  * @default false
13
13
  */
14
+ disabled?: boolean;
15
+ /**
16
+ * If `true`, disable ripple effects when pressing a element.
17
+ *
18
+ * @default false
19
+ *
20
+ * @deprecated Use `disabled` instead.
21
+ */
14
22
  isDisabled?: boolean;
15
23
  }
16
24
  /**
package/dist/ripple.d.ts CHANGED
@@ -11,6 +11,14 @@ interface RippleProps extends MotionProps<"span"> {
11
11
  *
12
12
  * @default false
13
13
  */
14
+ disabled?: boolean;
15
+ /**
16
+ * If `true`, disable ripple effects when pressing a element.
17
+ *
18
+ * @default false
19
+ *
20
+ * @deprecated Use `disabled` instead.
21
+ */
14
22
  isDisabled?: boolean;
15
23
  }
16
24
  /**
package/dist/ripple.js CHANGED
@@ -32,12 +32,14 @@ var Ripple = ({
32
32
  className,
33
33
  style,
34
34
  color = "currentColor",
35
+ disabled,
35
36
  isDisabled,
36
37
  ripples,
37
38
  onAnimationComplete,
38
39
  onClear,
39
40
  ...rest
40
41
  }) => {
42
+ disabled != null ? disabled : disabled = isDisabled;
41
43
  if (isDisabled) return null;
42
44
  const css = {
43
45
  rounded: "fallback(full, 9999px)",
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/ripple.tsx"],"sourcesContent":["import type { CSSUIObject, FC } from \"@yamada-ui/core\"\nimport type { MotionProps } from \"@yamada-ui/motion\"\nimport type { Key } from \"react\"\nimport type { RippleOptions } from \"./use-ripple\"\nimport { AnimatePresence, motion } from \"@yamada-ui/motion\"\nimport { cx, handlerAll } from \"@yamada-ui/utils\"\n\nconst clamp = (value: number, min: number, max: number) =>\n Math.min(Math.max(value, min), max)\n\nexport interface RippleProps extends MotionProps<\"span\"> {\n ripples: RippleOptions[]\n onClear: (key: Key) => void\n /**\n * If `true`, disable ripple effects when pressing a element.\n *\n * @default false\n */\n isDisabled?: boolean\n}\n\n/**\n * `Ripple` is a component that adds a ripple effect to elements, allowing users to recognize when they have clicked.\n *\n * @see Docs https://yamada-ui.com/components/other/ripple\n */\nexport const Ripple: FC<RippleProps> = ({\n className,\n style,\n color = \"currentColor\",\n isDisabled,\n ripples,\n onAnimationComplete,\n onClear,\n ...rest\n}) => {\n if (isDisabled) return null\n\n const css: CSSUIObject = {\n rounded: \"fallback(full, 9999px)\",\n zIndex: \"fallback(kurillin, 9)\",\n }\n\n return (\n <>\n {ripples.map(({ key, size, x, y }) => {\n const duration = clamp(0.01 * size, 0.2, size > 100 ? 0.75 : 0.5)\n\n return (\n <AnimatePresence key={key} mode=\"popLayout\">\n <motion.span\n className={cx(\"ui-ripple\", className)}\n style={{\n height: `${size}px`,\n left: x,\n pointerEvents: \"none\",\n position: \"absolute\",\n top: y,\n transformOrigin: \"center\",\n width: `${size}px`,\n ...style,\n }}\n animate={{ opacity: 0, transform: \"scale(2)\" }}\n bgColor={color}\n exit={{ opacity: 0 }}\n initial={{ opacity: 0.35, transform: \"scale(0)\" }}\n transition={{ duration }}\n __css={css}\n {...rest}\n onAnimationComplete={handlerAll(onAnimationComplete, () =>\n onClear(key),\n )}\n />\n </AnimatePresence>\n )\n })}\n </>\n )\n}\n\nRipple.displayName = \"Ripple\"\nRipple.__ui__ = \"Ripple\"\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA,oBAAwC;AACxC,mBAA+B;AAuC3B;AArCJ,IAAM,QAAQ,CAAC,OAAe,KAAa,QACzC,KAAK,IAAI,KAAK,IAAI,OAAO,GAAG,GAAG,GAAG;AAkB7B,IAAM,SAA0B,CAAC;AAAA,EACtC;AAAA,EACA;AAAA,EACA,QAAQ;AAAA,EACR;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,MAAM;AACJ,MAAI,WAAY,QAAO;AAEvB,QAAM,MAAmB;AAAA,IACvB,SAAS;AAAA,IACT,QAAQ;AAAA,EACV;AAEA,SACE,2EACG,kBAAQ,IAAI,CAAC,EAAE,KAAK,MAAM,GAAG,EAAE,MAAM;AACpC,UAAM,WAAW,MAAM,OAAO,MAAM,KAAK,OAAO,MAAM,OAAO,GAAG;AAEhE,WACE,4CAAC,iCAA0B,MAAK,aAC9B;AAAA,MAAC,qBAAO;AAAA,MAAP;AAAA,QACC,eAAW,iBAAG,aAAa,SAAS;AAAA,QACpC,OAAO;AAAA,UACL,QAAQ,GAAG,IAAI;AAAA,UACf,MAAM;AAAA,UACN,eAAe;AAAA,UACf,UAAU;AAAA,UACV,KAAK;AAAA,UACL,iBAAiB;AAAA,UACjB,OAAO,GAAG,IAAI;AAAA,UACd,GAAG;AAAA,QACL;AAAA,QACA,SAAS,EAAE,SAAS,GAAG,WAAW,WAAW;AAAA,QAC7C,SAAS;AAAA,QACT,MAAM,EAAE,SAAS,EAAE;AAAA,QACnB,SAAS,EAAE,SAAS,MAAM,WAAW,WAAW;AAAA,QAChD,YAAY,EAAE,SAAS;AAAA,QACvB,OAAO;AAAA,QACN,GAAG;AAAA,QACJ,yBAAqB;AAAA,UAAW;AAAA,UAAqB,MACnD,QAAQ,GAAG;AAAA,QACb;AAAA;AAAA,IACF,KAvBoB,GAwBtB;AAAA,EAEJ,CAAC,GACH;AAEJ;AAEA,OAAO,cAAc;AACrB,OAAO,SAAS;","names":[]}
1
+ {"version":3,"sources":["../src/ripple.tsx"],"sourcesContent":["import type { CSSUIObject, FC } from \"@yamada-ui/core\"\nimport type { MotionProps } from \"@yamada-ui/motion\"\nimport type { Key } from \"react\"\nimport type { RippleOptions } from \"./use-ripple\"\nimport { AnimatePresence, motion } from \"@yamada-ui/motion\"\nimport { cx, handlerAll } from \"@yamada-ui/utils\"\n\nconst clamp = (value: number, min: number, max: number) =>\n Math.min(Math.max(value, min), max)\n\nexport interface RippleProps extends MotionProps<\"span\"> {\n ripples: RippleOptions[]\n onClear: (key: Key) => void\n /**\n * If `true`, disable ripple effects when pressing a element.\n *\n * @default false\n */\n disabled?: boolean\n /**\n * If `true`, disable ripple effects when pressing a element.\n *\n * @default false\n *\n * @deprecated Use `disabled` instead.\n */\n isDisabled?: boolean\n}\n\n/**\n * `Ripple` is a component that adds a ripple effect to elements, allowing users to recognize when they have clicked.\n *\n * @see Docs https://yamada-ui.com/components/other/ripple\n */\nexport const Ripple: FC<RippleProps> = ({\n className,\n style,\n color = \"currentColor\",\n disabled,\n isDisabled,\n ripples,\n onAnimationComplete,\n onClear,\n ...rest\n}) => {\n disabled ??= isDisabled\n\n if (isDisabled) return null\n\n const css: CSSUIObject = {\n rounded: \"fallback(full, 9999px)\",\n zIndex: \"fallback(kurillin, 9)\",\n }\n\n return (\n <>\n {ripples.map(({ key, size, x, y }) => {\n const duration = clamp(0.01 * size, 0.2, size > 100 ? 0.75 : 0.5)\n\n return (\n <AnimatePresence key={key} mode=\"popLayout\">\n <motion.span\n className={cx(\"ui-ripple\", className)}\n style={{\n height: `${size}px`,\n left: x,\n pointerEvents: \"none\",\n position: \"absolute\",\n top: y,\n transformOrigin: \"center\",\n width: `${size}px`,\n ...style,\n }}\n animate={{ opacity: 0, transform: \"scale(2)\" }}\n bgColor={color}\n exit={{ opacity: 0 }}\n initial={{ opacity: 0.35, transform: \"scale(0)\" }}\n transition={{ duration }}\n __css={css}\n {...rest}\n onAnimationComplete={handlerAll(onAnimationComplete, () =>\n onClear(key),\n )}\n />\n </AnimatePresence>\n )\n })}\n </>\n )\n}\n\nRipple.displayName = \"Ripple\"\nRipple.__ui__ = \"Ripple\"\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA,oBAAwC;AACxC,mBAA+B;AAkD3B;AAhDJ,IAAM,QAAQ,CAAC,OAAe,KAAa,QACzC,KAAK,IAAI,KAAK,IAAI,OAAO,GAAG,GAAG,GAAG;AA0B7B,IAAM,SAA0B,CAAC;AAAA,EACtC;AAAA,EACA;AAAA,EACA,QAAQ;AAAA,EACR;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,MAAM;AACJ,2CAAa;AAEb,MAAI,WAAY,QAAO;AAEvB,QAAM,MAAmB;AAAA,IACvB,SAAS;AAAA,IACT,QAAQ;AAAA,EACV;AAEA,SACE,2EACG,kBAAQ,IAAI,CAAC,EAAE,KAAK,MAAM,GAAG,EAAE,MAAM;AACpC,UAAM,WAAW,MAAM,OAAO,MAAM,KAAK,OAAO,MAAM,OAAO,GAAG;AAEhE,WACE,4CAAC,iCAA0B,MAAK,aAC9B;AAAA,MAAC,qBAAO;AAAA,MAAP;AAAA,QACC,eAAW,iBAAG,aAAa,SAAS;AAAA,QACpC,OAAO;AAAA,UACL,QAAQ,GAAG,IAAI;AAAA,UACf,MAAM;AAAA,UACN,eAAe;AAAA,UACf,UAAU;AAAA,UACV,KAAK;AAAA,UACL,iBAAiB;AAAA,UACjB,OAAO,GAAG,IAAI;AAAA,UACd,GAAG;AAAA,QACL;AAAA,QACA,SAAS,EAAE,SAAS,GAAG,WAAW,WAAW;AAAA,QAC7C,SAAS;AAAA,QACT,MAAM,EAAE,SAAS,EAAE;AAAA,QACnB,SAAS,EAAE,SAAS,MAAM,WAAW,WAAW;AAAA,QAChD,YAAY,EAAE,SAAS;AAAA,QACvB,OAAO;AAAA,QACN,GAAG;AAAA,QACJ,yBAAqB;AAAA,UAAW;AAAA,UAAqB,MACnD,QAAQ,GAAG;AAAA,QACb;AAAA;AAAA,IACF,KAvBoB,GAwBtB;AAAA,EAEJ,CAAC,GACH;AAEJ;AAEA,OAAO,cAAc;AACrB,OAAO,SAAS;","names":[]}
package/dist/ripple.mjs CHANGED
@@ -1,7 +1,7 @@
1
1
  "use client"
2
2
  import {
3
3
  Ripple
4
- } from "./chunk-YH24ZFF2.mjs";
4
+ } from "./chunk-PLZVHWSV.mjs";
5
5
  export {
6
6
  Ripple
7
7
  };
@@ -8,6 +8,9 @@ interface RippleOptions {
8
8
  }
9
9
  interface UseRippleProps<T = HTMLElement> {
10
10
  disabled?: boolean;
11
+ /**
12
+ * @deprecated Use `disabled` instead.
13
+ */
11
14
  isDisabled?: boolean;
12
15
  onPointerDown?: PointerEventHandler<T>;
13
16
  }
@@ -8,6 +8,9 @@ interface RippleOptions {
8
8
  }
9
9
  interface UseRippleProps<T = HTMLElement> {
10
10
  disabled?: boolean;
11
+ /**
12
+ * @deprecated Use `disabled` instead.
13
+ */
11
14
  isDisabled?: boolean;
12
15
  onPointerDown?: PointerEventHandler<T>;
13
16
  }
@@ -32,9 +32,10 @@ var useRipple = ({
32
32
  ...rest
33
33
  } = {}) => {
34
34
  const [ripples, setRipples] = (0, import_react.useState)([]);
35
+ disabled != null ? disabled : disabled = isDisabled;
35
36
  const onPointerDown = (0, import_react.useCallback)(
36
37
  (ev) => {
37
- if (disabled || isDisabled) return setRipples([]);
38
+ if (disabled) return setRipples([]);
38
39
  const trigger = ev.currentTarget;
39
40
  const size = Math.max(trigger.clientWidth, trigger.clientHeight);
40
41
  const rect = trigger.getBoundingClientRect();
@@ -48,7 +49,7 @@ var useRipple = ({
48
49
  }
49
50
  ]);
50
51
  },
51
- [disabled, isDisabled]
52
+ [disabled]
52
53
  );
53
54
  const onClear = (0, import_react.useCallback)((key) => {
54
55
  setRipples((prev) => prev.filter((item) => item.key !== key));
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/use-ripple.ts"],"sourcesContent":["import type React from \"react\"\nimport type { Key, PointerEventHandler } from \"react\"\nimport { createId, handlerAll } from \"@yamada-ui/utils\"\nimport { useCallback, useState } from \"react\"\n\nexport interface RippleOptions {\n key: React.Key\n size: number\n x: number\n y: number\n}\n\nexport interface UseRippleProps<T = HTMLElement> {\n disabled?: boolean\n isDisabled?: boolean\n onPointerDown?: PointerEventHandler<T>\n}\n\nexport const useRipple = <T = HTMLElement>({\n disabled,\n isDisabled,\n ...rest\n}: UseRippleProps<T> = {}) => {\n const [ripples, setRipples] = useState<RippleOptions[]>([])\n\n const onPointerDown: PointerEventHandler<T> = useCallback(\n (ev) => {\n if (disabled || isDisabled) return setRipples([])\n\n const trigger = ev.currentTarget as unknown as Element\n\n const size = Math.max(trigger.clientWidth, trigger.clientHeight)\n const rect = trigger.getBoundingClientRect()\n\n setRipples((prev) => [\n ...prev,\n {\n key: createId(prev.length.toString()),\n size,\n x: ev.clientX - rect.x - size / 2,\n y: ev.clientY - rect.y - size / 2,\n },\n ])\n },\n [disabled, isDisabled],\n )\n\n const onClear = useCallback((key: Key) => {\n setRipples((prev) => prev.filter((item) => item.key !== key))\n }, [])\n\n return {\n ripples,\n onClear,\n onPointerDown: handlerAll(onPointerDown, rest.onPointerDown),\n }\n}\n\nexport type UseRippleReturn = ReturnType<typeof useRipple>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,mBAAqC;AACrC,mBAAsC;AAe/B,IAAM,YAAY,CAAkB;AAAA,EACzC;AAAA,EACA;AAAA,EACA,GAAG;AACL,IAAuB,CAAC,MAAM;AAC5B,QAAM,CAAC,SAAS,UAAU,QAAI,uBAA0B,CAAC,CAAC;AAE1D,QAAM,oBAAwC;AAAA,IAC5C,CAAC,OAAO;AACN,UAAI,YAAY,WAAY,QAAO,WAAW,CAAC,CAAC;AAEhD,YAAM,UAAU,GAAG;AAEnB,YAAM,OAAO,KAAK,IAAI,QAAQ,aAAa,QAAQ,YAAY;AAC/D,YAAM,OAAO,QAAQ,sBAAsB;AAE3C,iBAAW,CAAC,SAAS;AAAA,QACnB,GAAG;AAAA,QACH;AAAA,UACE,SAAK,uBAAS,KAAK,OAAO,SAAS,CAAC;AAAA,UACpC;AAAA,UACA,GAAG,GAAG,UAAU,KAAK,IAAI,OAAO;AAAA,UAChC,GAAG,GAAG,UAAU,KAAK,IAAI,OAAO;AAAA,QAClC;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IACA,CAAC,UAAU,UAAU;AAAA,EACvB;AAEA,QAAM,cAAU,0BAAY,CAAC,QAAa;AACxC,eAAW,CAAC,SAAS,KAAK,OAAO,CAAC,SAAS,KAAK,QAAQ,GAAG,CAAC;AAAA,EAC9D,GAAG,CAAC,CAAC;AAEL,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA,mBAAe,yBAAW,eAAe,KAAK,aAAa;AAAA,EAC7D;AACF;","names":[]}
1
+ {"version":3,"sources":["../src/use-ripple.ts"],"sourcesContent":["import type React from \"react\"\nimport type { Key, PointerEventHandler } from \"react\"\nimport { createId, handlerAll } from \"@yamada-ui/utils\"\nimport { useCallback, useState } from \"react\"\n\nexport interface RippleOptions {\n key: React.Key\n size: number\n x: number\n y: number\n}\n\nexport interface UseRippleProps<T = HTMLElement> {\n disabled?: boolean\n /**\n * @deprecated Use `disabled` instead.\n */\n isDisabled?: boolean\n onPointerDown?: PointerEventHandler<T>\n}\n\nexport const useRipple = <T = HTMLElement>({\n disabled,\n isDisabled,\n ...rest\n}: UseRippleProps<T> = {}) => {\n const [ripples, setRipples] = useState<RippleOptions[]>([])\n\n disabled ??= isDisabled\n\n const onPointerDown: PointerEventHandler<T> = useCallback(\n (ev) => {\n if (disabled) return setRipples([])\n\n const trigger = ev.currentTarget as unknown as Element\n\n const size = Math.max(trigger.clientWidth, trigger.clientHeight)\n const rect = trigger.getBoundingClientRect()\n\n setRipples((prev) => [\n ...prev,\n {\n key: createId(prev.length.toString()),\n size,\n x: ev.clientX - rect.x - size / 2,\n y: ev.clientY - rect.y - size / 2,\n },\n ])\n },\n [disabled],\n )\n\n const onClear = useCallback((key: Key) => {\n setRipples((prev) => prev.filter((item) => item.key !== key))\n }, [])\n\n return {\n ripples,\n onClear,\n onPointerDown: handlerAll(onPointerDown, rest.onPointerDown),\n }\n}\n\nexport type UseRippleReturn = ReturnType<typeof useRipple>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,mBAAqC;AACrC,mBAAsC;AAkB/B,IAAM,YAAY,CAAkB;AAAA,EACzC;AAAA,EACA;AAAA,EACA,GAAG;AACL,IAAuB,CAAC,MAAM;AAC5B,QAAM,CAAC,SAAS,UAAU,QAAI,uBAA0B,CAAC,CAAC;AAE1D,2CAAa;AAEb,QAAM,oBAAwC;AAAA,IAC5C,CAAC,OAAO;AACN,UAAI,SAAU,QAAO,WAAW,CAAC,CAAC;AAElC,YAAM,UAAU,GAAG;AAEnB,YAAM,OAAO,KAAK,IAAI,QAAQ,aAAa,QAAQ,YAAY;AAC/D,YAAM,OAAO,QAAQ,sBAAsB;AAE3C,iBAAW,CAAC,SAAS;AAAA,QACnB,GAAG;AAAA,QACH;AAAA,UACE,SAAK,uBAAS,KAAK,OAAO,SAAS,CAAC;AAAA,UACpC;AAAA,UACA,GAAG,GAAG,UAAU,KAAK,IAAI,OAAO;AAAA,UAChC,GAAG,GAAG,UAAU,KAAK,IAAI,OAAO;AAAA,QAClC;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IACA,CAAC,QAAQ;AAAA,EACX;AAEA,QAAM,cAAU,0BAAY,CAAC,QAAa;AACxC,eAAW,CAAC,SAAS,KAAK,OAAO,CAAC,SAAS,KAAK,QAAQ,GAAG,CAAC;AAAA,EAC9D,GAAG,CAAC,CAAC;AAEL,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA,mBAAe,yBAAW,eAAe,KAAK,aAAa;AAAA,EAC7D;AACF;","names":[]}
@@ -1,7 +1,7 @@
1
1
  "use client"
2
2
  import {
3
3
  useRipple
4
- } from "./chunk-7NWWPF2L.mjs";
4
+ } from "./chunk-35NXY6DT.mjs";
5
5
  export {
6
6
  useRipple
7
7
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yamada-ui/ripple",
3
- "version": "1.0.46-next-20241126142838",
3
+ "version": "1.0.46-next-20241127012228",
4
4
  "description": "Yamada UI ripple component",
5
5
  "keywords": [],
6
6
  "author": "Hirotomo Yamada <hirotomo.yamada@avap.co.jp>",
@@ -23,9 +23,9 @@
23
23
  "url": "https://github.com/yamada-ui/yamada-ui/issues"
24
24
  },
25
25
  "dependencies": {
26
- "@yamada-ui/core": "1.16.0-next-20241126142838",
27
- "@yamada-ui/motion": "2.2.10-next-20241126142838",
28
- "@yamada-ui/utils": "1.6.0-next-20241126142838"
26
+ "@yamada-ui/core": "1.16.0-next-20241127012228",
27
+ "@yamada-ui/motion": "2.2.10-next-20241127012228",
28
+ "@yamada-ui/utils": "1.6.0-next-20241127012228"
29
29
  },
30
30
  "devDependencies": {
31
31
  "clean-package": "2.2.0",
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/use-ripple.ts"],"sourcesContent":["import type React from \"react\"\nimport type { Key, PointerEventHandler } from \"react\"\nimport { createId, handlerAll } from \"@yamada-ui/utils\"\nimport { useCallback, useState } from \"react\"\n\nexport interface RippleOptions {\n key: React.Key\n size: number\n x: number\n y: number\n}\n\nexport interface UseRippleProps<T = HTMLElement> {\n disabled?: boolean\n isDisabled?: boolean\n onPointerDown?: PointerEventHandler<T>\n}\n\nexport const useRipple = <T = HTMLElement>({\n disabled,\n isDisabled,\n ...rest\n}: UseRippleProps<T> = {}) => {\n const [ripples, setRipples] = useState<RippleOptions[]>([])\n\n const onPointerDown: PointerEventHandler<T> = useCallback(\n (ev) => {\n if (disabled || isDisabled) return setRipples([])\n\n const trigger = ev.currentTarget as unknown as Element\n\n const size = Math.max(trigger.clientWidth, trigger.clientHeight)\n const rect = trigger.getBoundingClientRect()\n\n setRipples((prev) => [\n ...prev,\n {\n key: createId(prev.length.toString()),\n size,\n x: ev.clientX - rect.x - size / 2,\n y: ev.clientY - rect.y - size / 2,\n },\n ])\n },\n [disabled, isDisabled],\n )\n\n const onClear = useCallback((key: Key) => {\n setRipples((prev) => prev.filter((item) => item.key !== key))\n }, [])\n\n return {\n ripples,\n onClear,\n onPointerDown: handlerAll(onPointerDown, rest.onPointerDown),\n }\n}\n\nexport type UseRippleReturn = ReturnType<typeof useRipple>\n"],"mappings":";;;AAEA,SAAS,UAAU,kBAAkB;AACrC,SAAS,aAAa,gBAAgB;AAe/B,IAAM,YAAY,CAAkB;AAAA,EACzC;AAAA,EACA;AAAA,EACA,GAAG;AACL,IAAuB,CAAC,MAAM;AAC5B,QAAM,CAAC,SAAS,UAAU,IAAI,SAA0B,CAAC,CAAC;AAE1D,QAAM,gBAAwC;AAAA,IAC5C,CAAC,OAAO;AACN,UAAI,YAAY,WAAY,QAAO,WAAW,CAAC,CAAC;AAEhD,YAAM,UAAU,GAAG;AAEnB,YAAM,OAAO,KAAK,IAAI,QAAQ,aAAa,QAAQ,YAAY;AAC/D,YAAM,OAAO,QAAQ,sBAAsB;AAE3C,iBAAW,CAAC,SAAS;AAAA,QACnB,GAAG;AAAA,QACH;AAAA,UACE,KAAK,SAAS,KAAK,OAAO,SAAS,CAAC;AAAA,UACpC;AAAA,UACA,GAAG,GAAG,UAAU,KAAK,IAAI,OAAO;AAAA,UAChC,GAAG,GAAG,UAAU,KAAK,IAAI,OAAO;AAAA,QAClC;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IACA,CAAC,UAAU,UAAU;AAAA,EACvB;AAEA,QAAM,UAAU,YAAY,CAAC,QAAa;AACxC,eAAW,CAAC,SAAS,KAAK,OAAO,CAAC,SAAS,KAAK,QAAQ,GAAG,CAAC;AAAA,EAC9D,GAAG,CAAC,CAAC;AAEL,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA,eAAe,WAAW,eAAe,KAAK,aAAa;AAAA,EAC7D;AACF;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/ripple.tsx"],"sourcesContent":["import type { CSSUIObject, FC } from \"@yamada-ui/core\"\nimport type { MotionProps } from \"@yamada-ui/motion\"\nimport type { Key } from \"react\"\nimport type { RippleOptions } from \"./use-ripple\"\nimport { AnimatePresence, motion } from \"@yamada-ui/motion\"\nimport { cx, handlerAll } from \"@yamada-ui/utils\"\n\nconst clamp = (value: number, min: number, max: number) =>\n Math.min(Math.max(value, min), max)\n\nexport interface RippleProps extends MotionProps<\"span\"> {\n ripples: RippleOptions[]\n onClear: (key: Key) => void\n /**\n * If `true`, disable ripple effects when pressing a element.\n *\n * @default false\n */\n isDisabled?: boolean\n}\n\n/**\n * `Ripple` is a component that adds a ripple effect to elements, allowing users to recognize when they have clicked.\n *\n * @see Docs https://yamada-ui.com/components/other/ripple\n */\nexport const Ripple: FC<RippleProps> = ({\n className,\n style,\n color = \"currentColor\",\n isDisabled,\n ripples,\n onAnimationComplete,\n onClear,\n ...rest\n}) => {\n if (isDisabled) return null\n\n const css: CSSUIObject = {\n rounded: \"fallback(full, 9999px)\",\n zIndex: \"fallback(kurillin, 9)\",\n }\n\n return (\n <>\n {ripples.map(({ key, size, x, y }) => {\n const duration = clamp(0.01 * size, 0.2, size > 100 ? 0.75 : 0.5)\n\n return (\n <AnimatePresence key={key} mode=\"popLayout\">\n <motion.span\n className={cx(\"ui-ripple\", className)}\n style={{\n height: `${size}px`,\n left: x,\n pointerEvents: \"none\",\n position: \"absolute\",\n top: y,\n transformOrigin: \"center\",\n width: `${size}px`,\n ...style,\n }}\n animate={{ opacity: 0, transform: \"scale(2)\" }}\n bgColor={color}\n exit={{ opacity: 0 }}\n initial={{ opacity: 0.35, transform: \"scale(0)\" }}\n transition={{ duration }}\n __css={css}\n {...rest}\n onAnimationComplete={handlerAll(onAnimationComplete, () =>\n onClear(key),\n )}\n />\n </AnimatePresence>\n )\n })}\n </>\n )\n}\n\nRipple.displayName = \"Ripple\"\nRipple.__ui__ = \"Ripple\"\n"],"mappings":";;;AAIA,SAAS,iBAAiB,cAAc;AACxC,SAAS,IAAI,kBAAkB;AAuC3B,mBAMQ,WANR;AArCJ,IAAM,QAAQ,CAAC,OAAe,KAAa,QACzC,KAAK,IAAI,KAAK,IAAI,OAAO,GAAG,GAAG,GAAG;AAkB7B,IAAM,SAA0B,CAAC;AAAA,EACtC;AAAA,EACA;AAAA,EACA,QAAQ;AAAA,EACR;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,MAAM;AACJ,MAAI,WAAY,QAAO;AAEvB,QAAM,MAAmB;AAAA,IACvB,SAAS;AAAA,IACT,QAAQ;AAAA,EACV;AAEA,SACE,gCACG,kBAAQ,IAAI,CAAC,EAAE,KAAK,MAAM,GAAG,EAAE,MAAM;AACpC,UAAM,WAAW,MAAM,OAAO,MAAM,KAAK,OAAO,MAAM,OAAO,GAAG;AAEhE,WACE,oBAAC,mBAA0B,MAAK,aAC9B;AAAA,MAAC,OAAO;AAAA,MAAP;AAAA,QACC,WAAW,GAAG,aAAa,SAAS;AAAA,QACpC,OAAO;AAAA,UACL,QAAQ,GAAG,IAAI;AAAA,UACf,MAAM;AAAA,UACN,eAAe;AAAA,UACf,UAAU;AAAA,UACV,KAAK;AAAA,UACL,iBAAiB;AAAA,UACjB,OAAO,GAAG,IAAI;AAAA,UACd,GAAG;AAAA,QACL;AAAA,QACA,SAAS,EAAE,SAAS,GAAG,WAAW,WAAW;AAAA,QAC7C,SAAS;AAAA,QACT,MAAM,EAAE,SAAS,EAAE;AAAA,QACnB,SAAS,EAAE,SAAS,MAAM,WAAW,WAAW;AAAA,QAChD,YAAY,EAAE,SAAS;AAAA,QACvB,OAAO;AAAA,QACN,GAAG;AAAA,QACJ,qBAAqB;AAAA,UAAW;AAAA,UAAqB,MACnD,QAAQ,GAAG;AAAA,QACb;AAAA;AAAA,IACF,KAvBoB,GAwBtB;AAAA,EAEJ,CAAC,GACH;AAEJ;AAEA,OAAO,cAAc;AACrB,OAAO,SAAS;","names":[]}