import variables from 'config/variables';
import { useState, useEffect, useMemo } from 'react';
import EventBus from 'utils/eventbus';
import { Button } from 'components/Elements';
import { MdFlag, MdOutlineVisibilityOff, MdOutlineVisibility } from 'react-icons/md';
import Slider from '../../../Form/Settings/Slider/Slider';
import values from 'utils/data/slider_values.json';
import { motion, AnimatePresence } from 'framer-motion';
const Preview = (props) => {
return (
);
};
const VisibilityToggleButton = ({ setting, onClick }) => {
const [isInitialRender, setIsInitialRender] = useState(true);
useEffect(() => {
setIsInitialRender(false);
}, []);
const iconVariants = {
initial: { opacity: 0, scale: 0.8 },
animate: { opacity: 1, scale: 1 },
exit: { opacity: 0, scale: 0.8 },
};
const prefersReducedMotion = window.matchMedia('(prefers-reduced-motion: reduce)').matches;
return (
);
};
const Controls = (props) => {
const [setting, setSetting] = useState(localStorage.getItem(props.setting) === 'true');
useEffect(() => {
setSetting(localStorage.getItem(props.setting) === 'true');
}, [props.setting]);
const changeSetting = () => {
const toggle = localStorage.getItem(props.setting) === 'true';
localStorage.setItem(props.setting, !toggle);
setSetting(!toggle);
variables.stats.postEvent('setting', props.name, setting === true ? 'enabled' : 'disabled');
EventBus.emit('toggle', props.setting);
if (props.element) {
if (!document.querySelector(props.element)) {
document.querySelector('.reminder-info').style.display = 'flex';
return localStorage.setItem('showReminder', true);
}
}
EventBus.emit('refresh', props.category);
};
const ReportButton = () => {
return (
);
};
const memoizedToggle = useMemo(
() => ,
[setting, changeSetting],
);
return (
Controls
{props.visibilityToggle && memoizedToggle}
{props.report !== false && }
{(props.zoomSetting !== null || props.zoomSetting !== '') && (
)}
);
};
const Hero = (props) => {
return (
{props.children}
);
};
export { Hero, Preview, Controls };