@trap_stevo/legendarybuilderproreact-ui
Version:
The legendary UI & utility API that makes your application a legendary application. ~ Created by Steven Compton
528 lines • 28.6 kB
JavaScript
import _extends from "@babel/runtime/helpers/extends";
import _defineProperty from "@babel/runtime/helpers/defineProperty";
import _typeof from "@babel/runtime/helpers/typeof";
import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
import * as React from "react";
import { useState, useEffect, useRef, useLayoutEffect } from "react";
import { motion, AnimatePresence } from "framer-motion";
import { useTimeout } from "../HUDManagers/HUDUniversalHUDEventEffectsManager.js";
import HUDIcon from "./HUDIcon.js";
function HUDComparisonTable(_ref) {
var _ref$tableRowContentI = _ref.tableRowContentIconContainerAnimationTransitionConfigurationSettings,
tableRowContentIconContainerAnimationTransitionConfigurationSettings = _ref$tableRowContentI === void 0 ? {} : _ref$tableRowContentI,
_ref$highlightHeaderC = _ref.highlightHeaderContainerAnimationTransitionConfigurationSettings,
highlightHeaderContainerAnimationTransitionConfigurationSettings = _ref$highlightHeaderC === void 0 ? {} : _ref$highlightHeaderC,
_ref$highlightFooterC = _ref.highlightFooterContainerAnimationTransitionConfigurationSettings,
highlightFooterContainerAnimationTransitionConfigurationSettings = _ref$highlightFooterC === void 0 ? {} : _ref$highlightFooterC,
_ref$highlightColumnO = _ref.highlightColumnOverlayAnimationTransitionConfigurationSettings,
highlightColumnOverlayAnimationTransitionConfigurationSettings = _ref$highlightColumnO === void 0 ? {} : _ref$highlightColumnO,
_ref$highlightHeaderC2 = _ref.highlightHeaderContainerInitialAnimationConfigurationSettings,
highlightHeaderContainerInitialAnimationConfigurationSettings = _ref$highlightHeaderC2 === void 0 ? {} : _ref$highlightHeaderC2,
_ref$highlightFooterC2 = _ref.highlightFooterContainerInitialAnimationConfigurationSettings,
highlightFooterContainerInitialAnimationConfigurationSettings = _ref$highlightFooterC2 === void 0 ? {} : _ref$highlightFooterC2,
_ref$highlightColumnO2 = _ref.highlightColumnOverlayInitialAnimationConfigurationSettings,
highlightColumnOverlayInitialAnimationConfigurationSettings = _ref$highlightColumnO2 === void 0 ? {} : _ref$highlightColumnO2,
_ref$tableColumnHeade = _ref.tableColumnHeaderAnimationTransitionConfigurationSettings,
tableColumnHeaderAnimationTransitionConfigurationSettings = _ref$tableColumnHeade === void 0 ? {} : _ref$tableColumnHeade,
_ref$tableRowContentI2 = _ref.tableRowContentIconContainerHoverConfigurationSettings,
tableRowContentIconContainerHoverConfigurationSettings = _ref$tableRowContentI2 === void 0 ? {} : _ref$tableRowContentI2,
_ref$highlightHeaderC3 = _ref.highlightHeaderContainerAnimationConfigurationSettings,
highlightHeaderContainerAnimationConfigurationSettings = _ref$highlightHeaderC3 === void 0 ? {} : _ref$highlightHeaderC3,
_ref$highlightFooterC3 = _ref.highlightFooterContainerAnimationConfigurationSettings,
highlightFooterContainerAnimationConfigurationSettings = _ref$highlightFooterC3 === void 0 ? {} : _ref$highlightFooterC3,
_ref$highlightColumnO3 = _ref.highlightColumnOverlayAnimationConfigurationSettings,
highlightColumnOverlayAnimationConfigurationSettings = _ref$highlightColumnO3 === void 0 ? {} : _ref$highlightColumnO3,
_ref$rowToolTipAnimat = _ref.rowToolTipAnimationTransitionConfigurationSettings,
rowToolTipAnimationTransitionConfigurationSettings = _ref$rowToolTipAnimat === void 0 ? {} : _ref$rowToolTipAnimat,
_ref$rowToolTipInitia = _ref.rowToolTipInitialAnimationConfigurationSettings,
rowToolTipInitialAnimationConfigurationSettings = _ref$rowToolTipInitia === void 0 ? {} : _ref$rowToolTipInitia,
_ref$rowToolTipExitAn = _ref.rowToolTipExitAnimationConfigurationSettings,
rowToolTipExitAnimationConfigurationSettings = _ref$rowToolTipExitAn === void 0 ? {} : _ref$rowToolTipExitAn,
_ref$rowToolTipAnimat2 = _ref.rowToolTipAnimationConfigurationSettings,
rowToolTipAnimationConfigurationSettings = _ref$rowToolTipAnimat2 === void 0 ? {} : _ref$rowToolTipAnimat2,
_ref$tableRowContentI3 = _ref.tableRowContentIconConfigurationSettings,
tableRowContentIconConfigurationSettings = _ref$tableRowContentI3 === void 0 ? {} : _ref$tableRowContentI3,
_ref$tableRowContentI4 = _ref.tableRowContentIconContainerConfigurationSettings,
tableRowContentIconContainerConfigurationSettings = _ref$tableRowContentI4 === void 0 ? {} : _ref$tableRowContentI4,
_ref$tableRowAnimatio = _ref.tableRowAnimationTransitionConfigurationSettings,
tableRowAnimationTransitionConfigurationSettings = _ref$tableRowAnimatio === void 0 ? {} : _ref$tableRowAnimatio,
_ref$tableRowInitialA = _ref.tableRowInitialAnimationConfigurationSettings,
tableRowInitialAnimationConfigurationSettings = _ref$tableRowInitialA === void 0 ? {} : _ref$tableRowInitialA,
_ref$tableRowContentC = _ref.tableRowContentContainerConfigurationSettings,
tableRowContentContainerConfigurationSettings = _ref$tableRowContentC === void 0 ? {} : _ref$tableRowContentC,
_ref$comparisonTableC = _ref.comparisonTableContainerConfigurationSettings,
comparisonTableContainerConfigurationSettings = _ref$comparisonTableC === void 0 ? {} : _ref$comparisonTableC,
_ref$highlightHeaderC4 = _ref.highlightHeaderContainerConfigurationSettings,
highlightHeaderContainerConfigurationSettings = _ref$highlightHeaderC4 === void 0 ? {} : _ref$highlightHeaderC4,
_ref$highlightFooterC4 = _ref.highlightFooterContainerConfigurationSettings,
highlightFooterContainerConfigurationSettings = _ref$highlightFooterC4 === void 0 ? {} : _ref$highlightFooterC4,
_ref$tableContainerHo = _ref.tableContainerHoveredRowConfigurationSettings,
tableContainerHoveredRowConfigurationSettings = _ref$tableContainerHo === void 0 ? {} : _ref$tableContainerHo,
_ref$tableRowFeatures = _ref.tableRowFeaturesContentConfigurationSettings,
tableRowFeaturesContentConfigurationSettings = _ref$tableRowFeatures === void 0 ? {} : _ref$tableRowFeatures,
_ref$tableColumnHeade2 = _ref.tableColumnHeaderHoverConfigurationSettings,
tableColumnHeaderHoverConfigurationSettings = _ref$tableColumnHeade2 === void 0 ? {} : _ref$tableColumnHeade2,
_ref$highlightColumnO4 = _ref.highlightColumnOverlayConfigurationSettings,
highlightColumnOverlayConfigurationSettings = _ref$highlightColumnO4 === void 0 ? {} : _ref$highlightColumnO4,
_ref$featuresColumnHe = _ref.featuresColumnHeaderConfigurationSettings,
featuresColumnHeaderConfigurationSettings = _ref$featuresColumnHe === void 0 ? {} : _ref$featuresColumnHe,
_ref$tableRowAnimatio2 = _ref.tableRowAnimationConfigurationSettings,
tableRowAnimationConfigurationSettings = _ref$tableRowAnimatio2 === void 0 ? {} : _ref$tableRowAnimatio2,
_ref$tableColumnHeade3 = _ref.tableColumnHeaderConfigurationSettings,
tableColumnHeaderConfigurationSettings = _ref$tableColumnHeade3 === void 0 ? {} : _ref$tableColumnHeade3,
_ref$tableContainerCo = _ref.tableContainerConfigurationSettings,
tableContainerConfigurationSettings = _ref$tableContainerCo === void 0 ? {} : _ref$tableContainerCo,
_ref$rowToolTipConfig = _ref.rowToolTipConfigurationSettings,
rowToolTipConfigurationSettings = _ref$rowToolTipConfig === void 0 ? {} : _ref$rowToolTipConfig,
_ref$tableConfigurati = _ref.tableConfigurationSettings,
tableConfigurationSettings = _ref$tableConfigurati === void 0 ? {} : _ref$tableConfigurati,
_ref$tableRowContentI5 = _ref.tableRowContentIconContainerConfigurations,
tableRowContentIconContainerConfigurations = _ref$tableRowContentI5 === void 0 ? {} : _ref$tableRowContentI5,
_ref$comparisonTableC2 = _ref.comparisonTableContainerConfigurations,
comparisonTableContainerConfigurations = _ref$comparisonTableC2 === void 0 ? {} : _ref$comparisonTableC2,
_ref$highlightHeaderC5 = _ref.highlightHeaderContainerConfigurations,
highlightHeaderContainerConfigurations = _ref$highlightHeaderC5 === void 0 ? {} : _ref$highlightHeaderC5,
_ref$highlightFooterC5 = _ref.highlightFooterContainerConfigurations,
highlightFooterContainerConfigurations = _ref$highlightFooterC5 === void 0 ? {} : _ref$highlightFooterC5,
_ref$tableRowContentC2 = _ref.tableRowContentContainerConfigurations,
tableRowContentContainerConfigurations = _ref$tableRowContentC2 === void 0 ? {} : _ref$tableRowContentC2,
_ref$tableRowFeatures2 = _ref.tableRowFeaturesContentConfigurations,
tableRowFeaturesContentConfigurations = _ref$tableRowFeatures2 === void 0 ? {} : _ref$tableRowFeatures2,
_ref$highlightColumnO5 = _ref.highlightColumnOverlayConfigurations,
highlightColumnOverlayConfigurations = _ref$highlightColumnO5 === void 0 ? {} : _ref$highlightColumnO5,
_ref$featuresColumnHe2 = _ref.featuresColumnHeaderConfigurations,
featuresColumnHeaderConfigurations = _ref$featuresColumnHe2 === void 0 ? {} : _ref$featuresColumnHe2,
_ref$tableRowContentI6 = _ref.tableRowContentIconConfigurations,
tableRowContentIconConfigurations = _ref$tableRowContentI6 === void 0 ? {} : _ref$tableRowContentI6,
_ref$tableColumnHeade4 = _ref.tableColumnHeaderConfigurations,
tableColumnHeaderConfigurations = _ref$tableColumnHeade4 === void 0 ? {} : _ref$tableColumnHeade4,
_ref$tableContainerCo2 = _ref.tableContainerConfigurations,
tableContainerConfigurations = _ref$tableContainerCo2 === void 0 ? {} : _ref$tableContainerCo2,
_ref$rowToolTipConfig2 = _ref.rowToolTipConfigurations,
rowToolTipConfigurations = _ref$rowToolTipConfig2 === void 0 ? {} : _ref$rowToolTipConfig2,
_ref$tableRowConfigur = _ref.tableRowConfigurations,
tableRowConfigurations = _ref$tableRowConfigur === void 0 ? {} : _ref$tableRowConfigur,
_ref$tableConfigurati2 = _ref.tableConfigurations,
tableConfigurations = _ref$tableConfigurati2 === void 0 ? {} : _ref$tableConfigurati2,
_ref$enableColumnHigh = _ref.enableColumnHighlighting,
enableColumnHighlighting = _ref$enableColumnHigh === void 0 ? true : _ref$enableColumnHigh,
_ref$showFeaturesColu = _ref.showFeaturesColumn,
showFeaturesColumn = _ref$showFeaturesColu === void 0 ? true : _ref$showFeaturesColu,
_ref$enableSorting = _ref.enableSorting,
enableSorting = _ref$enableSorting === void 0 ? false : _ref$enableSorting,
_ref$highlightColumnH = _ref.highlightColumnHeaderBackgroundHoverColor,
highlightColumnHeaderBackgroundHoverColor = _ref$highlightColumnH === void 0 ? "rgba(0, 200, 255, 0.2)" : _ref$highlightColumnH,
_ref$highlightColumnH2 = _ref.highlightColumnHeaderBackgroundColor,
highlightColumnHeaderBackgroundColor = _ref$highlightColumnH2 === void 0 ? "rgba(0, 0, 0, 0.05)" : _ref$highlightColumnH2,
_ref$highlightColumnB = _ref.highlightColumnBackgroundColor,
highlightColumnBackgroundColor = _ref$highlightColumnB === void 0 ? "rgba(0, 169, 255, 0.2)" : _ref$highlightColumnB,
_ref$tableRowBackgrou = _ref.tableRowBackgroundHoverColor,
tableRowBackgroundHoverColor = _ref$tableRowBackgrou === void 0 ? "rgba(0, 200, 255, 0.2)" : _ref$tableRowBackgrou,
_ref$tableRowBackgrou2 = _ref.tableRowBackgroundColor,
tableRowBackgroundColor = _ref$tableRowBackgrou2 === void 0 ? "rgba(0, 0, 0, 0.05)" : _ref$tableRowBackgrou2,
_ref$tableRowColumnCo = _ref.tableRowColumnColor,
tableRowColumnColor = _ref$tableRowColumnCo === void 0 ? "transparent" : _ref$tableRowColumnCo,
_ref$dimmedRowOpacity = _ref.dimmedRowOpacity,
dimmedRowOpacity = _ref$dimmedRowOpacity === void 0 ? 0.2169 : _ref$dimmedRowOpacity,
_ref$onColumnHeaderCl = _ref.onColumnHeaderClicked,
onColumnHeaderClicked = _ref$onColumnHeaderCl === void 0 ? null : _ref$onColumnHeaderCl,
_ref$onRowClicked = _ref.onRowClicked,
onRowClicked = _ref$onRowClicked === void 0 ? null : _ref$onRowClicked,
_ref$featuresColumnHe3 = _ref.featuresColumnHeaderContent,
featuresColumnHeaderContent = _ref$featuresColumnHe3 === void 0 ? null : _ref$featuresColumnHe3,
_ref$highlightHeaderA = _ref.highlightHeaderAttachment,
highlightHeaderAttachment = _ref$highlightHeaderA === void 0 ? null : _ref$highlightHeaderA,
_ref$highlightFooterA = _ref.highlightFooterAttachment,
highlightFooterAttachment = _ref$highlightFooterA === void 0 ? null : _ref$highlightFooterA,
_ref$highlightColumnO6 = _ref.highlightColumnOverlay,
highlightColumnOverlay = _ref$highlightColumnO6 === void 0 ? null : _ref$highlightColumnO6,
_ref$highlightColumn = _ref.highlightColumn,
highlightColumn = _ref$highlightColumn === void 0 ? null : _ref$highlightColumn,
_ref$footer = _ref.footer,
footer = _ref$footer === void 0 ? null : _ref$footer,
_ref$columns = _ref.columns,
columns = _ref$columns === void 0 ? [] : _ref$columns,
_ref$rows = _ref.rows,
rows = _ref$rows === void 0 ? [] : _ref$rows;
var _useTimeout = useTimeout(),
schedule = _useTimeout.schedule;
var _useState = useState({
text: "",
visible: false,
x: 0,
y: 0
}),
_useState2 = _slicedToArray(_useState, 2),
tooltip = _useState2[0],
setTooltip = _useState2[1];
var _useState3 = useState({
key: null,
direction: "asc"
}),
_useState4 = _slicedToArray(_useState3, 2),
sortConfig = _useState4[0],
setSortConfig = _useState4[1];
var _useState5 = useState(null),
_useState6 = _slicedToArray(_useState5, 2),
highlightColumnBounds = _useState6[0],
setHighlightColumnBounds = _useState6[1];
var _useState7 = useState(null),
_useState8 = _slicedToArray(_useState7, 2),
highlightColumnPos = _useState8[0],
setHighlightColumnPos = _useState8[1];
var _useState9 = useState(null),
_useState10 = _slicedToArray(_useState9, 2),
hoveredRow = _useState10[0],
setHoveredRow = _useState10[1];
var _useState11 = useState(rows),
_useState12 = _slicedToArray(_useState11, 2),
sortedRows = _useState12[0],
setSortedRows = _useState12[1];
var highlightColumnRef = useRef(null);
var tableContainerRef = useRef(null);
var tableRef = useRef(null);
var handleSort = function handleSort(columnIndex) {
if (!enableSorting) {
return;
}
var newDirection = sortConfig.key === columnIndex && sortConfig.direction === "asc" ? "desc" : "asc";
var sortedData = _toConsumableArray(sortedRows).sort(function (a, b) {
var valA = a.values[columnIndex];
var valB = b.values[columnIndex];
if (_typeof(valA) === "object" || _typeof(valB) === "object") {
return 0;
}
return newDirection === "asc" ? valA.toString().localeCompare(valB.toString()) : valB.toString().localeCompare(valA.toString());
});
setSortConfig({
key: columnIndex,
direction: newDirection
});
setSortedRows(sortedData);
};
var handleColumnHeaderClick = function handleColumnHeaderClick(columnIndex, columnData) {
handleSort(columnIndex);
if (onColumnHeaderClicked) {
onColumnHeaderClicked(columnIndex, columnData);
}
};
var updateHighlightPosition = function updateHighlightPosition() {
schedule(function () {
if (highlightColumnRef.current && tableRef.current) {
var columnRect = highlightColumnRef.current.getBoundingClientRect();
var tableRect = tableRef.current.getBoundingClientRect();
var centeredPosition = columnRect.left + columnRect.width / 2 - tableRect.left;
setHighlightColumnPos(centeredPosition);
setHighlightColumnBounds({
left: columnRect.left - tableRect.left,
width: columnRect.width,
height: tableRef.current.getBoundingClientRect().height
});
}
}, 100);
};
var showTooltip = function showTooltip(text, event) {
if (!text) {
return;
}
setTooltip({
text: text,
visible: true,
x: event.clientX + 15,
y: event.clientY + 15
});
};
var hideTooltip = function hideTooltip() {
setTooltip({
text: "",
visible: false,
x: 0,
y: 0
});
};
useEffect(function () {
if (rows.length > 0) {
setSortedRows(rows);
}
}, [rows]);
useEffect(function () {
var handleScroll = function handleScroll() {
if (tableContainerRef.current) {
var thead = tableContainerRef.current.querySelector("thead");
thead.style.transform = "translateY(".concat(tableContainerRef.current.scrollTop, "px)");
}
};
var container = tableContainerRef.current;
if (container) {
container.addEventListener("scroll", handleScroll);
}
return function () {
if (container) {
container.removeEventListener("scroll", handleScroll);
}
};
}, []);
useLayoutEffect(function () {
updateHighlightPosition();
window.addEventListener("resize", updateHighlightPosition);
return function () {
window.removeEventListener("resize", updateHighlightPosition);
};
}, [highlightColumn, rows]);
useEffect(function () {
updateHighlightPosition();
}, [hoveredRow, showFeaturesColumn]);
return /*#__PURE__*/React.createElement("div", _extends({
ref: tableRef,
style: _objectSpread({
position: "relative",
width: "100%",
paddingTop: highlightHeaderAttachment ? "50px" : "0"
}, comparisonTableContainerConfigurationSettings)
}, comparisonTableContainerConfigurations), highlightColumn !== null && highlightHeaderAttachment && highlightColumnPos !== null && /*#__PURE__*/React.createElement(motion.div, _extends({
initial: _objectSpread({
opacity: 0,
y: 10,
left: "".concat(highlightColumnPos, "px"),
transform: "translateX(-50%)"
}, highlightHeaderContainerInitialAnimationConfigurationSettings),
animate: _objectSpread({
opacity: 1,
y: 0,
left: "".concat(highlightColumnPos, "px"),
transform: "translateX(-50%)"
}, highlightHeaderContainerAnimationConfigurationSettings),
transition: _objectSpread({
duration: 0.369,
ease: "easeOut"
}, highlightHeaderContainerAnimationTransitionConfigurationSettings),
onAnimationComplete: updateHighlightPosition,
style: _objectSpread({
position: "absolute",
whiteSpace: "nowrap",
textAlign: "center",
transition: "left 0.069s linear",
transform: "translateX(-50%)",
fontWeight: "bold",
fontSize: "14px",
borderRadius: "0.369rem",
boxShadow: "0px 4px 8px rgba(0, 0, 0, 0.4)",
backgroundColor: "#1A73E8",
color: "#fff",
padding: "3.69px 12.69px",
zIndex: 100,
left: "".concat(highlightColumnPos, "px"),
top: "-5.69px"
}, highlightHeaderContainerConfigurationSettings)
}, highlightHeaderContainerConfigurations), highlightHeaderAttachment), highlightColumn !== null && highlightColumnOverlay && highlightColumnBounds && /*#__PURE__*/React.createElement(motion.div, _extends({
initial: _objectSpread({
opacity: 0
}, highlightColumnOverlayInitialAnimationConfigurationSettings),
animate: _objectSpread({
opacity: 1
}, highlightColumnOverlayAnimationConfigurationSettings),
transition: _objectSpread({
duration: 0.169
}, highlightColumnOverlayAnimationTransitionConfigurationSettings),
style: _objectSpread({
position: "absolute",
pointerEvents: "none",
height: "".concat(highlightColumnBounds.height, "px"),
width: "".concat(highlightColumnBounds.width, "px"),
zIndex: 5,
left: "".concat(highlightColumnBounds.left, "px")
}, highlightColumnOverlayConfigurationSettings)
}, highlightColumnOverlayConfigurations), highlightColumnOverlay(highlightColumn)), /*#__PURE__*/React.createElement(AnimatePresence, null, tooltip.visible && /*#__PURE__*/React.createElement(motion.div, _extends({
initial: _objectSpread({
opacity: 0,
scale: 0.9
}, rowToolTipInitialAnimationConfigurationSettings),
animate: _objectSpread({
opacity: 1,
scale: 1
}, rowToolTipAnimationConfigurationSettings),
exit: _objectSpread({
opacity: 0,
scale: 0.9
}, rowToolTipExitAnimationConfigurationSettings),
transition: _objectSpread({
duration: 0.2,
ease: "easeOut"
}, rowToolTipAnimationTransitionConfigurationSettings),
style: _objectSpread({
position: "fixed",
pointerEvents: "none",
whiteSpace: "nowrap",
fontSize: "14px",
borderRadius: "8px",
boxShadow: "0px 0px 15px rgba(0, 255, 255, 0.69)",
background: "rgba(20, 20, 20, 0.95)",
color: "#fff",
padding: "10px 15px",
zIndex: 1000,
left: tooltip.x,
top: tooltip.y
}, rowToolTipConfigurationSettings)
}, rowToolTipConfigurations), tooltip.text)), /*#__PURE__*/React.createElement("div", _extends({
ref: tableContainerRef,
style: hoveredRow !== null ? _objectSpread({
position: "relative",
msOverflowStyle: "none",
scrollbarWidth: "none",
overflowY: "auto",
transition: "all 0.3s ease",
backdropFilter: "blur(10px)",
border: "1px solid rgba(255, 255, 255, 0.1)",
borderRadius: "12px",
boxShadow: "0px 4px 20px rgba(0, 0, 0, 0.5)",
backgroundColor: "rgba(25, 25, 25, 0.9)",
maxHeight: "600px",
width: "100%",
padding: "10px",
paddingLeft: "27px"
}, tableContainerHoveredRowConfigurationSettings) : _objectSpread({
position: "relative",
msOverflowStyle: "none",
scrollbarWidth: "none",
overflowY: "auto",
transition: "all 0.3s ease",
backdropFilter: "blur(10px)",
border: "1px solid rgba(255, 255, 255, 0.1)",
borderRadius: "12px",
boxShadow: "0px 4px 20px rgba(0, 0, 0, 0.5)",
backgroundColor: "rgba(25, 25, 25, 0.9)",
maxHeight: "500px",
width: "100%",
padding: "10px"
}, tableContainerConfigurationSettings)
}, tableContainerConfigurations), /*#__PURE__*/React.createElement("table", _extends({
style: _objectSpread({
position: "relative",
borderCollapse: "collapse",
textAlign: "left",
fontFamily: "'Poppins', sans-serif",
fontSize: "16px",
color: "#FFF",
width: "100%",
zIndex: 10
}, tableConfigurationSettings)
}, tableConfigurations), /*#__PURE__*/React.createElement("thead", null, /*#__PURE__*/React.createElement("tr", null, showFeaturesColumn && /*#__PURE__*/React.createElement("th", _extends({
style: _objectSpread({
textAlign: "left",
fontSize: "18.69px",
padding: "12px"
}, featuresColumnHeaderConfigurationSettings)
}, featuresColumnHeaderConfigurations), featuresColumnHeaderContent ? featuresColumnHeaderContent : "Features"), columns.map(function (col, index) {
return /*#__PURE__*/React.createElement(motion.th, _extends({
key: index,
ref: index === highlightColumn ? highlightColumnRef : null,
whileHover: _objectSpread({
backgroundColor: "rgba(0, 255, 255, 0.2)",
scale: 1.069
}, tableColumnHeaderHoverConfigurationSettings),
transition: _objectSpread({
duration: 0.3
}, tableColumnHeaderAnimationTransitionConfigurationSettings),
style: _objectSpread({
cursor: enableSorting ? "pointer" : "default",
userSelect: "none",
textAlign: "center",
fontSize: "17.69px",
background: highlightColumn === index ? highlightColumnHeaderBackgroundHoverColor : highlightColumnHeaderBackgroundColor,
padding: "12px"
}, tableColumnHeaderConfigurationSettings),
onClick: function onClick() {
return handleColumnHeaderClick(index, col);
}
}, tableColumnHeaderConfigurations), col.title);
}))), /*#__PURE__*/React.createElement("tbody", null, sortedRows.map(function (row, rowIndex) {
return /*#__PURE__*/React.createElement(motion.tr, _extends({
key: rowIndex,
initial: _objectSpread({
opacity: 1,
scale: 1
}, tableRowInitialAnimationConfigurationSettings),
animate: _objectSpread({
backgroundColor: hoveredRow === rowIndex ? tableRowBackgroundHoverColor : tableRowBackgroundColor,
opacity: hoveredRow !== null && hoveredRow !== rowIndex ? dimmedRowOpacity : 1,
scale: hoveredRow === rowIndex ? 1.05 : 1,
zIndex: hoveredRow === rowIndex ? 20 : 10
}, tableRowAnimationConfigurationSettings),
transition: _objectSpread({
duration: 0.3
}, tableRowAnimationTransitionConfigurationSettings),
onMouseLeave: function onMouseLeave() {
return setHoveredRow(null);
},
onMouseEnter: function onMouseEnter() {
return setHoveredRow(rowIndex);
},
onClick: function onClick() {
if (onRowClicked) {
onRowClicked(rowIndex, row);
}
}
}, tableRowConfigurations), showFeaturesColumn && /*#__PURE__*/React.createElement("td", _extends({
style: _objectSpread({
fontWeight: "500",
padding: "12px"
}, tableRowFeaturesContentConfigurationSettings)
}, tableRowFeaturesContentConfigurations), row.feature), columns.map(function (col, colIndex) {
var _row$values$colIndex, _row$values$colIndex2;
return /*#__PURE__*/React.createElement("td", _extends({
key: colIndex,
style: _objectSpread({
textAlign: "center",
backgroundColor: enableColumnHighlighting && highlightColumn === colIndex ? highlightColumnBackgroundColor : tableRowColumnColor,
padding: "12px"
}, tableRowContentContainerConfigurationSettings)
}, tableRowContentContainerConfigurations), (_row$values$colIndex = row.values[colIndex]) !== null && _row$values$colIndex !== void 0 && _row$values$colIndex.component ? row.values[colIndex].component : (_row$values$colIndex2 = row.values[colIndex]) !== null && _row$values$colIndex2 !== void 0 && _row$values$colIndex2.name ? /*#__PURE__*/React.createElement(motion.div, _extends({
whileHover: _objectSpread({
scale: 1.5
}, tableRowContentIconContainerHoverConfigurationSettings),
transition: _objectSpread({
duration: 0.2
}, tableRowContentIconContainerAnimationTransitionConfigurationSettings)
}, tableRowContentIconContainerConfigurations), /*#__PURE__*/React.createElement(HUDIcon, _extends({}, row.values[colIndex], {
iconConfigurationSettings: _objectSpread({
fontSize: "26px"
}, tableRowContentIconConfigurationSettings)
}, tableRowContentIconConfigurations))) : row.values[colIndex] || "—");
}));
})))), highlightColumn !== null && highlightFooterAttachment && highlightColumnPos !== null && /*#__PURE__*/React.createElement(motion.div, _extends({
initial: _objectSpread({
opacity: 0,
y: -10,
left: "".concat(highlightColumnPos, "px"),
transform: "translateX(-50%)"
}, highlightFooterContainerInitialAnimationConfigurationSettings),
animate: _objectSpread({
opacity: 1,
y: 0,
left: "".concat(highlightColumnPos, "px"),
transform: "translateX(-50%)"
}, highlightFooterContainerAnimationConfigurationSettings),
transition: _objectSpread({
duration: 0.369,
ease: "easeOut"
}, highlightFooterContainerAnimationTransitionConfigurationSettings),
onAnimationComplete: updateHighlightPosition,
style: _objectSpread({
position: "absolute",
textAlign: "center",
transform: "translateX(-50%)",
fontWeight: "bold",
fontSize: "14px",
borderRadius: "25px",
backgroundColor: "rgba(255, 255, 255, 0.1)",
zIndex: 100,
padding: "12px 24px",
bottom: "-45px",
left: "".concat(highlightColumnPos, "px")
}, highlightFooterContainerConfigurationSettings)
}, highlightFooterContainerConfigurations), highlightFooterAttachment));
}
export default HUDComparisonTable;