@shohojdhara/atomix 0.3.12 → 0.3.13
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.
- package/dist/atomix.css +6 -11
- package/dist/atomix.css.map +1 -1
- package/dist/atomix.min.css +5 -15258
- package/dist/atomix.min.css.map +1 -1
- package/dist/charts.js +16 -18
- package/dist/charts.js.map +1 -1
- package/dist/core.js +16 -18
- package/dist/core.js.map +1 -1
- package/dist/forms.js +17 -19
- package/dist/forms.js.map +1 -1
- package/dist/heavy.js +17 -19
- package/dist/heavy.js.map +1 -1
- package/dist/index.esm.js +16 -18
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +16 -18
- package/dist/index.js.map +1 -1
- package/dist/index.min.js +1 -1
- package/dist/index.min.js.map +1 -1
- package/package.json +1 -1
- package/src/components/AtomixGlass/AtomixGlassContainer.tsx +41 -44
- package/src/components/AtomixGlass/stories/Modes.stories.tsx +1 -2
- package/src/styles/06-components/_components.atomix-glass.scss +14 -15
package/dist/index.esm.js
CHANGED
|
@@ -1825,7 +1825,13 @@ const {CONSTANTS: CONSTANTS$1} = ATOMIX_GLASS, calculateDistance = (pos1, pos2)
|
|
|
1825
1825
|
*/ GlassFilterComponent.displayName = "GlassFilter";
|
|
1826
1826
|
|
|
1827
1827
|
// Memoize component to prevent unnecessary re-renders
|
|
1828
|
-
const GlassFilter = memo(GlassFilterComponent, ((prevProps, nextProps) => prevProps.id === nextProps.id && prevProps.displacementScale === nextProps.displacementScale && prevProps.aberrationIntensity === nextProps.aberrationIntensity && prevProps.mode === nextProps.mode && prevProps.shaderMapUrl === nextProps.shaderMapUrl && prevProps.blurAmount === nextProps.blurAmount))
|
|
1828
|
+
const GlassFilter = memo(GlassFilterComponent, ((prevProps, nextProps) => prevProps.id === nextProps.id && prevProps.displacementScale === nextProps.displacementScale && prevProps.aberrationIntensity === nextProps.aberrationIntensity && prevProps.mode === nextProps.mode && prevProps.shaderMapUrl === nextProps.shaderMapUrl && prevProps.blurAmount === nextProps.blurAmount));
|
|
1829
|
+
|
|
1830
|
+
// Module-level counter for deterministic ID generation
|
|
1831
|
+
let idCounter = 0;
|
|
1832
|
+
|
|
1833
|
+
// Module-level shared shader cache with LRU eviction
|
|
1834
|
+
const sharedShaderCache = new Map, AtomixGlassContainer = forwardRef((({children: children, className: className = "", style: style, displacementScale: displacementScale = 25, blurAmount: blurAmount = .0625, saturation: saturation = 180, aberrationIntensity: aberrationIntensity = 2, mouseOffset: mouseOffset = {
|
|
1829
1835
|
x: 0,
|
|
1830
1836
|
y: 0
|
|
1831
1837
|
}, globalMousePosition: globalMousePosition = {
|
|
@@ -1836,10 +1842,8 @@ const GlassFilter = memo(GlassFilterComponent, ((prevProps, nextProps) => prevP
|
|
|
1836
1842
|
height: 0
|
|
1837
1843
|
}, onClick: onClick, mode: mode = "standard", effectiveDisableEffects: effectiveDisableEffects = !1, effectiveReducedMotion: effectiveReducedMotion = !1, shaderVariant: shaderVariant = "liquidGlass", enableLiquidBlur: enableLiquidBlur = !1, elasticity: elasticity = 0, contentRef: contentRef}, ref) => {
|
|
1838
1844
|
// Generate a stable, deterministic ID for SSR compatibility
|
|
1839
|
-
// Use a
|
|
1840
|
-
const [
|
|
1841
|
-
// Use a simple counter for deterministic IDs
|
|
1842
|
-
"undefined" == typeof window ? `atomix-glass-filter-ssr-${Math.random().toString(36).substring(2, 11)}` : `atomix-glass-filter-${Date.now()}-${Math.random().toString(36).substring(2, 11)}`)), [shaderMapUrl, setShaderMapUrl] = useState(""), shaderGeneratorRef = useRef(null), shaderUtilsRef = useRef(null), shaderDebounceTimeoutRef = useRef(null);
|
|
1845
|
+
// Use a module-level counter that's consistent across server and client
|
|
1846
|
+
const filterId = useMemo((() => "atomix-glass-filter-" + ++idCounter), []), [shaderMapUrl, setShaderMapUrl] = useState(""), shaderGeneratorRef = useRef(null), shaderUtilsRef = useRef(null), shaderDebounceTimeoutRef = useRef(null);
|
|
1843
1847
|
// Lazy load shader utilities only when shader mode is needed
|
|
1844
1848
|
useEffect((() => {
|
|
1845
1849
|
"shader" === mode ?
|
|
@@ -1880,9 +1884,9 @@ const GlassFilter = memo(GlassFilterComponent, ((prevProps, nextProps) => prevP
|
|
|
1880
1884
|
width: glassSize.width,
|
|
1881
1885
|
height: glassSize.height,
|
|
1882
1886
|
fragment: selectedShader
|
|
1883
|
-
})
|
|
1884
|
-
//
|
|
1885
|
-
|
|
1887
|
+
}),
|
|
1888
|
+
// Defer shader generation with longer delay to avoid blocking
|
|
1889
|
+
setTimeout((() => {
|
|
1886
1890
|
const url = shaderGeneratorRef.current?.updateShader() || "";
|
|
1887
1891
|
((key, url) => {
|
|
1888
1892
|
// Evict oldest entries if at capacity
|
|
@@ -1901,20 +1905,15 @@ const GlassFilter = memo(GlassFilterComponent, ((prevProps, nextProps) => prevP
|
|
|
1901
1905
|
// Development mode: log cache size
|
|
1902
1906
|
"undefined" != typeof process && "production" === process.env?.NODE_ENV || sharedShaderCache.size;
|
|
1903
1907
|
})(cacheKey, url), setShaderMapUrl(url);
|
|
1904
|
-
};
|
|
1905
|
-
"undefined" != typeof requestIdleCallback ? requestIdleCallback(generate, {
|
|
1906
|
-
timeout: 1e3
|
|
1907
|
-
}) :
|
|
1908
|
-
// Fallback to setTimeout for browsers without requestIdleCallback
|
|
1909
|
-
setTimeout(generate, 0);
|
|
1908
|
+
}), 100);
|
|
1910
1909
|
} catch (error) {
|
|
1911
1910
|
console.warn("AtomixGlassContainer: Error generating shader map", error), setShaderMapUrl("");
|
|
1912
1911
|
} else
|
|
1913
1912
|
// Shader utils not loaded yet, retry after a short delay
|
|
1914
1913
|
shaderDebounceTimeoutRef.current = setTimeout(generateShader, 100);
|
|
1915
1914
|
};
|
|
1916
|
-
// Debounce with
|
|
1917
|
-
shaderDebounceTimeoutRef.current = setTimeout(generateShader,
|
|
1915
|
+
// Debounce with 500ms delay to reduce frequency
|
|
1916
|
+
shaderDebounceTimeoutRef.current = setTimeout(generateShader, 500);
|
|
1918
1917
|
} else
|
|
1919
1918
|
// Not in shader mode, clear URL
|
|
1920
1919
|
setShaderMapUrl("");
|
|
@@ -1981,7 +1980,7 @@ const GlassFilter = memo(GlassFilterComponent, ((prevProps, nextProps) => prevP
|
|
|
1981
1980
|
backdropFilter: `blur(${blurAmount}px) saturate(${saturation}%) contrast(1.05) brightness(1.05)`
|
|
1982
1981
|
};
|
|
1983
1982
|
}
|
|
1984
|
-
}), [
|
|
1983
|
+
}), [ liquidBlur, saturation, blurAmount, rectCache, effectiveReducedMotion, effectiveDisableEffects, enableLiquidBlur ]), containerVars = useMemo((() => {
|
|
1985
1984
|
try {
|
|
1986
1985
|
// Safe extraction of mouse offset values
|
|
1987
1986
|
const mx = mouseOffset && "number" == typeof mouseOffset.x && !isNaN(mouseOffset.x) ? mouseOffset.x : 0, my = mouseOffset && "number" == typeof mouseOffset.y && !isNaN(mouseOffset.y) ? mouseOffset.y : 0;
|
|
@@ -2070,7 +2069,6 @@ const GlassFilter = memo(GlassFilterComponent, ((prevProps, nextProps) => prevP
|
|
|
2070
2069
|
});
|
|
2071
2070
|
}));
|
|
2072
2071
|
|
|
2073
|
-
// Module-level shared shader cache with LRU eviction
|
|
2074
2072
|
AtomixGlassContainer.displayName = "AtomixGlassContainer";
|
|
2075
2073
|
|
|
2076
2074
|
// Singleton instance
|