{"version":3,"sources":["fetch.js","util.js","api/request.js","api/index.js","api/domain.js","api/limits.js","api/user.js","api/auth.js","forms/fields/withField.js","forms/fields/InputGroupField.js","forms/BroadcastForm.js","toaster.js","views/Broadcast.js","forms/fields/SwitchField.js","forms/DomainAddForm.js","components/DialogContent.js","components/DomainAddDialog.js","components/UserSuggestor.js","forms/DomainEditForm.js","components/DomainEditDialog.js","components/DeleteAlert.js","components/DomainDeleteAlert.js","components/CardHeader.js","components/DomainStats.js","components/InfoCard.js","components/UserName.js","components/Domain.js","components/DomainListing.js","components/LoadingText.js","views/Domains.js","components/Buttons.js","api/item.js","api/file.js","snowflake.js","components/ItemCard.js","components/File.js","components/FileDeleteAlert.js","components/FileMoveDialog.js","components/ItemSearcher.js","components/PopoverContent.js","components/Shorten.js","api/shorten.js","views/Files.js","views/MyDomains.js","forms/inputs/NumericInput.js","components/UserEditDialog.js","formDialog.js","forms/UserEditForm.js","components/UserDeleteAlert.js","components/UserInfoTable.js","views/User.js","components/UserListing.js","views/Users.js","components/Authenticator.js","components/NavLink.js","components/Navigation.js","components/Page.js","components/Root.js","index.js"],"names":["FetchError","_Error","resp","body","_this","Object","classCallCheck","this","possibleConstructorReturn","getPrototypeOf","call","concat","status","inherits","createClass","key","value","message","statusText","wrapNativeSuper","Error","strictFetch","_x","_x2","_strictFetch","apply","arguments","_callee","url","options","regenerator_default","a","wrap","_context","prev","next","fetch","sent","ok","t0","t1","json","t2","abrupt","stop","NUMBER_FORMATTER","Intl","esm_typeof","NumberFormat","pluralize","name","number","prettyNumber","String","format","sleep","ms","Promise","resolve","setTimeout","transformKeys","object","keys","entries","reduce","acc","_ref3","_ref4","slicedToArray","objectSpread","defineProperty","query","params","map","_ref5","_ref6","k","v","encodeURIComponent","join","ratelimits","backlogged","remaining","reset","request","_request","route","timeLeft","additional","_args","length","undefined","headers","Authorization","token","window","localStorage","getItem","Date","now","console","log","Math","pow","warn","CONFIG","instance","parseInt","get","parseFloat","retry_after","expandDomains","info","_ref","_ref2","id","Domain","response","_response$info","domain","official","adminOnly","admin_only","cfEnabled","cf_enabled","owner","stats","publicStats","public_stats","assign","User","extended","bareInfo","domains","officialdomains","includes","JSON","stringify","method","owner_id","user","replace","Limits","uploadUsed","used","uploadLimit","limit","shortensUsed","shortenused","shortenLimit","shortenlimit","payload","user_id","username","active","admin","subdomain","email","paranoid","consented","limits","result","pagination","results","changeActivationState","state","fetchById","AuthenticationState","ADMIN","INVALID","USER","login","_login","error","defaultRenderer","Component","props","field","react_default","createElement","withField","component","renderer","objectWithoutProperties","formik_esm","fieldProps","InputGroup","TextAreaField","TextArea","BroadcastForm","values","setFieldValue","isSubmitting","formGroup","label","InputGroupField","placeholder","required","fill","style","minHeight","buttons","type","intent","Intent","SUCCESS","icon","loading","AppToaster","Toaster","create","className","position","Position","BOTTOM_RIGHT","success","show","failure","DANGER","Broadcast","handleSubmit","subject","setSubmitting","finish","Fragment","initialValues","onSubmit","React","Switch","checked","DomainAddForm","labelFor","labelInfo","SwitchField","DialogBody","styled","div","_templateObject","DomainAddDialog","dialog","title","DialogContent","UserSuggestor","users","itemRenderer","handleClick","modifiers","menuItem","disabled","onClick","text","itemPredicate","toLowerCase","handleItemSelect","item","event","stopPropagation","onChange","handleQueryChange","debounce","asyncToGenerator","mark","fetchUsers","search","page","per_page","setState","_this$props$value","select_select","items","onItemSelect","onQueryChange","popoverProps","minimal","rightIcon","DomainEditForm","UserSuggestor_UserSuggestor","DomainEditDialog","DeleteAlert","alert_alert","cancelButtonText","confirmButtonText","canEscapeKeyCancel","canOutsideClickCancel","custom","render","DomainDeleteAlert","movingTo","from","to","CardHeader","h5","CardHeader_templateObject","formatStats","PublicStats","span","DomainStats_templateObject","DomainStats","publicNode","InfoCard","Card","InfoCard_templateObject","StyledUserName","UserName_templateObject","UserName","icon_icon","StyledDomain","unused","rest","components_InfoCard","Domain_templateObject","css","_templateObject2","Owner","_templateObject3","DomainID","_templateObject4","DomainContent","_templateObject5","Tools","_templateObject6","selectedUser","handleDeleteClick","onDelete","handleEditClick","onEdit","handleUserSelect","_this$props$userFacin","userFacing","_this$props$domain","verifiedIcon","PRIMARY","marginLeft","adminOnlyIcon","color","opacity","transform","ownerInformation","Link","tools","small","components_CardHeader","DomainListing","_ref$userFacing","Domain_Domain","bind","defaultProps","StyledSpinner","Spinner","LoadingText_templateObject","LoadingTextWrapper","LoadingText_templateObject2","TextWrapper","LoadingText_templateObject3","LoadingText","children","size","SIZE_SMALL","Domains","deletingDomain","domainAddOpen","domainDeleteOpen","domainEditOpen","editingDomain","handleAddDomainClick","handleDomainAdd","load","handleDomainDelete","handleDomainEdit","handleDomainDeleteConfirm","delete","handleDomainAddSubmit","_callee2","_context2","handleDomainEditSubmit","_callee3","_context3","edit","handleDomainAddDialogClose","handleDomainEditDialogClose","handleDomainDeleteAlertCancel","fetchAll","_context4","loadDomains","firstDomain","isOpen","onClose","onAdded","onCancel","onConfirm","renderDialogs","renderDomainListing","Buttons","Buttons_templateObject","Item","shortcode","filename","uploader","deleted","File","file_id","mimetype","path","fspath","file_size","assertThisInitialized","getExtension","parts","split","domainName","validDomain","shortname","domain_id","EPOCH","StrikeableCardHeader","strike","ItemCard_templateObject","ItemCard_templateObject2","Timestamp","time","ItemCard_templateObject3","ItemCard","created","snowflake","BigInt","stamp","Number","toDate","href","toISOString","toLocaleString","file","fileSize","prettyBytes","how","TypeError","FileMoveDialog","destination","moving","selectedDomain","files","itemDisabled","handleMoveClick","move","onMoved","firstId","defaultDomain","selector","usePortal","display","marginTop","ItemType","FILE","SHORTEN","ItemSearcher","currentTarget","handleTypeChange","onItemTypeChange","newType","controlGroup","htmlSelect","large","currentType","inputGroup","leftIcon","PopoverContent","PopoverContent_templateObject","Shorten","shorten","redir","redirto","shorten_id","Files","fileDeleteOpen","fileMoveOpen","loadingDomains","match","renameLoading","renamingTo","location","fetchDebounced","handleFileDeleteAlertCancel","handleFileMoveDialogClose","handleItemTypeChange","handleDeleteItem","handleOpenDeleteAlert","handleOpenFileMoveDialog","handleItemMoved","handleRenameToChange","target","handleRenameClick","rename","prevState","getUrl","bail","_this2","history","ShortenItem","getByShortcode","FileItem","fetchDomain","fetchUploader","replaceRoute","components_Buttons","popover","BOTTOM","components_PopoverContent","FileDeleteAlert","FileMoveDialog_FileMoveDialog","Shorten_Shorten","File_File","content","margin","renderButtons","ItemSearcher_ItemSearcher","withRouter","MyDomains","fetchMine","t3","NumericInput","onBlur","numericInput","onValueChange","formDialog","FormComponent","handleBlur","dialogProps","providedProps","_options","InfoTable","HTMLTable","UserInfoTable_templateObject","UserInfoTable","consentTag","tag","WARNING","uploadPercentage","floor","shortensPercentage","mibUploaded","mibLimit","UserPage","deleteAlertOpen","editDialogOpen","loadingActivation","loadingDeletion","handleUserEditDialogClose","handleUserEditDialogSubmit","handleEditButtonClick","handleChangeActivationStateClick","handleDelete","handleDeleteAlertCancel","handleDeleteAlertConfirm","_callee4","push","handleSendEmail","_callee5","_context5","sendEmail","UserDeleteAlert","UserEditDialog","_this$state$user","buttonGroup","tags","renderModals","StyledUserListing","UserListing_templateObject","Information","UserListing_templateObject2","ID","UserListing_templateObject3","Menus","UserListing_templateObject4","PaddedUserName","UserListing_templateObject5","UserListing","onDisable","onEnable","onSendEmail","menu","menuDivider","Listing","Users_templateObject","ListingTabs","Tabs","Users_templateObject2","PaginatorGroup","ButtonGroup","Users_templateObject3","SmallSlider","Slider","Users_templateObject4","Users","total","perPage","selectedFilter","searchForUsersDebounced","searchForUsers","handleFirstPageButtonClick","handlePageChange","handleLastPageButtonClick","handleFilterChange","newTabId","handleChangeActivationState","newState","handleDeleteUser","handleBack","max","handleForward","min","handlePerPageChange","maxIndex","selectedTabId","tab","renderListing","stepSize","labelStepSize","onRelease","Authenticator","handleTokenChange","handleTokenSubmit","toString","setItem","onLogin","rel","vertical","StyledNavLink","NavLink_templateObject","NavLink","Classes","MINIMAL","alignText","Alignment","LEFT","StyledNavigation","nav","Navigation_templateObject","Header","h1","Navigation_templateObject2","Group","Navigation_templateObject3","Navigation","authState","onTokenChanged","adminLinks","targetTagName","Authenticator_Authenticator","Page","Page_templateObject","PageWrapper","Page_templateObject2","Root","auth","handleLogin","createBrowserHistory","basename","canShowDialog","Router","Route","exact","FocusStyleManager","onlyShowFocusOnTabs","mount","document","getElementById","ReactDOM","Root_Root"],"mappings":"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","file":"static/js/main.4cf951a5.chunk.js","sourcesContent":["export class FetchError extends Error {\n constructor(resp, body) {\n super(`HTTP ${resp.status}`)\n this.resp = resp\n this.body = body\n }\n\n toString() {\n if (this.body.message != null) {\n return this.body.message\n }\n\n return `HTTP ${this.resp.status} (${this.resp.statusText})`\n }\n}\n\nexport default async function strictFetch(url, options) {\n const resp = await fetch(url, options)\n\n if (!resp.ok) {\n throw new FetchError(resp, await resp.json())\n }\n\n return resp\n}\n","const NUMBER_FORMATTER =\n typeof Intl === 'object' ? new Intl.NumberFormat() : null\n\nexport function extractId(item) {\n if (item.file_id) {\n return item.file_id\n } else {\n return item.shorten_id\n }\n}\n\nexport function formatNumber(number) {\n return NUMBER_FORMATTER == null\n ? String(number)\n : NUMBER_FORMATTER.format(number)\n}\n\nexport function pluralize(name, value) {\n const prettyNumber = formatNumber(value)\n return value === 1 ? `${prettyNumber} ${name}` : `${prettyNumber} ${name}s`\n}\n\nexport function pluralizeValues(map) {\n return Object.entries(map).map(([item, value]) =>\n pluralize(item.replace(/s$/, ''), value)\n )\n}\n\nexport function sleep(ms) {\n return new Promise((resolve) => {\n setTimeout(resolve, ms)\n })\n}\n\nexport function transformKeys(object, keys) {\n return Object.entries(object).reduce((acc, [key, value]) => {\n return { ...acc, [keys[key] || key]: value }\n }, {})\n}\n\nexport function query(params) {\n return (\n '?' +\n Object.entries(params)\n .map(([k, v]) => `${k}=${encodeURIComponent(v)}`)\n .join('&')\n )\n}\n","import CONFIG from '../config.json'\nimport strictFetch from '../fetch'\nimport { sleep } from '../util'\n\nconst ratelimits = {\n backlogged: 0,\n remaining: null,\n reset: null,\n}\n\nexport default async function request(route, params = {}) {\n const options = {\n headers: {\n Authorization: params.token || window.localStorage.getItem('token'),\n },\n ...params,\n }\n\n let timeLeft = ratelimits.reset * 1000 - Date.now()\n timeLeft = timeLeft < 0 ? null : timeLeft\n console.log(\n '%c[Rate Limit]%c Remaining requests: %s / Resetting in %s (backlogged: %d)',\n 'color: purple; font-weight: bold;',\n 'color: inherit; font-weight: inherit;',\n ratelimits.remaining || '[n/a]',\n timeLeft || '[n/a]',\n ratelimits.backlogged\n )\n\n if (ratelimits.remaining === 0) {\n // We have run out of requests.\n ratelimits.backlogged++\n\n // Calculate the time to wait in addition to the reset timestamp.\n // With every backlogged request (request made while waiting), we increase\n // the wait time exponentially so we don't bust the ratelimit immediately\n // after it resets.\n const additional = (1.3 ** ratelimits.backlogged - 1) * 1500\n timeLeft += additional\n\n console.warn(\n 'Ran out of requests. Taking a %dms long nap. (+%dms)',\n timeLeft,\n additional\n )\n\n await sleep(timeLeft)\n }\n\n try {\n var resp = await strictFetch(CONFIG.instance + route, options)\n\n ratelimits.remaining = parseInt(resp.headers.get('x-ratelimit-remaining'))\n ratelimits.reset = parseFloat(resp.headers.get('x-ratelimit-reset'), 10)\n\n if (ratelimits.remaining > 0) {\n // Reset backlogged request counter -- we are no longer being ratelimited.\n ratelimits.backlogged = 0\n }\n } catch (err) {\n if (err.resp && err.resp.status === 429) {\n console.warn('Received HTTP 429 from server.')\n\n // We are being ratelimited now.\n ratelimits.remaining = 0\n ratelimits.reset = Date.now() / 1000 + err.body.retry_after\n\n return request(route, params)\n } else {\n throw err\n }\n }\n\n const body = await resp.json()\n\n return body\n}\n","import request from './request'\n\nexport default request\n","import request from '.'\nimport User from './user'\n\n/**\n * Expands an object map of ID to Domain to an array of inflated Domain objects.\n */\nfunction expandDomains(info) {\n return Object.entries(info).map(\n ([id, info]) => new Domain(parseInt(id, 10), info)\n )\n}\n\nexport default class Domain {\n static async fetchById(id) {\n const info = await request(`/api/admin/domains/${id}`)\n return new Domain(id, info)\n }\n\n static async fetchMine() {\n const info = await request('/api/stats/my_domains')\n return expandDomains(info)\n }\n\n static async fetchAll(options) {\n const route = options.extended ? `/api/admin/domains` : `/api/domains`\n const info = await request(route)\n\n if (options.extended) {\n // Turn { id: domain } into an array of domains with IDs.\n return expandDomains(info)\n } else {\n const bareInfo = info\n\n // Official domain IDs are stored in a separate object.\n return Object.entries(bareInfo.domains).map(([id, domain]) => ({\n domain,\n id: parseInt(id, 10),\n official: bareInfo.officialdomains.includes(parseInt(id, 10)),\n }))\n }\n }\n\n static async create({ domain, adminOnly, official }) {\n await request('/api/admin/domains', {\n body: JSON.stringify({\n admin_only: adminOnly,\n domain,\n official,\n }),\n method: 'PUT',\n })\n }\n\n constructor(id, response) {\n const {\n info: {\n domain,\n official,\n admin_only: adminOnly,\n cf_enabled: cfEnabled,\n owner,\n },\n stats,\n public_stats: publicStats,\n } = response\n\n Object.assign(this, {\n adminOnly,\n cfEnabled,\n domain,\n id,\n official,\n owner: owner == null ? null : new User(owner),\n publicStats,\n stats,\n })\n }\n\n get validDomain() {\n return this.domain.replace('*', 'wildcard')\n }\n\n toString() {\n return this.domain\n }\n\n async delete() {\n await request(`/api/admin/domains/${this.id}`, { method: 'DELETE' })\n }\n\n async edit({ owner, adminOnly, ...options }) {\n const route = `/api/admin/domains/${this.id}`\n\n if (owner && !this.owner) {\n await request(`${route}/owner`, {\n body: JSON.stringify({ owner_id: owner.id }),\n method: 'PUT',\n })\n }\n\n await request(route, {\n body: JSON.stringify({\n ...options,\n ...(adminOnly != null ? { admin_only: adminOnly } : {}),\n ...(owner != null && this.owner ? { owner_id: owner.id } : {}),\n }),\n method: 'PATCH',\n })\n }\n\n async setOwner(user) {\n if (!this.owner) {\n return\n }\n\n await request(`/api/admin/domains/${this.id}`, {\n body: JSON.stringify({\n owner_id: user.id,\n }),\n method: 'PATCH',\n })\n }\n}\n","export class Limits {\n constructor({\n used: uploadUsed,\n limit: uploadLimit,\n shortenused: shortensUsed,\n shortenlimit: shortenLimit,\n }) {\n Object.assign(this, {\n shortenLimit,\n shortensUsed,\n uploadLimit,\n uploadUsed,\n })\n }\n\n get uploadPercentage() {\n return this.uploadUsed / this.uploadLimit\n }\n\n get shortensPercentage() {\n return this.shortensUsed / this.shortenLimit\n }\n}\n","import { query, transformKeys } from '../util'\nimport Domain from './domain'\nimport { Limits } from './limits'\nimport request from './request'\n\nclass User {\n /**\n * Fetches a user by ID.\n */\n static async fetchById(id) {\n const info = await request(`/api/admin/users/${id}`)\n return new User(info)\n }\n\n /**\n * Searches for users.\n * @param params The search parameters.\n */\n static async search(params) {\n const result = await request(`/api/admin/users/search` + query(params))\n return {\n pagination: result.pagination,\n results: result.results.map((user) => new User(user)),\n }\n }\n\n constructor(payload) {\n const {\n user_id: id,\n username: name,\n active,\n admin,\n domain,\n subdomain,\n email,\n paranoid,\n consented,\n } = payload\n\n Object.assign(this, {\n active,\n admin,\n consented,\n domain,\n email,\n id,\n name,\n paranoid,\n subdomain,\n })\n\n if (payload.limits) {\n this.limits = new Limits(payload.limits)\n }\n }\n\n /**\n * Deactivates this user.\n */\n deactivate() {\n return this.changeActivationState(false)\n }\n\n activate() {\n return this.changeActivationState(true)\n }\n\n async edit(options) {\n const payload = transformKeys(options, {\n shortenLimit: 'shorten_limit',\n uploadLimit: 'upload_limit',\n })\n const route = `/api/admin/user/${this.id}`\n\n await request(route, {\n body: JSON.stringify(payload),\n method: 'PATCH',\n })\n }\n\n async changeActivationState(state) {\n const route = `/api/admin/${state ? 'activate' : 'deactivate'}/${this.id}`\n await request(route, { method: 'POST' })\n }\n\n async delete() {\n await request(`/api/admin/user/${this.id}`, { method: 'DELETE' })\n }\n\n async fetchDomain() {\n if (typeof this.domain !== 'number') {\n return\n }\n\n this.domain = await Domain.fetchById(this.domain)\n }\n\n /**\n * Sends an email to the user containing a link to activate their account.\n */\n async sendEmail() {\n await request(`/api/admin/activate_email/${this.id}`, { method: 'POST' })\n }\n}\n\nexport default User\n","import request from './request'\nimport User from './user'\n\nexport const AuthenticationState = {\n ADMIN: 'ADMIN',\n INVALID: 'INVALID',\n USER: 'USER',\n}\n\nexport async function login(token) {\n var user\n\n try {\n user = new User(await request('/api/profile', { token }))\n } catch (error) {\n return {\n error,\n state: AuthenticationState.INVALID,\n user: null,\n }\n }\n\n return {\n error: null,\n state: user.admin ? AuthenticationState.ADMIN : AuthenticationState.USER,\n user,\n }\n}\n","import React from 'react'\nimport { Field } from 'formik'\n\nconst defaultRenderer = (Component, { field }, props) => (\n \n)\n\n/**\n * Renders a component from passed props and props. The default renderer\n * applies the props onto the component, along with any additional\n * props, which makes the event listeners attach automatically.\n * @name WithFieldRenderer\n * @function\n * @param {React.Component} Component The component to render.\n * @param {object} fieldProps The field props provided by 's render function.\n * @param {object} props Any additional props.\n */\n\n/**\n * A higher order component that wraps a component with a and\n * automatically provides the event handler props such as onChange.\n * @param {React.Component} component\n * @param {WithFieldRenderer} renderer\n */\nexport default function withField(component, renderer = defaultRenderer) {\n return ({ name, ...props }) => (\n \n {(fieldProps) => renderer(component, fieldProps, props)}\n \n )\n}\n","import { InputGroup } from '@blueprintjs/core'\nimport withField from './withField'\n\nexport default withField(InputGroup)\n","import React from 'react'\nimport { Form } from 'formik'\nimport { Button, FormGroup, TextArea, Intent } from '@blueprintjs/core'\n\nimport InputGroupField from './fields/InputGroupField'\nimport withField from './fields/withField'\n\nconst TextAreaField = withField(TextArea)\n\nexport default function BroadcastForm({ values, setFieldValue, isSubmitting }) {\n return (\n
\n \n \n \n\n \n \n \n\n \n Broadcast\n \n \n )\n}\n","import { Intent, Position, Toaster } from '@blueprintjs/core'\n\nconst AppToaster = Toaster.create({\n className: 'eap-toaster',\n position: Position.BOTTOM_RIGHT,\n})\n\nexport default AppToaster\n\nexport function success(message, icon = 'tick') {\n AppToaster.show({\n icon,\n intent: Intent.SUCCESS,\n message,\n })\n}\n\nexport function warning(message, icon = 'warning-sign') {\n AppToaster.show({\n icon,\n intent: Intent.WARNING,\n message,\n })\n}\n\nexport function failure(message, icon = 'error') {\n AppToaster.show({\n icon,\n intent: Intent.DANGER,\n message,\n })\n}\n","import React from 'react'\nimport { Formik } from 'formik'\n\nimport BroadcastForm from '../forms/BroadcastForm'\nimport request from '../api'\nimport { failure, success } from '../toaster'\n\nexport default class Broadcast extends React.Component {\n render() {\n return (\n <>\n

Broadcast an email to all users of the service:

\n \n \n )\n }\n\n handleSubmit = async ({ body, subject }, { setSubmitting }) => {\n try {\n await request('/api/admin/broadcast', {\n body: JSON.stringify({\n body,\n subject,\n }),\n method: 'POST',\n })\n\n success('Broadcasted message!', 'headset')\n } catch (err) {\n failure(`Failed to broadcast: ${err}`)\n } finally {\n setSubmitting(false)\n }\n }\n}\n","import React from 'react'\nimport { Switch } from '@blueprintjs/core'\n\nimport withField from './withField'\n\nexport default withField(Switch, (Component, { field }, props) => (\n \n))\n","import React from 'react'\nimport { Button, FormGroup, Intent } from '@blueprintjs/core'\nimport { Form } from 'formik'\n\nimport SwitchField from './fields/SwitchField'\nimport InputGroupField from './fields/InputGroupField'\n\nexport default function DomainAddForm({ values, setFieldValue, isSubmitting }) {\n return (\n
\n \n \n \n\n \n \n \n \n\n \n Add\n \n \n )\n}\n","import styled from 'styled-components'\n\nconst DialogBody = styled.div`\n padding: 1rem 1rem 0 1rem;\n`\n\nexport default DialogBody\n","import { Dialog } from '@blueprintjs/core'\nimport React from 'react'\nimport { Formik } from 'formik'\n\nimport DomainAddForm from '../forms/DomainAddForm'\nimport DialogContent from './DialogContent'\n\nexport default function DomainAddDialog({ onSubmit, ...props }) {\n return (\n \n \n \n \n \n )\n}\n","import { Button, MenuItem } from '@blueprintjs/core'\nimport { Select } from '@blueprintjs/select'\nimport React from 'react'\nimport debounce from 'lodash.debounce'\n\nimport User from '../api/user'\n\nexport default class UserSuggestor extends React.Component {\n state = {\n users: [],\n }\n\n componentDidMount() {\n this.fetchUsers('')\n }\n\n itemRenderer = (user, { handleClick, modifiers }) => (\n \n )\n\n itemPredicate = (query, user) =>\n user.name.toLowerCase().includes(query.toLowerCase())\n\n async fetchUsers(query) {\n const { results: users } = await User.search({\n active: true,\n page: 0,\n per_page: 10,\n query,\n })\n this.setState({ users })\n }\n\n render() {\n const { value = {} } = this.props\n\n return (\n \n \n \n )\n}\n","import { Dialog } from '@blueprintjs/core'\nimport React from 'react'\nimport { Formik } from 'formik'\n\nimport DialogContent from './DialogContent'\nimport DomainEditForm from '../forms/DomainEditForm'\n\nexport default function DomainEditDialog({ domain, onSubmit, ...props }) {\n if (domain == null) {\n return null\n }\n\n return (\n \n \n \n \n \n )\n}\n","import { Alert, Intent } from '@blueprintjs/core'\nimport React from 'react'\n\nexport default function DeleteAlert(props) {\n return (\n \n )\n}\n\nexport function custom(render) {\n return (props) => {render(props)}\n}\n","import React from 'react'\n\nimport { custom } from './DeleteAlert'\n\nexport default custom(({ domain, movingTo }) => {\n const from = domain ? domain.domain : '...'\n const to = movingTo ? movingTo.domain : '...'\n\n return (\n

\n Are you sure you want to delete {from}? All users, files\n and shortens will be moved to {to}.\n

\n )\n})\n","import styled from 'styled-components'\n\nconst CardHeader = styled.h5`\n display: flex;\n align-items: center;\n font-size: 1.3rem;\n margin: 0 0 0.5rem 0;\n`\n\nexport default CardHeader\n","import React from 'react'\nimport styled from 'styled-components'\n\nimport { pluralizeValues } from '../util'\n\nfunction formatStats(stats) {\n return pluralizeValues(stats).join(', ')\n}\n\nconst PublicStats = styled.span`\n color: #666;\n`\n\nexport default function DomainStats({ stats, publicStats }) {\n const publicNode =\n publicStats != null ? (\n ({formatStats(publicStats)})\n ) : null\n\n return (\n

\n {formatStats(stats)} {publicNode}\n

\n )\n}\n","import { Card } from '@blueprintjs/core'\nimport styled from 'styled-components'\n\nconst InfoCard = styled(Card)`\n margin: 1rem 0;\n\n p {\n margin-bottom: 0;\n }\n`\n\nexport default InfoCard\n","import { Icon } from '@blueprintjs/core'\nimport React from 'react'\nimport PropTypes from 'prop-types'\nimport styled from 'styled-components'\n\nconst StyledUserName = styled.div`\n display: flex;\n align-items: center;\n\n .bp3-icon {\n opacity: 0.5;\n margin-right: 0.25em;\n height: 1em;\n\n svg {\n height: inherit;\n }\n }\n`\n\nexport default function UserName({ user, className }) {\n return (\n \n {user.admin ? : null}\n {user.name}\n \n )\n}\n\nUserName.propTypes = {\n user: PropTypes.shape({\n admin: PropTypes.bool.isRequired,\n name: PropTypes.string.isRequired,\n }).isRequired,\n}\n","import { Button, Icon, Intent } from '@blueprintjs/core'\nimport React from 'react'\nimport { Link } from 'react-router-dom'\nimport styled, { css } from 'styled-components'\n\nimport CardHeader from './CardHeader'\nimport DomainStats from './DomainStats'\nimport InfoCard from './InfoCard'\nimport UserName from './UserName'\n\nconst StyledDomain = styled(({ unused, ...rest }) => )`\n display: flex;\n\n &:first-child {\n margin-top: 0;\n }\n\n ${(props) =>\n props.unused &&\n css`\n background: hsl(50, 100%, 95%);\n box-shadow: none;\n border: solid 1px hsl(50, 100%, 85%);\n `};\n`\n\nconst Owner = styled.div`\n display: flex;\n align-items: center;\n margin-top: 0.5em;\n\n & div {\n margin-left: 0.25em;\n }\n`\n\nconst DomainID = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n width: 2em;\n margin-right: 0.5em;\n font-weight: 800;\n font-size: 2em;\n`\n\nconst DomainContent = styled.div`\n display: flex;\n flex-flow: column nowrap;\n`\n\nconst Tools = styled.div`\n padding: 1rem 0 0 0;\n\n button:not(:last-child) {\n margin-right: 0.5em;\n }\n`\n\nexport default class Domain extends React.Component {\n state = {\n selectedUser: null,\n }\n\n render() {\n const { userFacing = false } = this.props\n const {\n adminOnly,\n domain,\n official,\n stats,\n publicStats,\n id,\n owner,\n } = this.props.domain\n\n const verifiedIcon = official ? (\n \n ) : null\n\n const adminOnlyIcon = adminOnly ? (\n \n ) : null\n\n const ownerInformation =\n owner != null ? (\n \n Owned by\n \n \n \n \n ) : null\n\n const tools = userFacing ? null : (\n \n {id === 0 ? null : (\n \n )}\n \n {this.renderDomainListing()}\n \n )\n }\n\n handleAddDomainClick = () => {\n this.setState({ domainAddOpen: true })\n }\n\n handleDomainAdd = () => {\n this.setState({ domainAddOpen: false })\n this.load()\n }\n\n handleDomainDelete = (domain) => {\n this.setState({ deletingDomain: domain, domainDeleteOpen: true })\n }\n\n handleDomainEdit = (domain) => {\n this.setState({\n domainEditOpen: true,\n editingDomain: domain,\n })\n }\n\n handleDomainDeleteConfirm = async () => {\n this.setState({ domainDeleteOpen: false })\n\n try {\n await this.state.deletingDomain.delete()\n success(`Deleted ${this.state.deletingDomain.domain}.`, 'trash')\n } catch (err) {\n failure(`Failed to delete domain: ${err}`)\n }\n\n this.load()\n }\n\n handleDomainAddSubmit = async (values, { setSubmitting }) => {\n try {\n await Domain.create(values)\n success(`Created ${values.domain}.`, 'plus')\n this.setState({ domainAddOpen: false })\n this.load()\n } catch (err) {\n failure(`Failed to add ${values.domain}: ${err}`)\n } finally {\n setSubmitting(false)\n }\n }\n\n handleDomainEditSubmit = async (values, { setSubmitting }) => {\n const { editingDomain: domain } = this.state\n\n try {\n await domain.edit(values)\n success(`Edited ${domain.domain}.`, 'edit')\n this.setState({ domainEditOpen: false })\n this.load()\n } catch (err) {\n failure(`Failed to edit ${domain.domain}: ${err}`)\n } finally {\n setSubmitting(false)\n }\n }\n\n handleDomainAddDialogClose = () => {\n this.setState({ domainAddOpen: false })\n }\n\n handleDomainEditDialogClose = () => {\n this.setState({ domainEditOpen: false })\n }\n\n handleDomainDeleteAlertCancel = () => {\n this.setState({ domainDeleteOpen: false })\n }\n}\n","import styled from 'styled-components'\n\nconst Buttons = styled.div`\n margin: 1rem 0;\n\n & *:not(:last-child) {\n margin-right: 0.5rem;\n }\n`\n\nexport default Buttons\n","import Domain from './domain'\nimport User from './user'\n\n/**\n * Represents a shorten or file on elixire.\n */\nexport default class Item {\n constructor({ filename: shortcode, domain, uploader, deleted }) {\n Object.assign(this, {\n deleted,\n domain,\n shortcode,\n uploader,\n })\n }\n\n /**\n * Fetches the uploader of this item.\n */\n async fetchUploader() {\n if (typeof this.uploader !== 'string') {\n return\n }\n\n const user = await User.fetchById(this.uploader)\n this.uploader = user\n }\n\n /**\n * Fetches the domain that this item is stored on.\n */\n async fetchDomain() {\n if (typeof this.domain !== 'number') {\n return\n }\n\n const domain = await Domain.fetchById(this.domain)\n this.domain = domain\n }\n}\n","import Item from './item'\nimport request from './request'\n\nexport default class File extends Item {\n static async getByShortcode(shortcode) {\n const info = await request(`/api/admin/file/${shortcode}`)\n if (info == null) {\n return null\n }\n return new File(info)\n }\n\n constructor(payload) {\n super(payload)\n\n const { file_id: id, mimetype, fspath: path, file_size: size } = payload\n\n Object.assign(this, {\n id,\n mimetype,\n path,\n size,\n })\n }\n\n toString() {\n return `${this.shortcode}.${this.getExtension()}`\n }\n\n getExtension() {\n const parts = this.path.split('.')\n const extension = parts[parts.length - 1]\n return extension\n }\n\n /**\n * Resolve the URL to this file. If this file has domain information, it is\n * used automatically. You should provide a fallback to be used in case we only\n * have the ID.\n * @param {string} domainName\n */\n getUrl(domainName) {\n const domain =\n typeof this.domain === 'number' ? domainName : this.domain.validDomain\n\n return `https://${domain}/i/${this.shortcode}.${this.getExtension()}`\n }\n\n async delete() {\n await request(`/api/admin/file/${this.id}`, { method: 'DELETE' })\n }\n\n async rename(to) {\n await request(`/api/admin/file/${this.id}`, {\n body: JSON.stringify({ shortname: to }),\n method: 'PATCH',\n })\n }\n\n async move(to) {\n await request(`/api/admin/file/${this.id}`, {\n body: JSON.stringify({ domain_id: to.id }),\n method: 'PATCH',\n })\n }\n}\n","/* global BigInt */\n\nconst EPOCH = 1420070400000\n\nexport function toDate(snowflake) {\n if (typeof BigInt !== 'undefined') {\n const epoch = BigInt(EPOCH)\n const stamp = epoch + (BigInt(snowflake) >> BigInt(22))\n return new Date(Number(stamp))\n }\n\n // Tiemen#0001 (152164749868662784) made this.\n return new Date(parseInt(snowflake, 10) / 4194304 + EPOCH)\n}\n","/* eslint-disable jsx-a11y/anchor-is-valid */\n\nimport React from 'react'\nimport styled, { css } from 'styled-components'\n\nimport { toDate } from '../snowflake'\nimport CardHeader from './CardHeader'\nimport InfoCard from './InfoCard'\n\nconst StrikeableCardHeader = styled(({ strike, ...rest }) => (\n \n))`\n ${(props) =>\n props.strike &&\n css`\n text-decoration: line-through;\n `};\n`\n\nconst Timestamp = styled.time`\n display: block;\n margin-top: 0.5rem;\n font-size: 0.75rem;\n opacity: 0.85;\n`\n\nexport default function ItemCard({ deleted, url, title, children, item }) {\n const created = toDate(item.id)\n\n return (\n \n \n {title}\n \n

{children}

\n \n Created {created.toLocaleString()}\n \n
\n )\n}\n","import React from 'react'\nimport { Link } from 'react-router-dom'\nimport prettyBytes from 'pretty-bytes'\n\nimport ItemCard from './ItemCard'\n\nexport default function File({ file, url }) {\n const { uploader, size: fileSize, mimetype, deleted } = file\n const size = prettyBytes(fileSize)\n const how = deleted ? 'Originally uploaded' : 'Uploaded'\n\n if (typeof uploader === 'string') {\n throw TypeError(' cannot render files with unexpanded uploaders')\n }\n\n return (\n \n {how} by {uploader.name} ({size},{' '}\n {mimetype})\n \n )\n}\n","import React from 'react'\nimport { custom } from './DeleteAlert'\n\nexport default custom(({ file }) => (\n

\n Are you sure you want to delete {file}?\n

\n))\n","import { Button, Dialog, Intent, MenuItem } from '@blueprintjs/core'\nimport { Select } from '@blueprintjs/select'\nimport React from 'react'\n\nimport Domain from '../api/domain'\nimport File from '../api/file'\nimport { failure, success } from '../toaster'\nimport { pluralize } from '../util'\nimport DialogContent from './DialogContent'\nimport LoadingText from './LoadingText'\n\nexport default class FileMoveDialog extends React.Component {\n state = {\n destination: null,\n domains: null,\n loading: false,\n moving: false,\n selectedDomain: null,\n }\n\n componentDidMount() {\n this.load()\n }\n\n async load() {\n this.setState({ loading: true })\n await this.fetch()\n this.setState({ loading: false })\n }\n\n async fetch() {\n const domains = await Domain.fetchAll({ extended: true })\n const firstId = Object.keys(domains)[0]\n const defaultDomain = domains[firstId]\n\n this.setState({\n domains,\n selectedDomain: defaultDomain,\n })\n }\n\n itemRenderer = (domain, { handleClick, modifiers }) => {\n const label = pluralize('file', domain.stats.files)\n\n return (\n \n )\n }\n\n itemPredicate(query, { domain }) {\n return domain.toLowerCase().includes(query.toLowerCase())\n }\n\n itemDisabled = ({ domain }) => {\n return domain === this.props.file.domain.domain\n }\n\n render() {\n let selector = null\n\n if (this.state.loading || this.state.selectedDomain == null) {\n selector = Loading domains...\n } else if (this.state.domains != null) {\n selector = (\n \n \n \n )\n }\n\n const type = this.props.file instanceof File ? 'file' : 'shorten'\n\n return (\n \n \n

\n Move {this.props.file.shortcode} to:\n

\n\n {selector}\n\n \n Move\n \n
\n
\n )\n }\n\n handleItemSelect = (selectedDomain) => {\n // Ignore if this domain is the one that the file is already on.\n const domain = this.props.file.domain\n if (selectedDomain.domain === domain.domain) {\n return\n }\n\n this.setState({ selectedDomain })\n }\n\n handleMoveClick = async () => {\n if (this.state.selectedDomain == null) {\n return\n }\n\n this.setState({ moving: true })\n\n try {\n await this.props.file.move(this.state.selectedDomain)\n success(\n `Moved ${this.props.file} to ${this.state.selectedDomain.domain}.`,\n 'move'\n )\n } catch (err) {\n failure(`Failed to move ${this.props.file}: ${err}`)\n } finally {\n this.setState({ moving: false })\n this.props.onMoved()\n }\n }\n}\n","import { ControlGroup, HTMLSelect, InputGroup } from '@blueprintjs/core'\nimport React from 'react'\nimport PropTypes from 'prop-types'\n\nexport const ItemType = {\n FILE: 'File',\n SHORTEN: 'Shorten',\n}\n\nexport default class ItemSearcher extends React.Component {\n static propTypes = {\n currentType: PropTypes.oneOf(Object.values(ItemType)).isRequired,\n disabled: PropTypes.bool,\n onChange: PropTypes.func,\n onItemTypeChange: PropTypes.func,\n value: PropTypes.string.isRequired,\n }\n\n render() {\n return (\n \n \n \n \n \n \n \n )\n }\n\n handleQueryChange = (event) => {\n const { value } = event.currentTarget\n\n if (this.props.onChange) {\n this.props.onChange(value)\n }\n }\n\n handleTypeChange = (event) => {\n const { value } = event.currentTarget\n\n if (this.props.onItemTypeChange) {\n const newType = value === 'Shorten' ? ItemType.SHORTEN : ItemType.FILE\n this.props.onItemTypeChange(newType)\n }\n }\n}\n","import styled from 'styled-components'\n\nconst PopoverContent = styled.div`\n max-width: 30vw;\n padding: 1rem;\n`\n\nexport default PopoverContent\n","import React from 'react'\nimport { Link } from 'react-router-dom'\n\nimport ItemCard from './ItemCard'\n\nexport default function Shorten({ shorten, url }) {\n const { redirto: redir, deleted } = shorten\n const how = deleted ? 'Originally shortened' : 'Shortened'\n const uploader = shorten.uploader\n\n return (\n \n {how} by {uploader.name}\n \n )\n}\n","import Item from './item'\nimport request from './request'\n\nexport default class Shorten extends Item {\n static async getByShortcode(shortcode) {\n const info = await request(`/api/admin/shorten/${shortcode}`)\n if (info == null) {\n return null\n }\n return new Shorten(info)\n }\n\n constructor(payload) {\n super(payload)\n\n this.id = payload.shorten_id\n this.redirto = payload.redirto\n }\n\n toString() {\n return this.shortcode\n }\n\n /**\n * Resolve the URL to this shorten. If this file has domain information, it is\n * used automatically. You should provide a fallback to be used in case we only\n * have the ID.\n * @param {string} domainName\n */\n getUrl(domainName) {\n const domain =\n typeof this.domain === 'number' ? domainName : this.domain.validDomain\n\n return `https://${domain}/s/${this.shortcode}`\n }\n\n async delete() {\n await request(`/api/admin/shorten/${this.id}`, { method: 'DELETE' })\n }\n\n async rename(to) {\n await request(`/api/admin/shorten/${this.id}`, {\n body: JSON.stringify({ shortname: to }),\n method: 'PATCH',\n })\n }\n\n async move(to) {\n await request(`/api/admin/shorten/${this.id}`, {\n body: JSON.stringify({ domain_id: to.id }),\n method: 'PATCH',\n })\n }\n}\n","import {\n Button,\n ControlGroup,\n InputGroup,\n Intent,\n Popover,\n Position,\n} from '@blueprintjs/core'\nimport debounce from 'lodash.debounce'\nimport React from 'react'\nimport { withRouter } from 'react-router-dom'\n\nimport Buttons from '../components/Buttons'\nimport Domain from '../api/domain'\nimport FileItem from '../api/file'\nimport File from '../components/File'\nimport FileDeleteAlert from '../components/FileDeleteAlert'\nimport FileMoveDialog from '../components/FileMoveDialog'\nimport ItemSearcher, { ItemType } from '../components/ItemSearcher'\nimport LoadingText from '../components/LoadingText'\nimport PopoverContent from '../components/PopoverContent'\nimport Shorten from '../components/Shorten'\nimport ShortenItem from '../api/shorten'\nimport { failure, success } from '../toaster'\n\nclass Files extends React.Component {\n state = {\n domains: null,\n fileDeleteOpen: false,\n fileMoveOpen: false,\n item: null,\n loading: false,\n loadingDomains: false,\n query: this.props.match.params.id || '',\n renameLoading: false,\n renamingTo: '',\n shorten: this.props.location.search === '?shorten=true' || false,\n }\n\n async componentDidMount() {\n this.setState({ loadingDomains: true })\n\n try {\n const domains = await Domain.fetchAll({\n extended: false,\n })\n\n this.setState({ domains })\n } catch (err) {\n failure('Failed to fetch domains.')\n } finally {\n this.setState({ loadingDomains: false })\n }\n\n if (this.state.query != null) {\n this.load()\n }\n }\n\n fetchDebounced = debounce(() => this.load(), 500)\n\n getUrl() {\n if (this.state.domains == null || this.state.item == null) {\n return '...'\n }\n\n const domain = this.state.item.domain.validDomain\n return this.state.item.getUrl(domain)\n }\n\n async load() {\n this.setState({ loading: true })\n await this.fetch()\n this.setState({ loading: false })\n }\n\n async fetch() {\n const { query } = this.state\n\n const bail = () => {\n this.setState({ item: null })\n this.props.history.replace('/files')\n }\n\n if (query === '') {\n bail()\n return\n }\n\n const item = this.state.shorten\n ? await ShortenItem.getByShortcode(this.state.query)\n : await FileItem.getByShortcode(this.state.query)\n\n if (item == null) {\n bail()\n return\n }\n\n // Fetch extended information.\n await item.fetchDomain()\n await item.fetchUploader()\n\n this.replaceRoute()\n this.setState({ item })\n }\n\n replaceRoute() {\n let route = `/files/${this.state.query}`\n\n if (this.state.shorten) {\n route += '?shorten=true'\n }\n\n this.props.history.replace(route)\n }\n\n renderButtons() {\n if (this.state.item == null) {\n return null\n }\n\n return (\n \n \n Delete\n \n \n \n \n \n \n \n Rename\n \n \n \n \n \n \n )\n }\n\n renderDialogs() {\n return (\n <>\n \n {this.state.item ? (\n \n ) : null}\n \n )\n }\n\n render() {\n let item = null\n\n if (this.state.item != null) {\n if (this.state.shorten) {\n item = \n } else {\n item = \n }\n }\n\n let content = null\n\n if (this.state.loadingDomains) {\n content = Loading domains...\n } else if (this.state.loading) {\n content = Loading...\n } else if (item == null) {\n content =
Nothing found.
\n } else {\n content = (\n <>\n {item}\n {this.renderButtons()}\n {this.renderDialogs()}\n \n )\n }\n\n return (\n <>\n \n\n {content}\n \n )\n }\n\n handleFileDeleteAlertCancel = () => {\n this.setState({ fileDeleteOpen: false })\n }\n\n handleFileMoveDialogClose = () => {\n this.setState({ fileMoveOpen: false })\n }\n\n handleQueryChange = (query) => {\n this.setState({ query }, this.fetchDebounced)\n }\n\n handleItemTypeChange = (type) => {\n this.setState(\n {\n item: null,\n shorten: type === ItemType.SHORTEN,\n },\n this.load\n )\n }\n\n handleDeleteItem = async () => {\n this.setState({ fileDeleteOpen: false })\n\n try {\n await this.state.item.delete()\n success(`Deleted ${this.state.item}.`, 'trash')\n this.load()\n } catch (err) {\n failure(`Failed to delete ${this.state.item}: ${err}`)\n }\n }\n\n handleOpenDeleteAlert = () => {\n this.setState({ fileDeleteOpen: true })\n }\n\n handleOpenFileMoveDialog = () => {\n this.setState({ fileMoveOpen: true })\n }\n\n handleItemMoved = () => {\n this.setState({ fileMoveOpen: false })\n this.load()\n }\n\n handleRenameToChange = (event) => {\n this.setState({ renamingTo: event.target.value })\n }\n\n handleRenameClick = async () => {\n this.setState({ renameLoading: true })\n\n try {\n await this.state.item.rename(this.state.renamingTo)\n success(\n `Renamed ${this.state.item.shortcode} to ${this.state.renamingTo}.`,\n 'edit'\n )\n this.setState(\n (prevState) => ({\n query: prevState.renamingTo,\n }),\n this.load\n )\n } catch (err) {\n failure(`Failed to rename ${this.state.item.shortcode}: ${err}`)\n } finally {\n this.setState({ renameLoading: false })\n }\n }\n}\n\nexport default withRouter(Files)\n","import React from 'react'\nimport Domain from '../api/domain'\nimport DomainListing from '../components/DomainListing'\nimport LoadingText from '../components/LoadingText'\nimport { failure } from '../toaster'\n\nexport default class MyDomains extends React.Component {\n state = {\n domains: null,\n loading: true,\n }\n\n componentDidMount() {\n this.fetch()\n }\n\n async fetch() {\n this.setState({ loading: true })\n await this.load()\n this.setState({ loading: false })\n }\n\n async load() {\n try {\n this.setState({\n domains: await Domain.fetchMine(),\n })\n } catch (err) {\n failure(`Failed to load your domains: ${err}`)\n }\n }\n\n render() {\n if (this.state.loading || this.state.domains == null) {\n return Loading your domains...\n }\n\n const domains = this.state.domains\n\n if (domains.length === 0) {\n return \"You don't own any domains.\"\n }\n\n return \n }\n}\n","import React from 'react'\nimport { NumericInput } from '@blueprintjs/core'\n\nexport default ({ name, onChange, value, onBlur, ...props }) => (\n onChange(name, value)}\n value={value}\n {...props}\n />\n)\n","import formDialog from '../formDialog'\nimport UserEditForm from '../forms/UserEditForm'\n\nexport default formDialog(UserEditForm, (props) => ({\n dialogProps: {\n icon: 'edit',\n title: `Edit ${props.user.name}`,\n },\n initialValues: {\n email: props.user.email,\n shortenLimit: props.user.limits.shortenLimit,\n uploadLimit: props.user.limits.uploadLimit,\n },\n}))\n","import React from 'react'\nimport { Dialog } from '@blueprintjs/core'\nimport { Formik } from 'formik'\n\nimport DialogContent from './components/DialogContent'\n\nexport default function formDialog(FormComponent, options) {\n return ({ onSubmit, ...providedProps }) => {\n const { dialogProps, initialValues } = options(providedProps)\n return (\n \n \n \n \n \n )\n }\n}\n","import React from 'react'\nimport { Form } from 'formik'\nimport { FormGroup, Button, Intent } from '@blueprintjs/core'\n\nimport InputGroupField from './fields/InputGroupField'\nimport NumericInput from './inputs/NumericInput'\n\nexport default function UserEditForm({\n handleBlur,\n isSubmitting,\n setFieldValue,\n values,\n}) {\n return (\n
\n \n \n \n \n \n \n \n \n \n \n Save\n \n \n )\n}\n","import React from 'react'\nimport { custom } from './DeleteAlert'\n\nexport default custom(({ user }) => (\n

\n Are you sure you want to delete {user.name}? All of their\n files will be deleted.\n

\n))\n","import { HTMLTable, Intent, Tag } from '@blueprintjs/core'\nimport React from 'react'\nimport styled from 'styled-components'\n\nconst InfoTable = styled(HTMLTable)`\n margin: 2rem 0 0;\n\n th,\n td,\n tr {\n box-shadow: none !important;\n }\n`\n\nexport default function UserInfoTable({ user }) {\n const { email, consented, paranoid, domain, subdomain, limits } = user\n\n if (user.name === 'dummy' && user.id === '0') {\n return

Dummy user, no info here.

\n }\n\n const consentTag =\n consented === true ? (\n \n Consented\n \n ) : consented == null ? (\n \n To be determined\n \n ) : (\n \n Forbidden\n \n )\n\n const { uploadLimit, uploadUsed, shortensUsed, shortenLimit } = limits\n\n const uploadPercentage = Math.floor((uploadUsed / uploadLimit) * 100)\n const shortensPercentage = Math.floor((shortensUsed / shortenLimit) * 100)\n const mibUploaded = Math.floor(uploadUsed / (1024 * 1024))\n const mibLimit = Math.floor(uploadLimit / (1024 * 1024))\n\n return (\n \n \n \n Email\n {email}\n \n \n Statistics participation\n {consentTag}\n \n \n Paranoid mode\n {paranoid ? 'enabled' : 'disabled'}\n \n \n Domain\n {domain}\n \n \n Subdomain\n {subdomain || ''}\n \n \n Upload limit\n \n {uploadPercentage}% ({mibUploaded} MiB / {mibLimit} MiB)\n \n \n \n Shorten limit\n \n {shortensPercentage}% ({shortensUsed} / {shortenLimit})\n \n \n \n \n )\n}\n","import { Button, ButtonGroup, Intent, Tag } from '@blueprintjs/core'\nimport React from 'react'\n\nimport Buttons from '../components/Buttons'\nimport LoadingText from '../components/LoadingText'\nimport User from '../api/user'\nimport UserEditDialog from '../components/UserEditDialog'\nimport UserDeleteAlert from '../components/UserDeleteAlert'\nimport UserInfoTable from '../components/UserInfoTable'\nimport { failure, success } from '../toaster'\n\nexport default class UserPage extends React.Component {\n state = {\n deleteAlertOpen: false,\n editDialogOpen: false,\n loading: false,\n loadingActivation: false,\n loadingDeletion: false,\n user: null,\n }\n\n componentDidMount() {\n this.load()\n }\n\n load() {\n this.setState({ loading: true })\n this.fetch()\n this.setState({ loading: false })\n }\n\n async fetch() {\n const user = await User.fetchById(this.props.match.params.id)\n this.setState({ user })\n }\n\n renderModals() {\n if (this.state.user == null) {\n return null\n }\n\n return (\n <>\n \n \n \n )\n }\n\n renderButtons() {\n const { active, admin } = this.state.user\n\n return (\n <>\n \n \n \n \n \n \n {active ? 'Deactivate' : 'Activate now'}\n \n {!active ? (\n \n ) : null}\n \n Delete\n \n \n \n \n )\n }\n\n render() {\n const { user } = this.state\n\n if (this.state.loading || user == null) {\n return Loading user...\n }\n\n const tags = []\n if (user.admin) {\n tags.push(\n \n Admin\n \n )\n }\n\n return (\n <>\n

\n {user.name} ({user.id})\n

\n {tags}\n \n {this.renderButtons()}\n {this.renderModals()}\n \n )\n }\n\n handleUserEditDialogClose = () => {\n this.setState({\n editDialogOpen: false,\n })\n }\n\n handleUserEditDialogSubmit = async (values, { setSubmitting }) => {\n const { user } = this.state\n\n try {\n await user.edit(values)\n success(`Edited ${user.name}.`)\n this.setState({ editDialogOpen: false }, this.load)\n } catch (err) {\n failure(`Failed to edit ${user.name}: ${err}`)\n } finally {\n setSubmitting(false)\n }\n }\n\n handleEditButtonClick = () => {\n this.setState({\n editDialogOpen: true,\n })\n }\n\n handleChangeActivationStateClick = async () => {\n this.setState({ loadingActivation: true })\n\n const user = this.state.user\n\n try {\n await user.changeActivationState(!user.active)\n success(`Toggled activation state of ${user.name}.`)\n } catch (err) {\n failure(`Failed to change activation state: ${err}`)\n }\n\n this.setState({ loadingActivation: false })\n\n this.load()\n }\n\n handleDelete = async () => {\n this.setState({ deleteAlertOpen: true })\n }\n\n handleDeleteAlertCancel = () => {\n this.setState({ deleteAlertOpen: false })\n }\n\n handleDeleteAlertConfirm = async () => {\n this.setState({ loadingDeletion: true })\n\n const user = this.state.user\n\n try {\n await user.delete()\n success(`Deleted ${user.name}.`, 'trash')\n this.props.history.push('/users')\n } catch (err) {\n failure(`Failed to delete ${user.name}: ${err}`)\n }\n }\n\n handleSendEmail = async () => {\n const user = this.state.user\n\n try {\n await user.sendEmail()\n success(`Sent email to ${user.name}.`, 'envelope')\n } catch (err) {\n failure(`Failed to send email: ${err}`)\n }\n }\n}\n","import {\n Button,\n Intent,\n Menu,\n MenuItem,\n MenuDivider,\n Popover,\n Position,\n} from '@blueprintjs/core'\nimport React from 'react'\nimport { Link } from 'react-router-dom'\nimport styled from 'styled-components'\n\nimport UserName from './UserName'\n\nconst StyledUserListing = styled.div`\n padding: 0.5rem;\n display: flex;\n flex-direction: row;\n`\n\nconst Information = styled.div`\n display: flex;\n flex-direction: column;\n`\n\nconst ID = styled.div`\n font-family: SFMono-Regular, Menlo, monospace;\n opacity: 0.5;\n`\n\nconst Menus = styled.div`\n margin-left: auto;\n`\n\nconst PaddedUserName = styled(UserName)`\n margin-bottom: 0.5em;\n`\n\nexport default function UserListing({\n user,\n onDisable,\n onEnable,\n onSendEmail,\n onDelete,\n}) {\n const { admin } = user\n\n return (\n \n \n \n \n {user.id}\n \n \n \n \n \n ) : null}\n \n {this.state.page !== maxIndex && total !== 0 ? (\n \n {total}\n \n ) : null}\n \n \n \n \n )\n }\n\n handleFirstPageButtonClick = () => {\n this.handlePageChange(0)\n }\n\n handleLastPageButtonClick = () => {\n this.handlePageChange(this.state.pagination.total - 1)\n }\n\n handleQueryChange = (event) => {\n this.setState({ page: 0, query: event.target.value })\n this.searchForUsersDebounced()\n }\n\n handleFilterChange = (newTabId) => {\n this.setState({ page: 0, selectedFilter: newTabId }, this.searchForUsers)\n }\n\n handleSendEmail = async (user) => {\n try {\n await user.sendEmail()\n success(`Sent email to ${user.name}.`, 'envelope')\n } catch (err) {\n failure(`Failed to send email: ${err}`)\n }\n }\n\n handleChangeActivationState = async (user, newState: boolean) => {\n await user.changeActivationState(newState)\n this.searchForUsers()\n }\n\n handleDeleteUser = async (user) => {\n try {\n await user.delete()\n success(`Deleted ${user.name}.`, 'trash')\n } catch (err) {\n failure(`Failed to delete ${user.name}: ${err}`)\n }\n this.searchForUsers()\n }\n\n handlePageChange = (to) => {\n this.setState({ page: to }, this.searchForUsers)\n }\n\n handleBack = () => {\n this.setState(\n {\n page: Math.max(0, this.state.page - 1),\n },\n this.searchForUsers\n )\n }\n\n handleForward = () => {\n this.setState(\n {\n page: Math.min(this.state.pagination.total - 1, this.state.page + 1),\n },\n this.searchForUsers\n )\n }\n\n handlePerPageChange = (value) => {\n this.setState({\n page: 0,\n perPage: value,\n })\n }\n}\n","import { Button, ControlGroup, InputGroup } from '@blueprintjs/core'\nimport React from 'react'\n\nimport { AuthenticationState, login } from '../api/auth'\nimport { failure, success } from '../toaster'\n\nexport default class Authenticator extends React.Component {\n state = {\n loading: false,\n token: window.localStorage.getItem('token') || '',\n }\n\n render() {\n return (\n <>\n

\n You can grab an admin token from your \n \n account page.\n \n  Alternatively, just log in on the main website.\n

\n \n \n \n \n \n )\n }\n\n handleTokenChange = ({ currentTarget: { value } }) => {\n this.setState({ token: value })\n }\n\n handleTokenSubmit = async () => {\n this.setState({ loading: true })\n\n const result = await login(this.state.token)\n const { state } = result\n\n if (state === AuthenticationState.INVALID) {\n const error = result.error\n const message =\n error.toString() === 'Error: HTTP 403'\n ? 'Invalid token.'\n : error.toString()\n\n failure(`Failed to login: ${message}`)\n console.error('[Login] Failed:', result.error)\n\n this.setState({ loading: false })\n return\n }\n\n // Save the token for later.\n window.localStorage.setItem('token', this.state.token)\n\n const user = result.user\n\n success(`Hello, ${user.name}!`, 'log-in')\n this.setState({ loading: false })\n\n if (this.props.onLogin) {\n this.props.onLogin(state)\n }\n }\n}\n","import { Alignment, Button, Classes } from '@blueprintjs/core'\nimport React from 'react'\nimport { Link } from 'react-router-dom'\nimport styled from 'styled-components'\n\nconst StyledNavLink = styled(Link)`\n display: block;\n`\n\nexport default function NavLink(props) {\n return (\n \n \n \n )\n}\n","import { Alignment, Button, Classes, Popover } from '@blueprintjs/core'\nimport React from 'react'\nimport styled from 'styled-components'\n\nimport { AuthenticationState } from '../api/auth'\nimport Authenticator from './Authenticator'\nimport NavLink from './NavLink'\nimport PopoverContent from './PopoverContent'\n\nconst StyledNavigation = styled.nav`\n padding: 2rem;\n width: 100%;\n min-height: 100vh;\n height: 100%;\n background: #ebf1f5;\n border-right: solid 1px #e1e8ed;\n`\n\nconst Header = styled.h1`\n font-size: 1.5em;\n font-weight: inherit;\n margin: 0 0 0.5em;\n`\n\nconst Group = styled.div`\n margin: 1rem 0;\n\n &:first-child {\n margin-top: 0;\n }\n`\n\nexport default function Navigation({ authState, onTokenChanged }) {\n const adminLinks = (\n <>\n \n Users\n \n \n Files\n \n \n Domains\n \n \n Broadcast\n \n \n )\n\n return (\n \n \n
elixire admin
\n
\n \n {authState === AuthenticationState.ADMIN ? adminLinks : null}\n \n My Domains\n \n \n \n \n \n \n \n \n
\n )\n}\n","import styled from 'styled-components'\n\nexport const Page = styled.div`\n padding: 2rem;\n`\n\nexport const PageWrapper = styled.div`\n display: grid;\n grid-template-columns: minmax(250px, 1fr) 4fr;\n`\n","import { Dialog } from '@blueprintjs/core'\nimport React from 'react'\nimport { Router } from 'react-router'\nimport { Route } from 'react-router-dom'\n\nimport { createBrowserHistory } from 'history'\nimport { AuthenticationState, login } from '../api/auth'\nimport CONFIG from '../config.json'\nimport Broadcast from '../views/Broadcast'\nimport Domains from '../views/Domains'\nimport Files from '../views/Files'\nimport MyDomains from '../views/MyDomains'\nimport UserPage from '../views/User'\nimport Users from '../views/Users'\nimport Authenticator from './Authenticator'\nimport DialogContent from './DialogContent'\nimport Navigation from './Navigation'\nimport { Page, PageWrapper } from './Page'\n\nexport default class Root extends React.Component {\n constructor(props) {\n super(props)\n\n this.history = createBrowserHistory({\n basename: CONFIG.basename,\n })\n }\n\n state = {\n auth: null,\n }\n\n async componentDidMount() {\n const token = localStorage.getItem('token')\n\n if (token == null) {\n return\n }\n\n // Let's try to login immediately with the token from storage.\n\n const result = await login(token)\n this.setState({ auth: result.state })\n }\n\n canShowDialog() {\n // There's a token in localStorage, but it hasn't been tried yet, so hide\n // the dialog to prevent showing it too early.\n if (localStorage.getItem('token') != null && this.state.auth == null) {\n return false\n }\n\n // If we are in the indeterminate state or invalid state, show the login\n // dialog.\n return (\n this.state.auth == null || this.state.auth === AuthenticationState.INVALID\n )\n }\n\n renderDialogs() {\n return (\n \n \n \n \n \n )\n }\n\n render() {\n if (this.canShowDialog()) {\n return this.renderDialogs()\n }\n\n // At this point, our authentication has to be determinate due to the early\n // return.\n const auth = this.state.auth\n\n return (\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n )\n }\n\n handleLogin = (newState) => {\n console.log('[Root] Token login:', newState)\n this.setState({ auth: newState })\n\n // If we logged in as a user, kick us back to /. This is to make sure that\n // we aren't in any admin routes.\n if (newState === AuthenticationState.USER) {\n this.history.replace('/')\n }\n }\n}\n","import '@blueprintjs/core/lib/css/blueprint.css'\nimport '@blueprintjs/icons/lib/css/blueprint-icons.css'\nimport 'normalize.css/normalize.css'\n\nimport './index.css'\n\nimport { FocusStyleManager } from '@blueprintjs/core'\n\nimport React from 'react'\nimport ReactDOM from 'react-dom'\n\nimport Root from './components/Root'\n\nFocusStyleManager.onlyShowFocusOnTabs()\n\nconst mount = document.getElementById('app-mount')\nReactDOM.render(, mount)\n"],"sourceRoot":""}