import jQ from 'jquery';
import Settings from './helpers/settings';
import Utils from './helpers/utils';
import Labels from './helpers/labels';
import Globals from './helpers/globals';
import Selector from './helpers/selector';
import Class from "./helpers/class";
import Analytics from "./helpers/analytics";
// API
import Api from "./helpers/api";
import InstantSearchApi from './api/instant-search-api';
// Enums
import InstantSearchEnum from "./enum/instant-search-enum";
// Instant Search Components
import SearchInput from './components/instant-search/instant-search-element/search-input';
import InstantSearch from './components/instant-search/instant-search';
import InstantSearchMobile from './components/instant-search/instant-search-style/instant-search-mobile';
import InstantSearchResult from "./components/instant-search/instant-search-style/instant-search-result";
import InstantSearchStyle from "./components/instant-search/instant-search-style/instant-search-style";
import InstantSearchResultStyle2 from "./components/instant-search/instant-search-style/instant-search-result-style2";
// Instant Search Block
import InstantSearchResultBlock from "./components/instant-search/instant-search-block/instant-search-result-block";
import InstantSearchResultBlockDym from "./components/instant-search/instant-search-block/instant-search-result-block-dym";
import InstantSearchResultBlockEmpty from "./components/instant-search/instant-search-block/instant-search-result-block-empty";
import InstantSearchResultBlockLoading from "./components/instant-search/instant-search-block/instant-search-result-block-loading";
import InstantSearchResultBlockViewAll from "./components/instant-search/instant-search-block/instant-search-result-block-view-all";
// Instant Search Item
import InstantSearchResultItem from "./components/instant-search/instant-search-item/instant-search-result-item";
import InstantSearchResultItemCollection from "./components/instant-search/instant-search-item/instant-search-result-item-collection";
import InstantSearchResultItemPage from "./components/instant-search/instant-search-item/instant-search-result-item-page";
import InstantSearchResultItemPopular from "./components/instant-search/instant-search-item/instant-search-result-item-popular";
import InstantSearchResultItemProduct from './components/instant-search/instant-search-item/instant-search-result-item-product';
// Instant Search Others
import AutocompleteMenuCustom from './components/instant-search/others/autocomplete-menu-custom';
import InstantSearchResultRedirect from "./components/instant-search/others/instant-search-result-redirect";
/**
* Injects all components into a scope, to override and customize outside applib.
* @param scope
*/
const inject = (scope) => {
// Library
scope.jQ = jQ;
// Helpers
scope.Analytics = Analytics;
scope.Class = Class;
scope.Globals = Globals;
scope.Labels = Labels;
scope.Selector = Selector;
scope.Settings = Settings;
scope.Utils = Utils;
// Api
scope.Api = Api;
scope.InstantSearchApi = InstantSearchApi;
// Enums
scope.InstantSearchEnum = InstantSearchEnum;
// Instant search
scope.SearchInput = SearchInput;
scope.InstantSearch = InstantSearch;
scope.InstantSearchMobile = InstantSearchMobile;
scope.InstantSearchResult = InstantSearchResult;
scope.InstantSearchStyle = InstantSearchStyle;
scope.InstantSearchResultStyle2 = InstantSearchResultStyle2;
// Instant search result block
scope.InstantSearchResultBlock = InstantSearchResultBlock;
scope.InstantSearchResultBlockDym = InstantSearchResultBlockDym;
scope.InstantSearchResultBlockEmpty = InstantSearchResultBlockEmpty;
scope.InstantSearchResultBlockLoading = InstantSearchResultBlockLoading;
scope.InstantSearchResultBlockViewAll = InstantSearchResultBlockViewAll;
// Instant search item
scope.InstantSearchResultItem = InstantSearchResultItem;
scope.InstantSearchResultItemCollection = InstantSearchResultItemCollection;
scope.InstantSearchResultItemPage = InstantSearchResultItemPage;
scope.InstantSearchResultItemPopular = InstantSearchResultItemPopular;
scope.InstantSearchResultItemProduct = InstantSearchResultItemProduct;
// Instant search others
scope.AutocompleteMenuCustom = AutocompleteMenuCustom;
scope.InstantSearchResultRedirect = InstantSearchResultRedirect;
}
const Components = {
inject: inject
}
export default Components;