@shohojdhara/atomix 0.3.5 → 0.3.6
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/README.md +101 -199
- package/atomix.config.ts +241 -0
- package/dist/atomix.css +260 -179
- package/dist/atomix.css.map +1 -1
- package/dist/atomix.min.css +250 -179
- package/dist/atomix.min.css.map +1 -1
- package/dist/charts.js +61 -66
- package/dist/charts.js.map +1 -1
- package/dist/core.js +47 -31
- package/dist/core.js.map +1 -1
- package/dist/forms.js +47 -31
- package/dist/forms.js.map +1 -1
- package/dist/heavy.js +47 -31
- package/dist/heavy.js.map +1 -1
- package/dist/index.d.ts +1841 -1633
- package/dist/index.esm.js +4975 -4113
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +5151 -4290
- package/dist/index.js.map +1 -1
- package/dist/index.min.js +1 -1
- package/dist/index.min.js.map +1 -1
- package/dist/theme.d.ts +1572 -1442
- package/dist/theme.js +4816 -4080
- package/dist/theme.js.map +1 -1
- package/package.json +6 -20
- package/src/components/Accordion/Accordion.stories.tsx +50 -17
- package/src/components/AtomixGlass/AtomixGlass.tsx +65 -31
- package/src/components/AtomixGlass/AtomixGlassContainer.tsx +11 -4
- package/src/components/AtomixGlass/stories/AtomixGlass.stories.tsx +1 -32
- package/src/components/AtomixGlass/stories/Examples.stories.tsx +2 -2
- package/src/components/AtomixGlass/stories/shared-components.tsx +0 -31
- package/src/components/Avatar/Avatar.stories.tsx +7 -0
- package/src/components/Badge/Badge.stories.tsx +91 -13
- package/src/components/Block/Block.stories.tsx +7 -23
- package/src/components/Breadcrumb/Breadcrumb.stories.tsx +7 -0
- package/src/components/Button/Button.stories.tsx +141 -22
- package/src/components/Button/ButtonGroup.stories.tsx +315 -0
- package/src/components/Button/ButtonGroup.tsx +67 -0
- package/src/components/Button/index.ts +2 -0
- package/src/components/Callout/Callout.stories.tsx +8 -6
- package/src/components/Card/Card.stories.tsx +82 -28
- package/src/components/Chart/AnimatedChart.tsx +0 -1
- package/src/components/Chart/AreaChart.tsx +0 -1
- package/src/components/Chart/BarChart.tsx +0 -1
- package/src/components/Chart/BubbleChart.tsx +0 -1
- package/src/components/Chart/CandlestickChart.tsx +0 -1
- package/src/components/Chart/Chart.stories.tsx +5 -7
- package/src/components/Chart/Chart.tsx +0 -16
- package/src/components/Chart/ChartRenderer.tsx +1 -1
- package/src/components/Chart/DonutChart.tsx +0 -1
- package/src/components/Chart/FunnelChart.tsx +0 -1
- package/src/components/Chart/GaugeChart.tsx +0 -1
- package/src/components/Chart/HeatmapChart.tsx +0 -1
- package/src/components/Chart/LineChart.tsx +0 -1
- package/src/components/Chart/MultiAxisChart.tsx +0 -1
- package/src/components/Chart/PieChart.tsx +0 -1
- package/src/components/Chart/RadarChart.tsx +0 -1
- package/src/components/Chart/ScatterChart.tsx +0 -1
- package/src/components/Chart/WaterfallChart.tsx +0 -1
- package/src/components/ColorModeToggle/ColorModeToggle.stories.tsx +7 -0
- package/src/components/DataTable/DataTable.stories.tsx +23 -16
- package/src/components/DatePicker/DatePicker.stories.tsx +27 -19
- package/src/components/Dropdown/Dropdown.stories.tsx +11 -19
- package/src/components/EdgePanel/EdgePanel.stories.tsx +1 -0
- package/src/components/Footer/Footer.stories.tsx +8 -6
- package/src/components/Footer/FooterLink.tsx +9 -2
- package/src/components/Form/Checkbox.stories.tsx +7 -0
- package/src/components/Form/Form.stories.tsx +7 -0
- package/src/components/Form/FormGroup.stories.tsx +9 -1
- package/src/components/Form/Input.stories.tsx +69 -16
- package/src/components/Form/Radio.stories.tsx +9 -1
- package/src/components/Form/Select.stories.tsx +9 -1
- package/src/components/Form/Textarea.stories.tsx +10 -2
- package/src/components/Hero/Hero.stories.tsx +7 -0
- package/src/components/List/List.stories.tsx +7 -0
- package/src/components/Messages/Messages.stories.tsx +8 -7
- package/src/components/Modal/Modal.stories.tsx +17 -6
- package/src/components/Navigation/Menu/Menu.stories.tsx +7 -0
- package/src/components/Navigation/Nav/Nav.stories.tsx +7 -0
- package/src/components/Navigation/Navbar/Navbar.stories.tsx +1 -0
- package/src/components/Navigation/SideMenu/SideMenu.stories.tsx +1 -1
- package/src/components/Pagination/Pagination.stories.tsx +188 -111
- package/src/components/Pagination/Pagination.tsx +83 -3
- package/src/components/PhotoViewer/PhotoViewer.stories.tsx +10 -5
- package/src/components/Popover/Popover.stories.tsx +191 -115
- package/src/components/ProductReview/ProductReview.stories.tsx +80 -58
- package/src/components/Progress/Progress.stories.tsx +79 -49
- package/src/components/Rating/Rating.stories.tsx +109 -84
- package/src/components/River/River.stories.tsx +194 -114
- package/src/components/SectionIntro/SectionIntro.stories.tsx +19 -9
- package/src/components/Slider/Slider.stories.tsx +7 -0
- package/src/components/Spinner/Spinner.stories.tsx +15 -11
- package/src/components/Steps/Steps.stories.tsx +132 -98
- package/src/components/Tabs/Tabs.stories.tsx +163 -112
- package/src/components/Testimonial/Testimonial.stories.tsx +114 -68
- package/src/components/Todo/Todo.stories.tsx +38 -12
- package/src/components/Toggle/Toggle.stories.tsx +61 -28
- package/src/components/Tooltip/Tooltip.stories.tsx +318 -200
- package/src/components/Upload/Upload.stories.tsx +122 -84
- package/src/components/VideoPlayer/VideoPlayer.stories.tsx +7 -24
- package/src/components/index.ts +1 -0
- package/src/lib/composables/useAtomixGlass.ts +2 -3
- package/src/lib/composables/useNavbar.ts +0 -10
- package/src/lib/config/loader.ts +2 -1
- package/src/lib/constants/components.ts +10 -0
- package/src/lib/hooks/useComponentCustomization.ts +1 -1
- package/src/lib/theme/README.md +174 -0
- package/src/lib/theme/adapters/index.ts +31 -0
- package/src/lib/theme/adapters/themeAdapter.ts +287 -0
- package/src/lib/theme/config/__tests__/configLoader.test.ts +207 -0
- package/src/lib/theme/config/configLoader.ts +254 -0
- package/src/lib/theme/config/loader.ts +37 -48
- package/src/lib/theme/config/types.ts +2 -2
- package/src/lib/theme/config/validator.ts +15 -91
- package/src/lib/theme/{constants.ts → constants/constants.ts} +0 -18
- package/src/lib/theme/constants/index.ts +8 -0
- package/src/lib/theme/core/ThemeRegistry.ts +19 -6
- package/src/lib/theme/core/__tests__/createTheme.test.ts +132 -0
- package/src/lib/theme/core/composeTheme.ts +155 -0
- package/src/lib/theme/core/createTheme.ts +94 -0
- package/src/lib/theme/{createTheme.ts → core/createThemeObject.ts} +10 -6
- package/src/lib/theme/core/index.ts +5 -19
- package/src/lib/theme/devtools/Comparator.tsx +346 -22
- package/src/lib/theme/devtools/IMPROVEMENTS.md +139 -38
- package/src/lib/theme/devtools/Inspector.tsx +335 -51
- package/src/lib/theme/devtools/LiveEditor.tsx +478 -107
- package/src/lib/theme/devtools/Preview.tsx +471 -221
- package/src/lib/theme/{core → devtools}/ThemeValidator.ts +1 -1
- package/src/lib/theme/devtools/index.ts +14 -4
- package/src/lib/theme/devtools/useHistory.ts +130 -0
- package/src/lib/theme/errors/index.ts +12 -0
- package/src/lib/theme/generators/cssFile.ts +79 -0
- package/src/lib/theme/generators/generateCSS.ts +89 -0
- package/src/lib/theme/{generateCSSVariables.ts → generators/generateCSSVariables.ts} +3 -13
- package/src/lib/theme/generators/index.ts +19 -0
- package/src/lib/theme/i18n/rtl.ts +5 -6
- package/src/lib/theme/index.ts +120 -15
- package/src/lib/theme/runtime/ThemeApplicator.ts +52 -111
- package/src/lib/theme/{ThemeContext.tsx → runtime/ThemeContext.tsx} +1 -1
- package/src/lib/theme/runtime/ThemeErrorBoundary.tsx +1 -1
- package/src/lib/theme/runtime/ThemeProvider.tsx +456 -179
- package/src/lib/theme/runtime/index.ts +1 -2
- package/src/lib/theme/runtime/useTheme.ts +1 -2
- package/src/lib/theme/test/testTheme.ts +385 -0
- package/src/lib/theme/tokens/index.ts +12 -0
- package/src/lib/theme/tokens/tokens.ts +721 -0
- package/src/lib/theme/types.ts +6 -42
- package/src/lib/theme/{utils.ts → utils/domUtils.ts} +2 -2
- package/src/lib/theme/utils/index.ts +11 -0
- package/src/lib/theme/utils/injectCSS.ts +90 -0
- package/src/lib/theme/utils/themeHelpers.ts +78 -0
- package/src/lib/theme/{themeUtils.ts → utils/themeUtils.ts} +1 -1
- package/src/lib/theme-tools.ts +7 -8
- package/src/lib/types/components.ts +40 -130
- package/src/lib/utils/componentUtils.ts +1 -1
- package/src/styles/01-settings/_settings.design-tokens.scss +4 -1
- package/src/styles/02-tools/_tools.button.scss +66 -79
- package/src/styles/06-components/_components.atomix-glass.scss +13 -3
- package/src/styles/06-components/_components.pagination.scss +88 -0
- package/scripts/sync-theme-config.js +0 -309
- package/src/lib/theme/composeTheme.ts +0 -370
- package/src/lib/theme/core/ThemeCache.ts +0 -283
- package/src/lib/theme/core/ThemeEngine.test.ts +0 -146
- package/src/lib/theme/core/ThemeEngine.ts +0 -665
- package/src/lib/theme/createThemeFromConfig.ts +0 -132
- package/src/lib/theme/devtools/CLI.ts +0 -364
- package/src/lib/theme/runtime/ThemeManager.test.ts +0 -192
- package/src/lib/theme/runtime/ThemeManager.ts +0 -446
- package/src/styles/03-generic/_generated-root.css +0 -26
- package/src/themes/README.md +0 -442
- package/src/themes/themes.config.js +0 -68
- /package/src/lib/theme/{cssVariableMapper.ts → adapters/cssVariableMapper.ts} +0 -0
- /package/src/lib/theme/{errors.ts → errors/errors.ts} +0 -0
package/dist/charts.js
CHANGED
|
@@ -1730,10 +1730,11 @@ const GlassFilter = memo(GlassFilterComponent, ((prevProps, nextProps) => prevP
|
|
|
1730
1730
|
width: 0,
|
|
1731
1731
|
height: 0
|
|
1732
1732
|
}, onClick: onClick, mode: mode = "standard", effectiveDisableEffects: effectiveDisableEffects = !1, effectiveReducedMotion: effectiveReducedMotion = !1, shaderVariant: shaderVariant = "liquidGlass", enableLiquidBlur: enableLiquidBlur = !1, elasticity: elasticity = 0, contentRef: contentRef}, ref) => {
|
|
1733
|
-
//
|
|
1734
|
-
//
|
|
1735
|
-
//
|
|
1736
|
-
|
|
1733
|
+
// Generate a stable, deterministic ID for SSR compatibility
|
|
1734
|
+
// React's useId() should produce the same ID on server and client for the same
|
|
1735
|
+
// component position in the tree. We use useState to ensure the ID is only
|
|
1736
|
+
// generated once and remains stable across renders.
|
|
1737
|
+
const baseId = useId(), [filterId] = useState((() => `atomix-glass-filter-${baseId.replace(/:/g, "-").replace(/^[^a-z]/i, "atomix-")}`)), [shaderMapUrl, setShaderMapUrl] = useState(""), shaderGeneratorRef = useRef(null), shaderUtilsRef = useRef(null), shaderDebounceTimeoutRef = useRef(null);
|
|
1737
1738
|
// Lazy load shader utilities only when shader mode is needed
|
|
1738
1739
|
useEffect((() => {
|
|
1739
1740
|
"shader" === mode ?
|
|
@@ -2533,7 +2534,7 @@ function useAtomixGlass({glassRef: glassRef, contentRef: contentRef, cornerRadiu
|
|
|
2533
2534
|
* <div>Content with debug logging enabled</div>
|
|
2534
2535
|
* </AtomixGlass>
|
|
2535
2536
|
*/ function AtomixGlass({children: children, displacementScale: displacementScale = ATOMIX_GLASS.DEFAULTS.DISPLACEMENT_SCALE, blurAmount: blurAmount = ATOMIX_GLASS.DEFAULTS.BLUR_AMOUNT, saturation: saturation = ATOMIX_GLASS.DEFAULTS.SATURATION, aberrationIntensity: aberrationIntensity = ATOMIX_GLASS.DEFAULTS.ABERRATION_INTENSITY, elasticity: elasticity = ATOMIX_GLASS.DEFAULTS.ELASTICITY, cornerRadius: cornerRadius, globalMousePosition: externalGlobalMousePosition, mouseOffset: externalMouseOffset, mouseContainer: mouseContainer = null, className: className = "", padding: padding = ATOMIX_GLASS.DEFAULTS.PADDING, overLight: overLight = ATOMIX_GLASS.DEFAULTS.OVER_LIGHT, style: style = {}, mode: mode = ATOMIX_GLASS.DEFAULTS.MODE, onClick: onClick, shaderVariant: shaderVariant = "liquidGlass", "aria-label": ariaLabel, "aria-describedby": ariaDescribedBy, role: role, tabIndex: tabIndex, reducedMotion: reducedMotion = !1, highContrast: highContrast = !1, disableEffects: disableEffects = !1, enableLiquidBlur: enableLiquidBlur = !1, enableBorderEffect: enableBorderEffect = !0, enableOverLightLayers: enableOverLightLayers = ATOMIX_GLASS.DEFAULTS.ENABLE_OVER_LIGHT_LAYERS, enablePerformanceMonitoring: enablePerformanceMonitoring = !1, debugCornerRadius: debugCornerRadius = !1, debugOverLight: debugOverLight = !1}) {
|
|
2536
|
-
const glassRef = useRef(null), contentRef = useRef(null), opacityCacheRef = useRef(null), {isHovered: isHovered, isActive: isActive, glassSize: glassSize, effectiveCornerRadius: effectiveCornerRadius, effectiveReducedMotion: effectiveReducedMotion, effectiveHighContrast: effectiveHighContrast, effectiveDisableEffects: effectiveDisableEffects, overLightConfig: overLightConfig, globalMousePosition: globalMousePosition, mouseOffset: mouseOffset, transformStyle: transformStyle, handleMouseEnter: handleMouseEnter, handleMouseLeave: handleMouseLeave, handleMouseDown: handleMouseDown, handleMouseUp: handleMouseUp, handleKeyDown: handleKeyDown} = useAtomixGlass({
|
|
2537
|
+
const glassRef = useRef(null), contentRef = useRef(null), opacityCacheRef = useRef(null), rgbCacheRef = useRef(null), {isHovered: isHovered, isActive: isActive, glassSize: glassSize, effectiveCornerRadius: effectiveCornerRadius, effectiveReducedMotion: effectiveReducedMotion, effectiveHighContrast: effectiveHighContrast, effectiveDisableEffects: effectiveDisableEffects, overLightConfig: overLightConfig, globalMousePosition: globalMousePosition, mouseOffset: mouseOffset, transformStyle: transformStyle, handleMouseEnter: handleMouseEnter, handleMouseLeave: handleMouseLeave, handleMouseDown: handleMouseDown, handleMouseUp: handleMouseUp, handleKeyDown: handleKeyDown} = useAtomixGlass({
|
|
2537
2538
|
glassRef: glassRef,
|
|
2538
2539
|
contentRef: contentRef,
|
|
2539
2540
|
cornerRadius: cornerRadius,
|
|
@@ -2553,26 +2554,43 @@ function useAtomixGlass({glassRef: glassRef, contentRef: contentRef, cornerRadiu
|
|
|
2553
2554
|
}), isOverLight = overLightConfig.isOverLight, shouldRenderOverLightLayers = enableOverLightLayers && isOverLight;
|
|
2554
2555
|
// Read CSS custom properties once on mount and cache them
|
|
2555
2556
|
useEffect((() => {
|
|
2556
|
-
if ("undefined" != typeof window && glassRef.current
|
|
2557
|
-
const computedStyle = window.getComputedStyle(glassRef.current)
|
|
2558
|
-
|
|
2559
|
-
|
|
2560
|
-
|
|
2561
|
-
|
|
2562
|
-
|
|
2563
|
-
|
|
2564
|
-
|
|
2565
|
-
|
|
2566
|
-
|
|
2567
|
-
|
|
2557
|
+
if ("undefined" != typeof window && glassRef.current) try {
|
|
2558
|
+
const computedStyle = window.getComputedStyle(glassRef.current);
|
|
2559
|
+
// Cache opacity values
|
|
2560
|
+
if (!opacityCacheRef.current) {
|
|
2561
|
+
const opacity50Value = computedStyle.getPropertyValue("--atomix-opacity-50").trim(), opacity40Value = computedStyle.getPropertyValue("--atomix-opacity-40").trim(), opacity80Value = computedStyle.getPropertyValue("--atomix-opacity-80").trim(), opacity0Value = computedStyle.getPropertyValue("--atomix-opacity-0").trim(), parseOpacity = (value, defaultValue) => {
|
|
2562
|
+
if (!value) return defaultValue;
|
|
2563
|
+
const parsed = parseFloat(value);
|
|
2564
|
+
return isNaN(parsed) ? defaultValue : parsed;
|
|
2565
|
+
};
|
|
2566
|
+
opacityCacheRef.current = {
|
|
2567
|
+
opacity50: parseOpacity(opacity50Value, .5),
|
|
2568
|
+
opacity40: parseOpacity(opacity40Value, .4),
|
|
2569
|
+
opacity80: parseOpacity(opacity80Value, .8),
|
|
2570
|
+
opacity0: parseOpacity(opacity0Value, 0)
|
|
2571
|
+
};
|
|
2572
|
+
}
|
|
2573
|
+
// Cache RGB color values from design tokens
|
|
2574
|
+
if (!rgbCacheRef.current) {
|
|
2575
|
+
// Try to read from design tokens, fallback to defaults
|
|
2576
|
+
const whiteRgbValue = computedStyle.getPropertyValue("--atomix-light-rgb").trim() || computedStyle.getPropertyValue("--atomix-white-rgb").trim() || "", blackRgbValue = computedStyle.getPropertyValue("--atomix-dark-rgb").trim() || computedStyle.getPropertyValue("--atomix-black-rgb").trim() || "";
|
|
2577
|
+
rgbCacheRef.current = {
|
|
2578
|
+
whiteRgb: whiteRgbValue || "255, 255, 255",
|
|
2579
|
+
// Fallback to white RGB
|
|
2580
|
+
blackRgb: blackRgbValue || "0, 0, 0"
|
|
2581
|
+
};
|
|
2582
|
+
}
|
|
2568
2583
|
} catch (error) {
|
|
2569
2584
|
// Fallback to defaults if reading fails
|
|
2570
|
-
opacityCacheRef.current = {
|
|
2585
|
+
opacityCacheRef.current || (opacityCacheRef.current = {
|
|
2571
2586
|
opacity50: .5,
|
|
2572
2587
|
opacity40: .4,
|
|
2573
2588
|
opacity80: .8,
|
|
2574
2589
|
opacity0: 0
|
|
2575
|
-
}
|
|
2590
|
+
}), rgbCacheRef.current || (rgbCacheRef.current = {
|
|
2591
|
+
whiteRgb: "255, 255, 255",
|
|
2592
|
+
blackRgb: "0, 0, 0"
|
|
2593
|
+
});
|
|
2576
2594
|
}
|
|
2577
2595
|
}), []);
|
|
2578
2596
|
// Calculate base style with transforms (only dynamic values)
|
|
@@ -2623,13 +2641,11 @@ function useAtomixGlass({glassRef: glassRef, contentRef: contentRef, cornerRadiu
|
|
|
2623
2641
|
};
|
|
2624
2642
|
}), [ isHovered, isActive, isOverLight, overLightOpacity ]), gradientIsOverLight = gradientCalculations.isOverLight, gradientMx = gradientCalculations.mx, gradientMy = gradientCalculations.my, gradientBorderGradientAngle = gradientCalculations.borderGradientAngle, gradientBorderStop1 = gradientCalculations.borderStop1, gradientBorderStop2 = gradientCalculations.borderStop2, gradientBorderOpacity1 = gradientCalculations.borderOpacity1, gradientBorderOpacity2 = gradientCalculations.borderOpacity2, gradientBorderOpacity3 = gradientCalculations.borderOpacity3, gradientBorderOpacity4 = gradientCalculations.borderOpacity4, gradientHover1X = gradientCalculations.hover1X, gradientHover1Y = gradientCalculations.hover1Y, gradientHover2X = gradientCalculations.hover2X, gradientHover2Y = gradientCalculations.hover2Y, gradientHover3X = gradientCalculations.hover3X, gradientHover3Y = gradientCalculations.hover3Y, gradientBaseX = gradientCalculations.baseX, gradientBaseY = gradientCalculations.baseY, positionStylesPosition = positionStyles.position, positionStylesTop = positionStyles.top, positionStylesLeft = positionStyles.left, adjustedSizeWidth = adjustedSize.width, adjustedSizeHeight = adjustedSize.height, baseStyleTransform = baseStyle.transform, opacityValuesHover1 = opacityValues.hover1, opacityValuesHover2 = opacityValues.hover2, opacityValuesHover3 = opacityValues.hover3, opacityValuesBase = opacityValues.base, opacityValuesOver = opacityValues.over, glassVars = useMemo((() => {
|
|
2625
2643
|
// RGB color values for rgba() functions
|
|
2626
|
-
// Note: CSS doesn't support rgba(var(--rgb), opacity) syntax
|
|
2627
|
-
//
|
|
2628
|
-
//
|
|
2629
|
-
//
|
|
2630
|
-
const whiteColor = "255, 255, 255";
|
|
2631
|
-
// Matches --atomix-white-rgb design token
|
|
2632
|
-
// Matches --atomix-black-rgb design token
|
|
2644
|
+
// Note: CSS doesn't support rgba(var(--rgb), opacity) syntax - this is a CSS specification
|
|
2645
|
+
// limitation, not a browser support issue. We read RGB values from design tokens at mount
|
|
2646
|
+
// and cache them for performance. Falls back to defaults if tokens are not available.
|
|
2647
|
+
// Uses design tokens: --atomix-light-rgb / --atomix-white-rgb and --atomix-dark-rgb / --atomix-black-rgb
|
|
2648
|
+
const whiteColor = rgbCacheRef.current?.whiteRgb || "255, 255, 255", blackColor = rgbCacheRef.current?.blackRgb || "0, 0, 0";
|
|
2633
2649
|
return {
|
|
2634
2650
|
// Standard CSS custom properties for dynamic values
|
|
2635
2651
|
"--atomix-glass-radius": `${effectiveCornerRadius}px`,
|
|
@@ -2647,15 +2663,15 @@ function useAtomixGlass({glassRef: glassRef, contentRef: contentRef, cornerRadiu
|
|
|
2647
2663
|
"--atomix-glass-border-gradient-1": `linear-gradient(${gradientBorderGradientAngle}deg, rgba(${whiteColor}, 0) 0%, rgba(${whiteColor}, ${gradientBorderOpacity1}) ${gradientBorderStop1}%, rgba(${whiteColor}, ${gradientBorderOpacity2}) ${gradientBorderStop2}%, rgba(${whiteColor}, 0) 100%)`,
|
|
2648
2664
|
"--atomix-glass-border-gradient-2": `linear-gradient(${gradientBorderGradientAngle}deg, rgba(${whiteColor}, 0) 0%, rgba(${whiteColor}, ${gradientBorderOpacity3}) ${gradientBorderStop1}%, rgba(${whiteColor}, ${gradientBorderOpacity4}) ${gradientBorderStop2}%, rgba(${whiteColor}, 0) 100%)`,
|
|
2649
2665
|
"--atomix-glass-hover-1-opacity": opacityValuesHover1,
|
|
2650
|
-
"--atomix-glass-hover-1-gradient": gradientIsOverLight ? `radial-gradient(circle at ${gradientHover1X}% ${gradientHover1Y}%, rgba(
|
|
2666
|
+
"--atomix-glass-hover-1-gradient": gradientIsOverLight ? `radial-gradient(circle at ${gradientHover1X}% ${gradientHover1Y}%, rgba(${blackColor}, ${ATOMIX_GLASS.CONSTANTS.GRADIENT_OPACITY.HOVER_1.BLACK_START}) 0%, rgba(${blackColor}, ${ATOMIX_GLASS.CONSTANTS.GRADIENT_OPACITY.HOVER_1.BLACK_MID}) ${ATOMIX_GLASS.CONSTANTS.GRADIENT_OPACITY.HOVER_1.BLACK_STOP}%, rgba(${blackColor}, 0) ${ATOMIX_GLASS.CONSTANTS.GRADIENT_OPACITY.HOVER_1.BLACK_END}%)` : `radial-gradient(circle at ${gradientHover1X}% ${gradientHover1Y}%, rgba(${whiteColor}, ${ATOMIX_GLASS.CONSTANTS.GRADIENT_OPACITY.HOVER_1.WHITE_START}) 0%, rgba(${whiteColor}, 0) ${ATOMIX_GLASS.CONSTANTS.GRADIENT_OPACITY.HOVER_1.WHITE_STOP}%)`,
|
|
2651
2667
|
"--atomix-glass-hover-2-opacity": opacityValuesHover2,
|
|
2652
|
-
"--atomix-glass-hover-2-gradient": gradientIsOverLight ? `radial-gradient(circle at ${gradientHover2X}% ${gradientHover2Y}%, rgba(
|
|
2668
|
+
"--atomix-glass-hover-2-gradient": gradientIsOverLight ? `radial-gradient(circle at ${gradientHover2X}% ${gradientHover2Y}%, rgba(${blackColor}, ${ATOMIX_GLASS.CONSTANTS.GRADIENT_OPACITY.HOVER_2.BLACK_START}) 0%, rgba(${blackColor}, ${ATOMIX_GLASS.CONSTANTS.GRADIENT_OPACITY.HOVER_2.BLACK_MID}) ${ATOMIX_GLASS.CONSTANTS.GRADIENT_OPACITY.HOVER_2.BLACK_STOP}%, rgba(${blackColor}, 0) ${ATOMIX_GLASS.CONSTANTS.GRADIENT_OPACITY.HOVER_2.BLACK_END}%)` : `radial-gradient(circle at ${gradientHover2X}% ${gradientHover2Y}%, rgba(${whiteColor}, ${ATOMIX_GLASS.CONSTANTS.GRADIENT_OPACITY.HOVER_2.WHITE_START}) 0%, rgba(${whiteColor}, 0) ${ATOMIX_GLASS.CONSTANTS.GRADIENT_OPACITY.HOVER_2.WHITE_STOP}%)`,
|
|
2653
2669
|
"--atomix-glass-hover-3-opacity": opacityValuesHover3,
|
|
2654
|
-
"--atomix-glass-hover-3-gradient": gradientIsOverLight ? `radial-gradient(circle at ${gradientHover3X}% ${gradientHover3Y}%, rgba(
|
|
2670
|
+
"--atomix-glass-hover-3-gradient": gradientIsOverLight ? `radial-gradient(circle at ${gradientHover3X}% ${gradientHover3Y}%, rgba(${blackColor}, ${ATOMIX_GLASS.CONSTANTS.GRADIENT_OPACITY.HOVER_3.BLACK_START}) 0%, rgba(${blackColor}, ${ATOMIX_GLASS.CONSTANTS.GRADIENT_OPACITY.HOVER_3.BLACK_MID}) ${ATOMIX_GLASS.CONSTANTS.GRADIENT_OPACITY.HOVER_3.BLACK_STOP}%, rgba(${blackColor}, 0) ${ATOMIX_GLASS.CONSTANTS.GRADIENT_OPACITY.HOVER_3.BLACK_END}%)` : `radial-gradient(circle at ${gradientHover3X}% ${gradientHover3Y}%, rgba(${whiteColor}, ${ATOMIX_GLASS.CONSTANTS.GRADIENT_OPACITY.HOVER_3.WHITE_START}) 0%, rgba(${whiteColor}, 0) ${ATOMIX_GLASS.CONSTANTS.GRADIENT_OPACITY.HOVER_3.WHITE_STOP}%)`,
|
|
2655
2671
|
"--atomix-glass-base-opacity": opacityValuesBase,
|
|
2656
|
-
"--atomix-glass-base-gradient": gradientIsOverLight ? `linear-gradient(${ATOMIX_GLASS.CONSTANTS.BASE_GRADIENT.ANGLE}deg, rgba(
|
|
2672
|
+
"--atomix-glass-base-gradient": gradientIsOverLight ? `linear-gradient(${ATOMIX_GLASS.CONSTANTS.BASE_GRADIENT.ANGLE}deg, rgba(${blackColor}, ${ATOMIX_GLASS.CONSTANTS.BASE_GRADIENT.BLACK_START_BASE + gradientMx * ATOMIX_GLASS.CONSTANTS.BASE_GRADIENT.BLACK_START_MULTIPLIER}) 0%, rgba(${blackColor}, ${ATOMIX_GLASS.CONSTANTS.BASE_GRADIENT.BLACK_MID_BASE + gradientMy * ATOMIX_GLASS.CONSTANTS.BASE_GRADIENT.BLACK_MID_MULTIPLIER}) ${ATOMIX_GLASS.CONSTANTS.BASE_GRADIENT.BLACK_MID_STOP}%, rgba(${blackColor}, ${ATOMIX_GLASS.CONSTANTS.BASE_GRADIENT.BLACK_END_BASE + Math.abs(gradientMx) * ATOMIX_GLASS.CONSTANTS.BASE_GRADIENT.BLACK_END_MULTIPLIER}) 100%)` : `rgba(${whiteColor}, ${ATOMIX_GLASS.CONSTANTS.BASE_GRADIENT.WHITE_OPACITY})`,
|
|
2657
2673
|
"--atomix-glass-overlay-opacity": opacityValuesOver,
|
|
2658
|
-
"--atomix-glass-overlay-gradient": gradientIsOverLight ? `radial-gradient(circle at ${gradientBaseX}% ${gradientBaseY}%, rgba(
|
|
2674
|
+
"--atomix-glass-overlay-gradient": gradientIsOverLight ? `radial-gradient(circle at ${gradientBaseX}% ${gradientBaseY}%, rgba(${blackColor}, ${ATOMIX_GLASS.CONSTANTS.OVERLAY_GRADIENT.BLACK_START_BASE + Math.abs(gradientMx) * ATOMIX_GLASS.CONSTANTS.OVERLAY_GRADIENT.BLACK_START_MULTIPLIER}) 0%, rgba(${blackColor}, ${ATOMIX_GLASS.CONSTANTS.OVERLAY_GRADIENT.BLACK_MID}) ${ATOMIX_GLASS.CONSTANTS.OVERLAY_GRADIENT.BLACK_MID_STOP}%, rgba(${blackColor}, ${ATOMIX_GLASS.CONSTANTS.OVERLAY_GRADIENT.BLACK_END_BASE + Math.abs(gradientMy) * ATOMIX_GLASS.CONSTANTS.OVERLAY_GRADIENT.BLACK_END_MULTIPLIER}) 100%)` : `rgba(${whiteColor}, ${ATOMIX_GLASS.CONSTANTS.OVERLAY_GRADIENT.WHITE_OPACITY})`
|
|
2659
2675
|
};
|
|
2660
2676
|
}), [
|
|
2661
2677
|
// Position styles - only specific properties
|
|
@@ -3175,16 +3191,8 @@ toolbarConfig: toolbarConfig, customToolbarActions: customToolbarActions, custom
|
|
|
3175
3191
|
interactive: interactive,
|
|
3176
3192
|
panEnabled: panEnabled
|
|
3177
3193
|
});
|
|
3178
|
-
// Legacy handlers for backward compatibility
|
|
3179
|
-
useCallback((() => {
|
|
3180
|
-
toolbarHandlers.onFullscreen(!toolbarState.isFullscreen);
|
|
3181
|
-
}), [ toolbarHandlers, toolbarState.isFullscreen ]), useCallback((async format => {
|
|
3182
|
-
await toolbarHandlers.onExport(format);
|
|
3183
|
-
}), [ toolbarHandlers ]), useCallback((() => {
|
|
3184
|
-
toolbarHandlers.onRefresh();
|
|
3185
|
-
}), [ toolbarHandlers ]),
|
|
3186
3194
|
// Sync all toolbar state with component state
|
|
3187
|
-
|
|
3195
|
+
useEffect((() => {
|
|
3188
3196
|
setIsFullscreen(toolbarState.isFullscreen), setIsExporting(toolbarState.isExporting);
|
|
3189
3197
|
}), [ toolbarState.isFullscreen, toolbarState.isExporting ]);
|
|
3190
3198
|
// Render enhanced toolbar
|
|
@@ -4048,8 +4056,7 @@ const AreaChart = memo( forwardRef((({datasets: datasets = [], config: config =
|
|
|
4048
4056
|
config: config,
|
|
4049
4057
|
renderContent: ({scales: scales, colors: colors, datasets: renderedDatasets, handlers: handlers, hoveredPoint: hoveredPoint, toolbarState: toolbarState, config: renderConfig}) => {
|
|
4050
4058
|
if (!renderedDatasets.length) return null;
|
|
4051
|
-
|
|
4052
|
-
const showTooltips = toolbarState?.showTooltips ?? renderConfig?.showTooltips ?? !0;
|
|
4059
|
+
const showTooltips = toolbarState?.showTooltips ?? renderConfig?.showTooltips ?? !0;
|
|
4053
4060
|
return jsxs(Fragment, {
|
|
4054
4061
|
children: [ renderedDatasets.map(((dataset, datasetIndex) => {
|
|
4055
4062
|
const color = dataset.color || colors[datasetIndex], data = dataset.data || [];
|
|
@@ -4249,8 +4256,7 @@ const BarChart = memo( forwardRef((({datasets: datasets = [], config: config =
|
|
|
4249
4256
|
config: config,
|
|
4250
4257
|
renderContent: ({scales: scales, colors: colors, datasets: renderedDatasets, handlers: handlers, hoveredPoint: hoveredPoint, toolbarState: toolbarState, config: renderConfig}) => {
|
|
4251
4258
|
if (!renderedDatasets.length) return null;
|
|
4252
|
-
|
|
4253
|
-
const showTooltips = toolbarState?.showTooltips ?? renderConfig?.showTooltips ?? !0, barDimensions = calculateBarDimensions(renderedDatasets, scales.width, scales.height, scales.padding, horizontal);
|
|
4259
|
+
const showTooltips = toolbarState?.showTooltips ?? renderConfig?.showTooltips ?? !0, barDimensions = calculateBarDimensions(renderedDatasets, scales.width, scales.height, scales.padding, horizontal);
|
|
4254
4260
|
return jsxs(Fragment, {
|
|
4255
4261
|
children: [ barDimensions.map(((bar, index) => {
|
|
4256
4262
|
const dataset = renderedDatasets[bar.datasetIndex];
|
|
@@ -4309,8 +4315,7 @@ const BubbleChart = memo( forwardRef((({bubbleData: bubbleData = [], config: co
|
|
|
4309
4315
|
config: config,
|
|
4310
4316
|
renderContent: ({scales: scales, colors: colors, datasets: renderedDatasets, handlers: handlers, hoveredPoint: hoveredPoint, toolbarState: toolbarState, config: renderConfig}) => {
|
|
4311
4317
|
if (!bubbleData.length) return null;
|
|
4312
|
-
|
|
4313
|
-
const showTooltips = toolbarState?.showTooltips ?? renderConfig?.showTooltips ?? !0, sizeValues = bubbleData.map((b => b.size)), minSize = Math.min(...sizeValues), sizeRange = Math.max(...sizeValues) - minSize || 1, bubbles = bubbleData.map(((bubble, index) => {
|
|
4318
|
+
const showTooltips = toolbarState?.showTooltips ?? renderConfig?.showTooltips ?? !0, sizeValues = bubbleData.map((b => b.size)), minSize = Math.min(...sizeValues), sizeRange = Math.max(...sizeValues) - minSize || 1, bubbles = bubbleData.map(((bubble, index) => {
|
|
4314
4319
|
// Calculate scaled size
|
|
4315
4320
|
const scaledSize = minBubbleSize + (bubble.size - minSize) / sizeRange * (maxBubbleSize - minBubbleSize), x = scales.padding.left + bubble.x / 100 * scales.innerWidth, y = scales.padding.top + scales.innerHeight - bubble.y / 100 * scales.innerHeight;
|
|
4316
4321
|
// Calculate position
|
|
@@ -4394,8 +4399,7 @@ const CandlestickChart = memo( forwardRef((({candlestickData: candlestickData =
|
|
|
4394
4399
|
config: config,
|
|
4395
4400
|
renderContent: ({scales: scales, colors: colors, datasets: renderedDatasets, handlers: handlers, hoveredPoint: hoveredPoint, toolbarState: toolbarState, config: renderConfig}) => {
|
|
4396
4401
|
if (!candlestickData.length) return null;
|
|
4397
|
-
|
|
4398
|
-
const showTooltips = toolbarState?.showTooltips ?? renderConfig?.showTooltips ?? candlestickOptions.showTooltips ?? !0, chartWidth = scales.width - 80, chartHeight = scales.height - 80, volumeHeight = showVolume ? chartHeight * volumeHeightRatio : 0, priceHeight = chartHeight - volumeHeight, allHighs = candlestickData.map((d => d.high)), allLows = candlestickData.map((d => d.low)), priceMin = Math.min(...allLows), priceMax = Math.max(...allHighs), priceRange = priceMax - priceMin || 1, volumes = candlestickData.map((d => d.volume || 0)), volumeRange = Math.max(...volumes) || 1, gridLines = [];
|
|
4402
|
+
const showTooltips = toolbarState?.showTooltips ?? renderConfig?.showTooltips ?? candlestickOptions.showTooltips ?? !0, chartWidth = scales.width - 80, chartHeight = scales.height - 80, volumeHeight = showVolume ? chartHeight * volumeHeightRatio : 0, priceHeight = chartHeight - volumeHeight, allHighs = candlestickData.map((d => d.high)), allLows = candlestickData.map((d => d.low)), priceMin = Math.min(...allLows), priceMax = Math.max(...allHighs), priceRange = priceMax - priceMin || 1, volumes = candlestickData.map((d => d.volume || 0)), volumeRange = Math.max(...volumes) || 1, gridLines = [];
|
|
4399
4403
|
if (showGrid) {
|
|
4400
4404
|
// Horizontal grid lines for price
|
|
4401
4405
|
for (let i = 0; i <= 5; i++) {
|
|
@@ -4572,8 +4576,7 @@ const DonutChart = memo( forwardRef((({datasets: datasets = [], config: config
|
|
|
4572
4576
|
percentage: point.value / total * 100
|
|
4573
4577
|
};
|
|
4574
4578
|
})), showTooltips = toolbarState?.showTooltips ?? renderConfig?.showTooltips ?? !0;
|
|
4575
|
-
|
|
4576
|
-
return jsxs(Fragment, {
|
|
4579
|
+
return jsxs(Fragment, {
|
|
4577
4580
|
children: [ slices.map(((slice, index) => {
|
|
4578
4581
|
const isHovered = hoveredPoint?.pointIndex === index;
|
|
4579
4582
|
return jsxs("g", {
|
|
@@ -4648,8 +4651,7 @@ const FunnelChart = memo( forwardRef((({funnelData: funnelData = [], config: co
|
|
|
4648
4651
|
config: config,
|
|
4649
4652
|
renderContent: ({scales: scales, colors: colors, datasets: renderedDatasets, handlers: handlers, hoveredPoint: hoveredPoint, toolbarState: toolbarState, config: renderConfig}) => {
|
|
4650
4653
|
if (!funnelData.length) return null;
|
|
4651
|
-
|
|
4652
|
-
const showTooltips = toolbarState?.showTooltips ?? renderConfig?.showTooltips ?? !0, chartWidth = scales.width - 120, chartHeight = scales.height - 120, maxValue = Math.max(...funnelData.map((d => d.value))), processedData = funnelData.map(((item, index) => {
|
|
4654
|
+
const showTooltips = toolbarState?.showTooltips ?? renderConfig?.showTooltips ?? !0, chartWidth = scales.width - 120, chartHeight = scales.height - 120, maxValue = Math.max(...funnelData.map((d => d.value))), processedData = funnelData.map(((item, index) => {
|
|
4653
4655
|
const percentage = item.value / maxValue * 100, conversionRate = index > 0 && funnelData[index - 1] ? item.value / funnelData[index - 1].value * 100 : 100;
|
|
4654
4656
|
return {
|
|
4655
4657
|
...item,
|
|
@@ -4767,8 +4769,7 @@ const GaugeChart = memo( forwardRef((({value: value, min: min = 0, max: max = 1
|
|
|
4767
4769
|
const innerRadius = radius * (1 - thickness), x1 = centerX + radius * Math.cos(startAngle), y1 = centerY + radius * Math.sin(startAngle), x2 = centerX + radius * Math.cos(endAngle), y2 = centerY + radius * Math.sin(endAngle), x3 = centerX + innerRadius * Math.cos(endAngle), y3 = centerY + innerRadius * Math.sin(endAngle), x4 = centerX + innerRadius * Math.cos(startAngle), y4 = centerY + innerRadius * Math.sin(startAngle), largeArcFlag = Math.abs(endAngle - startAngle) > Math.PI ? 1 : 0, sweepFlag = endAngle > startAngle ? 1 : 0;
|
|
4768
4770
|
return `M ${x1} ${y1} \n A ${radius} ${radius} 0 ${largeArcFlag} ${sweepFlag} ${x2} ${y2}\n L ${x3} ${y3}\n A ${innerRadius} ${innerRadius} 0 ${largeArcFlag} ${1 - sweepFlag} ${x4} ${y4}\n Z`;
|
|
4769
4771
|
}, zones = [];
|
|
4770
|
-
|
|
4771
|
-
for (const zone of colorZones) {
|
|
4772
|
+
for (const zone of colorZones) {
|
|
4772
4773
|
const zoneStart = startAngleRad + (zone.from - min) / (max - min) * angleRange, zoneEnd = startAngleRad + (zone.to - min) / (max - min) * angleRange;
|
|
4773
4774
|
zones.push(jsx("path", {
|
|
4774
4775
|
d: createArcPath(centerX, centerY, radius, zoneStart, zoneEnd, thickness),
|
|
@@ -4942,8 +4943,7 @@ const colorSchemes = {
|
|
|
4942
4943
|
config: config,
|
|
4943
4944
|
renderContent: ({scales: scales, colors: colors, datasets: renderedDatasets, handlers: handlers, hoveredPoint: hoveredPoint, toolbarState: toolbarState, config: renderConfig}) => {
|
|
4944
4945
|
const {matrix: matrix, xLabels: xLabels, yLabels: yLabels} = processedData, showTooltips = toolbarState?.showTooltips ?? renderConfig?.showTooltips ?? !0;
|
|
4945
|
-
|
|
4946
|
-
if (!matrix.length) return null;
|
|
4946
|
+
if (!matrix.length) return null;
|
|
4947
4947
|
const cellWidth = cellConfig.width || 40, cellHeight = cellConfig.height || 40, spacing = cellConfig.spacing || 2, borderRadius = cellConfig.borderRadius || 4;
|
|
4948
4948
|
// Leave space for x-axis labels
|
|
4949
4949
|
return xLabels.length, yLabels.length, jsxs(Fragment, {
|
|
@@ -5211,8 +5211,7 @@ const LineChart = memo( forwardRef((({datasets: datasets = [], config: config =
|
|
|
5211
5211
|
config: config,
|
|
5212
5212
|
renderContent: ({scales: scales, colors: colors, datasets: renderedDatasets, handlers: handlers, hoveredPoint: hoveredPoint, toolbarState: toolbarState, config: renderConfig}) => {
|
|
5213
5213
|
if (!renderedDatasets.length) return null;
|
|
5214
|
-
|
|
5215
|
-
const showTooltips = toolbarState?.showTooltips ?? renderConfig?.showTooltips ?? !0;
|
|
5214
|
+
const showTooltips = toolbarState?.showTooltips ?? renderConfig?.showTooltips ?? !0;
|
|
5216
5215
|
return toolbarState?.animationsEnabled ?? renderConfig?.animate ?? mergedLineOptions.smooth,
|
|
5217
5216
|
jsxs(Fragment, {
|
|
5218
5217
|
children: [ renderedDatasets.map(((dataset, datasetIndex) => {
|
|
@@ -5300,8 +5299,7 @@ const MultiAxisChart = memo( forwardRef((({datasets: datasets = [], config: con
|
|
|
5300
5299
|
config: config,
|
|
5301
5300
|
renderContent: ({scales: scales, colors: colors, datasets: renderedDatasets, handlers: handlers, hoveredPoint: hoveredPoint, toolbarState: toolbarState, config: renderConfig}) => {
|
|
5302
5301
|
if (!datasets.length) return null;
|
|
5303
|
-
|
|
5304
|
-
const effectiveShowGrid = toolbarState?.showGrid ?? !0, chartWidth = scales.width - 120, chartHeight = scales.height - 120, yAxisConfigs = yAxes.length ? yAxes : [ {
|
|
5302
|
+
const effectiveShowGrid = toolbarState?.showGrid ?? !0, chartWidth = scales.width - 120, chartHeight = scales.height - 120, yAxisConfigs = yAxes.length ? yAxes : [ {
|
|
5305
5303
|
id: "y-axis-1",
|
|
5306
5304
|
position: "left",
|
|
5307
5305
|
label: "Y Axis"
|
|
@@ -5599,8 +5597,7 @@ const RadarChart = memo( forwardRef((({datasets: datasets = [], config: config
|
|
|
5599
5597
|
config: config,
|
|
5600
5598
|
renderContent: ({scales: scales, colors: colors, datasets: renderedDatasets, handlers: handlers, hoveredPoint: hoveredPoint, toolbarState: toolbarState, config: renderConfig}) => {
|
|
5601
5599
|
if (!renderedDatasets.length) return null;
|
|
5602
|
-
|
|
5603
|
-
const showTooltips = toolbarState?.showTooltips ?? renderConfig?.showTooltips ?? !0, centerX = scales.width / 2, centerY = scales.height / 2, radius = .8 * Math.min(centerX, centerY), firstDataset = renderedDatasets[0];
|
|
5600
|
+
const showTooltips = toolbarState?.showTooltips ?? renderConfig?.showTooltips ?? !0, centerX = scales.width / 2, centerY = scales.height / 2, radius = .8 * Math.min(centerX, centerY), firstDataset = renderedDatasets[0];
|
|
5604
5601
|
if (!firstDataset) return null;
|
|
5605
5602
|
const dataPoints = firstDataset.data || [], angleStep = 2 * Math.PI / dataPoints.length;
|
|
5606
5603
|
// Calculate value bounds
|
|
@@ -5746,8 +5743,7 @@ const ScatterChart = memo( forwardRef((({datasets: datasets = [], config: confi
|
|
|
5746
5743
|
config: config,
|
|
5747
5744
|
renderContent: ({scales: scales, colors: colors, datasets: renderedDatasets, handlers: handlers, hoveredPoint: hoveredPoint, toolbarState: toolbarState, config: renderConfig}) => {
|
|
5748
5745
|
if (!renderedDatasets.length) return null;
|
|
5749
|
-
|
|
5750
|
-
const showTooltips = toolbarState?.showTooltips ?? renderConfig?.showTooltips ?? !0, points = [];
|
|
5746
|
+
const showTooltips = toolbarState?.showTooltips ?? renderConfig?.showTooltips ?? !0, points = [];
|
|
5751
5747
|
return renderedDatasets.forEach(((dataset, datasetIndex) => {
|
|
5752
5748
|
const color = dataset.color || colors[datasetIndex % colors.length];
|
|
5753
5749
|
dataset.data?.forEach(((point, pointIndex) => {
|
|
@@ -6034,8 +6030,7 @@ const WaterfallChart = memo( forwardRef((({waterfallData: waterfallData = [], c
|
|
|
6034
6030
|
config: config,
|
|
6035
6031
|
renderContent: ({scales: scales, colors: colors, datasets: renderedDatasets, handlers: handlers, hoveredPoint: hoveredPoint, toolbarState: toolbarState, config: renderConfig}) => {
|
|
6036
6032
|
if (!waterfallData.length) return null;
|
|
6037
|
-
|
|
6038
|
-
const shouldAnimate = toolbarState?.animationsEnabled ?? renderConfig?.animate ?? animate, chartWidth = scales.width - 120, chartHeight = scales.height - 120;
|
|
6033
|
+
const shouldAnimate = toolbarState?.animationsEnabled ?? renderConfig?.animate ?? animate, chartWidth = scales.width - 120, chartHeight = scales.height - 120;
|
|
6039
6034
|
// Calculate cumulative values and positions
|
|
6040
6035
|
let cumulativeValue = 0;
|
|
6041
6036
|
const processedData = waterfallData.map(((item, index) => {
|