import {
    setEditComponent,
    schemaHelper,
    componentRegistry,
    getToken,
    hasValidToken,
    isAdmin,
    signInWithToken,
    onAuthenticationChanged,
    setSession
} from './connection';

import { library } from '@fortawesome/fontawesome-svg-core';
import { faTimes, faCaretRight, faPlusSquare, faSquare, faSpinner, faWifi, faPen } from '@fortawesome/free-solid-svg-icons';

import { createLinkWrapper } from './createLinkWrapper';
import {
    mergeLinkedComponents,
    CMSGoogleLogin,
    CMSLink,
    LinkedCol,
    LinkedRow,
    LinkedText,
    LinkedImage,
    CodeViewer,
    Header,
    Section,
    RouteLinks, 
    LinkedRoutes
} from './Components';

import Editor from './AdminComponents/Editor';
import ObjectEditor from './AdminComponents/ObjectEditor';

export {
    isAdmin,
    hasValidToken,
    signInWithToken,
    createLinkWrapper,
    onAuthenticationChanged,
    getToken,
    setEditComponent,
    schemaHelper,
    componentRegistry,
    setSession,
    mergeLinkedComponents,
    CMSGoogleLogin,
    CMSLink,
    LinkedCol,
    LinkedRow,
    LinkedText,
    LinkedImage,
    CodeViewer,
    Header,
    Section,
    Editor,
    ObjectEditor,
    RouteLinks, 
    LinkedRoutes
}

library.add(faTimes, faCaretRight, faPlusSquare, faSquare, faSpinner, faWifi, faPen);