@fuf-stack/pixels 1.6.0 → 1.6.1

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.
@@ -1,11 +1,25 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});// src/hooks/useDebounce/useDebounce.ts
2
2
  var _react = require('react');
3
+ var _pixelutils = require('@fuf-stack/pixel-utils');
3
4
  var useDebounce = (value, delay) => {
4
5
  const [debouncedValue, setDebouncedValue] = _react.useState.call(void 0, value);
6
+ const isMountedRef = _react.useRef.call(void 0, true);
7
+ _react.useEffect.call(void 0, () => {
8
+ isMountedRef.current = true;
9
+ return () => {
10
+ isMountedRef.current = false;
11
+ };
12
+ }, []);
5
13
  _react.useEffect.call(void 0,
6
14
  () => {
7
- const handler = setTimeout(() => {
15
+ if (_pixelutils.isTestEnvironment.call(void 0, )) {
8
16
  setDebouncedValue(value);
17
+ return;
18
+ }
19
+ const handler = setTimeout(() => {
20
+ if (isMountedRef.current) {
21
+ setDebouncedValue(value);
22
+ }
9
23
  }, delay);
10
24
  return () => {
11
25
  clearTimeout(handler);
@@ -20,4 +34,4 @@ var useDebounce = (value, delay) => {
20
34
 
21
35
 
22
36
  exports.useDebounce = useDebounce;
23
- //# sourceMappingURL=chunk-EJKGMMBT.cjs.map
37
+ //# sourceMappingURL=chunk-3WD7CGWD.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/home/runner/work/pixels/pixels/packages/pixels/dist/chunk-3WD7CGWD.cjs","../src/hooks/useDebounce/useDebounce.ts"],"names":[],"mappings":"AAAA;ACEA,8BAA4C;AAE5C,oDAAkC;AAQ3B,IAAM,YAAA,EAAc,CAAQ,KAAA,EAAc,KAAA,EAAA,GAAkB;AAEjE,EAAA,MAAM,CAAC,cAAA,EAAgB,iBAAiB,EAAA,EAAI,6BAAA,KAAc,CAAA;AAE1D,EAAA,MAAM,aAAA,EAAe,2BAAA,IAAW,CAAA;AAEhC,EAAA,8BAAA,CAAU,EAAA,GAAM;AAEd,IAAA,YAAA,CAAa,QAAA,EAAU,IAAA;AACvB,IAAA,OAAO,CAAA,EAAA,GAAM;AAEX,MAAA,YAAA,CAAa,QAAA,EAAU,KAAA;AAAA,IACzB,CAAA;AAAA,EACF,CAAA,EAAG,CAAC,CAAC,CAAA;AAEL,EAAA,8BAAA;AAAA,IACE,CAAA,EAAA,GAAM;AAEJ,MAAA,GAAA,CAAI,2CAAA,CAAkB,EAAG;AACvB,QAAA,iBAAA,CAAkB,KAAK,CAAA;AACvB,QAAA,MAAA;AAAA,MACF;AAGA,MAAA,MAAM,QAAA,EAAU,UAAA,CAAW,CAAA,EAAA,GAAM;AAE/B,QAAA,GAAA,CAAI,YAAA,CAAa,OAAA,EAAS;AACxB,UAAA,iBAAA,CAAkB,KAAK,CAAA;AAAA,QACzB;AAAA,MACF,CAAA,EAAG,KAAK,CAAA;AAMR,MAAA,OAAO,CAAA,EAAA,GAAM;AACX,QAAA,YAAA,CAAa,OAAO,CAAA;AAAA,MACtB,CAAA;AAAA,IACF,CAAA;AAAA,IACA,CAAC,KAAA,EAAO,KAAK;AAAA;AAAA,EACf,CAAA;AAEA,EAAA,OAAO,cAAA;AACT,CAAA;ADvBA;AACA;AACE;AACF,kCAAC","file":"/home/runner/work/pixels/pixels/packages/pixels/dist/chunk-3WD7CGWD.cjs","sourcesContent":[null,"/* eslint-disable import-x/prefer-default-export */\n\nimport { useEffect, useRef, useState } from 'react';\n\nimport { isTestEnvironment } from '@fuf-stack/pixel-utils';\n\n/**\n * Hook that debounces a value\n * @param value - The value to debounce\n * @param delay - Delay in milliseconds\n * @returns The debounced value\n */\nexport const useDebounce = <Value>(value: Value, delay: number) => {\n // State and setters for debounced value\n const [debouncedValue, setDebouncedValue] = useState(value);\n // Track if component is mounted to prevent setState on unmounted component\n const isMountedRef = useRef(true);\n\n useEffect(() => {\n // Mark as mounted\n isMountedRef.current = true;\n return () => {\n // Mark as unmounted on cleanup\n isMountedRef.current = false;\n };\n }, []);\n\n useEffect(\n () => {\n // In test environments, skip debouncing for immediate snapshots\n if (isTestEnvironment()) {\n setDebouncedValue(value);\n return;\n }\n\n // Update debounced value after delay\n const handler = setTimeout(() => {\n // Only update state if component is still mounted\n if (isMountedRef.current) {\n setDebouncedValue(value);\n }\n }, delay);\n\n // Cancel the timeout if value changes (also on delay change or unmount)\n // This is how we prevent debounced value from updating if value is changed ...\n // .. within the delay period. Timeout gets cleared and restarted.\n // eslint-disable-next-line consistent-return\n return () => {\n clearTimeout(handler);\n };\n },\n [value, delay], // Only re-call effect if value or delay changes\n );\n\n return debouncedValue;\n};\n"]}
@@ -1,11 +1,25 @@
1
1
  // src/hooks/useDebounce/useDebounce.ts
2
- import { useEffect, useState } from "react";
2
+ import { useEffect, useRef, useState } from "react";
3
+ import { isTestEnvironment } from "@fuf-stack/pixel-utils";
3
4
  var useDebounce = (value, delay) => {
4
5
  const [debouncedValue, setDebouncedValue] = useState(value);
6
+ const isMountedRef = useRef(true);
7
+ useEffect(() => {
8
+ isMountedRef.current = true;
9
+ return () => {
10
+ isMountedRef.current = false;
11
+ };
12
+ }, []);
5
13
  useEffect(
6
14
  () => {
7
- const handler = setTimeout(() => {
15
+ if (isTestEnvironment()) {
8
16
  setDebouncedValue(value);
17
+ return;
18
+ }
19
+ const handler = setTimeout(() => {
20
+ if (isMountedRef.current) {
21
+ setDebouncedValue(value);
22
+ }
9
23
  }, delay);
10
24
  return () => {
11
25
  clearTimeout(handler);
@@ -20,4 +34,4 @@ var useDebounce = (value, delay) => {
20
34
  export {
21
35
  useDebounce
22
36
  };
23
- //# sourceMappingURL=chunk-XLR7LQR6.js.map
37
+ //# sourceMappingURL=chunk-FLDEDIE2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/hooks/useDebounce/useDebounce.ts"],"sourcesContent":["/* eslint-disable import-x/prefer-default-export */\n\nimport { useEffect, useRef, useState } from 'react';\n\nimport { isTestEnvironment } from '@fuf-stack/pixel-utils';\n\n/**\n * Hook that debounces a value\n * @param value - The value to debounce\n * @param delay - Delay in milliseconds\n * @returns The debounced value\n */\nexport const useDebounce = <Value>(value: Value, delay: number) => {\n // State and setters for debounced value\n const [debouncedValue, setDebouncedValue] = useState(value);\n // Track if component is mounted to prevent setState on unmounted component\n const isMountedRef = useRef(true);\n\n useEffect(() => {\n // Mark as mounted\n isMountedRef.current = true;\n return () => {\n // Mark as unmounted on cleanup\n isMountedRef.current = false;\n };\n }, []);\n\n useEffect(\n () => {\n // In test environments, skip debouncing for immediate snapshots\n if (isTestEnvironment()) {\n setDebouncedValue(value);\n return;\n }\n\n // Update debounced value after delay\n const handler = setTimeout(() => {\n // Only update state if component is still mounted\n if (isMountedRef.current) {\n setDebouncedValue(value);\n }\n }, delay);\n\n // Cancel the timeout if value changes (also on delay change or unmount)\n // This is how we prevent debounced value from updating if value is changed ...\n // .. within the delay period. Timeout gets cleared and restarted.\n // eslint-disable-next-line consistent-return\n return () => {\n clearTimeout(handler);\n };\n },\n [value, delay], // Only re-call effect if value or delay changes\n );\n\n return debouncedValue;\n};\n"],"mappings":";AAEA,SAAS,WAAW,QAAQ,gBAAgB;AAE5C,SAAS,yBAAyB;AAQ3B,IAAM,cAAc,CAAQ,OAAc,UAAkB;AAEjE,QAAM,CAAC,gBAAgB,iBAAiB,IAAI,SAAS,KAAK;AAE1D,QAAM,eAAe,OAAO,IAAI;AAEhC,YAAU,MAAM;AAEd,iBAAa,UAAU;AACvB,WAAO,MAAM;AAEX,mBAAa,UAAU;AAAA,IACzB;AAAA,EACF,GAAG,CAAC,CAAC;AAEL;AAAA,IACE,MAAM;AAEJ,UAAI,kBAAkB,GAAG;AACvB,0BAAkB,KAAK;AACvB;AAAA,MACF;AAGA,YAAM,UAAU,WAAW,MAAM;AAE/B,YAAI,aAAa,SAAS;AACxB,4BAAkB,KAAK;AAAA,QACzB;AAAA,MACF,GAAG,KAAK;AAMR,aAAO,MAAM;AACX,qBAAa,OAAO;AAAA,MACtB;AAAA,IACF;AAAA,IACA,CAAC,OAAO,KAAK;AAAA;AAAA,EACf;AAEA,SAAO;AACT;","names":[]}
@@ -1,8 +1,8 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
2
 
3
- var _chunkEJKGMMBTcjs = require('../../chunk-EJKGMMBT.cjs');
3
+ var _chunk3WD7CGWDcjs = require('../../chunk-3WD7CGWD.cjs');
4
4
  require('../../chunk-AHEA4IJV.cjs');
5
5
 
6
6
 
7
- exports.useDebounce = _chunkEJKGMMBTcjs.useDebounce;
7
+ exports.useDebounce = _chunk3WD7CGWDcjs.useDebounce;
8
8
  //# sourceMappingURL=index.cjs.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  useDebounce
3
- } from "../../chunk-XLR7LQR6.js";
3
+ } from "../../chunk-FLDEDIE2.js";
4
4
  import "../../chunk-OAIRL2FN.js";
5
5
  export {
6
6
  useDebounce
package/dist/index.cjs CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
2
 
3
- var _chunkEJKGMMBTcjs = require('./chunk-EJKGMMBT.cjs');
3
+ var _chunk3WD7CGWDcjs = require('./chunk-3WD7CGWD.cjs');
4
4
 
5
5
 
6
6
  var _chunkIXBNFKOScjs = require('./chunk-IXBNFKOS.cjs');
@@ -139,5 +139,5 @@ require('./chunk-AHEA4IJV.cjs');
139
139
 
140
140
 
141
141
 
142
- exports.Accordion = _chunkNSYHAJM2cjs.Accordion_default; exports.Alert = _chunkK25U4BJOcjs.Alert_default; exports.Avatar = _chunk77J7NZYBcjs.Avatar_default; exports.AvatarGroup = _chunkVHESFBAQcjs.AvatarGroup_default; exports.Badge = _chunkHG7AE6Q2cjs.Badge_default; exports.Breadcrumb = _chunkIBX6A72Pcjs.Breadcrumb_default; exports.Button = _chunkFVQDVD3Ecjs.Button_default; exports.ButtonGroup = _chunkY3RSI2KVcjs.ButtonGroup_default; exports.Card = _chunk6PCFYEJHcjs.Card_default; exports.Drawer = _chunkOLU26V56cjs.Drawer_default; exports.Json = _chunkIBP3GUEAcjs.Json_default; exports.Label = _chunkBPBEZCSPcjs.Label_default; exports.Menu = _chunk5ZT7C5IPcjs.Menu_default; exports.Modal = _chunkB2PDISUUcjs.Modal_default; exports.Popover = _chunkRPULU7LCcjs.Popover_default; exports.Progress = _chunkK5VPNWIJcjs.Progress_default; exports.ProgressCircular = _chunkFQJ32476cjs.ProgressCircular_default; exports.Table = _chunkYUR6N2RBcjs.Table_default; exports.Tabs = _chunkG3YTOGEGcjs.Tabs_default; exports.Toast = _chunk56CIU4EGcjs.Toast; exports.ToastProvider = _chunk56CIU4EGcjs.ToastProvider_default; exports.Tooltip = _chunkZIAB3EXUcjs.Tooltip_default; exports.accordionVariants = _chunkNSYHAJM2cjs.accordionVariants; exports.addToast = _chunk56CIU4EGcjs.addToast; exports.alertVariants = _chunkK25U4BJOcjs.alertVariants; exports.breadcrumbVariants = _chunkIBX6A72Pcjs.breadcrumbVariants; exports.buttonVariants = _chunkFVQDVD3Ecjs.buttonVariants; exports.cardVariants = _chunk6PCFYEJHcjs.cardVariants; exports.createWithSuspense = _chunkWCE3O6UAcjs.createWithSuspense; exports.drawerBackdrops = _chunkOLU26V56cjs.drawerBackdrops; exports.drawerPlacements = _chunkOLU26V56cjs.drawerPlacements; exports.drawerRadii = _chunkOLU26V56cjs.drawerRadii; exports.drawerSizes = _chunkOLU26V56cjs.drawerSizes; exports.drawerVariants = _chunkOLU26V56cjs.drawerVariants; exports.labelVariants = _chunkBPBEZCSPcjs.labelVariants; exports.modalVariants = _chunkB2PDISUUcjs.modalVariants; exports.progressCircularVariants = _chunkFQJ32476cjs.progressCircularVariants; exports.progressVariants = _chunkK5VPNWIJcjs.progressVariants; exports.tableVariants = _chunkYUR6N2RBcjs.tableVariants; exports.tabsVariants = _chunkG3YTOGEGcjs.tabsVariants; exports.toastVariants = _chunk56CIU4EGcjs.toastVariants; exports.useDebounce = _chunkEJKGMMBTcjs.useDebounce; exports.useIsInitialRenderCycle = _chunkON3PVFZYcjs.useIsInitialRenderCycle; exports.useLocalStorage = _chunkIXBNFKOScjs.useLocalStorage;
142
+ exports.Accordion = _chunkNSYHAJM2cjs.Accordion_default; exports.Alert = _chunkK25U4BJOcjs.Alert_default; exports.Avatar = _chunk77J7NZYBcjs.Avatar_default; exports.AvatarGroup = _chunkVHESFBAQcjs.AvatarGroup_default; exports.Badge = _chunkHG7AE6Q2cjs.Badge_default; exports.Breadcrumb = _chunkIBX6A72Pcjs.Breadcrumb_default; exports.Button = _chunkFVQDVD3Ecjs.Button_default; exports.ButtonGroup = _chunkY3RSI2KVcjs.ButtonGroup_default; exports.Card = _chunk6PCFYEJHcjs.Card_default; exports.Drawer = _chunkOLU26V56cjs.Drawer_default; exports.Json = _chunkIBP3GUEAcjs.Json_default; exports.Label = _chunkBPBEZCSPcjs.Label_default; exports.Menu = _chunk5ZT7C5IPcjs.Menu_default; exports.Modal = _chunkB2PDISUUcjs.Modal_default; exports.Popover = _chunkRPULU7LCcjs.Popover_default; exports.Progress = _chunkK5VPNWIJcjs.Progress_default; exports.ProgressCircular = _chunkFQJ32476cjs.ProgressCircular_default; exports.Table = _chunkYUR6N2RBcjs.Table_default; exports.Tabs = _chunkG3YTOGEGcjs.Tabs_default; exports.Toast = _chunk56CIU4EGcjs.Toast; exports.ToastProvider = _chunk56CIU4EGcjs.ToastProvider_default; exports.Tooltip = _chunkZIAB3EXUcjs.Tooltip_default; exports.accordionVariants = _chunkNSYHAJM2cjs.accordionVariants; exports.addToast = _chunk56CIU4EGcjs.addToast; exports.alertVariants = _chunkK25U4BJOcjs.alertVariants; exports.breadcrumbVariants = _chunkIBX6A72Pcjs.breadcrumbVariants; exports.buttonVariants = _chunkFVQDVD3Ecjs.buttonVariants; exports.cardVariants = _chunk6PCFYEJHcjs.cardVariants; exports.createWithSuspense = _chunkWCE3O6UAcjs.createWithSuspense; exports.drawerBackdrops = _chunkOLU26V56cjs.drawerBackdrops; exports.drawerPlacements = _chunkOLU26V56cjs.drawerPlacements; exports.drawerRadii = _chunkOLU26V56cjs.drawerRadii; exports.drawerSizes = _chunkOLU26V56cjs.drawerSizes; exports.drawerVariants = _chunkOLU26V56cjs.drawerVariants; exports.labelVariants = _chunkBPBEZCSPcjs.labelVariants; exports.modalVariants = _chunkB2PDISUUcjs.modalVariants; exports.progressCircularVariants = _chunkFQJ32476cjs.progressCircularVariants; exports.progressVariants = _chunkK5VPNWIJcjs.progressVariants; exports.tableVariants = _chunkYUR6N2RBcjs.tableVariants; exports.tabsVariants = _chunkG3YTOGEGcjs.tabsVariants; exports.toastVariants = _chunk56CIU4EGcjs.toastVariants; exports.useDebounce = _chunk3WD7CGWDcjs.useDebounce; exports.useIsInitialRenderCycle = _chunkON3PVFZYcjs.useIsInitialRenderCycle; exports.useLocalStorage = _chunkIXBNFKOScjs.useLocalStorage;
143
143
  //# sourceMappingURL=index.cjs.map
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  useDebounce
3
- } from "./chunk-XLR7LQR6.js";
3
+ } from "./chunk-FLDEDIE2.js";
4
4
  import {
5
5
  useLocalStorage
6
6
  } from "./chunk-M3Y2DZZE.js";
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@fuf-stack/pixels",
3
3
  "description": "fuf core react component library",
4
4
  "author": "Fröhlich ∧ Frei",
5
- "version": "1.6.0",
5
+ "version": "1.6.1",
6
6
  "type": "module",
7
7
  "main": "./dist/index.cjs",
8
8
  "module": "./dist/index.js",
@@ -185,7 +185,7 @@
185
185
  },
186
186
  "dependencies": {
187
187
  "@fuf-stack/pixel-motion": "1.0.26",
188
- "@fuf-stack/pixel-utils": "1.0.5",
188
+ "@fuf-stack/pixel-utils": "1.0.6",
189
189
  "@heroui/accordion": "2.2.21",
190
190
  "@heroui/alert": "2.2.24",
191
191
  "@heroui/avatar": "2.2.20",
@@ -220,5 +220,5 @@
220
220
  "react": "19.1.1",
221
221
  "react-dom": "19.1.1"
222
222
  },
223
- "gitHead": "6d58bf585da3aa14fd7d5c939f24c455eced3106"
223
+ "gitHead": "bbaa1f14055bde0993f0b16256e0be9adc3d1035"
224
224
  }
@@ -1 +0,0 @@
1
- {"version":3,"sources":["/home/runner/work/pixels/pixels/packages/pixels/dist/chunk-EJKGMMBT.cjs","../src/hooks/useDebounce/useDebounce.ts"],"names":[],"mappings":"AAAA;ACEA,8BAAoC;AAQ7B,IAAM,YAAA,EAAc,CAAQ,KAAA,EAAc,KAAA,EAAA,GAAkB;AAEjE,EAAA,MAAM,CAAC,cAAA,EAAgB,iBAAiB,EAAA,EAAI,6BAAA,KAAc,CAAA;AAE1D,EAAA,8BAAA;AAAA,IACE,CAAA,EAAA,GAAM;AAEJ,MAAA,MAAM,QAAA,EAAU,UAAA,CAAW,CAAA,EAAA,GAAM;AAC/B,QAAA,iBAAA,CAAkB,KAAK,CAAA;AAAA,MACzB,CAAA,EAAG,KAAK,CAAA;AAKR,MAAA,OAAO,CAAA,EAAA,GAAM;AACX,QAAA,YAAA,CAAa,OAAO,CAAA;AAAA,MACtB,CAAA;AAAA,IACF,CAAA;AAAA,IACA,CAAC,KAAA,EAAO,KAAK;AAAA;AAAA,EACf,CAAA;AAEA,EAAA,OAAO,cAAA;AACT,CAAA;ADdA;AACA;AACE;AACF,kCAAC","file":"/home/runner/work/pixels/pixels/packages/pixels/dist/chunk-EJKGMMBT.cjs","sourcesContent":[null,"/* eslint-disable import-x/prefer-default-export */\n\nimport { useEffect, useState } from 'react';\n\n/**\n * Hook that debounces a value\n * @param value - The value to debounce\n * @param delay - Delay in milliseconds\n * @returns The debounced value\n */\nexport const useDebounce = <Value>(value: Value, delay: number) => {\n // State and setters for debounced value\n const [debouncedValue, setDebouncedValue] = useState(value);\n\n useEffect(\n () => {\n // Update debounced value after delay\n const handler = setTimeout(() => {\n setDebouncedValue(value);\n }, delay);\n\n // Cancel the timeout if value changes (also on delay change or unmount)\n // This is how we prevent debounced value from updating if value is changed ...\n // .. within the delay period. Timeout gets cleared and restarted.\n return () => {\n clearTimeout(handler);\n };\n },\n [value, delay], // Only re-call effect if value or delay changes\n );\n\n return debouncedValue;\n};\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/hooks/useDebounce/useDebounce.ts"],"sourcesContent":["/* eslint-disable import-x/prefer-default-export */\n\nimport { useEffect, useState } from 'react';\n\n/**\n * Hook that debounces a value\n * @param value - The value to debounce\n * @param delay - Delay in milliseconds\n * @returns The debounced value\n */\nexport const useDebounce = <Value>(value: Value, delay: number) => {\n // State and setters for debounced value\n const [debouncedValue, setDebouncedValue] = useState(value);\n\n useEffect(\n () => {\n // Update debounced value after delay\n const handler = setTimeout(() => {\n setDebouncedValue(value);\n }, delay);\n\n // Cancel the timeout if value changes (also on delay change or unmount)\n // This is how we prevent debounced value from updating if value is changed ...\n // .. within the delay period. Timeout gets cleared and restarted.\n return () => {\n clearTimeout(handler);\n };\n },\n [value, delay], // Only re-call effect if value or delay changes\n );\n\n return debouncedValue;\n};\n"],"mappings":";AAEA,SAAS,WAAW,gBAAgB;AAQ7B,IAAM,cAAc,CAAQ,OAAc,UAAkB;AAEjE,QAAM,CAAC,gBAAgB,iBAAiB,IAAI,SAAS,KAAK;AAE1D;AAAA,IACE,MAAM;AAEJ,YAAM,UAAU,WAAW,MAAM;AAC/B,0BAAkB,KAAK;AAAA,MACzB,GAAG,KAAK;AAKR,aAAO,MAAM;AACX,qBAAa,OAAO;AAAA,MACtB;AAAA,IACF;AAAA,IACA,CAAC,OAAO,KAAK;AAAA;AAAA,EACf;AAEA,SAAO;AACT;","names":[]}