+
+ {/* Анонимная функция нужна для создания функции смены состояния для каждого компонента в отдельности, в противном случае вызов функции в одном экземпляре компонента вызывает функцию изменения для каждого экземпляра компонента */}
+
callChangeFav(appName) }>
+
+ )
+}
+
+
+//TODO
+//ВЫНЕСИ В ПАПКУ COMPONENTS/MAIN
+/**
+ * Компонент переключателя В ДАННОМ СЛУЧАЕ видимости скриптов (видны только избранные или все)
+ * @param {string} switcherId идентификатор переключателя (для стилей css), так как в будущем, на странице можно будет размещать несколько переключателей
+ * @param {function} toggleAppsVisible функция обновления состояния hideScriptClass
+ * @returns
+ */
+function Switcher({ switcherId, toggleAppsVisible }) {
+ const [favSwitcherClass, setFavSwitcherClass] = useState('showAll');
+
+ //Переключение состояния переключателя после рендеринга страницы
+ useEffect( () => {
+ //Получаем из локал сторадж состояние переключателя
+ const savedState = localStorage.getItem('magicMenuFavSwitcher');
+ if (savedState) {
+ setFavSwitcherClass(savedState);
+ }
+ }, []);
+
+ //При изменении состояния Переключателя изменяется состояние всех приложени (переключается их видимость в зависимости от состояния переключателя - только избранные или все)
+ useEffect( () => {
+ //Синхронизируем зависимые компоненты
+ toggleAppsVisible(favSwitcherClass === 'showFav' ? 'script-hide' : '');
+ }, [favSwitcherClass] );
+
+ const callToggleFavSwitcher = () => {
+ let switcherState = (favSwitcherClass === 'showFav' ? 'showAll' : 'showFav');
+ //favSwitcherClass => favSwitcherClass = ... - функциональное обновление. Здесь оно не особо нужно, но чтобы не забыть
+ //Меняем класс switcher, а также меняем состояние видимости всех приложений (в зависимости от того избранные они или нет)
+ setFavSwitcherClass( favSwitcherClass => {
+ if (favSwitcherClass === 'showFav') {
+ toggleAppsVisible('script-hide')
+ } else {
+ toggleAppsVisible('')
+ }
+ localStorage.setItem('magicMenuFavSwitcher', switcherState)
+
+ return switcherState;
+ } )
+ }
+
+ return (
+