import classnames from 'classnames/dedupe';
import { Button, Tooltip } from '@wordpress/components';
import { useEffect, useState } from '@wordpress/element';
import { __, sprintf } from '@wordpress/i18n';
import useResponsive from '../../hooks/use-responsive';
import getIcon from '../../utils/get-icon';
import ActiveIndicator from '../active-indicator';
/**
* Component Class
*
* @param props
*/
export default function ResponsiveToggle(props) {
const {
checkActive = () => {
return false;
},
} = props;
const [isOpen, setIsOpen] = useState(false);
const { allDevices, device, setDevice } = useResponsive();
useEffect(() => {
function handleClickOutside(event) {
if (!event.target.closest('.ghostkit-control-responsive-toggle')) {
setIsOpen(false);
}
}
document.addEventListener('click', handleClickOutside);
return () => {
document.removeEventListener('click', handleClickOutside);
};
});
const items = [];
const icons = [
getIcon('tabs-mobile'),
getIcon('tabs-tablet'),
getIcon('tabs-laptop'),
getIcon('tabs-desktop'),
getIcon('tabs-tv'),
];
let selectedIcon = icons[icons.length - 1];
let translateY = '0';
let withActiveResponsive = false;
[...Object.keys(allDevices), ''].forEach((name, i) => {
if (name === device) {
selectedIcon = icons[i];
translateY = `${(100 * (1 + i - icons.length)) / icons.length}%`;
// Additional transform for gap.
translateY = `calc(${translateY} + ${icons.length - i - 1}px)`;
}
const isActive = name && checkActive && checkActive(name);
withActiveResponsive = withActiveResponsive || isActive;
items.unshift({
name,
title: (