@yamada-ui/ripple 1.0.45 → 1.0.46-dev-20241126142819

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.
@@ -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.45",
3
+ "version": "1.0.46-dev-20241126142819",
4
4
  "description": "Yamada UI ripple component",
5
5
  "keywords": [],
6
6
  "author": "Hirotomo Yamada <hirotomo.yamada@avap.co.jp>",
@@ -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":[]}