UNPKG

@trap_stevo/legendarybuilderproreact-ui

Version:

The legendary UI & utility API that makes your application a legendary application. ~ Created by Steven Compton

235 lines 9.78 kB
import _defineProperty from "@babel/runtime/helpers/defineProperty"; 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 React, { useEffect, useState } from "react"; import PropTypes from "prop-types"; import HUDHolographicBorder from "./HUDHolographicBorder.js"; import "./LegendaryAnimations/HUDAnimationEssentials.css"; var baseConfigurationSettings = { container: { position: "relative", display: "flex", flexDirection: "column", justifyContent: "center", alignItems: "center", overflow: "hidden", background: "linear-gradient(135deg, #1a1a2e, #16213e)", borderRadius: "12px", color: "#ffffff", fontFamily: "'Segoe UI', Tahoma, Geneva, Verdana, sans-serif", boxShadow: "0 8px 16px rgba(0, 0, 0, 0.6)", border: "1px solid rgba(0, 123, 255, 0.5)", textAlign: "center", zIndex: "1000", padding: "20px", margin: "20px auto" }, mandatoryContainer: { position: "fixed", display: "flex", transform: "translate(-50%, -50%)", padding: "30px", left: "50vw", top: "50vh", margin: "0rem" }, embedContainer: { position: "relative", boxShadow: "none", margin: "0" }, message: { textShadow: "0 0 8px rgba(0, 255, 255, 0.7)", animation: "glow 1.5s infinite", fontSize: "18px", color: "#00aaff", marginBottom: "15px" }, button: { transition: "background-color 0.3s ease, transform 0.3s ease", animation: "pulse 2s infinite", textTransform: "uppercase", letterSpacing: "1.5px", cursor: "pointer", boxShadow: "0 4px 8px rgba(0, 0, 0, 0.3)", backgroundColor: "#3498db", color: "#ffffff", border: "none", borderRadius: "8px", fontSize: "16px", padding: "10px 20px" }, buttonHover: { backgroundColor: "#0c47a1", transform: "translateY(-2px)" }, backdrop: { position: "fixed", background: "rgba(0, 0, 0, 0.69)", zIndex: "999", height: "100%", width: "100%", left: "0", top: "0" }, mandatoryBackdrop: { position: "fixed", display: "flex", justifyContent: "center", alignItems: "center", background: "rgba(0, 0, 0, 0.9)", height: "100%", width: "100%", zIndex: "999", left: "0", top: "0" }, topCenter: { position: "fixed", transform: "translateX(-50%)", left: "50%", top: "10px" }, bottomCenter: { position: "fixed", transform: "translateX(-50%)", bottom: "10px", left: "50%" } }; function HUDOTAUpdater(hudOTAUpdaterConfigurationSettings) { var buttonHoverConfigurationSettings = hudOTAUpdaterConfigurationSettings.buttonHoverConfigurationSettings, containerConfigurationSettings = hudOTAUpdaterConfigurationSettings.containerConfigurationSettings, messageConfigurationSettings = hudOTAUpdaterConfigurationSettings.messageConfigurationSettings, buttonConfigurationSettings = hudOTAUpdaterConfigurationSettings.buttonConfigurationSettings, holographicBorderPadding = hudOTAUpdaterConfigurationSettings.holographicBorderPadding, holographicBorderRadius = hudOTAUpdaterConfigurationSettings.holographicBorderRadius, holographicBorderWidth = hudOTAUpdaterConfigurationSettings.holographicBorderWidth, holographicBorderColor = hudOTAUpdaterConfigurationSettings.holographicBorderColor, hologramLoadingBorder = hudOTAUpdaterConfigurationSettings.hologramLoadingBorder, spotlightBorder = hudOTAUpdaterConfigurationSettings.spotlightBorder, onUpdateDownloaded = hudOTAUpdaterConfigurationSettings.onUpdateDownloaded, onUpdateAvailable = hudOTAUpdaterConfigurationSettings.onUpdateAvailable, onApplyUpdate = hudOTAUpdaterConfigurationSettings.onApplyUpdate, updateDownloadedMessage = hudOTAUpdaterConfigurationSettings.updateDownloadedMessage, updateAvailableMessage = hudOTAUpdaterConfigurationSettings.updateAvailableMessage, updateButtonLabel = hudOTAUpdaterConfigurationSettings.updateButtonLabel, showBackdrop = hudOTAUpdaterConfigurationSettings.showBackdrop, mandatory = hudOTAUpdaterConfigurationSettings.mandatory, modalized = hudOTAUpdaterConfigurationSettings.modalized, position = hudOTAUpdaterConfigurationSettings.position, header = hudOTAUpdaterConfigurationSettings.header, footer = hudOTAUpdaterConfigurationSettings.footer, body = hudOTAUpdaterConfigurationSettings.body, embed = hudOTAUpdaterConfigurationSettings.embed; var _useState = useState(false), _useState2 = _slicedToArray(_useState, 2), updateDownloaded = _useState2[0], setUpdateDownloaded = _useState2[1]; var _useState3 = useState(false), _useState4 = _slicedToArray(_useState3, 2), updateAvailable = _useState4[0], setUpdateAvailable = _useState4[1]; var _useState5 = useState(false), _useState6 = _slicedToArray(_useState5, 2), hovered = _useState6[0], setHovered = _useState6[1]; var handleUpdate = function handleUpdate() { if (onApplyUpdate) { onApplyUpdate(); } }; useEffect(function () { if (onUpdateDownloaded) { onUpdateDownloaded(); } if (onUpdateAvailable) { onUpdateAvailable(); } }, []); var content = updateAvailable ? /*#__PURE__*/React.createElement(HUDHolographicBorder, { holographicBorderContainerConfigurationSettings: _objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, baseConfigurationSettings.container), containerConfigurationSettings), modalized && !mandatory && position === "top" ? baseConfigurationSettings.topCenter : {}), modalized && !mandatory && position === "bottom" ? baseConfigurationSettings.bottomCenter : {}), mandatory ? baseConfigurationSettings.mandatoryContainer : {}), embed ? baseConfigurationSettings.embedContainer : {}), hologramLoadingBorder: hologramLoadingBorder, borderColor: holographicBorderColor, spotlightBorder: spotlightBorder, borderRadius: holographicBorderRadius, borderWidth: holographicBorderWidth, padding: holographicBorderPadding }, header && /*#__PURE__*/React.createElement("div", { style: { marginBottom: "15px" } }, header), updateAvailable && /*#__PURE__*/React.createElement("div", { style: { display: "flex", flexDirection: "column" } }, /*#__PURE__*/React.createElement("p", { style: _objectSpread(_objectSpread({}, baseConfigurationSettings.message), messageConfigurationSettings) }, updateAvailableMessage || "Update available. Downloading..."), body && /*#__PURE__*/React.createElement(React.Fragment, null, body)), updateDownloaded && /*#__PURE__*/React.createElement("button", { style: _objectSpread(_objectSpread(_objectSpread({}, baseConfigurationSettings.button), buttonConfigurationSettings), hovered ? baseConfigurationSettings.buttonHover : buttonHoverConfigurationSettings), onMouseLeave: function onMouseLeave() { return setHovered(false); }, onMouseEnter: function onMouseEnter() { return setHovered(true); }, onClick: handleUpdate }, updateButtonLabel || "Restart and Update"), footer && /*#__PURE__*/React.createElement("div", { style: { marginTop: "15px" } }, footer)) : /*#__PURE__*/React.createElement(React.Fragment, null); return modalized && !mandatory || modalized ? /*#__PURE__*/React.createElement("div", { style: mandatory && showBackdrop ? baseConfigurationSettings.mandatoryBackdrop : showBackdrop ? baseConfigurationSettings.backdrop : {} }, content) : content; } ; HUDOTAUpdater.propTypes = { buttonHoverConfigurationSettings: PropTypes.object, containerConfigurationSettings: PropTypes.object, messageConfigurationSettings: PropTypes.object, buttonConfigurationSettings: PropTypes.object, holographicBorderPadding: PropTypes.number, holographicBorderRadius: PropTypes.number, holographicBorderWidth: PropTypes.number, holographicBorderColor: PropTypes.string, hologramLoadingBorder: PropTypes.bool, spotlightBorder: PropTypes.bool, onUpdateDownloaded: PropTypes.func, onUpdateAvailable: PropTypes.func, onApplyUpdate: PropTypes.func, updateDownloadedMessage: PropTypes.string, updateAvailableMessage: PropTypes.string, updateButtonLabel: PropTypes.string, showBackdrop: PropTypes.bool, modalized: PropTypes.bool, mandatory: PropTypes.bool, embed: PropTypes.bool, position: PropTypes.oneOf(["top", "bottom"]), header: PropTypes.node, footer: PropTypes.node, body: PropTypes.node }; HUDOTAUpdater.defaultProps = { buttonHoverConfigurationSettings: {}, containerConfigurationSettings: {}, messageConfigurationSettings: {}, buttonConfigurationSettings: {}, holographicBorderPadding: 1, holographicBorderRadius: 12, holographicBorderWidth: 3, holographicBorderColor: "rgba(255, 255, 255, 0.869)", hologramLoadingBorder: false, onUpdateDownloaded: null, onUpdateAvailable: null, onApplyUpdate: null, spotlightBorder: true, showBackdrop: false, position: "bottom", modalized: false, mandatory: false, embed: false }; export default HUDOTAUpdater;