@trap_stevo/legendarybuilderproreact-ui
Version:
The legendary UI & utility API that makes your application a legendary application. ~ Created by Steven Compton
97 lines • 4.59 kB
JavaScript
import _extends from "@babel/runtime/helpers/extends";
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, { useState, useEffect } from "react";
import HUDIcon from "./HUDIcon.js";
function HUDTransitionIcon(_ref) {
var _ref$iconContainerCon = _ref.iconContainerConfigurationSettings,
iconContainerConfigurationSettings = _ref$iconContainerCon === void 0 ? {} : _ref$iconContainerCon,
_ref$containerConfigu = _ref.containerConfigurationSettings,
containerConfigurationSettings = _ref$containerConfigu === void 0 ? {} : _ref$containerConfigu,
_ref$iconConfiguratio = _ref.iconConfigurationSettings,
iconConfigurationSettings = _ref$iconConfiguratio === void 0 ? {} : _ref$iconConfiguratio,
_ref$iconConfiguratio2 = _ref.iconConfigurations,
iconConfigurations = _ref$iconConfiguratio2 === void 0 ? {} : _ref$iconConfiguratio2,
_ref$transitionDelay = _ref.transitionDelay,
transitionDelay = _ref$transitionDelay === void 0 ? 2000 : _ref$transitionDelay,
_ref$autoStart = _ref.autoStart,
autoStart = _ref$autoStart === void 0 ? true : _ref$autoStart,
_ref$loop = _ref.loop,
loop = _ref$loop === void 0 ? Infinity : _ref$loop,
_ref$duration = _ref.duration,
duration = _ref$duration === void 0 ? 1000 : _ref$duration,
_ref$iconSize = _ref.iconSize,
iconSize = _ref$iconSize === void 0 ? 24 : _ref$iconSize,
fromIcon = _ref.fromIcon,
toIcon = _ref.toIcon;
var _useState = useState(false),
_useState2 = _slicedToArray(_useState, 2),
transitioning = _useState2[0],
setTransitioning = _useState2[1];
var _useState3 = useState(fromIcon),
_useState4 = _slicedToArray(_useState3, 2),
currentIcon = _useState4[0],
setCurrentIcon = _useState4[1];
var _useState5 = useState(0),
_useState6 = _slicedToArray(_useState5, 2),
currentLoop = _useState6[0],
setCurrentLoop = _useState6[1];
useEffect(function () {
var interval;
if (autoStart && (loop === Infinity || currentLoop < loop)) {
interval = setInterval(function () {
setTransitioning(true);
setTimeout(function () {
setCurrentIcon(function (prev) {
return prev === fromIcon ? toIcon : fromIcon;
});
setCurrentLoop(function (prev) {
return prev + 0.5;
});
setTransitioning(false);
}, duration / 2);
}, duration + transitionDelay);
}
return function () {
return clearInterval(interval);
};
}, [loop, autoStart, fromIcon, toIcon, duration, transitionDelay, currentLoop]);
var handleManualTransition = function handleManualTransition() {
if (!autoStart && (loop === Infinity || currentLoop < loop)) {
setTransitioning(true);
setTimeout(function () {
setCurrentIcon(function (prev) {
return prev === fromIcon ? toIcon : fromIcon;
});
setTransitioning(false);
setCurrentLoop(function (prev) {
return prev + 0.5;
});
}, duration / 2);
}
};
return /*#__PURE__*/React.createElement("div", {
style: _objectSpread({
position: "relative",
display: "flex",
justifyContent: "center",
alignItems: "center",
height: "".concat(iconSize, "px"),
width: "".concat(iconSize, "px")
}, containerConfigurationSettings),
onClick: handleManualTransition
}, /*#__PURE__*/React.createElement("div", {
style: _objectSpread({
position: "absolute",
transition: "opacity ".concat(duration / 2, "ms ease"),
opacity: transitioning ? 0 : 1
}, iconContainerConfigurationSettings)
}, /*#__PURE__*/React.createElement(HUDIcon, _extends({
name: currentIcon,
style: iconConfigurationSettings
}, iconConfigurations))));
}
;
export default HUDTransitionIcon;