{"version":3,"sources":["webpack:///./public/services/http.ts","webpack:///./public/services/cache.ts","webpack:///./public/services/analytics.ts","webpack:///./public/services/fider.ts","webpack:///./public/services/jwt.ts","webpack:///./public/services/utils.ts","webpack:///./public/services/markdown.ts","webpack:///./public/services/notify.ts","webpack:///./public/services/navigator.ts","webpack:///./public/services/querystring.ts","webpack:///./public/services/device.ts","webpack:///./public/services/actions/user.ts","webpack:///./public/services/actions/tag.ts","webpack:///./public/services/actions/post.ts","webpack:///./public/services/actions/tenant.ts","webpack:///./public/services/actions/billing.ts","webpack:///./public/services/actions/notification.ts","webpack:///./public/services/actions/invite.ts","webpack:///./public/services/actions/infra.ts","webpack:///./public/services/index.ts","webpack:///./public/components/ErrorBoundary.tsx","webpack:///./public/components/ShowPostResponse.tsx","webpack:///./public/components/SignInModal.tsx","webpack:///./public/components/VoteCounter.tsx","webpack:///./public/components/index.tsx","webpack:///./public/components/common/Button.tsx","webpack:///./public/components/common/CardInfo.tsx","webpack:///./public/components/common/form/Form.tsx","webpack:///./public/components/common/form/DisplayError.tsx","webpack:///./public/components/common/form/Input.tsx","webpack:///./public/components/common/form/ImageUploader.tsx","webpack:///./public/components/common/form/MultiImageUploader.tsx","webpack:///./public/components/common/form/TextArea.tsx","webpack:///./public/components/common/form/RadioButton.tsx","webpack:///./public/components/common/form/Select.tsx","webpack:///./public/components/common/form/Field.tsx","webpack:///./public/components/common/form/Checkbox.tsx","webpack:///./public/components/common/form/ImageViewer.tsx","webpack:///./public/components/common/MultiLineText.tsx","webpack:///./public/components/common/EnvironmentInfo.tsx","webpack:///./public/components/common/Message.tsx","webpack:///./public/components/common/TenantStatusInfo.tsx","webpack:///./public/components/common/Avatar.tsx","webpack:///./public/components/common/Hint.tsx","webpack:///./public/components/common/Footer.tsx","webpack:///./public/components/common/Header.tsx","webpack:///./public/components/common/Heading.tsx","webpack:///./public/components/common/Legal.tsx","webpack:///./public/components/common/SocialSignInButton.tsx","webpack:///./public/components/common/SignInControl.tsx","webpack:///./public/components/common/Segment.tsx","webpack:///./public/components/common/List.tsx","webpack:///./public/components/common/Moment.tsx","webpack:///./public/components/common/Modal.tsx","webpack:///./public/components/common/UserName.tsx","webpack:///./public/components/common/Loader.tsx","webpack:///./public/components/common/Logo.tsx","webpack:///./public/components/common/Toggle.tsx","webpack:///./public/components/common/FiderVersion.tsx","webpack:///./public/components/common/DropDown.tsx","webpack:///./public/components/common/index.tsx","webpack:///./public/models/index.ts","webpack:///./public/components/ShowTag.tsx","webpack:///./public/models/post.ts","webpack:///./public/models/identity.ts","webpack:///./public/models/settings.ts","webpack:///./public/services/toastify.tsx"],"names":["toResult","response","Promise","json","body","_a","sent","status","ok","data","notify_namespaceObject","error","errors","http_request","url","method","headers","fetch","JSON","stringify","credentials","truncatedBody","truncate","Error","http","get","tslib_es6","undefined","post","put","delete","event","category","action","result","analytics","set","storage","key","value","setItem","window","localStorage","getItem","has","remove","keys","_i","arguments","length","keys_1","removeItem","cache","local","apply","concat","session","sessionStorage","eventCategory","eventAction","ga","err","exDescription","stack","exFatal","FiderSession","this","pProps","pContextID","contextID","props","pUser","user","pTenant","tenant","Object","defineProperty","prototype","Fider","FiderImpl","_this","initialize","el","document","getElementById","parse","textContent","innerText","pSettings","settings","pSession","isBillingEnabled","stripePublicKey","isProduction","environment","isSingleHostMode","mode","FiderContext","react","jwt","decode","token","segments","split","atob","classSet","input","classes","trim","monthNames","currencySymbol","currencyCode","toLowerCase","twoDigits","toString","formatDate","date","Date","day","getDate","monthIndex","getMonth","year","getFullYear","hours","getHours","minutes","getMinutes","templates","seconds","minute","hour","days","month","months","years","template","t","n","replace","Math","abs","round","timeSince","now","getTime","fileToBase64","file","resolve","reject","reader","FileReader","addEventListener","parts","readAsDataURL","isCookieEnabled","cookie","ret","indexOf","e","uploadedImageURL","bkey","size","tenantAssetsURL","maxLength","substr","marked_default","a","setOptions","headerIds","xhtml","smartLists","gfm","breaks","sanitize","markdown_link","href","title","text","simpleRenderer","Renderer","heading","level","raw","image","link","fullRenderer","full","renderer","simple","toastify","all","__webpack_require__","then","bind","success","content","toast","services_navigator","userAgent","navigator","appVersion","location","isBrowserSupported","goHome","goTo","pathname","replaceState","path","history","newURL","baseURL","getCountryCode","countryCode","res","country","getNumber","name","parseInt","querystring_get","querystring_set","uri","re","RegExp","match","separator","results","exec","decodeURIComponent","getArray","qs","filter","i","object","symbol","Array","join","encodeURIComponent","isTouch","maxTouchPoints","msMaxTouchPoints","updateUserSettings","request","changeUserEmail","email","deleteCurrentAccount","regenerateAPIKey","createTag","color","isPublic","updateTag","slug","deleteTag","assignTag","postNumber","unassignTag","getAllPosts","searchPosts","params","querystring_namespaceObject","tags","query","view","limit","deletePost","addVote","removeVote","subscribe","unsubscribe","listVotes","createComment","attachments","updateComment","commentID","deleteComment","respond","originalNumber","createPost","description","updatePost","createTenant","updateTenantSettings","updateTenantAdvancedSettings","customCSS","updateTenantPrivacy","isPrivate","checkAvailability","subdomain","signIn","completeProfile","changeUserRole","userID","role","blockUser","unblockUser","getOAuthConfig","provider","saveOAuthConfig","listBillingPlans","updatePaymentInfo","billingSubscribe","planID","cancelBillingSubscription","getTotalUnreadNotifications","total","markAllAsRead","sendInvites","subject","message","recipients","sendSampleInvite","ignoreErrors","logError","ignoreErrors_1","pattern","d","__webpack_exports__","actions_namespaceObject","device_namespaceObject","markdown_namespaceObject","ErrorBoundary_ErrorBoundary","_super","ErrorBoundary","call","state","errorInfo","componentDidCatch","onError","setState","render","react_default","createElement","Error_page","children","Component","ShowPostStatus","className","ShowPostResponse_ShowPostResponse","models","Get","show","common","showUser","Fragment","Duplicate","original","number","DuplicateDetails","style","StatusDetails","SignInModal_SignInModal","SignInModal","closeModal","isOpen","emailSent","onEmailSent","componentWillReceiveProps","nextProps","setTimeout","onClick","useEmail","Window","Header","Content","VoteCounter_VoteCounter","VoteCounter","voteOrUndo","services","isAuthenticated","voted","showSignIn","count","hasVoted","votesCount","m-voted","closed","m-disabled","no-touch","vote","fa","disabled","ShowTag","ButtonClickEvent","shouldEnable","preventEnable","canEnable","Button_Button","Button","unmounted","click","preventDefault","stopPropagation","clicked","componentWillUnmount","c-button","m-fluid","fluid","rel","type","defaultProps","visa","diners","americanExpress","discover","jcb","unknown","masterCard","CardInfo_CardInfo","src","globalAssetsURL","brandImage","brand","alt","last4","expMonth","expYear","ValidationContext","createContext","Form_Form","c-form","autoComplete","components","Provider","arrayToTag","items","map","m","hasError","field","DisplayError","dict","reduce","push","fields","hasOwnProperty","forEach","Input","onChange","currentTarget","onKeyDown","keyCode","onSubmit","suffix","icon","onIconClick","Consumer","ctx","c-form-field","m-suffix","m-error","m-icon","label","htmlFor","afterLabel","id","tabIndex","noTabFocus","ref","inputRef","autoFocus","onFocus","placeholder","hardFileSizeLimit","ImageUploader_ImageUploader","ImageUploader","fileChanged","target","files","alert","base64","upload","fileName","contentType","previewURL","instanceID","removeFile","fileSelector","selectFile","openModal","showModal","previewMaxWidth","modal","center","Footer","isUploading","hasFile","imgStyles","maxWidth","c-image-upload","accept","MultiImageUploader_MultiImageUploader","MultiImageUploader","imageUploaded","instances","removed","slice","maxUploads","addNewElement","triggerOnChange","bkeys","uploads","k","x","btoa","random","element","elements","c-multi-image-uploader","TextArea","react_textarea_autosize_esm_browser","minRows","RadioButton_RadioButton","RadioButton","selected","onSelect","defaultOption","options","inputs","option","checked","Select_Select","Select","o","getOption","defaultValue","filtered","Field","Checkbox_Checkbox","Checkbox","c-form-field m-checkbox","defaultChecked","ImageViewer_ImageViewer","ImageViewer","loadedThumbnail","onThumbnailLoad","onPreviewLoad","loadedPreview","onLoad","MultiLineText","func","dangerouslySetInnerHTML","__html","EnvironmentInfo","fider","hooks","compiler","version","buildTime","Message_Message","c-message","showIcon","TenantStatusInfo","Locked","Avatar_Avatar","c-avatar","avatarURL","Hint_Hint","Hint","close","cacheKey","isClosed","permanentCloseKey","condition","Footer_Footer","hasLegal","Header_Header","unreadNotifications","componentDidMount","isCollaborator","showRightMenu","Heading_Header","Heading_Heading","c-heading","m-dividing","dividing","iconClassName","c-heading-icon","circular","subtitle","TermsOfService","PrivacyPolicy","LegalNotice","LegalFooter","Modal_Modal","align","LegalAgreement","SocialSignInButton","redirectTo","m-social","logoURL","OAuthProviderLogo","displayName","SignInControl_SignInControl","SignInControl","setEmail","providersLen","oauth","Segments","Segment_Segment","List_List","c-list","divided","hover","ListItem","c-list-item","Moment","format","diff","display","ModalWindow","keyDown","canClose","onClose","swallow","evt","getContainer","root","componentWillUpdate","nextState","removeEventListener","overflow","c-modal-window","react_dom_default","createPortal","aria-disabled","c-modal-footer","UserName_UserName","c-username","m-staff","Loader_Loader","Loader","TenantLogoURL","logoBlobKey","TenantLogo","useFiderIfEmpty","systemProvidersLogo","google","facebook","github","OAuthProviderLogoURL","Toggle_Toggle","Toggle","toggle","active","onToggle","c-toggle","readOnly","FiderVersion","DropDown_DropDown","DropDown","mounted","handleMouseDown","button","addListeners","renderItem","item","isSelected","highlightSelected","c-dropdown-item","is-selected","onMouseDown","setSelected","handleDocumentClick","node","react_dom","contains","removeListeners","findItem","items_1","newState","fireChangeEvent","buildItemList","header","search","onSearchChange","dropdownClass","c-dropdown","inline","direction","onTouchEnd","renderControl","searchable","renderText","_post__WEBPACK_IMPORTED_MODULE_0__","_identity__WEBPACK_IMPORTED_MODULE_1__","_billing__WEBPACK_IMPORTED_MODULE_2__","_settings__WEBPACK_IMPORTED_MODULE_3__","react__WEBPACK_IMPORTED_MODULE_1__","react__WEBPACK_IMPORTED_MODULE_1___default","_fider_services__WEBPACK_IMPORTED_MODULE_2__","react_icons_fa__WEBPACK_IMPORTED_MODULE_3__","textColor","r","substring","g","b","R","G","B","getRGB","c-tag","tag","backgroundColor","PostStatus","filterable","All","Open","Planned","Started","Completed","Declined","Deleted","TenantStatus","UserAvatarType","UserStatus","UserRole","Collaborator","Administrator","OAuthConfigStatus","Disabled","Enabled","react__WEBPACK_IMPORTED_MODULE_0__","react__WEBPACK_IMPORTED_MODULE_0___default","react_dom__WEBPACK_IMPORTED_MODULE_1__","react_dom__WEBPACK_IMPORTED_MODULE_1___default","react_toastify__WEBPACK_IMPORTED_MODULE_2__","hasContainer","setup","position","POSITION","TOP_RIGHT","toastClassName"],"mappings":"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","file":"js/common.80bf9b6b78d4779132ab.js","sourcesContent":["import { analytics, notify, truncate } from \"@fider/services\";\n\nexport interface ErrorItem {\n field?: string;\n message: string;\n}\n\nexport interface Failure {\n errors?: ErrorItem[];\n}\n\nexport interface Result {\n ok: boolean;\n data: T;\n error?: Failure;\n}\n\nasync function toResult(response: Response): Promise> {\n const body = await response.json();\n\n if (response.status < 400) {\n return {\n ok: true,\n data: body as T\n };\n }\n\n if (response.status === 500) {\n notify.error(\"An unexpected error occurred while processing your request.\");\n } else if (response.status === 403) {\n notify.error(\"You are not authorized to perform this operation.\");\n } else if (response.status === 423) {\n notify.error(\"This operation is not allowed. Update your billing settings to unlock it.\");\n }\n\n return {\n ok: false,\n data: body as T,\n error: {\n errors: body.errors\n }\n };\n}\nasync function request(url: string, method: \"GET\" | \"POST\" | \"PUT\" | \"DELETE\", body?: any): Promise> {\n const headers = [[\"Accept\", \"application/json\"], [\"Content-Type\", \"application/json\"]];\n try {\n const response = await fetch(url, {\n method,\n headers,\n body: JSON.stringify(body),\n credentials: \"same-origin\"\n });\n return await toResult(response);\n } catch (err) {\n const truncatedBody = truncate(body ? JSON.stringify(body) : \"\", 1000);\n throw new Error(`Failed to ${method} ${url} with body '${truncatedBody}'`);\n }\n}\n\nexport const http = {\n get: async (url: string): Promise> => {\n return await request(url, \"GET\");\n },\n post: async (url: string, body?: {}): Promise> => {\n return await request(url, \"POST\", body);\n },\n put: async (url: string, body?: {}): Promise> => {\n return await request(url, \"PUT\", body);\n },\n delete: async (url: string, body?: {}): Promise> => {\n return await request(url, \"DELETE\", body);\n },\n event: (category: string, action: string) => (result: Result): Result => {\n if (result && result.ok) {\n analytics.event(category, action);\n }\n return result;\n }\n};\n","const set = (storage: Storage, key: string, value: string): void => {\n if (storage) {\n storage.setItem(key, value);\n }\n};\n\nconst get = (storage: Storage, key: string): string | null => {\n if (window.localStorage) {\n return storage.getItem(key);\n }\n return null;\n};\n\nconst has = (storage: Storage, key: string): boolean => {\n if (storage) {\n return !!storage.getItem(key);\n }\n return false;\n};\n\nconst remove = (storage: Storage, ...keys: string[]): void => {\n if (storage && keys) {\n for (const key of keys) {\n storage.removeItem(key);\n }\n }\n};\n\nexport const cache = {\n local: {\n set: (key: string, value: string): void => {\n set(window.localStorage, key, value);\n },\n get: (key: string): string | null => {\n return get(window.localStorage, key);\n },\n has: (key: string): boolean => {\n return has(window.localStorage, key);\n },\n remove: (...keys: string[]): void => {\n remove(window.localStorage, ...keys);\n }\n },\n session: {\n set: (key: string, value: string): void => {\n set(window.sessionStorage, key, value);\n },\n get: (key: string): string | null => {\n return get(window.sessionStorage, key);\n },\n has: (key: string): boolean => {\n return has(window.sessionStorage, key);\n },\n remove: (...keys: string[]): void => {\n remove(window.sessionStorage, ...keys);\n }\n }\n};\n","export const analytics = {\n event: (eventCategory: string, eventAction: string): void => {\n if (window.ga) {\n window.ga(\"send\", \"event\", {\n eventCategory,\n eventAction\n });\n }\n },\n error: (err?: Error): void => {\n if (window.ga) {\n window.ga(\"send\", \"exception\", {\n exDescription: err ? err.stack : \"\",\n exFatal: false\n });\n }\n }\n};\n","import { createContext } from \"react\";\nimport { CurrentUser, SystemSettings, Tenant } from \"@fider/models\";\n\nexport class FiderSession {\n private pContextID: string;\n private pTenant: Tenant;\n private pUser: CurrentUser | undefined;\n private pProps: { [key: string]: any } = {};\n\n constructor(data: any) {\n this.pContextID = data.contextID;\n this.pProps = data.props;\n this.pUser = data.user;\n this.pTenant = data.tenant;\n }\n\n public get contextID(): string {\n return this.pContextID;\n }\n\n public get user(): CurrentUser {\n return this.pUser!;\n }\n\n public get tenant(): Tenant {\n return this.pTenant;\n }\n\n public get props(): { [key: string]: any } {\n return this.pProps;\n }\n\n public get isAuthenticated(): boolean {\n return !!this.pUser;\n }\n}\n\nexport class FiderImpl {\n private pSettings!: SystemSettings;\n private pSession!: FiderSession;\n\n public initialize = (): FiderImpl => {\n const el = document.getElementById(\"server-data\");\n const data = el ? JSON.parse(el.textContent || el.innerText) : {};\n this.pSettings = data.settings;\n this.pSession = new FiderSession(data);\n return this;\n };\n\n public get session(): FiderSession {\n return this.pSession;\n }\n\n public get settings(): SystemSettings {\n return this.pSettings;\n }\n\n public isBillingEnabled(): boolean {\n return !!this.pSettings.stripePublicKey;\n }\n\n public isProduction(): boolean {\n return this.pSettings.environment === \"production\";\n }\n\n public isSingleHostMode(): boolean {\n return this.pSettings.mode === \"single\";\n }\n}\n\nexport let Fider = new FiderImpl();\n\nexport const FiderContext = createContext(Fider);\n","export const jwt = {\n decode: (token: string): any => {\n if (token) {\n const segments = token.split(\".\");\n try {\n return JSON.parse(window.atob(segments[1]));\n } catch {\n return undefined;\n }\n }\n }\n};\n","import { Fider } from \".\";\n\nexport const delay = (ms: number) => {\n return new Promise(resolve => setTimeout(resolve, ms));\n};\n\nexport const classSet = (input?: any): string => {\n let classes = \"\";\n if (input) {\n for (const key in input) {\n if (key && !!input[key]) {\n classes += ` ${key}`;\n }\n }\n return classes.trim();\n }\n return \"\";\n};\n\nconst monthNames = [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\"\n];\n\nexport const currencySymbol = (currencyCode: string): string => {\n currencyCode = currencyCode ? currencyCode.toLowerCase() : \"\";\n switch (currencyCode) {\n case \"eur\":\n return \"€\";\n case \"usd\":\n return \"$\";\n }\n throw new Error(`Invalid currency code '${currencyCode}'`);\n};\n\nconst twoDigits = (value: number): string => {\n return value <= 9 ? `0${value}` : value.toString();\n};\n\nexport const formatDate = (input: Date | string): string => {\n const date = input instanceof Date ? input : new Date(input);\n\n const day = date.getDate();\n const monthIndex = date.getMonth();\n const year = date.getFullYear();\n const hours = twoDigits(date.getHours());\n const minutes = twoDigits(date.getMinutes());\n\n return `${monthNames[monthIndex]} ${day}, ${year} · ${hours}:${minutes}`;\n};\n\nconst templates: { [key: string]: string } = {\n seconds: \"less than a minute\",\n minute: \"about a minute\",\n minutes: \"%d minutes\",\n hour: \"about an hour\",\n hours: \"about %d hours\",\n day: \"a day\",\n days: \"%d days\",\n month: \"about a month\",\n months: \"%d months\",\n year: \"about a year\",\n years: \"%d years\"\n};\n\nconst template = (t: string, n: number): string => {\n return templates[t] && templates[t].replace(/%d/i, Math.abs(Math.round(n)).toString());\n};\n\nexport const timeSince = (now: Date, date: Date): string => {\n const seconds = (now.getTime() - date.getTime()) / 1000;\n const minutes = seconds / 60;\n const hours = minutes / 60;\n const days = hours / 24;\n const years = days / 365;\n\n return (\n ((seconds < 45 && template(\"seconds\", seconds)) ||\n (seconds < 90 && template(\"minute\", 1)) ||\n (minutes < 45 && template(\"minutes\", minutes)) ||\n (minutes < 90 && template(\"hour\", 1)) ||\n (hours < 24 && template(\"hours\", hours)) ||\n (hours < 42 && template(\"day\", 1)) ||\n (days < 30 && template(\"days\", days)) ||\n (days < 45 && template(\"month\", 1)) ||\n (days < 365 && template(\"months\", days / 30)) ||\n (years < 1.5 && template(\"year\", 1)) ||\n template(\"years\", years)) + \" ago\"\n );\n};\n\nexport const fileToBase64 = async (file: File): Promise => {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.addEventListener(\n \"load\",\n () => {\n const parts = (reader.result as string).split(\"base64,\");\n resolve(parts[1]);\n },\n false\n );\n\n reader.addEventListener(\n \"error\",\n () => {\n reject(reader.error);\n },\n false\n );\n\n reader.readAsDataURL(file);\n });\n};\n\nexport const isCookieEnabled = (): boolean => {\n try {\n document.cookie = \"cookietest=1\";\n const ret = document.cookie.indexOf(\"cookietest=\") !== -1;\n document.cookie = \"cookietest=1; expires=Thu, 01-Jan-1970 00:00:01 GMT\";\n return ret;\n } catch (e) {\n return false;\n }\n};\n\nexport const uploadedImageURL = (bkey: string | undefined, size?: number): string | undefined => {\n if (bkey) {\n if (size) {\n return `${Fider.settings.tenantAssetsURL}/images/${bkey}?size=${size}`;\n }\n return `${Fider.settings.tenantAssetsURL}/images/${bkey}`;\n }\n return undefined;\n};\n\nexport const truncate = (input: string, maxLength: number): string => {\n if (input && input.length > 1000) {\n return `${input.substr(0, maxLength)}...`;\n }\n return input;\n};\n","import marked from \"marked\";\n\nmarked.setOptions({\n headerIds: false,\n xhtml: true,\n smartLists: true,\n gfm: true,\n breaks: true,\n sanitize: true\n});\n\nconst link = (href: string, title: string, text: string) => {\n const titleAttr = title ? ` title=${title}` : \"\";\n return `${text}`;\n};\n\nconst simpleRenderer = new marked.Renderer();\nsimpleRenderer.heading = (text, level, raw) => `

${raw}

`;\nsimpleRenderer.image = (href, title, text) => \"\";\nsimpleRenderer.link = link;\n\nconst fullRenderer = new marked.Renderer();\nfullRenderer.link = link;\n\nexport const full = (input: string): string => {\n return marked(input, { renderer: fullRenderer }).trim();\n};\n\nexport const simple = (input: string): string => {\n return marked(input, { renderer: simpleRenderer }).trim();\n};\n","const toastify = () => import(/* webpackChunkName: \"toastify\" */ \"./toastify\");\n\nexport const success = (content: string | JSX.Element) => {\n return toastify().then(toast => {\n toast.success(content);\n });\n};\n\nexport const error = (content: string | JSX.Element) => {\n return toastify().then(toast => {\n toast.error(content);\n });\n};\n","import { Fider, http } from \"@fider/services\";\nimport { cache } from \"./cache\";\n\nconst navigator = {\n userAgent: () => {\n return window.navigator.userAgent || window.navigator.appVersion;\n },\n url: () => {\n return window.location.href;\n },\n isBrowserSupported() {\n const ua = this.userAgent();\n const isIE = ua.indexOf(\"MSIE\") >= 0;\n if (isIE) {\n // On IE, the only supported version is IE 11\n return window.navigator.appVersion.indexOf(\"MSIE 11\") >= 0;\n }\n return true;\n },\n goHome: () => {\n window.location.href = \"/\";\n },\n goTo: (url: string) => {\n const isEqual = window.location.href === url || window.location.pathname === url;\n if (!isEqual) {\n window.location.href = url;\n }\n },\n replaceState: (path: string): void => {\n if (history.replaceState) {\n const newURL = Fider.settings.baseURL + path;\n window.history.replaceState({ path: newURL }, \"\", newURL);\n }\n },\n getCountryCode: (): Promise => {\n const countryCode = cache.session.get(\"geolocation_countrycode\");\n if (countryCode) {\n return Promise.resolve(countryCode);\n }\n\n return http.get(\"https://ipinfo.io/geo\").then(res => {\n if (res.ok) {\n cache.session.set(\"geolocation_countrycode\", res.data.country);\n return res.data.country;\n }\n });\n }\n};\n\nexport default navigator;\n","import navigator from \"./navigator\";\n\nexport const getNumber = (name: string): number | undefined => {\n return parseInt(get(name), 10) || undefined;\n};\n\nexport const set = (name: string, value: any): string => {\n const uri = navigator.url();\n const re = new RegExp(\"([?&])\" + name + \"=.*?(&|$)\", \"i\");\n if (uri.match(re)) {\n return uri.replace(re, \"$1\" + name + \"=\" + value + \"$2\");\n } else {\n const separator = uri.indexOf(\"?\") !== -1 ? \"&\" : \"?\";\n return uri + separator + name + \"=\" + value;\n }\n};\n\nexport const get = (name: string): string => {\n name = name.replace(/[\\[\\]]/g, \"\\\\$&\");\n const regex = new RegExp(\"[?&]\" + name + \"(=([^&#]*)|&|#|$)\");\n const results = regex.exec(navigator.url());\n\n if (!results || !results[2]) {\n return \"\";\n }\n\n return decodeURIComponent(results[2].replace(/\\+/g, \" \"));\n};\n\nexport const getArray = (name: string): string[] => {\n const qs = get(name);\n if (qs) {\n return qs.split(\",\").filter(i => i);\n }\n\n return [];\n};\n\nexport interface QueryString {\n [key: string]: string | string[] | number | undefined;\n}\n\nexport const stringify = (object: QueryString | undefined): string => {\n if (!object) {\n return \"\";\n }\n\n let qs = \"\";\n\n for (const key of Object.keys(object)) {\n const symbol = qs ? \"&\" : \"?\";\n const value = object[key];\n if (value instanceof Array) {\n if (value.length > 0) {\n qs += `${symbol}${key}=${value.join(\",\")}`;\n }\n } else if (value) {\n qs += `${symbol}${key}=${encodeURIComponent(value.toString()).replace(/%20/g, \"+\")}`;\n }\n }\n\n return qs;\n};\n","export const isTouch = (): boolean => {\n return \"ontouchstart\" in window || navigator.maxTouchPoints > 0 || navigator.msMaxTouchPoints > 0;\n};\n","import { http, Result } from \"@fider/services/http\";\nimport { UserSettings, UserAvatarType, ImageUpload } from \"@fider/models\";\n\ninterface UpdateUserSettings {\n name: string;\n avatar?: ImageUpload;\n avatarType: UserAvatarType;\n settings: UserSettings;\n}\n\nexport const updateUserSettings = async (request: UpdateUserSettings): Promise => {\n return await http.post(\"/_api/user/settings\", request);\n};\n\nexport const changeUserEmail = async (email: string): Promise => {\n return await http.post(\"/_api/user/change-email\", {\n email\n });\n};\n\nexport const deleteCurrentAccount = async (): Promise => {\n return await http.delete(\"/_api/user\");\n};\n\nexport const regenerateAPIKey = async (): Promise> => {\n return await http.post<{ apiKey: string }>(\"/_api/user/regenerate-apikey\");\n};\n","import { http, Result } from \"@fider/services/http\";\nimport { Tag } from \"@fider/models\";\n\nexport const createTag = async (name: string, color: string, isPublic: boolean): Promise> => {\n return http.post(`/api/v1/tags`, { name, color, isPublic }).then(http.event(\"tag\", \"create\"));\n};\n\nexport const updateTag = async (slug: string, name: string, color: string, isPublic: boolean): Promise> => {\n return http.put(`/api/v1/tags/${slug}`, { name, color, isPublic }).then(http.event(\"tag\", \"update\"));\n};\n\nexport const deleteTag = async (slug: string): Promise => {\n return http.delete(`/api/v1/tags/${slug}`).then(http.event(\"tag\", \"delete\"));\n};\n\nexport const assignTag = async (slug: string, postNumber: number): Promise => {\n return http.post(`/api/v1/posts/${postNumber}/tags/${slug}`).then(http.event(\"tag\", \"assign\"));\n};\n\nexport const unassignTag = async (slug: string, postNumber: number): Promise => {\n return http.delete(`/api/v1/posts/${postNumber}/tags/${slug}`).then(http.event(\"tag\", \"unassign\"));\n};\n","import { http, Result, querystring } from \"@fider/services\";\nimport { Post, Vote, ImageUpload } from \"@fider/models\";\n\nexport const getAllPosts = async (): Promise> => {\n return await http.get(\"/api/v1/posts\");\n};\n\nexport interface SearchPostsParams {\n query?: string;\n view?: string;\n limit?: number;\n tags?: string[];\n}\n\nexport const searchPosts = async (params: SearchPostsParams): Promise> => {\n return await http.get(\n `/api/v1/posts${querystring.stringify({\n tags: params.tags,\n query: params.query,\n view: params.view,\n limit: params.limit\n })}`\n );\n};\n\nexport const deletePost = async (postNumber: number, text: string): Promise => {\n return http\n .delete(`/api/v1/posts/${postNumber}`, {\n text\n })\n .then(http.event(\"post\", \"delete\"));\n};\n\nexport const addVote = async (postNumber: number): Promise => {\n return http.post(`/api/v1/posts/${postNumber}/votes`).then(http.event(\"post\", \"vote\"));\n};\n\nexport const removeVote = async (postNumber: number): Promise => {\n return http.delete(`/api/v1/posts/${postNumber}/votes`).then(http.event(\"post\", \"unvote\"));\n};\n\nexport const subscribe = async (postNumber: number): Promise => {\n return http.post(`/api/v1/posts/${postNumber}/subscription`).then(http.event(\"post\", \"subscribe\"));\n};\n\nexport const unsubscribe = async (postNumber: number): Promise => {\n return http.delete(`/api/v1/posts/${postNumber}/subscription`).then(http.event(\"post\", \"unsubscribe\"));\n};\n\nexport const listVotes = async (postNumber: number): Promise> => {\n return http.get(`/api/v1/posts/${postNumber}/votes`);\n};\n\nexport const createComment = async (\n postNumber: number,\n content: string,\n attachments: ImageUpload[]\n): Promise => {\n return http\n .post(`/api/v1/posts/${postNumber}/comments`, { content, attachments })\n .then(http.event(\"comment\", \"create\"));\n};\n\nexport const updateComment = async (\n postNumber: number,\n commentID: number,\n content: string,\n attachments: ImageUpload[]\n): Promise => {\n return http\n .put(`/api/v1/posts/${postNumber}/comments/${commentID}`, { content, attachments })\n .then(http.event(\"comment\", \"update\"));\n};\n\nexport const deleteComment = async (postNumber: number, commentID: number): Promise => {\n return http.delete(`/api/v1/posts/${postNumber}/comments/${commentID}`).then(http.event(\"comment\", \"delete\"));\n};\n\ninterface SetResponseInput {\n status: string;\n text: string;\n originalNumber: number;\n}\n\nexport const respond = async (postNumber: number, input: SetResponseInput): Promise => {\n return http\n .put(`/api/v1/posts/${postNumber}/status`, {\n status: input.status,\n text: input.text,\n originalNumber: input.originalNumber\n })\n .then(http.event(\"post\", \"respond\"));\n};\n\ninterface CreatePostResponse {\n id: number;\n number: number;\n title: string;\n slug: string;\n}\n\nexport const createPost = async (\n title: string,\n description: string,\n attachments: ImageUpload[]\n): Promise> => {\n return http\n .post(`/api/v1/posts`, { title, description, attachments })\n .then(http.event(\"post\", \"create\"));\n};\n\nexport const updatePost = async (\n postNumber: number,\n title: string,\n description: string,\n attachments: ImageUpload[]\n): Promise => {\n return http\n .put(`/api/v1/posts/${postNumber}`, { title, description, attachments })\n .then(http.event(\"post\", \"update\"));\n};\n","import { http, Result } from \"@fider/services/http\";\nimport { UserRole, OAuthConfig, ImageUpload } from \"@fider/models\";\n\nexport interface CheckAvailabilityResponse {\n message: string;\n}\n\nexport interface CreateTenantRequest {\n legalAgreement: boolean;\n tenantName: string;\n subdomain?: string;\n name?: string;\n token?: string;\n email?: string;\n}\n\nexport interface CreateTenantResponse {\n token?: string;\n}\n\nexport const createTenant = async (request: CreateTenantRequest): Promise> => {\n return await http.post(\"/_api/tenants\", request);\n};\n\nexport interface UpdateTenantSettingsRequest {\n logo?: ImageUpload;\n title: string;\n invitation: string;\n welcomeMessage: string;\n cname: string;\n}\n\nexport const updateTenantSettings = async (request: UpdateTenantSettingsRequest): Promise => {\n return await http.post(\"/_api/admin/settings/general\", request);\n};\n\nexport const updateTenantAdvancedSettings = async (customCSS: string): Promise => {\n return await http.post(\"/_api/admin/settings/advanced\", { customCSS });\n};\n\nexport const updateTenantPrivacy = async (isPrivate: boolean): Promise => {\n return await http.post(\"/_api/admin/settings/privacy\", {\n isPrivate\n });\n};\n\nexport const checkAvailability = async (subdomain: string): Promise> => {\n return await http.get(`/_api/tenants/${subdomain}/availability`);\n};\n\nexport const signIn = async (email: string): Promise => {\n return await http.post(\"/_api/signin\", {\n email\n });\n};\n\nexport const completeProfile = async (key: string, name: string): Promise => {\n return await http.post(\"/_api/signin/complete\", {\n key,\n name\n });\n};\n\nexport const changeUserRole = async (userID: number, role: UserRole): Promise => {\n return await http.post(`/_api/admin/roles/${role}/users`, {\n userID\n });\n};\n\nexport const blockUser = async (userID: number): Promise => {\n return await http.put(`/_api/admin/users/${userID}/block`);\n};\n\nexport const unblockUser = async (userID: number): Promise => {\n return await http.delete(`/_api/admin/users/${userID}/block`);\n};\n\nexport const getOAuthConfig = async (provider: string): Promise> => {\n return await http.get(`/_api/admin/oauth/${provider}`);\n};\n\nexport interface CreateEditOAuthConfigRequest {\n provider: string;\n status: number;\n displayName: string;\n clientID: string;\n clientSecret: string;\n authorizeURL: string;\n tokenURL: string;\n scope: string;\n profileURL: string;\n jsonUserIDPath: string;\n jsonUserNamePath: string;\n jsonUserEmailPath: string;\n logo?: ImageUpload;\n}\n\nexport const saveOAuthConfig = async (request: CreateEditOAuthConfigRequest): Promise => {\n return await http.post(\"/_api/admin/oauth\", request);\n};\n","import { http, Result } from \"@fider/services\";\nimport { BillingPlan } from \"@fider/models\";\n\ninterface UpdatePaymentInfoRequest {\n name: string;\n card?: {\n type: string;\n token: string;\n country: string;\n };\n addressLine1: string;\n addressLine2: string;\n addressCity: string;\n addressState: string;\n addressPostalCode: string;\n addressCountry: string;\n vatNumber: string;\n}\n\nexport const listBillingPlans = async (countryCode: string): Promise> => {\n return http.get(`/_api/admin/billing/plans/${countryCode}`);\n};\n\nexport const updatePaymentInfo = async (request: UpdatePaymentInfoRequest): Promise => {\n return http.post(\"/_api/admin/billing/paymentinfo\", request).then(http.event(\"billing\", \"updatepaymentinfo\"));\n};\n\nexport const billingSubscribe = async (planID: string): Promise => {\n return http.post(`/_api/admin/billing/subscription/${planID}`).then(http.event(\"billing\", \"billingsubscribe\"));\n};\n\nexport const cancelBillingSubscription = async (planID: string): Promise => {\n return http\n .delete(`/_api/admin/billing/subscription/${planID}`)\n .then(http.event(\"billing\", \"cancelbillingsubscription\"));\n};\n","import { http, Result } from \"@fider/services\";\n\nexport const getTotalUnreadNotifications = async (): Promise> => {\n return http.get<{ total: number }>(\"/_api/notifications/unread/total\").then(result => {\n return {\n ok: result.ok,\n error: result.error,\n data: result.data ? result.data.total : 0\n };\n });\n};\n\nexport const markAllAsRead = async (): Promise => {\n return await http.post(\"/_api/notifications/read-all\");\n};\n","import { http, Result } from \"@fider/services\";\n\nexport const sendInvites = async (subject: string, message: string, recipients: string[]): Promise => {\n return http.post(\"/api/v1/invitations/send\", { subject, message, recipients }).then(http.event(\"invite\", \"send\"));\n};\n\nexport const sendSampleInvite = async (subject: string, message: string): Promise => {\n return http.post(\"/api/v1/invitations/sample\", { subject, message }).then(http.event(\"invite\", \"sample\"));\n};\n","import { http, Result, navigator, analytics } from \"@fider/services\";\n\nconst ignoreErrors = [\n \"http://gj.track.uc.cn/collect\", // CSP error: UC Browser tries to use sendBeacon to this domain, which is blocked by our CSP rule\n \"null is not an object (evaluating 'c.sheet.insertRule')\", // CSP error: UC Browser throws this error even when page is loaded sucessfully\n \"Refused to evaluate a string as JavaScript because 'unsafe-eval'\", // CSP error: usually thrown because of bad Chrome Extensions\n \"vid_mate_check is not defined\", // CSP error: thrown by VidMate, an Android Browser\n \"SecurityError: Failed to read the 'cssRules' property from 'CSSStyleSheet': Cannot access rules\" // CSP error: usually thrown because of bad Chrome Extensions\n];\n\nexport const logError = async (message: string, err?: Error): Promise => {\n for (const pattern of ignoreErrors) {\n if (message.indexOf(pattern) >= 0) {\n return;\n }\n }\n\n const data = {\n url: navigator.url(),\n stack: err ? err.stack : \"\"\n };\n\n try {\n analytics.error(err);\n return await http.post(\"/_api/log-error\", { message, data });\n } catch (err) {\n // tslint:disable-next-line:no-empty\n }\n};\n","export * from \"./http\";\nexport * from \"./cache\";\nexport * from \"./analytics\";\nexport * from \"./fider\";\nexport * from \"./jwt\";\nexport * from \"./utils\";\nimport * as markdown from \"./markdown\";\nimport * as notify from \"./notify\";\nimport * as querystring from \"./querystring\";\nimport * as device from \"./device\";\nimport * as actions from \"./actions\";\nimport navigator from \"./navigator\";\nexport { actions, querystring, navigator, device, notify, markdown };\n","import React from \"react\";\nimport { ErrorPage } from \"@fider/pages/Error/Error.page\";\n\ninterface ErrorBoundaryProps {\n onError?: (err: Error) => void;\n}\n\ninterface ErrorBoundaryState {\n error?: Error;\n errorInfo?: React.ErrorInfo;\n}\n\nexport class ErrorBoundary extends React.Component {\n constructor(props: any) {\n super(props);\n\n this.state = {\n error: undefined,\n errorInfo: undefined\n };\n }\n\n public componentDidCatch(error: Error, errorInfo: React.ErrorInfo) {\n const onError = this.props.onError;\n if (onError) {\n onError(error);\n }\n\n this.setState({\n error,\n errorInfo\n });\n }\n\n public render() {\n const { error, errorInfo } = this.state;\n\n if (error && errorInfo) {\n return ;\n } else {\n return this.props.children;\n }\n }\n}\n","import \"./ShowPostResponse.scss\";\n\nimport React from \"react\";\nimport { PostResponse, PostStatus } from \"@fider/models\";\nimport { Avatar, MultiLineText, UserName, Segment } from \"@fider/components/common\";\n\ninterface ShowPostStatusProps {\n status: PostStatus;\n}\n\nexport const ShowPostStatus = (props: ShowPostStatusProps) => {\n return {props.status.title};\n};\n\nconst DuplicateDetails = (props: PostResponseProps): JSX.Element | null => {\n if (!props.response) {\n return null;\n }\n\n const original = props.response.original;\n if (!original) {\n return null;\n }\n\n return (\n \n );\n};\n\ninterface PostResponseProps {\n status: string;\n response: PostResponse | null;\n showUser: boolean;\n}\n\nconst StatusDetails = (props: PostResponseProps): JSX.Element | null => {\n if (!props.response || !props.response.text) {\n return null;\n }\n\n return (\n
\n \n
\n );\n};\n\nexport const ShowPostResponse = (props: PostResponseProps): JSX.Element => {\n const status = PostStatus.Get(props.status);\n\n if (props.response && (status.show || props.response.text)) {\n return (\n \n {status.show && }\n {props.showUser && (\n <>\n \n \n )}\n {status === PostStatus.Duplicate ? DuplicateDetails(props) : StatusDetails(props)}\n \n );\n }\n\n return
;\n};\n","import React from \"react\";\nimport { Modal, SignInControl, LegalFooter } from \"@fider/components/common\";\n\ninterface SignInModalProps {\n isOpen: boolean;\n}\n\ninterface SignInModalState {\n isOpen: boolean;\n email: string;\n emailSent: boolean;\n}\n\nexport class SignInModal extends React.Component {\n constructor(props: SignInModalProps) {\n super(props);\n this.state = {\n isOpen: this.props.isOpen,\n email: \"\",\n emailSent: false\n };\n\n this.onEmailSent = this.onEmailSent.bind(this);\n }\n\n public componentWillReceiveProps(nextProps: SignInModalProps) {\n this.setState({\n isOpen: nextProps.isOpen\n });\n }\n\n private onEmailSent(email: string): void {\n this.setState({ email, emailSent: true }, () => {\n setTimeout(() => {\n this.setState({ email: \"\", emailSent: false });\n }, 5000);\n });\n }\n\n private closeModal = () => {\n this.setState({ isOpen: false, emailSent: false });\n };\n\n public render() {\n const content = this.state.emailSent ? (\n <>\n

\n We have just sent a confirmation link to {this.state.email}.
Click the link and you’ll be signed\n in.\n

\n

\n \n OK\n \n

\n \n ) : (\n \n );\n\n return (\n \n Sign in to raise your voice\n {content}\n \n \n );\n }\n}\n","import \"./VoteCounter.scss\";\n\nimport React from \"react\";\nimport { Post, PostStatus } from \"@fider/models\";\nimport { actions, device, classSet, Fider } from \"@fider/services\";\nimport { SignInModal } from \"@fider/components\";\nimport { FaCaretUp } from \"react-icons/fa\";\n\ninterface VoteCounterProps {\n post: Post;\n}\n\ninterface VoteCounterState {\n voted: boolean;\n count: number;\n showSignIn: boolean;\n}\n\nexport class VoteCounter extends React.Component {\n constructor(props: VoteCounterProps) {\n super(props);\n this.state = {\n voted: props.post.hasVoted,\n count: props.post.votesCount,\n showSignIn: false\n };\n }\n\n private voteOrUndo = async () => {\n if (!Fider.session.isAuthenticated) {\n this.setState({ showSignIn: true });\n return;\n }\n\n const action = this.state.voted ? actions.removeVote : actions.addVote;\n\n const response = await action(this.props.post.number);\n if (response.ok) {\n this.setState(state => ({\n voted: !state.voted,\n count: state.count + (state.voted ? -1 : 1)\n }));\n }\n };\n\n public render() {\n const status = PostStatus.Get(this.props.post.status);\n\n const className = classSet({\n \"m-voted\": !status.closed && this.state.voted,\n \"m-disabled\": status.closed,\n \"no-touch\": !device.isTouch()\n });\n\n const vote = (\n \n );\n\n const disabled = (\n \n );\n\n return (\n <>\n \n
{status.closed ? disabled : vote}
\n \n );\n }\n}\n","export * from \"./ErrorBoundary\";\nexport * from \"./ShowPostResponse\";\nexport * from \"./ShowTag\";\nexport * from \"./SignInModal\";\nexport * from \"./VoteCounter\";\nexport * from \"./common\";\n","import React from \"react\";\nimport { classSet } from \"@fider/services\";\n\ninterface ButtonProps {\n className?: string;\n disabled?: boolean;\n href?: string;\n rel?: \"nofollow\";\n color?: \"positive\" | \"danger\" | \"default\" | \"cancel\";\n fluid?: boolean;\n size?: \"mini\" | \"tiny\" | \"small\" | \"normal\" | \"large\";\n onClick?: (event: ButtonClickEvent) => Promise;\n}\n\ninterface ButtonState {\n clicked: boolean;\n}\n\nimport \"./Button.scss\";\n\nexport class ButtonClickEvent {\n private shouldEnable = true;\n public preventEnable(): void {\n this.shouldEnable = false;\n }\n public canEnable(): boolean {\n return this.shouldEnable;\n }\n}\n\nexport class Button extends React.Component {\n private unmounted: boolean = false;\n\n public static defaultProps: Partial = {\n size: \"small\",\n fluid: false,\n color: \"default\"\n };\n\n public constructor(props: ButtonProps) {\n super(props);\n this.state = {\n clicked: false\n };\n }\n\n public componentWillUnmount() {\n this.unmounted = true;\n }\n\n public click = async (e?: React.SyntheticEvent) => {\n if (e) {\n e.preventDefault();\n e.stopPropagation();\n }\n\n if (this.state.clicked) {\n return;\n }\n\n const event = new ButtonClickEvent();\n this.setState({ clicked: true });\n if (this.props.onClick) {\n await this.props.onClick(event);\n if (!this.unmounted && event.canEnable()) {\n this.setState({ clicked: false });\n }\n }\n };\n\n public render() {\n const className = classSet({\n \"c-button\": true,\n \"m-fluid\": this.props.fluid,\n [`m-${this.props.size}`]: this.props.size,\n [`m-${this.props.color}`]: this.props.color,\n \"m-loading\": this.state.clicked,\n \"m-disabled\": this.state.clicked || this.props.disabled,\n [this.props.className!]: this.props.className\n });\n\n if (this.props.href) {\n return (\n \n {this.props.children}\n \n );\n } else if (this.props.onClick) {\n return (\n \n );\n } else {\n return (\n \n );\n }\n }\n}\n","import React from \"react\";\nimport \"./CardInfo.scss\";\nimport { Fider } from \"@fider/services\";\n\nconst visa = require(\"@fider/assets/images/card-visa.svg\");\nconst diners = require(\"@fider/assets/images/card-diners.svg\");\nconst americanExpress = require(\"@fider/assets/images/card-americanexpress.svg\");\nconst discover = require(\"@fider/assets/images/card-discover.svg\");\nconst jcb = require(\"@fider/assets/images/card-jcb.svg\");\nconst unknown = require(\"@fider/assets/images/card-unknown.svg\");\nconst masterCard = require(\"@fider/assets/images/card-mastercard.svg\");\n\ninterface CardBrandProps {\n brand: string;\n last4: string;\n expMonth: number;\n expYear: number;\n}\n\nexport const CardInfo = (props: CardBrandProps) => {\n return (\n

\n {props.brand}\n \n **** **** **** {props.last4}{\" \"}\n \n Exp. {props.expMonth}/{props.expYear}\n \n \n

\n );\n};\n\nconst brandImage = (brand: string) => {\n switch (brand) {\n case \"Visa\":\n return visa;\n case \"American Express\":\n return americanExpress;\n case \"MasterCard\":\n return masterCard;\n case \"Discover\":\n return discover;\n case \"JCB\":\n return jcb;\n case \"Diners Club\":\n return diners;\n }\n return unknown;\n};\n","import \"./Form.scss\";\n\nimport React from \"react\";\nimport { Failure, classSet } from \"@fider/services\";\nimport { DisplayError } from \"@fider/components\";\n\ninterface ValidationContext {\n error?: Failure;\n}\n\ninterface FormProps {\n className?: string;\n size?: \"mini\" | \"normal\";\n error?: Failure;\n}\n\nexport const ValidationContext = React.createContext({});\n\nexport const Form: React.StatelessComponent = props => {\n const className = classSet({\n \"c-form\": true,\n [props.className!]: props.className,\n [`m-${props.size}`]: props.size\n });\n\n return (\n
\n \n {props.children}\n \n );\n};\n","import React from \"react\";\nimport { Failure } from \"@fider/services\";\n\nconst arrayToTag = (items: string[]) => {\n return items.map(m =>
  • {m}
  • );\n};\n\ninterface DisplayErrorProps {\n error?: Failure;\n fields?: string[];\n}\n\nexport const hasError = (field?: string, error?: Failure): boolean => {\n if (field && error && error.errors) {\n for (const err of error.errors) {\n if (err.field === field) {\n return true;\n }\n }\n }\n return false;\n};\n\nexport const DisplayError = (props: DisplayErrorProps) => {\n if (!props.error || !props.error.errors) {\n return null;\n }\n\n const dict = props.error.errors.reduce(\n (result, err) => {\n result[err.field || \"\"] = result[err.field || \"\"] || [];\n result[err.field || \"\"].push(err.message);\n return result;\n },\n {} as { [key: string]: string[] }\n );\n\n let items: JSX.Element[] = [];\n\n if (dict[\"\"] && !props.fields) {\n items = arrayToTag(dict[\"\"]);\n } else if (props.fields) {\n for (const field of props.fields || Object.keys(dict)) {\n if (dict.hasOwnProperty(field)) {\n const tags = arrayToTag(dict[field]);\n tags.forEach(t => items.push(t));\n }\n }\n }\n\n return items.length > 0 ? (\n
    \n
      {items}
    \n
    \n ) : null;\n};\n","import React from \"react\";\nimport { classSet } from \"@fider/services\";\nimport { ValidationContext } from \"./Form\";\nimport { DisplayError, hasError } from \"./DisplayError\";\nimport { IconType } from \"react-icons\";\n\ninterface InputProps {\n field: string;\n label?: string;\n className?: string;\n autoComplete?: string;\n autoFocus?: boolean;\n noTabFocus?: boolean;\n afterLabel?: JSX.Element;\n icon?: IconType;\n maxLength?: number;\n value?: string;\n disabled?: boolean;\n suffix?: string | JSX.Element;\n placeholder?: string;\n onIconClick?: () => void;\n onSubmit?: () => void;\n onFocus?: () => void;\n inputRef?: (node: HTMLInputElement) => void;\n onChange?: (value: string) => void;\n}\n\nexport const Input: React.StatelessComponent = props => {\n const onChange = (e: React.FormEvent) => {\n if (props.onChange) {\n props.onChange(e.currentTarget.value);\n }\n };\n\n const onKeyDown = (event: React.KeyboardEvent): void => {\n if (event.keyCode === 13 && props.onSubmit) {\n props.onSubmit();\n event.preventDefault();\n }\n };\n\n const suffix =\n typeof props.suffix === \"string\" ? {props.suffix} : props.suffix;\n\n const icon = !!props.icon\n ? React.createElement(props.icon, {\n onClick: props.onIconClick,\n className: classSet({ link: !!props.onIconClick })\n })\n : undefined;\n\n return (\n \n {ctx => (\n \n {!!props.label && (\n \n )}\n
    \n \n {icon}\n {suffix}\n
    \n \n {props.children}\n
    \n )}\n \n );\n};\n","import \"./ImageUploader.scss\";\n\nimport React from \"react\";\nimport { ValidationContext } from \"./Form\";\nimport { DisplayError, hasError } from \"./DisplayError\";\nimport { classSet, fileToBase64, uploadedImageURL } from \"@fider/services\";\nimport { Button, ButtonClickEvent, Modal } from \"@fider/components\";\nimport { FaRegImage } from \"react-icons/fa\";\nimport { ImageUpload } from \"@fider/models\";\n\nconst hardFileSizeLimit = 5 * 1024 * 1024;\n\ninterface ImageUploaderProps {\n instanceID?: string;\n field: string;\n label?: string;\n bkey?: string;\n disabled?: boolean;\n previewMaxWidth: number;\n onChange(state: ImageUpload, instanceID?: string, previewURL?: string): void;\n}\n\ninterface ImageUploaderState extends ImageUpload {\n previewURL?: string;\n showModal: boolean;\n}\n\nexport class ImageUploader extends React.Component {\n private fileSelector?: HTMLInputElement | null;\n\n constructor(props: ImageUploaderProps) {\n super(props);\n this.state = {\n upload: undefined,\n remove: false,\n showModal: false,\n previewURL: uploadedImageURL(this.props.bkey, this.props.previewMaxWidth)\n };\n }\n\n public fileChanged = async (e: React.ChangeEvent) => {\n if (e.target.files && e.target.files[0]) {\n const file = e.target.files[0];\n if (file.size > hardFileSizeLimit) {\n alert(\"The image size must be smaller than 5MB.\");\n return;\n }\n\n const base64 = await fileToBase64(file);\n this.setState(\n {\n bkey: this.props.bkey,\n upload: {\n fileName: file.name,\n content: base64,\n contentType: file.type,\n action: \"upload\"\n },\n remove: false,\n previewURL: `data:${file.type};base64,${base64}`\n },\n () => {\n this.props.onChange(this.state, this.props.instanceID, this.state.previewURL);\n }\n );\n }\n };\n\n public removeFile = async (e: ButtonClickEvent) => {\n if (this.fileSelector) {\n this.fileSelector.value = \"\";\n }\n\n this.setState(\n {\n bkey: this.props.bkey,\n remove: true,\n upload: undefined,\n previewURL: undefined\n },\n () => {\n this.props.onChange(\n {\n bkey: this.state.bkey,\n remove: this.state.remove,\n upload: this.state.upload\n },\n this.props.instanceID,\n this.state.previewURL\n );\n }\n );\n };\n\n public selectFile = async (e: ButtonClickEvent) => {\n if (this.fileSelector) {\n this.fileSelector.click();\n }\n };\n\n private openModal = () => {\n this.setState({ showModal: true });\n };\n\n private closeModal = async () => {\n this.setState({ showModal: false });\n };\n\n private modal() {\n return (\n \n \n {this.props.bkey ? : }\n \n\n \n \n \n \n );\n }\n\n public render() {\n const isUploading = !!this.state.upload;\n const hasFile = (!this.state.remove && this.props.bkey) || isUploading;\n\n const imgStyles: React.CSSProperties = {\n maxWidth: `${this.props.previewMaxWidth}px`\n };\n\n return (\n \n {ctx => (\n \n {this.modal()}\n \n\n {hasFile && (\n
    \n \n {!this.props.disabled && (\n \n )}\n
    \n )}\n\n (this.fileSelector = e)} type=\"file\" onChange={this.fileChanged} accept=\"image/*\" />\n \n {!hasFile && (\n
    \n \n
    \n )}\n {this.props.children}\n \n )}\n
    \n );\n }\n}\n","import React from \"react\";\nimport { ImageUploader } from \"./ImageUploader\";\nimport { ImageUpload } from \"@fider/models\";\nimport { ValidationContext, hasError, DisplayError } from \"@fider/components\";\nimport { classSet } from \"@fider/services\";\n\nimport \"./MultiImageUploader.scss\";\n\ninterface MultiImageUploaderProps {\n field: string;\n maxUploads: number;\n bkeys?: string[];\n previewMaxWidth: number;\n onChange?: (uploads: ImageUpload[]) => void;\n}\n\ninterface MultiImageUploaderInstances {\n [key: string]: {\n element: JSX.Element;\n upload?: ImageUpload;\n };\n}\n\ninterface MultiImageUploaderState {\n count: number;\n instances: MultiImageUploaderInstances;\n removed: ImageUpload[];\n}\n\nexport class MultiImageUploader extends React.Component {\n constructor(props: MultiImageUploaderProps) {\n super(props);\n\n let count = 1;\n const instances = {};\n if (props.bkeys) {\n for (const bkey of props.bkeys) {\n count++;\n this.addNewElement(instances, bkey);\n }\n }\n\n if (count <= this.props.maxUploads) {\n count++;\n this.addNewElement(instances);\n }\n\n this.state = { instances, count, removed: [] };\n }\n\n private imageUploaded = (upload: ImageUpload, instanceID: string) => {\n const instances = { ...this.state.instances };\n const removed = [...this.state.removed];\n let count = this.state.count;\n if (upload.remove) {\n if (upload.bkey) {\n removed.push(upload);\n }\n delete instances[instanceID];\n if (--count === this.props.maxUploads) {\n this.addNewElement(instances);\n }\n } else {\n instances[instanceID].upload = upload;\n if (count++ <= this.props.maxUploads) {\n this.addNewElement(instances);\n }\n }\n this.setState({ instances, count, removed }, this.triggerOnChange);\n };\n\n private triggerOnChange() {\n if (this.props.onChange) {\n const uploads = Object.keys(this.state.instances)\n .map(k => this.state.instances[k].upload)\n .concat(this.state.removed)\n .filter(x => !!x) as ImageUpload[];\n this.props.onChange(uploads);\n }\n }\n\n private addNewElement(instances: MultiImageUploaderInstances, bkey?: string) {\n const id = btoa(Math.random().toString());\n instances[id] = {\n element: (\n \n )\n };\n }\n\n public render() {\n const elements = Object.keys(this.state.instances).map(k => this.state.instances[k].element);\n return (\n \n {ctx => (\n \n
    {elements}
    \n \n \n )}\n
    \n );\n }\n}\n","import React from \"react\";\nimport { classSet } from \"@fider/services\";\nimport { ValidationContext } from \"../\";\nimport { DisplayError, hasError } from \"./DisplayError\";\nimport Textarea from \"react-textarea-autosize\";\n\ninterface TextAreaProps {\n label?: string;\n field: string;\n value?: string;\n disabled?: boolean;\n minRows?: number;\n placeholder?: string;\n onChange?: (value: string) => void;\n inputRef?: (node: HTMLTextAreaElement) => void;\n onFocus?: React.FocusEventHandler;\n}\n\nexport const TextArea: React.StatelessComponent = props => {\n const onChange = (e: React.FormEvent) => {\n if (props.onChange) {\n props.onChange(e.currentTarget.value);\n }\n };\n\n return (\n \n {ctx => (\n <>\n \n {!!props.label && }\n
    \n \n
    \n \n {props.children}\n \n \n )}\n
    \n );\n};\n","import React from \"react\";\n\ninterface RadioButtonOption {\n value: string;\n label: string;\n}\n\ninterface RadioButtonProps {\n label: string;\n field: string;\n defaultOption: RadioButtonOption;\n options: RadioButtonOption[];\n onSelect?: (value: RadioButtonOption) => void;\n}\n\ninterface RadioButtonState {\n selected: RadioButtonOption;\n}\n\nexport class RadioButton extends React.Component {\n constructor(props: RadioButtonProps) {\n super(props);\n this.state = {\n selected: props.defaultOption || props.options[0]\n };\n }\n\n private onChange = (selected: RadioButtonOption) => {\n this.setState({ selected }, () => {\n if (this.props.onSelect) {\n this.props.onSelect(this.state.selected);\n }\n });\n };\n\n public render() {\n const inputs = this.props.options.map(option => {\n return (\n
    \n \n \n
    \n );\n });\n\n return (\n
    \n \n {inputs}\n
    \n );\n }\n}\n","import React from \"react\";\nimport { classSet } from \"@fider/services\";\nimport { ValidationContext } from \"./Form\";\nimport { DisplayError, hasError } from \"./DisplayError\";\n\nexport interface SelectOption {\n value: string;\n label: string;\n}\n\ninterface SelectProps {\n field: string;\n label?: string;\n maxLength?: number;\n defaultValue?: string;\n options: SelectOption[];\n onChange?: (option?: SelectOption) => void;\n}\n\ninterface SelectState {\n selected?: SelectOption;\n}\n\nexport class Select extends React.Component {\n constructor(props: SelectProps) {\n super(props);\n this.state = {\n selected: this.getOption(props.defaultValue)\n };\n }\n\n private getOption(value?: string): SelectOption | undefined {\n if (value && this.props.options) {\n const filtered = this.props.options.filter(x => x.value === value);\n if (filtered && filtered.length > 0) {\n return filtered[0];\n }\n }\n }\n\n private onChange = (e: React.FormEvent) => {\n let selected: SelectOption | undefined;\n if (e.currentTarget.value) {\n const options = this.props.options.filter(o => o.value === e.currentTarget.value);\n if (options && options.length > 0) {\n selected = options[0];\n }\n }\n\n this.setState({ selected }, () => {\n if (this.props.onChange) {\n this.props.onChange(this.state.selected);\n }\n });\n };\n\n public render() {\n const options = this.props.options.map(option => {\n return (\n \n );\n });\n\n return (\n \n {ctx => (\n <>\n \n {!!this.props.label && }\n
    \n \n {options}\n \n
    \n \n {this.props.children}\n \n \n )}\n
    \n );\n }\n}\n","import React from \"react\";\nimport { classSet } from \"@fider/services\";\nimport { ValidationContext } from \"./Form\";\nimport { DisplayError, hasError } from \"./DisplayError\";\n\ninterface FieldProps {\n className?: string;\n label?: string;\n field?: string;\n afterLabel?: JSX.Element;\n}\n\nexport const Field: React.StatelessComponent = props => {\n const fields = props.field ? [props.field] : undefined;\n return (\n \n {ctx => (\n \n {!!props.label && (\n \n )}\n {props.children}\n \n \n )}\n \n );\n};\n","import React from \"react\";\nimport { classSet } from \"@fider/services\";\nimport { DisplayError, ValidationContext, hasError } from \"../\";\n\ninterface CheckboxProps {\n field: string;\n checked?: boolean;\n onChange: (checked: boolean) => void;\n}\n\ninterface CheckboxState {\n checked: boolean;\n}\n\nexport class Checkbox extends React.Component {\n constructor(props: CheckboxProps) {\n super(props);\n this.state = {\n checked: props.checked || false\n };\n }\n\n private onChange = (e: React.FormEvent) => {\n this.setState({ checked: e.currentTarget.checked }, () => {\n if (this.props.onChange) {\n this.props.onChange(this.state.checked);\n }\n });\n };\n\n public render() {\n return (\n \n {ctx => (\n \n \n \n \n )}\n \n );\n }\n}\n","import React from \"react\";\nimport { uploadedImageURL } from \"@fider/services\";\nimport { Modal, Button, Loader } from \"@fider/components\";\n\nimport \"./ImageViewer.scss\";\n\ninterface ImageViewerProps {\n bkey: string;\n}\n\ninterface ImageViewerState {\n showModal: boolean;\n loadedThumbnail: boolean;\n loadedPreview: boolean;\n}\n\nexport class ImageViewer extends React.Component {\n constructor(props: ImageViewerProps) {\n super(props);\n\n this.state = {\n showModal: false,\n loadedThumbnail: false,\n loadedPreview: false\n };\n }\n\n private openModal = () => {\n if (this.state.loadedThumbnail) {\n this.setState({ showModal: true });\n }\n };\n\n private closeModal = async () => {\n this.setState({ showModal: false });\n };\n\n private onThumbnailLoad = () => {\n this.setState({ loadedThumbnail: true });\n };\n\n private onPreviewLoad = () => {\n this.setState({ loadedPreview: true });\n };\n\n private modal() {\n return (\n \n \n {!this.state.loadedPreview && }\n \n \n\n \n \n \n \n );\n }\n\n public render() {\n const previewURL = uploadedImageURL(this.props.bkey, 200);\n return (\n
    \n {this.modal()}\n {!this.state.loadedThumbnail && }\n \n
    \n );\n }\n}\n","import React from \"react\";\nimport { markdown } from \"@fider/services\";\n\ninterface MultiLineText {\n className?: string;\n text?: string;\n style: \"full\" | \"simple\";\n}\n\nexport const MultiLineText = (props: MultiLineText) => {\n if (!props.text) {\n return

    ;\n }\n\n const func = props.style === \"full\" ? markdown.full : markdown.simple;\n return (\n

    \n );\n};\n","import React from \"react\";\nimport { useFider } from \"@fider/hooks\";\n\nexport const EnvironmentInfo = () => {\n const fider = useFider();\n\n if (fider.isProduction()) {\n return null;\n }\n\n return (\n
    \n Env: {fider.settings.environment} | Compiler: {fider.settings.compiler} | Version: {fider.settings.version} |\n BuildTime: {fider.settings.buildTime || \"N/A\"} |\n {!fider.isSingleHostMode() && `TenantID: ${fider.session.tenant.id}`} |{\" \"}\n {fider.session.isAuthenticated && `UserID: ${fider.session.user.id}`}\n
    \n );\n};\n","import \"./Message.scss\";\n\nimport React from \"react\";\nimport { classSet } from \"@fider/services\";\nimport { FaBan, FaRegCheckCircle, FaExclamationTriangle } from \"react-icons/fa\";\n\ninterface MessageProps {\n type: \"success\" | \"warning\" | \"error\";\n showIcon?: boolean;\n}\n\nexport const Message: React.StatelessComponent = props => {\n const className = classSet({\n \"c-message\": true,\n [`m-${props.type}`]: true\n });\n\n const icon =\n props.type === \"error\" ? : props.type === \"warning\" ? : ;\n\n return (\n

    \n {props.showIcon === true && icon}\n {props.children}\n

    \n );\n};\n","import React from \"react\";\nimport { TenantStatus } from \"@fider/models\";\nimport { Message } from \"./Message\";\nimport { useFider } from \"@fider/hooks\";\n\nexport const TenantStatusInfo = () => {\n const fider = useFider();\n\n if (!fider.isBillingEnabled() || fider.session.tenant.status !== TenantStatus.Locked) {\n return null;\n }\n\n return (\n
    \n \n This site is locked due to lack of a subscription. Visit the Billing settings to\n update it.\n \n
    \n );\n};\n","import \"./Avatar.scss\";\n\nimport React from \"react\";\nimport { classSet } from \"@fider/services\";\nimport { isCollaborator, UserRole } from \"@fider/models\";\n\ninterface AvatarProps {\n user: {\n role?: UserRole;\n avatarURL: string;\n };\n size?: \"small\" | \"normal\" | \"large\";\n}\n\nexport const Avatar = (props: AvatarProps) => {\n const size = props.size || \"normal\";\n\n const className = classSet({\n \"c-avatar\": true,\n [`m-${size}`]: true,\n \"m-staff\": props.user.role && isCollaborator(props.user.role)\n });\n\n return ;\n};\n","import \"./Hint.scss\";\n\nimport React from \"react\";\nimport { FaTimes } from \"react-icons/fa\";\n\nimport { cache } from \"@fider/services\";\n\ninterface HintProps {\n permanentCloseKey?: string;\n condition?: boolean;\n}\n\ninterface HintState {\n isClosed: boolean;\n}\n\nexport class Hint extends React.Component {\n private cacheKey: string | undefined;\n\n constructor(props: HintProps) {\n super(props);\n this.cacheKey = this.props.permanentCloseKey ? `Hint-Closed-${this.props.permanentCloseKey}` : undefined;\n this.state = {\n isClosed: this.cacheKey ? cache.local.has(this.cacheKey) : false\n };\n }\n\n private close = () => {\n if (this.cacheKey) {\n cache.local.set(this.cacheKey, \"true\");\n }\n\n this.setState({\n isClosed: true\n });\n };\n\n public render() {\n if (this.props.condition === false || this.state.isClosed) {\n return null;\n }\n\n return (\n

    \n HINT: {this.props.children}\n {this.cacheKey && }\n

    \n );\n }\n}\n","import \"./Footer.scss\";\n\nimport React from \"react\";\nimport { PrivacyPolicy, TermsOfService } from \"@fider/components\";\nimport { Fider } from \"@fider/services\";\n\nexport const Footer = () => {\n return (\n
    \n
    \n {Fider.settings.hasLegal && (\n
    \n \n ·\n \n
    \n )}\n \n \"Fider\"\n Powered by Fider\n \n
    \n
    \n );\n};\n","import \"./Header.scss\";\n\nimport React from \"react\";\nimport { SignInModal, EnvironmentInfo, Avatar, TenantLogo, TenantStatusInfo } from \"@fider/components\";\nimport { actions, Fider } from \"@fider/services\";\nimport { FaUser, FaCog, FaCaretDown } from \"react-icons/fa\";\n\ninterface HeaderState {\n showSignIn: boolean;\n unreadNotifications: number;\n}\n\nexport class Header extends React.Component<{}, HeaderState> {\n constructor(props: {}) {\n super(props);\n this.state = {\n showSignIn: false,\n unreadNotifications: 0\n };\n }\n\n public componentDidMount(): void {\n if (Fider.session.isAuthenticated) {\n actions.getTotalUnreadNotifications().then(result => {\n if (result.ok && result.data > 0) {\n this.setState({ unreadNotifications: result.data });\n }\n });\n }\n }\n\n private showModal = () => {\n if (!Fider.session.isAuthenticated) {\n this.setState({ showSignIn: true });\n }\n };\n\n public render() {\n const items = Fider.session.isAuthenticated && (\n
    \n
    \n {Fider.session.user.name}\n
    \n \n Settings\n \n \n Notifications\n {this.state.unreadNotifications > 0 &&
    {this.state.unreadNotifications}
    }\n
    \n
    \n {Fider.session.user.isCollaborator && [\n
    \n Administration\n
    ,\n \n Site Settings\n ,\n
    \n ]}\n \n Sign out\n \n
    \n );\n\n const showRightMenu = Fider.session.isAuthenticated || !Fider.session.tenant.isPrivate;\n return (\n
    \n \n \n
    \n
    \n \n \n {Fider.session.tenant.name}\n \n {showRightMenu && (\n
    \n {Fider.session.isAuthenticated && }\n {this.state.unreadNotifications > 0 &&
    }\n {!Fider.session.isAuthenticated && Sign in}\n {Fider.session.isAuthenticated && }\n {items}\n
    \n )}\n
    \n
    \n \n
    \n );\n }\n}\n","import \"./Heading.scss\";\n\nimport React from \"react\";\nimport { classSet } from \"@fider/services\";\nimport { IconType } from \"react-icons\";\n\ninterface HeadingLogo {\n title: string;\n dividing?: boolean;\n size?: \"normal\" | \"small\";\n icon?: IconType;\n subtitle?: string;\n className?: string;\n}\n\nconst Header: React.StatelessComponent<{ level: number; className: string }> = props =>\n React.createElement(`h${props.level}`, { className: props.className }, props.children);\n\nexport const Heading = (props: HeadingLogo) => {\n const size = props.size || \"normal\";\n const level = size === \"normal\" ? 2 : 3;\n const className = classSet({\n \"c-heading\": true,\n \"m-dividing\": props.dividing || false,\n [`m-${size}`]: true,\n [`${props.className}`]: props.className\n });\n\n const iconClassName = classSet({\n \"c-heading-icon\": true,\n circular: level <= 2\n });\n\n const icon = props.icon &&
    {React.createElement(props.icon)}
    ;\n\n return (\n
    \n {icon}\n
    \n {props.title}\n
    {props.subtitle}
    \n
    \n
    \n );\n};\n","import React from \"react\";\nimport { Modal, Checkbox } from \"@fider/components/common\";\nimport { Fider } from \"@fider/services\";\n\ninterface LegalAgreementProps {\n onChange: (agreed: boolean) => void;\n}\n\nexport const TermsOfService: React.StatelessComponent<{}> = () => {\n if (Fider.settings.hasLegal) {\n return (\n \n Terms of Service\n \n );\n }\n return null;\n};\n\nexport const PrivacyPolicy: React.StatelessComponent<{}> = () => {\n if (Fider.settings.hasLegal) {\n return (\n \n Privacy Policy\n \n );\n }\n return null;\n};\n\nexport const LegalNotice: React.StatelessComponent<{}> = () => {\n if (Fider.settings.hasLegal) {\n return (\n

    \n By signing in, you agree to the and .\n

    \n );\n }\n return null;\n};\n\nexport const LegalFooter: React.StatelessComponent<{}> = () => {\n if (Fider.settings.hasLegal) {\n return (\n \n \n \n );\n }\n return null;\n};\n\nexport const LegalAgreement: React.StatelessComponent = props => {\n if (Fider.settings.hasLegal) {\n return (\n \n I have read and agree to the and .\n \n );\n }\n return null;\n};\n","import React from \"react\";\nimport { Button, OAuthProviderLogo } from \"@fider/components/common\";\nimport { classSet } from \"@fider/services\";\n\ninterface SocialSignInButtonProps {\n option: {\n displayName: string;\n provider?: string;\n url?: string;\n logoBlobKey?: string;\n logoURL?: string;\n };\n redirectTo?: string;\n}\n\nexport const SocialSignInButton = (props: SocialSignInButtonProps) => {\n const redirectTo = props.redirectTo || location.href;\n const href = props.option.url ? `${props.option.url}?redirect=${redirectTo}` : undefined;\n const className = classSet({\n \"m-social\": true,\n [`m-${props.option.provider}`]: props.option.provider\n });\n\n return (\n \n );\n};\n","import \"./SignInControl.scss\";\n\nimport React from \"react\";\nimport { SocialSignInButton, Form, Button, Input, Message } from \"@fider/components\";\nimport { device, actions, Failure, Fider, isCookieEnabled } from \"@fider/services\";\n\ninterface SignInControlState {\n email: string;\n error?: Failure;\n}\n\ninterface SignInControlProps {\n useEmail: boolean;\n redirectTo?: string;\n onEmailSent?: (email: string) => void;\n}\n\nexport class SignInControl extends React.Component {\n constructor(props: SignInControlProps) {\n super(props);\n this.state = {\n email: \"\"\n };\n }\n\n private signIn = async () => {\n const result = await actions.signIn(this.state.email);\n if (result.ok) {\n if (this.props.onEmailSent) {\n this.props.onEmailSent(this.state.email);\n }\n this.setState({ email: \"\", error: undefined });\n } else if (result.error) {\n this.setState({ error: result.error });\n }\n };\n\n private setEmail = (email: string) => {\n this.setState({ email });\n };\n\n public render() {\n const providersLen = Fider.settings.oauth.length;\n\n if (!isCookieEnabled()) {\n return (\n \n

    Cookies Required

    \n

    Cookies are not enabled on your browser. Please enable cookies in your browser preferences to continue.

    \n
    \n );\n }\n\n return (\n
    \n {providersLen > 0 && (\n
    \n
    \n {Fider.settings.oauth.map((o, i) => (\n \n {i % 4 === 0 &&
    }\n
    \n \n
    \n \n ))}\n
    \n

    We will never post to these accounts on your behalf.

    \n
    \n )}\n\n {providersLen > 0 &&
    OR
    }\n\n {this.props.useEmail && (\n
    \n

    Enter your email address to sign in

    \n
    \n \n Sign in\n \n }\n />\n \n
    \n )}\n
    \n );\n }\n}\n","import \"./Segment.scss\";\n\nimport React from \"react\";\n\ninterface SegmentProps {\n className?: string;\n}\n\nexport const Segments: React.StatelessComponent = props => {\n return
    {props.children}
    ;\n};\n\nexport const Segment: React.StatelessComponent = props => {\n return
    {props.children}
    ;\n};\n","import \"./List.scss\";\n\nimport React from \"react\";\nimport { classSet } from \"@fider/services\";\n\ninterface ListProps {\n className?: string;\n divided?: boolean;\n hover?: boolean;\n}\n\ninterface ListItemProps {\n className?: string;\n onClick?: () => void;\n}\n\nexport const List: React.StatelessComponent = props => {\n const className = classSet({\n \"c-list\": true,\n [props.className || \"\"]: true,\n \"m-divided\": props.divided,\n \"m-hover\": props.hover\n });\n\n return
    {props.children}
    ;\n};\n\nexport const ListItem: React.StatelessComponent = props => {\n const className = classSet({\n \"c-list-item\": true,\n [props.className || \"\"]: true,\n \"m-selectable\": props.onClick\n });\n\n if (props.onClick) {\n return (\n
    \n {props.children}\n
    \n );\n }\n return
    {props.children}
    ;\n};\n","import React from \"react\";\nimport { formatDate, timeSince } from \"@fider/services\";\n\ninterface MomentText {\n date: Date | string;\n format?: \"full\" | \"timeSince\";\n}\n\nexport const Moment = (props: MomentText) => {\n if (!props.date) {\n return ;\n }\n\n const format = props.format || \"timeSince\";\n\n const now = new Date();\n const date = props.date instanceof Date ? props.date : new Date(props.date);\n\n const diff = (now.getTime() - date.getTime()) / (60 * 60 * 24 * 1000);\n const display = format === \"full\" || diff >= 365 ? formatDate(props.date) : timeSince(now, date);\n\n return (\n \n {display}\n \n );\n};\n","import \"./Modal.scss\";\n\nimport React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { classSet } from \"@fider/services\";\n\ninterface ModalWindowProps {\n className?: string;\n isOpen: boolean;\n size?: \"small\" | \"large\" | \"fluid\";\n canClose?: boolean;\n center?: boolean;\n onClose?: () => void;\n}\n\ninterface ModalWindowState {\n isOpen: boolean;\n}\n\ninterface ModalFooterProps {\n align?: \"left\" | \"center\" | \"right\";\n children?: React.ReactNode;\n}\n\nclass ModalWindow extends React.Component {\n private root?: HTMLElement;\n\n constructor(props: ModalWindowProps) {\n super(props);\n this.state = {\n isOpen: this.props.isOpen\n };\n }\n\n public static defaultProps: Partial = {\n size: \"small\",\n canClose: true,\n center: true\n };\n\n public componentWillUpdate(nextProps: ModalWindowProps, nextState: ModalWindowState) {\n if (nextState.isOpen) {\n document.addEventListener(\"keydown\", this.keyDown, false);\n } else {\n document.removeEventListener(\"keydown\", this.keyDown, false);\n }\n }\n\n public componentWillReceiveProps(nextProps: ModalWindowProps) {\n this.setState({\n isOpen: nextProps.isOpen\n });\n }\n\n private keyDown = (event: KeyboardEvent) => {\n if (event.keyCode === 27) {\n // ESC\n this.close();\n }\n };\n\n private close = () => {\n if (this.props.canClose) {\n this.setState({ isOpen: false });\n if (this.props.onClose) {\n this.props.onClose();\n }\n }\n };\n\n private swallow = (evt: React.MouseEvent) => {\n evt.stopPropagation();\n };\n\n private getContainer = (): HTMLElement => {\n if (!this.root) {\n this.root = document.getElementById(\"root-modal\")!;\n }\n return this.root;\n };\n\n public render() {\n if (!this.state.isOpen) {\n document.body.style.overflow = \"\";\n return null;\n }\n\n document.body.style.overflow = \"hidden\";\n\n const className = classSet({\n \"c-modal-window\": true,\n [`${this.props.className}`]: !!this.props.className,\n \"m-center\": this.props.center,\n [`m-${this.props.size}`]: true\n });\n\n return ReactDOM.createPortal(\n
    \n
    \n {this.props.children}\n
    \n
    ,\n this.getContainer()\n );\n }\n}\n\nexport const Modal = {\n Window: ModalWindow,\n Header: (props: { children: React.ReactNode }) => {\n return
    {props.children}
    ;\n },\n Content: (props: { children: React.ReactNode }) => {\n return
    {props.children}
    ;\n },\n Footer: (props: ModalFooterProps) => {\n const align = props.align || \"right\";\n const className = classSet({\n \"c-modal-footer\": true,\n [`m-${align}`]: true\n });\n return
    {props.children}
    ;\n }\n};\n","import \"./UserName.scss\";\n\nimport React from \"react\";\nimport { isCollaborator, UserRole } from \"@fider/models\";\nimport { classSet } from \"@fider/services\";\n\ninterface UserNameProps {\n user: {\n id: number;\n name: string;\n role?: UserRole;\n };\n}\n\nexport const UserName = (props: UserNameProps) => {\n const className = classSet({\n \"c-username\": true,\n \"m-staff\": props.user.role && isCollaborator(props.user.role)\n });\n\n return {props.user.name || \"Anonymous\"};\n};\n","import \"./Loader.scss\";\n\nimport React from \"react\";\n\ninterface LoaderState {\n show: boolean;\n}\n\nexport class Loader extends React.Component<{}, LoaderState> {\n private unmounted: boolean;\n constructor(props: {}) {\n super(props);\n this.unmounted = false;\n this.state = {\n show: false\n };\n }\n\n public componentDidMount() {\n setTimeout(() => {\n if (!this.unmounted) {\n this.setState({\n show: true\n });\n }\n }, 500);\n }\n public componentWillUnmount() {\n this.unmounted = true;\n }\n\n public render() {\n return this.state.show &&
    ;\n }\n}\n","import React from \"react\";\nimport { uploadedImageURL } from \"@fider/services\";\nimport { useFider } from \"@fider/hooks\";\nimport { Tenant } from \"@fider/models\";\n\ntype Size = 24 | 50 | 100 | 200;\n\ninterface TenantLogoProps {\n size: Size;\n useFiderIfEmpty?: boolean;\n}\n\nexport const TenantLogoURL = (tenant: Tenant, size: Size): string | undefined => {\n if (tenant && tenant.logoBlobKey) {\n return uploadedImageURL(tenant.logoBlobKey, size);\n }\n return undefined;\n};\n\nexport const TenantLogo = (props: TenantLogoProps) => {\n const fider = useFider();\n\n const tenant = fider.session.tenant;\n if (tenant && tenant.logoBlobKey) {\n return {tenant.name};\n } else if (props.useFiderIfEmpty) {\n return \"Fider\";\n }\n return null;\n};\n\nTenantLogo.defaultProps = {\n useFiderIfEmpty: false\n};\n\ninterface OAuthProviderLogoProps {\n option: {\n provider?: string;\n displayName: string;\n logoBlobKey?: string;\n };\n}\n\nconst systemProvidersLogo: { [key: string]: string } = {\n google: `data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/PjwhRE9DVFlQRSBzdmcgIFBVQkxJQyAnLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4nICAnaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkJz48c3ZnIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDQwMCA0MDAiIGhlaWdodD0iNDAwcHgiIGlkPSJMYXllcl8xIiB2ZXJzaW9uPSIxLjEiIHZpZXdCb3g9IjAgMCA0MDAgNDAwIiB3aWR0aD0iNDAwcHgiIHhtbDpzcGFjZT0icHJlc2VydmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPjxnPjxwYXRoIGQ9Ik0xNDIuOSwyNC4yQzk3LjYsMzkuNyw1OSw3My42LDM3LjUsMTE2LjVjLTcuNSwxNC44LTEyLjksMzAuNS0xNi4yLDQ2LjhjLTguMiw0MC40LTIuNSw4My41LDE2LjEsMTIwLjMgICBjMTIuMSwyNCwyOS41LDQ1LjQsNTAuNSw2Mi4xYzE5LjksMTUuOCw0MywyNy42LDY3LjYsMzQuMWMzMSw4LjMsNjQsOC4xLDk1LjIsMWMyOC4yLTYuNSw1NC45LTIwLDc2LjItMzkuNiAgIGMyMi41LTIwLjcsMzguNi00Ny45LDQ3LjEtNzcuMmM5LjMtMzEuOSwxMC41LTY2LDQuNy05OC44Yy01OC4zLDAtMTE2LjcsMC0xNzUsMGMwLDI0LjIsMCw0OC40LDAsNzIuNmMzMy44LDAsNjcuNiwwLDEwMS40LDAgICBjLTMuOSwyMy4yLTE3LjcsNDQuNC0zNy4yLDU3LjVjLTEyLjMsOC4zLTI2LjQsMTMuNi00MSwxNi4yYy0xNC42LDIuNS0yOS44LDIuOC00NC40LTAuMWMtMTQuOS0zLTI5LTkuMi00MS40LTE3LjkgICBjLTE5LjgtMTMuOS0zNC45LTM0LjItNDIuNi01Ny4xYy03LjktMjMuMy04LTQ5LjIsMC03Mi40YzUuNi0xNi40LDE0LjgtMzEuNSwyNy00My45YzE1LTE1LjQsMzQuNS0yNi40LDU1LjYtMzAuOSAgIGMxOC0zLjgsMzctMy4xLDU0LjYsMi4yYzE1LDQuNSwyOC44LDEyLjgsNDAuMSwyMy42YzExLjQtMTEuNCwyMi44LTIyLjgsMzQuMi0zNC4yYzYtNi4xLDEyLjMtMTIsMTguMS0xOC4zICAgYy0xNy4zLTE2LTM3LjctMjguOS01OS45LTM3LjFDMjI4LjIsMTAuNiwxODMuMiwxMC4zLDE0Mi45LDI0LjJ6IiBmaWxsPSIjRkZGRkZGIi8+PGc+PHBhdGggZD0iTTE0Mi45LDI0LjJjNDAuMi0xMy45LDg1LjMtMTMuNiwxMjUuMywxLjFjMjIuMiw4LjIsNDIuNSwyMSw1OS45LDM3LjFjLTUuOCw2LjMtMTIuMSwxMi4yLTE4LjEsMTguMyAgICBjLTExLjQsMTEuNC0yMi44LDIyLjgtMzQuMiwzNC4yYy0xMS4zLTEwLjgtMjUuMS0xOS00MC4xLTIzLjZjLTE3LjYtNS4zLTM2LjYtNi4xLTU0LjYtMi4yYy0yMSw0LjUtNDAuNSwxNS41LTU1LjYsMzAuOSAgICBjLTEyLjIsMTIuMy0yMS40LDI3LjUtMjcsNDMuOWMtMjAuMy0xNS44LTQwLjYtMzEuNS02MS00Ny4zQzU5LDczLjYsOTcuNiwzOS43LDE0Mi45LDI0LjJ6IiBmaWxsPSIjRUE0MzM1Ii8+PC9nPjxnPjxwYXRoIGQ9Ik0yMS40LDE2My4yYzMuMy0xNi4yLDguNy0zMiwxNi4yLTQ2LjhjMjAuMywxNS44LDQwLjYsMzEuNSw2MSw0Ny4zYy04LDIzLjMtOCw0OS4yLDAsNzIuNCAgICBjLTIwLjMsMTUuOC00MC42LDMxLjYtNjAuOSw0Ny4zQzE4LjksMjQ2LjcsMTMuMiwyMDMuNiwyMS40LDE2My4yeiIgZmlsbD0iI0ZCQkMwNSIvPjwvZz48Zz48cGF0aCBkPSJNMjAzLjcsMTY1LjFjNTguMywwLDExNi43LDAsMTc1LDBjNS44LDMyLjcsNC41LDY2LjgtNC43LDk4LjhjLTguNSwyOS4zLTI0LjYsNTYuNS00Ny4xLDc3LjIgICAgYy0xOS43LTE1LjMtMzkuNC0zMC42LTU5LjEtNDUuOWMxOS41LTEzLjEsMzMuMy0zNC4zLDM3LjItNTcuNWMtMzMuOCwwLTY3LjYsMC0xMDEuNCwwQzIwMy43LDIxMy41LDIwMy43LDE4OS4zLDIwMy43LDE2NS4xeiIgZmlsbD0iIzQyODVGNCIvPjwvZz48Zz48cGF0aCBkPSJNMzcuNSwyODMuNWMyMC4zLTE1LjcsNDAuNi0zMS41LDYwLjktNDcuM2M3LjgsMjIuOSwyMi44LDQzLjIsNDIuNiw1Ny4xYzEyLjQsOC43LDI2LjYsMTQuOSw0MS40LDE3LjkgICAgYzE0LjYsMywyOS43LDIuNiw0NC40LDAuMWMxNC42LTIuNiwyOC43LTcuOSw0MS0xNi4yYzE5LjcsMTUuMywzOS40LDMwLjYsNTkuMSw0NS45Yy0yMS4zLDE5LjctNDgsMzMuMS03Ni4yLDM5LjYgICAgYy0zMS4yLDcuMS02NC4yLDcuMy05NS4yLTFjLTI0LjYtNi41LTQ3LjctMTguMi02Ny42LTM0LjFDNjcsMzI4LjksNDkuNiwzMDcuNSwzNy41LDI4My41eiIgZmlsbD0iIzM0QTg1MyIvPjwvZz48L2c+PC9zdmc+`,\n facebook: `data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/PjwhRE9DVFlQRSBzdmcgIFBVQkxJQyAnLS8vVzNDLy9EVEQgU1ZHIDEuMC8vRU4nICAnaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMS9SRUMtU1ZHLTIwMDEwOTA0L0RURC9zdmcxMC5kdGQnPjxzdmcgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgMzIgMzIiIGhlaWdodD0iMzJweCIgaWQ9IkxheWVyXzEiIHZlcnNpb249IjEuMCIgdmlld0JveD0iMCAwIDMyIDMyIiB3aWR0aD0iMzJweCIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+PGc+PHBhdGggZD0iTTMyLDMwYzAsMS4xMDQtMC44OTYsMi0yLDJIMmMtMS4xMDQsMC0yLTAuODk2LTItMlYyYzAtMS4xMDQsMC44OTYtMiwyLTJoMjhjMS4xMDQsMCwyLDAuODk2LDIsMlYzMHoiIGZpbGw9IiMzQjU5OTgiLz48cGF0aCBkPSJNMjIsMzJWMjBoNGwxLTVoLTV2LTJjMC0yLDEuMDAyLTMsMy0zaDJWNWMtMSwwLTIuMjQsMC00LDBjLTMuNjc1LDAtNiwyLjg4MS02LDd2M2gtNHY1aDR2MTJIMjJ6IiBmaWxsPSIjRkZGRkZGIiBpZD0iZiIvPjwvZz48Zy8+PGcvPjxnLz48Zy8+PGcvPjxnLz48L3N2Zz4=`,\n github:\n \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/PjwhRE9DVFlQRSBzdmcgIFBVQkxJQyAnLS8vVzNDLy9EVEQgU1ZHIDEuMC8vRU4nICAnaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMS9SRUMtU1ZHLTIwMDEwOTA0L0RURC9zdmcxMC5kdGQnPjxzdmcgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgMzIgMzIiIGhlaWdodD0iMzJweCIgaWQ9IkxheWVyXzEiIHZlcnNpb249IjEuMCIgdmlld0JveD0iMCAwIDMyIDMyIiB3aWR0aD0iMzJweCIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+PHBhdGggY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMTYuMDAzLDBDNy4xNywwLDAuMDA4LDcuMTYyLDAuMDA4LDE1Ljk5NyAgYzAsNy4wNjcsNC41ODIsMTMuMDYzLDEwLjk0LDE1LjE3OWMwLjgsMC4xNDYsMS4wNTItMC4zMjgsMS4wNTItMC43NTJjMC0wLjM4LDAuMDA4LTEuNDQyLDAtMi43NzcgIGMtNC40NDksMC45NjctNS4zNzEtMi4xMDctNS4zNzEtMi4xMDdjLTAuNzI3LTEuODQ4LTEuNzc1LTIuMzQtMS43NzUtMi4zNGMtMS40NTItMC45OTIsMC4xMDktMC45NzMsMC4xMDktMC45NzMgIGMxLjYwNSwwLjExMywyLjQ1MSwxLjY0OSwyLjQ1MSwxLjY0OWMxLjQyNywyLjQ0MywzLjc0MywxLjczNyw0LjY1NCwxLjMyOWMwLjE0Ni0xLjAzNCwwLjU2LTEuNzM5LDEuMDE3LTIuMTM5ICBjLTMuNTUyLTAuNDA0LTcuMjg2LTEuNzc2LTcuMjg2LTcuOTA2YzAtMS43NDcsMC42MjMtMy4xNzQsMS42NDYtNC4yOTJDNy4yOCwxMC40NjQsNi43Myw4LjgzNyw3LjYwMiw2LjYzNCAgYzAsMCwxLjM0My0wLjQzLDQuMzk4LDEuNjQxYzEuMjc2LTAuMzU1LDIuNjQ1LTAuNTMyLDQuMDA1LTAuNTM4YzEuMzU5LDAuMDA2LDIuNzI3LDAuMTgzLDQuMDA1LDAuNTM4ICBjMy4wNTUtMi4wNyw0LjM5Ni0xLjY0MSw0LjM5Ni0xLjY0MWMwLjg3MiwyLjIwMywwLjMyMywzLjgzLDAuMTU5LDQuMjM0YzEuMDIzLDEuMTE4LDEuNjQ0LDIuNTQ1LDEuNjQ0LDQuMjkyICBjMCw2LjE0Ni0zLjc0LDcuNDk4LTcuMzA0LDcuODkzQzE5LjQ3OSwyMy41NDgsMjAsMjQuNTA4LDIwLDI2YzAsMiwwLDMuOTAyLDAsNC40MjhjMCwwLjQyOCwwLjI1OCwwLjkwMSwxLjA3LDAuNzQ2ICBDMjcuNDIyLDI5LjA1NSwzMiwyMy4wNjIsMzIsMTUuOTk3QzMyLDcuMTYyLDI0LjgzOCwwLDE2LjAwMywweiIgZmlsbD0iIzE4MTYxNiIgZmlsbC1ydWxlPSJldmVub2RkIi8+PGcvPjxnLz48Zy8+PGcvPjxnLz48Zy8+PC9zdmc+\"\n};\n\nexport const OAuthProviderLogoURL = (logoBlobKey?: string): string | undefined => {\n if (logoBlobKey) {\n return uploadedImageURL(logoBlobKey, 100);\n }\n return undefined;\n};\n\nexport const OAuthProviderLogo = (props: OAuthProviderLogoProps) => {\n if (props.option.logoBlobKey) {\n return {props.option.displayName};\n }\n\n if (props.option.provider && props.option.provider in systemProvidersLogo) {\n return {props.option.displayName};\n }\n\n return null;\n};\n","import \"./Toggle.scss\";\n\nimport React from \"react\";\nimport { classSet } from \"@fider/services\";\n\ninterface ToggleProps {\n label?: string;\n active: boolean;\n disabled?: boolean;\n onToggle?: (active: boolean) => Promise;\n}\n\ninterface ToggleState {\n active: boolean;\n}\n\nexport class Toggle extends React.Component {\n public constructor(props: ToggleProps) {\n super(props);\n this.state = {\n active: props.active\n };\n }\n\n public toggle = async () => {\n if (!!this.props.disabled) {\n return;\n }\n\n this.setState(\n state => ({\n active: !state.active\n }),\n () => {\n if (this.props.onToggle) {\n this.props.onToggle(this.state.active);\n }\n }\n );\n };\n\n public render() {\n const className = classSet({\n \"c-toggle\": true,\n \"m-disabled\": !!this.props.disabled\n });\n\n return (\n \n \n \n {!!this.props.label && this.props.label}\n \n );\n }\n}\n","import React from \"react\";\nimport { Fider } from \"@fider/services\";\n\nexport const FiderVersion = () => {\n return (\n

    \n {!Fider.isBillingEnabled() && (\n <>\n Support our{\" \"}\n \n OpenCollective\n \n
    \n \n )}\n Fider v{Fider.settings.version}\n

    \n );\n};\n","import React from \"react\";\nimport { findDOMNode } from \"react-dom\";\nimport { classSet } from \"@fider/services\";\n\nimport \"./DropDown.scss\";\n\nexport interface DropDownItem {\n value: any;\n label: string;\n render?: JSX.Element;\n}\n\nexport interface DropDownProps {\n className?: string;\n defaultValue?: any;\n items: Array;\n placeholder?: string;\n searchable?: boolean;\n inline?: boolean;\n style: \"normal\" | \"simple\";\n highlightSelected?: boolean;\n header?: string;\n direction?: \"left\" | \"right\";\n onChange?: (item: DropDownItem) => void;\n onSearchChange?: (e: React.FormEvent) => void;\n renderText?: (item?: DropDownItem) => JSX.Element | string | undefined;\n renderControl?: (item?: DropDownItem) => JSX.Element | string | undefined;\n}\n\nexport interface DropDownState {\n isOpen: boolean;\n selected?: DropDownItem;\n}\n\nexport class DropDown extends React.Component {\n private mounted = false;\n\n public static defaultProps: Partial = {\n direction: \"right\",\n style: \"normal\",\n highlightSelected: true\n };\n\n constructor(props: DropDownProps) {\n super(props);\n this.state = {\n selected: this.findItem(props.defaultValue, props.items),\n isOpen: false\n };\n }\n\n public componentDidMount() {\n this.mounted = true;\n }\n\n public componentWillUnmount() {\n this.mounted = false;\n this.removeListeners();\n }\n\n private addListeners() {\n document.addEventListener(\"click\", this.handleDocumentClick, false);\n document.addEventListener(\"touchend\", this.handleDocumentClick, false);\n }\n\n private removeListeners() {\n document.removeEventListener(\"click\", this.handleDocumentClick, false);\n document.removeEventListener(\"touchend\", this.handleDocumentClick, false);\n }\n\n public handleMouseDown = (event: any) => {\n if (event.type === \"mousedown\" && event.button !== 0) {\n return;\n }\n\n event.stopPropagation();\n event.preventDefault();\n\n this.setState(\n {\n isOpen: true\n },\n this.addListeners\n );\n };\n\n public findItem(value: any, items: Array): DropDownItem | undefined {\n for (const item of items) {\n if (item && item.value === value) {\n return item;\n }\n }\n return undefined;\n }\n\n public setSelected(selected: DropDownItem) {\n const newState = {\n selected,\n isOpen: false\n };\n this.fireChangeEvent(newState);\n this.setState(newState, this.removeListeners);\n }\n\n public fireChangeEvent(newState: DropDownState) {\n if (newState.selected && newState.selected !== this.state.selected && this.props.onChange) {\n this.props.onChange(newState.selected);\n }\n }\n\n public renderItem = (item: DropDownItem | undefined | false) => {\n if (!item) {\n return;\n }\n\n const { label, value } = item;\n const isSelected = this.props.highlightSelected && this.state.selected && value === this.state.selected.value;\n const className = classSet({\n \"c-dropdown-item\": true,\n \"is-selected\": isSelected\n });\n\n return (\n \n {item.render ? item.render : label}\n
    \n );\n };\n\n public buildItemList() {\n const items = this.props.items.map(this.renderItem);\n\n return (\n
    \n {this.props.header &&
    {this.props.header}
    }\n
    \n {items.length ? items :
    No results found
    }\n
    \n
    \n );\n }\n\n public handleDocumentClick = (event: any) => {\n if (this.mounted) {\n const node = findDOMNode(this);\n if (node && !node.contains(event.target)) {\n if (this.state.isOpen) {\n this.setState(\n {\n isOpen: false\n },\n this.removeListeners\n );\n }\n }\n }\n };\n\n public render() {\n const text = this.state.selected ? (\n this.state.selected.label\n ) : (\n {this.props.placeholder}\n );\n\n const search = ;\n\n const dropdownClass = classSet({\n \"c-dropdown\": true,\n [`${this.props.className}`]: this.props.className,\n \"is-open\": this.state.isOpen,\n [`m-style-${this.props.style}`]: true,\n \"is-inline\": this.props.inline,\n \"m-right\": this.props.direction === \"right\",\n \"m-left\": this.props.direction === \"left\"\n });\n\n return (\n
    \n
    \n {this.props.renderControl ? (\n
    {this.props.renderControl(this.state.selected)}
    \n ) : (\n
    \n {this.state.isOpen && this.props.searchable ? (\n search\n ) : this.props.renderText ? (\n this.props.renderText(this.state.selected)\n ) : (\n
    {text}
    \n )}\n \n
    \n )}\n
    \n {this.state.isOpen && this.buildItemList()}\n
    \n );\n }\n}\n","export * from \"./Button\";\nexport * from \"./CardInfo\";\nexport * from \"./form/Form\";\nexport * from \"./form/Input\";\nexport * from \"./form/ImageUploader\";\nexport * from \"./form/MultiImageUploader\";\nexport * from \"./form/TextArea\";\nexport * from \"./form/RadioButton\";\nexport * from \"./form/DisplayError\";\nexport * from \"./form/Select\";\nexport * from \"./form/Field\";\nexport * from \"./form/Checkbox\";\nexport * from \"./form/ImageViewer\";\nexport * from \"./MultiLineText\";\nexport * from \"./EnvironmentInfo\";\nexport * from \"./TenantStatusInfo\";\nexport * from \"./Avatar\";\nexport * from \"./Message\";\nexport * from \"./Hint\";\nexport * from \"./Footer\";\nexport * from \"./Header\";\nexport * from \"./Heading\";\nexport * from \"./Legal\";\nexport * from \"./SocialSignInButton\";\nexport * from \"./SignInControl\";\nexport * from \"./Segment\";\nexport * from \"./List\";\nexport * from \"./Moment\";\nexport * from \"./Modal\";\nexport * from \"./UserName\";\nexport * from \"./Loader\";\nexport * from \"./Logo\";\nexport * from \"./Toggle\";\nexport * from \"./FiderVersion\";\nexport * from \"./DropDown\";\n\nimport Textarea from \"react-textarea-autosize\";\nexport { Textarea };\n","export * from \"./post\";\nexport * from \"./identity\";\nexport * from \"./billing\";\nexport * from \"./settings\";\nexport * from \"./notification\";\n","import \"./ShowTag.scss\";\n\nimport React from \"react\";\nimport { Tag } from \"@fider/models\";\nimport { classSet } from \"@fider/services\";\nimport { FaLock } from \"react-icons/fa\";\n\ninterface TagProps {\n tag: Tag;\n size?: \"mini\" | \"tiny\" | \"small\" | \"normal\";\n circular?: boolean;\n}\n\nconst getRGB = (color: string) => {\n const r = color.substring(0, 2);\n const g = color.substring(2, 4);\n const b = color.substring(4, 6);\n\n return {\n R: parseInt(r, 16),\n G: parseInt(g, 16),\n B: parseInt(b, 16)\n };\n};\n\nconst textColor = (color: string) => {\n const components = getRGB(color);\n const bgDelta = components.R * 0.299 + components.G * 0.587 + components.B * 0.114;\n return bgDelta > 140 ? \"#333\" : \"#fff\";\n};\n\nexport const ShowTag = (props: TagProps) => {\n const className = classSet({\n \"c-tag\": true,\n [`m-${props.size || \"normal\"}`]: true,\n \"m-circular\": props.circular === true\n });\n\n return (\n \n {!props.tag.isPublic && !props.circular && }\n {props.circular ? \"\" : props.tag.name || \"Tag\"}\n
    \n );\n};\n","import { User } from \"./identity\";\n\nexport interface Post {\n id: number;\n number: number;\n slug: string;\n title: string;\n description: string;\n createdAt: string;\n status: string;\n user: User;\n hasVoted: boolean;\n response: PostResponse | null;\n votesCount: number;\n commentsCount: number;\n tags: string[];\n}\n\nexport class PostStatus {\n constructor(\n public title: string,\n public value: string,\n public show: boolean,\n public closed: boolean,\n public filterable: boolean\n ) {}\n\n public static Open = new PostStatus(\"Open\", \"open\", false, false, false);\n public static Planned = new PostStatus(\"Planned\", \"planned\", true, false, true);\n public static Started = new PostStatus(\"Started\", \"started\", true, false, true);\n public static Completed = new PostStatus(\"Completed\", \"completed\", true, true, true);\n public static Declined = new PostStatus(\"Declined\", \"declined\", true, true, true);\n public static Duplicate = new PostStatus(\"Duplicate\", \"duplicate\", true, true, false);\n public static Deleted = new PostStatus(\"Deleted\", \"deleted\", false, true, false);\n\n public static Get(value: string): PostStatus {\n for (const status of PostStatus.All) {\n if (status.value === value) {\n return status;\n }\n }\n throw new Error(`PostStatus not found for value ${value}.`);\n }\n\n public static All = [\n PostStatus.Open,\n PostStatus.Planned,\n PostStatus.Started,\n PostStatus.Completed,\n PostStatus.Duplicate,\n PostStatus.Declined\n ];\n}\n\nexport interface PostResponse {\n user: User;\n text: string;\n respondedAt: Date;\n original?: {\n number: number;\n title: string;\n slug: string;\n status: string;\n };\n}\n\nexport interface Comment {\n id: number;\n content: string;\n createdAt: string;\n user: User;\n attachments?: string[];\n editedAt?: string;\n editedBy?: User;\n}\n\nexport interface Tag {\n id: number;\n slug: string;\n name: string;\n color: string;\n isPublic: boolean;\n}\n\nexport interface Vote {\n createdAt: Date;\n user: {\n id: number;\n name: string;\n email: string;\n avatarURL: string;\n };\n}\n","export interface Tenant {\n id: number;\n name: string;\n cname: string;\n subdomain: string;\n invitation: string;\n welcomeMessage: string;\n status: TenantStatus;\n isPrivate: boolean;\n logoBlobKey: string;\n billing?: {\n stripePlanID: string;\n subscriptionEndsAt: string;\n trialEndsAt: string;\n };\n}\n\nexport enum TenantStatus {\n Active = 1,\n Pending = 2,\n Locked = 3\n}\n\nexport interface User {\n id: number;\n name: string;\n role: UserRole;\n status: UserStatus;\n avatarURL: string;\n}\n\nexport enum UserAvatarType {\n Letter = \"letter\",\n Gravatar = \"gravatar\",\n Custom = \"custom\"\n}\n\nexport enum UserStatus {\n Active = \"active\",\n Deleted = \"deleted\",\n Blocked = \"blocked\"\n}\n\nexport enum UserRole {\n Visitor = \"visitor\",\n Collaborator = \"collaborator\",\n Administrator = \"administrator\"\n}\n\nexport const isCollaborator = (role: UserRole): boolean => {\n return role === UserRole.Collaborator || role === UserRole.Administrator;\n};\n\nexport interface CurrentUser {\n id: number;\n name: string;\n email: string;\n avatarType: UserAvatarType;\n avatarBlobKey: string;\n avatarURL: string;\n role: UserRole;\n status: UserStatus;\n isAdministrator: boolean;\n isCollaborator: boolean;\n}\n","export interface OAuthProviderOption {\n provider: string;\n displayName: string;\n clientID: string;\n url: string;\n callbackURL: string;\n logoBlobKey: string;\n isCustomProvider: boolean;\n isEnabled: boolean;\n}\n\nexport interface SystemSettings {\n mode: string;\n buildTime: string;\n version: string;\n environment: string;\n compiler: string;\n domain: string;\n hasLegal: boolean;\n baseURL: string;\n stripePublicKey?: string;\n tenantAssetsURL: string;\n globalAssetsURL: string;\n oauth: OAuthProviderOption[];\n}\n\nexport interface UserSettings {\n [key: string]: string;\n}\n\nexport const OAuthConfigStatus = {\n Disabled: 1,\n Enabled: 2\n};\n\nexport interface OAuthConfig {\n provider: string;\n displayName: string;\n status: number;\n clientID: string;\n clientSecret: string;\n authorizeURL: string;\n tokenURL: string;\n profileURL: string;\n logoBlobKey: string;\n scope: string;\n jsonUserIDPath: string;\n jsonUserNamePath: string;\n jsonUserEmailPath: string;\n}\n\nexport interface ImageUpload {\n bkey?: string;\n upload?: {\n fileName?: string;\n content?: string;\n contentType?: string;\n };\n remove: boolean;\n}\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\n\nimport { ToastContainer, toast, ToastContent, ToastOptions } from \"react-toastify\";\nimport \"react-toastify/dist/ReactToastify.css\";\n\nlet hasContainer = false;\n\nconst setup = () => {\n if (!hasContainer) {\n hasContainer = true;\n ReactDOM.render(\n ,\n document.getElementById(\"root-toastify\")\n );\n }\n};\n\nexport const success = (content: ToastContent, options?: ToastOptions) => {\n setup();\n toast.success(content, options);\n};\n\nexport const error = (content: ToastContent, options?: ToastOptions) => {\n setup();\n toast.error(content, options);\n};\n"],"sourceRoot":""}