import { Sorting, Provider, BlockingDuration, Theme } from './types'; export const BASE_URL: string = process.env.REMARK_URL!; export const API_BASE = '/api/v1'; export const NODE_ID: string = process.env.REMARK_NODE!; export const COUNTER_NODE_CLASSNAME = 'remark42__counter'; export const COMMENT_NODE_CLASSNAME_PREFIX = 'remark42__comment-'; export const LAST_COMMENTS_NODE_CLASSNAME = 'remark42__last-comments'; export const DEFAULT_LAST_COMMENTS_MAX = 15; export const DEFAULT_MAX_COMMENT_SIZE = 1000; export const MAX_SHOWN_ROOT_COMMENTS = 10; export const DEFAULT_SORT: Sorting = '-active'; /* object of supported providers */ export const PROVIDER_NAMES: { [P in Provider]: string } = { google: 'Google', facebook: 'Facebook', github: 'GitHub', yandex: 'Yandex', dev: 'Dev', }; /** locastorage key for collapsed comments */ export const LS_COLLAPSE_KEY = '__remarkCollapsed'; /** cookie key under which sort preference resides */ export const COOKIE_SORT_KEY = 'remarkSort'; export const BLOCKING_DURATIONS: BlockingDuration[] = [ { label: 'Permanently', value: 'permanently', }, { label: 'For a month', value: '43200m', }, { label: 'For a week', value: '10080m', }, { label: 'For a day', value: '1440m', }, ]; export const THEMES: Theme[] = ['light', 'dark']; export const IS_MOBILE = /Android|webOS|iPhone|iPad|iPod|Opera Mini|Windows Phone/i.test(navigator.userAgent); /** * Defines if browser storage features (cookies, localsrotage) * are available or blocked via browser preferences */ export const IS_STORAGE_AVAILABLE: boolean = (() => { try { localStorage.setItem('localstorage_availability_test', ''); localStorage.removeItem('localstorage_availability_test'); } catch (e) { return false; } return true; })(); /** * Defines whether iframe loaded in cross origin environment * Usefull for checking if some privacy restriction may be applied */ export const IS_THIRD_PARTY: boolean = (() => { try { return window.parent.location.host !== window.location.host; } catch (e) { return true; } })();