import { set } from 'date-fns'
import dynamic from 'next/dynamic'
import { act, createContext, useContext, useState }	from 'react'

const MerchandisingContext	= createContext<any>({})

const MerchandisingProvider = ( {children} ) => {
	const [activeMenu, setActiveMenu]	= useState('general'),
		[loadVisualEditor, setLoadVisualEditor]	= useState(false),
		[products, setProducts]	= useState([]),
		[categoryId, setCategoryId]	= useState(null),
		[categories, setCategories]	= useState([]),
		[description, setDescription]	= useState(""),
		[productLoader, setProductLoader]	= useState(false),
		[productCount, setProductCount]	= useState(null),
		[productPage, setProductPage]	= useState(1),
		[pagePerProducts, setPagePerProducts]	= useState(10),
		[enableSave, setEnableSave]	= useState(false),
		[rowPerProducts, setRowPerProducts]	= useState(4),
		[shopCurrency, setShopCurrency]	= useState('USD'),
		[hasMore, setHasMore]	= useState(false),
		[productOrder, setProductOrder]	= useState([]),
		[originalProductOrder, setOriginalProductOrder]	= useState([]),
		[promoted, setPromoted]	= useState([]),
		[buried, setBuried]	= useState([]),
		[hidden, setHidden]	= useState([]),
		[buriedProducts, setBuriedProducts]	= useState([]),
		[hiddenProducts, setHiddenProducts]	= useState([]),
		[saveLoader, setSaveLoader]	= useState(false),
		[activeItem, setActiveItem] = useState(null),
		[editCategoryMerchandising, setEditCategoryMerchandising]	= useState(null),
		[searchPhrase, setSearchPhrase]	= useState(""),
		[editSearchPhraseMerchandising, setEditSearchPhraseMerchandising]	= useState(null),
		[exact, setExact]	= useState(true),
		[channelId, setChannelId]	= useState("1"),
		[debouncedSearch, setDebouncedSearch]	= useState(""),
		[merchandisingError, setMerchandisingError]	= useState(""),
		[pinnedItems, setPinnedItems]	= useState({}),
		[originalProducts, setOriginalProducts]	= useState([]),
		[hiddenProductIndex, setHiddenProductIndex]	= useState({}),
		[pinnedProductIndex, setPinnedProductIndex]	= useState({}),
		[selectedBanner, setSelectedBanner]	= useState({}),
		[bannerLoader, setBannerLoader]	= useState(false),
		[banners, setBanners]	= useState([]),
		[promoTileLoader, setPromoTileLoader]	= useState(false),
		[promoTiles, setPromoTiles]	= useState([]),
		[selectedPromoTiles, setSelectedPromoTiles]	= useState({}),
		[enableDynamic, setEnableDynamic]	= useState(false),
		[dynamicItems, setDynamicItems]	= useState({}),
		[triggerDynamic, setTriggerDynamic]	= useState(false),
		store 	= {
			activeMenu,
			setActiveMenu,
			products,
			setProducts,
			description,
			setDescription,
			categoryId,
			setCategoryId,
			categories,
			setCategories,
			productLoader,
			setProductLoader,
			productPage,
			setProductPage,
			productCount,
			setProductCount,
			enableSave,
			setEnableSave,
			pagePerProducts,
			setPagePerProducts,
			rowPerProducts,
			setRowPerProducts,
			shopCurrency,
			setShopCurrency,
			hasMore,
			setHasMore,
			productOrder,
			setProductOrder,
			promoted,
			setPromoted,
			buried,
			setBuried,
			hidden,
			setHidden,
			buriedProducts,
			setBuriedProducts,
			hiddenProducts,
			setHiddenProducts,
			saveLoader,
			setSaveLoader,
			activeItem,
			setActiveItem,
			editCategoryMerchandising,
			setEditCategoryMerchandising,
			loadVisualEditor,
			setLoadVisualEditor,
			searchPhrase,
			setSearchPhrase,
			editSearchPhraseMerchandising,
			setEditSearchPhraseMerchandising,
			exact,
			setExact,
			channelId,
			setChannelId,
			debouncedSearch,
			setDebouncedSearch,
			merchandisingError,
			setMerchandisingError,
			pinnedItems,
			setPinnedItems,
			originalProductOrder,
			setOriginalProductOrder,
			originalProducts,
			setOriginalProducts,
			hiddenProductIndex,
			setHiddenProductIndex,
			pinnedProductIndex,
			setPinnedProductIndex,
			selectedBanner,
			setSelectedBanner,
			banners,
			setBanners,
			bannerLoader,
			setBannerLoader,
			promoTileLoader,
			setPromoTileLoader,
			promoTiles,
			setPromoTiles,
			selectedPromoTiles,
			setSelectedPromoTiles,
			enableDynamic,
			setEnableDynamic,
			dynamicItems,
			setDynamicItems,
			triggerDynamic,
			setTriggerDynamic,
		}
	
	return (
		<MerchandisingContext.Provider value={store}>
			{children}
		</MerchandisingContext.Provider>
	)
}

export const useMerchandising = () => useContext(MerchandisingContext);

export default MerchandisingProvider;