{"version":3,"sources":["components/support/Areas.js","components/support/SearchBar.js","components/pages/Page.js","components/pages/PagePreview.js","components/support/NotFound.js","components/auth/Login.js","media/logo.svg","media/logo-white.png","components/tags/TagService.js","components/support/TranscriptButton.js","components/navitems/NavService.js","components/tags/TagPicker.js","components/auth/useAuth.js","media/logo-horizontal.svg","media/logo-horizontal-white.png","media/aboriginalFlag.svg","media/torresFlag.svg","components/settings/SettingService.js","components/settings/useSettings.js","components/Home.js","components/support/DarkModeContext.js","components/support/ThemeToggle.js","components/NavMenu.js","components/support/useSiteImprove.js","components/Footer.js","components/support/Consent.js","components/support/ScrollToTop.js","components/pages/PageList.js","components/pages/Pages.js","components/glossary/Glossary.js","components/theme.js","App.js","registerServiceWorker.js","index.js","components/support/AppTitle.js","components/glossary/GlossaryLink.js","components/support/Popup.js","components/support/Hijack.js","components/glossary/GlossaryService.js","components/auth/PrivateRoute.js","components/pages/PageService.js","components/support/Analytics.js","components/jss.js"],"names":["Areas","useStyles","makeStyles","theme","searchBar","marginBottom","display","flex","backgroundColor","props","frontpageMode","margin","searchBarFull","searchText","fontFamily","color","fontWeight","fontSize","searchInputBox","borderBottom","marginTop","padding","searchButton","textTransform","textDecoration","cursor","content","marginLeft","marginRight","transition","name","SearchBar","location","useLocation","e","classes","filter","onSearch","onChange","tip","startAdornment","fullWidth","disabled","useState","URLSearchParams","search","get","tempFilter","setTempFilter","useEffect","applyFilter","preventDefault","handleFilterChange","target","value","className","InputProps","disableClearButton","position","disableRipple","onClick","endAdornment","title","disableUnderline","autoFocus","placeholder","aria-label","onKeyPress","which","VersionPicker","lazy","pageStyles","page","overflowWrap","maxWidth","height","noprint","description","spacing","category","paddingBottom","collapse","chipWarn","background","Category","items","collection","collapseOpen","setCollapse","contentRef","useRef","inner","container","map","item","ii","pageDescription","key","id","sm","xs","selectedOptions","tags","uneditable","component","variant","dangerouslySetInnerHTML","__html","ref","size","collapseTitle","in","Page","auth","useAuth","overrideHead","byFamily","area","data","postProcess","PageService","getCached","setData","embed","canContribute","setCanContribute","canApprove","setCanApprove","canObserve","setCanObserve","isAdmin","setIsAdmin","needsApproval","setNeedsApproval","approving","setApproving","restoring","setRestoring","deleting","setDeleting","version","setVersion","GlossaryService","cachedList","setGlossary","loading","setLoading","settings","useSettings","history","useHistory","d","categories","JSON","parse","lastGlossaryTime","setLastGlossaryTime","updated","getList","then","response","user","roles","indexOf","query","console","log","req","redirect","campaign","getPage","state","hasUrl","pathname","endsWith","url","hasId","hasFamily","family","redirectPath","replace","hash","catch","current","scrollTo","document","getElementById","setTimeout","scrollIntoView","behavior","scrollToHash","handleApprove","handleApproveClose","handleRestore","handleRestoreClose","handleRestoreConfirm","restorePage","error","handleDelete","handleDeleteClose","itemsForCategory","cat","out","i","length","push","baseUrl","getElementsByTagName","getAttribute","features","to","plural","Fragment","AppTitle","rel","href","property","justifyContent","buttons","RouterLink","label","controlButtons","type","stringify","modified","thumbnail","index","renderContent","alignItems","edge","window","print","format","align","style","origin","open","onClose","aria-labelledby","approvePage","oldData","startIcon","fallback","onSelect","selpage","selected","revertPage","deletePage","previewStyles","root","flexDirection","borderColor","breakpoints","down","paddingLeft","width","edit","image","textAlign","chip","whiteSpace","videoLink","flexGrow","marginBlockStart","marginBlockEnd","showcase","flexBasis","left","bottom","PagePreview","previewTags","setPreviewTags","videoOpen","setVideoOpen","videoRef","showInPreview","j","options","elevation","square","src","alt","video","flexWrap","option","NotFound","Login","onLogin","canCancel","message","homeButton","username","setUsername","password","setPassword","errorMessage","setErrorMessage","showError","setShowError","analytics","useAnalytics","from","login","signin","tag","method","handleLogin","handleEditClose","handleEnter","mainContent","autoComplete","mainButtons","onSubmit","module","exports","TagService","cachedTime","request","updateTime","self","this","time","parseInt","localStorage","getItem","axios","params","withCredentials","setItem","Promise","resolve","reject","getEditList","updateTag","put","updateTagOrder","deleteTag","delete","pasteButton","TranscriptButton","saveSuccess","setSaveSuccess","hidden","setHidden","pasteHover","setPasteHover","hashName","toLowerCase","contentblock","big","setAttribute","border","classList","toggle","paste","handleSuccessClose","injectFirst","data-open","endIcon","html","createElement","innerHTML","pointerEvents","opacity","activeSheets","Array","prototype","slice","call","styleSheets","sheet","body","appendChild","getSelection","removeAllRanges","range","createRange","selectNode","addRange","execCommand","removeChild","copyFormatted","onMouseOver","onMouseLeave","autoHideDuration","severity","NavService","entries","update","pickerStyles","paddingTop","check","icon","minWidth","header","acc","boxShadow","accHead","minHeight","accContent","TagPicker","UpdateTags","enabled","isOpen","setIsOpen","expanded","mobile","expandIcon","optionId","labelId","button","checked","tabIndex","inputProps","primary","authContext","createContext","ProvideAuth","children","updateUser","u","setUser","toStore","Object","assign","init","setInit","signout","soft","standardAuth","isAuthenticated","ping","stored","restoreUser","initSSO","returnURL","useProvideAuth","Provider","post","returnUrl","encodeURIComponent","useContext","SettingService","getSettings","updateSetting","settingValue","toString","SettingsContext","React","ProvideSettings","local","useReducer","newState","setSettings","updatedSettings","anyUpdate","s","set","setting","list","values","useProvideSettings","Home","Helmet","DarkModeContext","DarkModeProvider","isDarkMode","setIsDarkMode","storedTheme","add","remove","useDarkMode","ThemeToggle","IconButton","toolbar","up","toolbarMobile","toolbarRow","toolbarLink","flexShrink","toolbarLinkMobile","fg","logo","removePadding","removeMargin","selectedLink","iconLabel","borderRadius","menuUserName","menuLabelHeading","menuLabel","menuLabelFlex","menuLabelIcon","menuSubLabel","menuItem","verticalAlign","menuItemWithMenu","boxSizing","menuDesc","paddingRight","sectionDesktop","sectionMobile","navPopup","borderTop","b1","NavMenu","showSearch","setShowSearch","anchorEl","setAnchorEl","whichMenu","setWhichMenu","setLogin","showLogin","setShowLogin","loadingSSO","setLoadingSSO","menuRef","navItems","setNavItems","handleShowSearch","sections","handleClick","currentTarget","handleClose","setMobileOpen","handleLogout","handleSearch","search_term","lastNavTime","setLastNavTime","pm","querySelectorAll","parentNode","mobileOpen","toggleMobile","event","sso","originP","getReturnUrl","renderMenuItem","route","getRoute","isChild","MenuItem","Button","aria-controls","aria-haspopup","Link","renderMenu","Toolbar","Box","logowhite","onTouchEnd","disableGutters","logoHorizontalWhite","logoHorizontal","anchorOrigin","vertical","horizontal","transformOrigin","keepMounted","Boolean","PaperProps","getContentAnchorEl","role","ListSubheader","find","r","ListItemIcon","CircularProgress","sx","top","whichId","isNaN","renderMenuPopup","SwipeableDrawer","anchor","onOpen","Typography","gutterBottom","success","MicrosoftLogo","SvgIcon","xmlns","viewBox","fill","useSiteImprove","siteImproveId","script","async","borderTopStyle","borderTopColor","borderTopWidth","subhead","flag","flag2","statement","copy","Footer","aboriginalFlag","torresFlag","Date","getFullYear","Consent","cookie","split","some","includes","consent","setConsent","setOpen","applyConsent","date","newDate","setMonth","getMonth","toUTCString","Snackbar","Alert","main","right","zIndex","ScrollToTop","trigger","useScrollTrigger","threshold","disableHysteresis","scroll","Slide","appear","direction","Tooltip","Fab","filterListStyles","FilterList","toggleFilter","tagId","renderPickers","m","count","reduce","curr","o","pageListStyles","sort","transform","sortItem","filterWrapper","MSInputMethodContext","documentMode","PageList","match","useRouteMatch","canContributeCollection","setCanContributeCollection","setCanApproveCollection","setTags","pages","setPages","setFilter","setSort","canLoadMore","setCanLoadMore","initialised","setInitialised","pageSize","setPageSize","queryLoaded","setQueryLoaded","override","setOverride","f","changedTags","applyEnabled","findOverride","tgs","oldSelectedTags","changed","queryTags","getAll","t","newE","lastTagFetch","setLastTagFetch","isCategory","fetchPages","showMore","tagRequest","newPages","Math","floor","l","found","total","p","item_id","item_name","append","path","generateTitle","pickedTags","setPickedTags","Badge","badgeContent","overlap","showZero","generateIntro","oldTags","needUpdate","v","Select","Grid","EditPage","PageManager","Area","exact","PrivateRoute","Pages","x","hasAccess","RichTextEditor","EditForm","errors","setErrors","setError","entry","setEntry","updateField","field","handleInput","isEditing","setIsEditing","myRef","encodeURI","TextField","defaultValue","helperText","resetData","multiline","FormHelperText","onEditorChange","updateGlossary","getTime","Hijack","Dialog","aria-describedby","DialogTitle","disableTypography","DialogContent","DialogContentText","DialogActions","deleteGlossary","onDelete","GlossaryList","glossaryEntries","setGlossaryEntries","dir","updateData","tempEntries","ind","splice","currentArray","g","Glossary","getComputedStyle","documentElement","getPropertyValue","createMuiTheme","md","lg","xl","palette","secondary","danger","default","Users","Tags","Settings","FileManager","Logs","NavItems","Trash","NoMatch","App","mainRef","ax","setAx","interceptors","use","err","status","ThemeProvider","StylesProvider","jss","generateClassName","getClassGen","prerendering","CssBaseline","Container","isLocalhost","hostname","registerValidSW","swUrl","onUpdate","navigator","serviceWorker","register","registration","onupdatefound","installingWorker","installing","onstatechange","controller","waiting","postMessage","Element","String","replaceAll","str","newStr","RegExp","rootElement","prerendered","NewVersionAlert","setState","action","Component","displayName","jsss","hasChildNodes","ReactDOM","hydrate","basename","URL","process","addEventListener","fetch","headers","ready","unregister","reload","checkValidServiceWorker","registerServiceWorker","render","text","GlossaryLink","innerText","setTip","popupStyles","popupLink","popupButton","contentContainer","imageBox","EnlargeImage","Popup","htmlRef","isVideo","ApplyInjections","base","newElements","as","substr","glossary","glossaryLinks","getElementsByClassName","createPortal","contents","hasAttribute","titles","contains","gridItems","searchbars","iframes","par","h","w","parseFloat","insertBefore","NoRouterHijack","injected","useMemo","defaultProtocols","defaultHostnames","hostnames","protocol","startsWith","destination","test","host","port","getLocation","withRouter","shouldRouterHandle","el","substring","ctrlKey","shiftKey","metaKey","parentElement","nodeName","rest","allowed","canView","pageCache","prerenderedJSON","encid","ls","jls","getListSimple","getListVersions","getAutocomplete","updatePage","AnalyticsContext","ProvideAnalytics","code","setCode","setAnalytics","c","GA4React","isInitialized","initialize","ga4","gtag","useProvideAnalytics","head","childNodes","nodeType","nodeValue","styleNode","createComment","firstChild","nextSibling","create","jssPreset","insertionPoint","pre","createGenerateClassName","productionPrefix"],"mappings":"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","file":"static/js/main.2903acbe.chunk.js","sourcesContent":["const Areas = [\r\n\t{\r\n\t\t\"url\": \"article\",\r\n\t\t\"name\": \"Article\",\r\n\t\t\"plural\": \"Articles\",\r\n\t\t\"roles\": [\"article.contributor\", \"article.approver\"],\r\n\t\t\"features\": [\"hiddenDescription\", \"content\", \"redirect\", \"tags\", \"private\", \"breadcrumbs\", \"print\", \"publicList\", \"socialButtons\"]\r\n\t},\r\n\t{\r\n\t\t\"url\": \"showcase\",\r\n\t\t\"name\": \"Showcase page\",\r\n\t\t\"plural\": \"Showcase pages\",\r\n\t\t\"roles\": [\"showcase.contributor\", \"showcase.approver\"],\r\n\t\t\"features\": [\"hiddenDescription\", \"content\", \"video\", \"image\", \"tags\", \"redirect\", \"private\", \"breadcrumbs\", \"print\", \"publicList\", /*\"noChipsInSearchPreview\",*/ \"socialButtons\"]\r\n\t},\r\n\t{\r\n\t\t\"url\": \"collection\",\r\n\t\t\"name\": \"Collection\",\r\n\t\t\"plural\": \"Collections\",\r\n\t\t\"roles\": [\"collection.contributor\", \"collection.approver\"],\r\n\t\t\"features\": [\"hiddenDescription\", \"content\", \"tags\", \"items\", \"redirect\", \"private\", \"breadcrumbs\", \"print\", \"socialButtons\"]\r\n\t},\r\n\t{\r\n\t\t\"url\": \"page\",\r\n\t\t\"name\": \"Page\",\r\n\t\t\"plural\": \"Pages\",\r\n\t\t\"roles\": [\"page.contributor\", \"page.approver\"],\r\n\t\t\"features\": [\"hiddenDescription\", \"content\", \"tags\", \"redirect\", \"private\", \"breadcrumbs\", \"simplebreadcrumbs\", \"socialButtons\"]\r\n\t},\r\n\t{\r\n\t\t\"url\": \"unlisted\",\r\n\t\t\"name\": \"Unlisted page\",\r\n\t\t\"plural\": \"Unlisted pages\",\r\n\t\t\"roles\": [\"unlisted.contributor\", \"unlisted.approver\"],\r\n\t\t\"features\": [\"content\", \"redirect\", \"private\"]\r\n\t},\r\n\t{\r\n\t\t\"url\": \"template\",\r\n\t\t\"name\": \"Template\",\r\n\t\t\"plural\": \"Templates\",\r\n\t\t\"roles\": [\"admin\"],\r\n\t\t\"features\": [\"hiddenDescription\", \"content\", \"video\", \"tags\"]\r\n\t},\r\n\t{\r\n\t\t\"url\": \"search\",\r\n\t\t\"name\": \"Search Result\",\r\n\t\t\"plural\": \"Search results\",\r\n\t\t\"meta\": true,\r\n\t\t\"roles\": [],\r\n\t\t\"features\": [\"publicList\"]\r\n\t}\r\n];\r\n\r\nexport default Areas;","import React, { useState, useEffect } from 'react';\r\nimport { useLocation } from \"react-router-dom\";\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport SearchIcon from '@material-ui/icons/Search';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport Box from '@material-ui/core/Box';\r\nimport Tooltip from '@material-ui/core/Tooltip';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport InputAdornment from '@material-ui/core/InputAdornment';\r\nimport IconButton from '@material-ui/core/IconButton';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n searchBar: {\r\n marginBottom: '1em',\r\n display: \"inline-block\",\r\n flex: 1,\r\n backgroundColor: (props) => props.frontpageMode ? \"white\" : \"transparent\",\r\n \"& .MuiFormControl-root\": { margin: (props) => props.frontpageMode ? \"4px\" : '' }\r\n },\r\n searchBarFull: {\r\n display: \"block\", \r\n\r\n },\r\n searchText: {\r\n '& input': {\r\n fontFamily: \"'Montserrat', Verdana, Geneva, sans-serif\",\r\n color: 'var(--darkBlue)',\r\n fontWeight: '700',\r\n fontSize: '.9rem',\r\n },\r\n '& input::placeholder': {\r\n color: 'var(--darkBlue)',\r\n }\r\n },\r\n searchInputBox: {\r\n borderBottom: (props) => !props.frontpageMode ? '2px solid var(--red)' : 0,\r\n marginTop: 0,\r\n \"& .MuiInputBase-inputMarginDense\": { padding: (props) => props.frontpageMode ? '8px' : ''}\r\n },\r\n searchButton: {\r\n fontFamily: \"'Montserrat', Verdana, Geneva, sans-serif\",\r\n color: \"var(--darkBlue)\",\r\n textTransform: \"uppercase\",\r\n fontWeight: 700,\r\n fontSize: \".9rem\",\r\n textDecoration: \"none\",\r\n display: \"block\",\r\n margin: '0 12px 0px 12px',\r\n cursor: 'pointer',\r\n '&:after': {\r\n content: '\">\"',\r\n marginLeft: '10px',\r\n marginRight: '5px',\r\n transition: \"margin-left .4s, margin-right .4s\"\r\n },\r\n '&:hover': {\r\n color: \"var(--red)\"\r\n },\r\n '&:hover:after': {\r\n textDecoration: 'none',\r\n marginLeft: '15px',\r\n marginRight: '0px',\r\n color: \"var(--red)\"\r\n }\r\n }\r\n}), { name: 'SearchBar' });\r\n\r\nconst SearchBar = (props) => {\r\n try {\r\n var location = useLocation();\r\n } catch (e) { }\r\n \r\n const classes = useStyles(props);\r\n const { filter, onSearch, onChange, tip, startAdornment, fullWidth, disabled } = props;\r\n const [tempFilter, setTempFilter] = useState((filter ?? (new URLSearchParams(location.search).get(\"filter\"))) || \"\");//can set initial search on URL args or props\r\n useEffect(() => {\r\n setTempFilter(filter);\r\n },[filter]);\r\n\r\n const applyFilter = (e) => {\r\n if (e) e.preventDefault();\r\n if (onSearch) onSearch(tempFilter);\r\n };\r\n\r\n const handleFilterChange = (e) => {\r\n setTempFilter(e.target.value);\r\n if(onChange) onChange(e.target.value);\r\n };\r\n\r\n const handleEnter = (e) => {\r\n if (e.which === 13 && !disabled) {\r\n applyFilter(e);\r\n }\r\n }\r\n\r\n return (\r\n \r\n {\r\n startAdornment\r\n ? startAdornment\r\n : ((tempFilter != \"\" && tempFilter != null)\r\n ? {\r\n handleFilterChange({ target: { value: \"\" } });\r\n if (onSearch)\r\n onSearch(\"\");\r\n }}>\r\n : \r\n )\r\n } : null,\r\n endAdornment:
Search
,\r\n disableUnderline: true\r\n }}\r\n autoFocus={props.autoFocus ? props.autoFocus : false}\r\n placeholder={tip}\r\n aria-label={tip}\r\n onChange={handleFilterChange}\r\n onKeyPress={handleEnter}\r\n fullWidth={fullWidth ?? true}\r\n margin=\"dense\"\r\n value={tempFilter ?? ''}\r\n disabled={disabled}\r\n />\r\n
\r\n );\r\n};\r\n\r\nexport default SearchBar;\r\n","import AppTitle from '../support/AppTitle.js';\r\nimport useAuth from \"../auth/useAuth.js\";\r\nimport useSettings from \"../settings/useSettings.js\";\r\nimport Hijack from '../support/Hijack.js';\r\nimport PageService from '../pages/PageService.js';\r\nimport PagePreview from '../pages/PagePreview.js';\r\nimport GlossaryService from '../glossary/GlossaryService.js';\r\nimport NotFound from '../support/NotFound.js';\r\nimport TranscriptButton from '../support/TranscriptButton.js';\r\n\r\nimport React, { useState, useEffect, useRef, lazy, Suspense } from 'react';\r\nimport { Link as RouterLink, useLocation, useHistory } from \"react-router-dom\";\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport { Helmet } from \"react-helmet\";\r\nimport Moment from 'react-moment';\r\nimport Button from '@material-ui/core/Button';\r\nimport Chip from '@material-ui/core/Chip';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport ThumbUpIcon from '@material-ui/icons/ThumbUp';\r\nimport Tooltip from '@material-ui/core/Tooltip';\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport Edit from '@material-ui/icons/Edit';\r\nimport Breadcrumbs from '@material-ui/core/Breadcrumbs';\r\nimport Box from '@material-ui/core/Box';\r\nimport RestorePageIcon from '@material-ui/icons/RestorePage';\r\nimport DeleteIcon from '@material-ui/icons/Delete';\r\nimport Alert from '@material-ui/lab/Alert';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport PrintIcon from '@material-ui/icons/Print';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport Grid from '@material-ui/core/Grid';\r\nimport Collapse from '@material-ui/core/Collapse';\r\n\r\nimport FacebookIcon from '@material-ui/icons/Facebook';\r\nimport LinkedInIcon from '@material-ui/icons/LinkedIn';\r\nimport TwitterIcon from '@material-ui/icons/Twitter';\r\n\r\nimport { EmailShareButton, FacebookShareButton, LinkedinShareButton, TwitterShareButton} from \"react-share\";\r\n\r\nconst VersionPicker = lazy(() => import('../pages/VersionPicker.js'));\r\n\r\nconst pageStyles = makeStyles((theme) => ({\r\n page: {\r\n overflowWrap: \"break-word\",\r\n \"& img\": {\r\n maxWidth: \"100%\",\r\n height: \"auto\"\r\n }\r\n },\r\n noprint: {\r\n \"@media print\": {\r\n display: \"none !important\"\r\n }\r\n },\r\n description: {\r\n marginBottom: theme.spacing(2)\r\n },\r\n category: {\r\n paddingBottom: theme.spacing(2),\r\n marginBottom: theme.spacing(2),\r\n marginTop: theme.spacing(3)\r\n },\r\n collapse: {\r\n color: \"var(--red) !important\",\r\n padding: \"0 !important\",\r\n marginBottom: theme.spacing(2),\r\n fontSize: \"0.9rem !important\"\r\n },\r\n chipWarn: {\r\n background: 'rgb(237, 108, 2)'\r\n }\r\n}));\r\nconst Page = (props) => {\r\n const auth = useAuth();\r\n const classes = pageStyles();\r\n const { id } = props;\r\n const [overrideHead, setOverrideHead] = useState(props?.overrideHead ?? true);\r\n const [byFamily, setByFamily] = useState(props?.byFamily ?? true);\r\n const [area, setArea] = useState(props?.area);\r\n const [data, setData] = useState(props?.data ?? postProcess(PageService.getCached(id)));\r\n const [embed, setEmbed] = useState(props?.embed ?? false);\r\n const [canContribute, setCanContribute] = useState(false);\r\n const [canApprove, setCanApprove] = useState(false);\r\n const [canObserve, setCanObserve] = useState(false);\r\n const [isAdmin, setIsAdmin] = useState(false);\r\n const [needsApproval, setNeedsApproval] = useState(false);\r\n const [approving, setApproving] = useState(false);\r\n const [restoring, setRestoring] = useState(false);\r\n const [deleting, setDeleting] = useState(false);\r\n const [version, setVersion] = useState(null);\r\n const [glossary, setGlossary] = useState(GlossaryService.cachedList);\r\n const [loading, setLoading] = useState(false);\r\n const settings = useSettings();\r\n const contentRef = useRef(null);\r\n const location = useLocation();\r\n const history = useHistory();\r\n\r\n function postProcess(d) {\r\n if (d && 'categories' in d && d.categories && typeof d.categories == \"string\") {\r\n d.categories = JSON.parse(d.categories);\r\n }\r\n return d;\r\n }\r\n\r\n const [lastGlossaryTime, setLastGlossaryTime] = useState(0);\r\n useEffect(() => {\r\n var updated = settings.get(\"Glossary last updated\");\r\n if (lastGlossaryTime != updated) {\r\n setLastGlossaryTime(updated);\r\n GlossaryService.getList({}, updated).then((response) => {\r\n setGlossary(response);\r\n });\r\n }\r\n }, [settings]);\r\n\r\n useEffect(() => {\r\n if (data) {\r\n if (data.area == \"article\" || data.area == \"showcase\" || data.area == \"collection\" || data.area == \"page\" || data.area == \"unlisted\") {\r\n setCanContribute(auth.user.id && auth.user?.roles && auth.user.roles.indexOf(data.area + \".contributor\") !== -1);\r\n setCanApprove(auth.user.id && auth.user?.roles && auth.user.roles.indexOf(data.area + \".approver\") !== -1);\r\n } else if (data.area != \"search\" && auth.user.id && auth.user?.roles && auth.user.roles.indexOf(\"admin\") !== -1) {\r\n setCanContribute(true);\r\n setCanApprove(true);\r\n }\r\n setIsAdmin(auth.user.id && auth.user?.roles && auth.user.roles.indexOf(\"admin\") !== -1);\r\n setCanObserve(auth.user.id && auth.user?.roles\r\n && (auth.user.roles.indexOf(\"observer\") !== -1 || auth.user.roles.indexOf(data.area + \".observer\") !== -1));\r\n }\r\n }, [auth, data]);\r\n\r\n useEffect(() => {\r\n //setData({});\r\n if(!data)\r\n setLoading(true);\r\n var query = new URLSearchParams(location.search);\r\n console.log(id, isAdmin)\r\n var req = { id: id, byFamily: byFamily ? 1 : 0, redirect: isAdmin ? 0 : 1 };\r\n var campaign = query.get('campaign');\r\n if (campaign) \r\n req.campaign = campaign;\r\n\r\n PageService.getPage(req)\r\n .then((response) => {\r\n if ('data' in response && 'data' in response.data) {\r\n response.data.data = postProcess(response.data.data);\r\n setData(response.data.data);\r\n setVersion(response.data.data);\r\n setLoading(false);\r\n\r\n if (response.data.data.state == 'workflow')\r\n setNeedsApproval(true);\r\n else if (!embed) {\r\n var hasUrl = location.pathname.endsWith(\"/\"+response.data.data.url),\r\n hasId = location.pathname.endsWith(\"/\" +response.data.data.id),\r\n hasFamily = location.pathname.endsWith(\"/\" +response.data.data.family);\r\n var redirectPath = null;\r\n if (!hasUrl) {\r\n if (response.data.data.url)\r\n redirectPath = response.data.data.url;\r\n if (!hasId) {\r\n if (response.data.data.id)\r\n redirectPath = response.data.data.id;\r\n if (!hasFamily) {\r\n if (response.data.data.family)\r\n redirectPath = response.data.data.family;\r\n }\r\n }\r\n }\r\n if (redirectPath != null) {\r\n history.replace(\"/\" + response.data.data.area + \"/\" + redirectPath + location.search + location.hash);\r\n }\r\n }\r\n }\r\n })\r\n .catch(function (e) {\r\n setData(null);\r\n setLoading(false);\r\n });\r\n }, [id]);\r\n\r\n\r\n const scrollToHash = () => {\r\n var scrollTo = document.getElementById(location.hash.replace(\"#\", \"\"));\r\n if (scrollTo)\r\n setTimeout(function () { scrollTo.scrollIntoView({ behavior: \"smooth\"}); }, 500);\r\n };\r\n useEffect(() => {\r\n if (contentRef.current == null) return;\r\n scrollToHash();\r\n }, [data]);\r\n\r\n const handleApprove = () => { setApproving(true); };\r\n const handleApproveClose = () => { setApproving(false); };\r\n const handleApproveConfirm = () => {\r\n return PageService.approvePage({ id: data.id }).then((response) => {\r\n setApproving(false);\r\n var oldData = { ...data };\r\n oldData.state = response.data.state;\r\n setNeedsApproval(response.data.state == 'workflow');\r\n setData(oldData);\r\n }).catch((error) => {\r\n\r\n });\r\n };\r\n\r\n const handleRestore = () => { setRestoring(true); setVersion(data); };\r\n const handleRestoreClose = () => { setRestoring(false); };\r\n const handleRestoreConfirm = () => {\r\n return PageService.restorePage({ id: version.id }).then((response) => {\r\n setRestoring(false);\r\n setData(postProcess(response.data.data));\r\n }).catch((error) => {\r\n\r\n });\r\n };\r\n const handleRevertConfirm = () => {\r\n return PageService.revertPage({ id: version.id }).then((response) => {\r\n setRestoring(false);\r\n setData(postProcess(response.data.data));\r\n }).catch((error) => {\r\n\r\n });\r\n };\r\n\r\n const handleDelete = () => { setDeleting(true); };\r\n const handleDeleteClose = () => { setDeleting(false); };\r\n const handleDeleteConfirm = () => {\r\n return PageService.deletePage({ id: data.id }).then((response) => {\r\n setDeleting(false);\r\n setData(null);\r\n }).catch((error) => {\r\n\r\n });\r\n };\r\n\r\n const controlButtons = function () {\r\n var buttons = [];\r\n if (canContribute) {\r\n buttons.push();\r\n }\r\n if (canApprove) {\r\n if (needsApproval) {\r\n buttons.push();\r\n }\r\n buttons.push();\r\n buttons.push();\r\n }\r\n if (buttons.length == 0 && canObserve && data?.state === \"workflow\") {\r\n buttons.push();\r\n }\r\n if (data?.redirect && isAdmin) {\r\n buttons.push(Redirects} className={classes.chipWarn} />);\r\n }\r\n return buttons;\r\n };\r\n\r\n const itemsForCategory = (cat) => {\r\n var out = [];\r\n if(data.items)\r\n for (var i = 0; i < data.items.length; i++) {\r\n if (data.items[i].category == cat)\r\n out.push(data.items[i]);\r\n }\r\n return out;\r\n };\r\n const renderContent = function () {\r\n if (!data) return;\r\n switch (data.area) {\r\n case \"collection\":\r\n return (\r\n
\r\n {data.categories ? data.categories.map((cat, index) => {\r\n return (\r\n
\r\n );\r\n }) : null}\r\n
);\r\n break;\r\n default:\r\n return (\r\n
\r\n
);\r\n }\r\n return null;\r\n }\r\n\r\n const print = () => {\r\n window.print();\r\n };\r\n\r\n const baseUrl = document.getElementsByTagName('base')[0].getAttribute('href');\r\n\r\n return (\r\n
\r\n {!embed && (area.features.indexOf(\"breadcrumbs\") !== -1 || (location.state && location.state.collection)) ?\r\n \r\n Home\r\n {(location.state && location.state.collection)\r\n ?\r\n {location.state.collection.title}\r\n :\r\n (area.url != \"collection\" ?\r\n (area.features.indexOf(\"simplebreadcrumbs\") === -1 ? {area.plural} : null)\r\n : Articles)\r\n }\r\n {data ? ({data.title}) : null}\r\n \r\n : null}\r\n {data ? (\r\n
\r\n {!embed ?\r\n
\r\n \r\n {AppTitle((data && data.title) ? data.title : (loading ? \"Loading...\" : \"Page not found\"))}\r\n \r\n \r\n \r\n {area.url == \"unlisted\" ? () : null}\r\n \r\n \r\n \r\n {data.title}\r\n {controlButtons()}\r\n \r\n \r\n
\r\n : \r\n \r\n \r\n \r\n \r\n }\r\n { overrideHead ?\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n : null\r\n }\r\n
{renderContent()}
\r\n {data && !embed ?\r\n <>\r\n \r\n {area.features.indexOf(\"print\") !== -1 ? \r\n \r\n :
}\r\n Last changed: {data.modified}\r\n
\r\n {area.features.indexOf(\"socialButtonsx\") !== -1 ? \r\n \r\n Share:\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n : null}\r\n {console.log(area.features)}\r\n \r\n : null}\r\n
\r\n ) : (loading ? : (!embed ? : null))\r\n }\r\n \r\n Approve Page\r\n Approve this page? It will become the active version which is displayed to end users.\r\n \r\n \r\n \r\n \r\n \r\n \r\n Restore Page\r\n {data?.id ?\r\n }> { setVersion(selpage); }} selected={version ? version.id : 0} />\r\n : \"\"}\r\n \r\n {version && version.state == \"inactive\" ? \r\n : null}\r\n {version && version.state == \"active\" ? \r\n : null}\r\n {version && version.state == \"inactive\" ? \r\n : null}\r\n \r\n \r\n \r\n \r\n Delete Page\r\n Move this page to the recycling bin?\r\n \r\n \r\n \r\n \r\n \r\n
\r\n );\r\n};\r\n\r\nconst Category = (props) => {\r\n const { category, items, collection } = props;\r\n const [collapse, setCollapse] = useState(category.collapseOpen ?? false);\r\n const contentRef = useRef(null);\r\n const classes = pageStyles();\r\n\r\n const inner = () => {\r\n return \r\n {items.map((item) => {\r\n var ii = { ...item };\r\n if (!ii.description) ii.description = ii.pageDescription;\r\n return (\r\n \r\n );\r\n })}\r\n ;\r\n };\r\n\r\n return (
\r\n {category.name}\r\n
\r\n {category.collapse ?\r\n \r\n \r\n \r\n {inner()}\r\n \r\n \r\n :\r\n inner()}\r\n
);\r\n};\r\n\r\nexport default Page;\r\n","import useAuth from \"../auth/useAuth.js\";\r\nimport Hijack from \"../support/Hijack.js\";\r\n\r\nimport React, { useState, useEffect, useRef } from 'react';\r\nimport { Link as RouterLink} from \"react-router-dom\";\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport Paper from '@material-ui/core/Paper';\r\nimport Button from '@material-ui/core/Button';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport Box from '@material-ui/core/Box';\r\nimport Tooltip from '@material-ui/core/Tooltip';\r\nimport Chip from '@material-ui/core/Chip';\r\nimport Edit from '@material-ui/icons/Edit';\r\nimport PlayCircleOutlineIcon from '@material-ui/icons/PlayCircleOutline';\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\n\r\nconst previewStyles = makeStyles((theme) => ({\r\n root: {\r\n display: 'flex',\r\n position: 'relative',\r\n flexDirection: 'row',\r\n padding: 15,\r\n marginBottom: 15,\r\n borderColor: 'var(--darkerGrey)',\r\n height: \"100%\",\r\n [theme.breakpoints.down(\"md\")]: {\r\n display: 'block'\r\n }\r\n },\r\n title: {\r\n fontSize: \"1.1em !important\"\r\n },\r\n content: {\r\n flex: '1 1 auto',\r\n paddingLeft: 15,\r\n display: 'flex',\r\n width: '100%',\r\n flexDirection: 'column'\r\n },\r\n edit: {\r\n\r\n },\r\n image: {\r\n flex: '0 0 200px',\r\n [theme.breakpoints.down(\"md\")]: {\r\n textAlign: 'center'\r\n }\r\n },\r\n chip: {\r\n background: 'transparent',\r\n textTransform: 'uppercase',\r\n fontWeight: 'bold',\r\n fontSize: '1rem',\r\n color: '#999',\r\n fontFamily: 'var(--secondaryText)',\r\n whiteSpace: \"wrap\",\r\n \"& .MuiChip-label\": {\r\n whiteSpace: \"wrap\",\r\n textAlign: \"right\"\r\n }\r\n },\r\n chipWarn: {\r\n background: 'rgb(237, 108, 2)'\r\n },\r\n videoLink: {\r\n color: 'var(--red)',\r\n cursor: 'pointer',\r\n display: \"flex\",\r\n alignItems: \"flex-end\",\r\n \"&:hover\": {\r\n color: \"var(--black)\"\r\n }\r\n },\r\n description: {\r\n flexGrow: 1,\r\n \"& p\": {\r\n marginBlockStart: \"0.5em\",\r\n marginBlockEnd: \"0.5em\"\r\n },\r\n \"& img\": {\r\n maxWidth: \"100%\",\r\n height: \"auto\"\r\n }\r\n },\r\n showcase: {\r\n //\"& h3\": {\r\n // fontFamily: \"var(--primaryText)\"\r\n //},\r\n \"& $description\": {\r\n display: 'flex',\r\n alignItems: 'flex-end'\r\n },\r\n \"& $image\": {\r\n flexBasis: '120px'\r\n },\r\n \"& $image img\": {\r\n maxWidth: '120px',\r\n [theme.breakpoints.down(\"md\")]: {\r\n maxWidth: '200px'\r\n }\r\n },\r\n \"& $edit\": {\r\n position: 'absolute',\r\n left: '0',\r\n bottom: '0',\r\n backgroundColor: 'rgba(255,255,255,0.6)'\r\n },\r\n }\r\n \r\n}));\r\nconst PagePreview = (props) => {\r\n const { area, page, tags, selectedOptions, uneditable, collection } = props;\r\n const classes = previewStyles();\r\n const auth = useAuth();\r\n const [canContribute, setCanContribute] = useState(false);\r\n const [canApprove, setCanApprove] = useState(false);\r\n const [needsApproval, setNeedsApproval] = useState(false);\r\n const [previewTags, setPreviewTags] = useState([]);\r\n const [videoOpen, setVideoOpen] = useState(false);\r\n const contentRef = useRef(null);\r\n const videoRef = useRef(null);\r\n\r\n const getPreviewTags = () => {\r\n var out = [];\r\n if (!selectedOptions) {\r\n for (var i = 0; i < tags.length; i++) {\r\n if (tags[i].showInPreview) {\r\n for (var j = 0; j < tags[i].options.length; j++) {\r\n if (page.options && page.options.indexOf(tags[i].options[j].id) != -1) {\r\n out.push(tags[i].options[j].name);\r\n }\r\n }\r\n }\r\n }\r\n } else {\r\n out = selectedOptions;\r\n }\r\n setPreviewTags(out);\r\n };\r\n useEffect(getPreviewTags, [page, tags]);\r\n\r\n useEffect(() => {\r\n if (page) {\r\n if (page.area == \"article\" || page.area == \"showcase\" || page.area == \"collection\" || page.area == \"page\" || page.area == \"unlisted\") {\r\n setCanContribute(auth.user.id && auth.user?.roles && auth.user.roles.indexOf(page.area + \".contributor\") !== -1);\r\n setCanApprove(auth.user.id && auth.user?.roles && auth.user.roles.indexOf(page.area + \".approver\") !== -1);\r\n } else if (page.area != \"search\" && auth.user.id && auth.user?.roles && auth.user.roles.indexOf(\"admin\") !== -1) {\r\n setCanContribute(true);\r\n setCanApprove(true);\r\n }\r\n }\r\n }, [auth, page]);\r\n\r\n return (\r\n \r\n {(page.area != \"article\" && page?.thumbnail) ?\r\n \r\n {page.title}\r\n \r\n : null}\r\n \r\n \r\n \r\n {page.title}\r\n {page.state == \"workflow\" ? () : \"\"}\r\n {page.redirect ? () : \"\"}\r\n \r\n {(canContribute && uneditable !== true) ? : \"\"}\r\n \r\n {(page.area == \"showcase\" && page?.video) ?\r\n \r\n { setVideoOpen(true); }}>  Preview video\r\n { setVideoOpen(false); }} aria-labelledby={\"form-dialog-video-\" + page.id}>\r\n {page.title}\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n : null}\r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n !area || (area && area.features.indexOf(\"noChipsInSearchPreview\") === -1) ?\r\n previewTags.map((option) => {\r\n return ();\r\n })\r\n : null\r\n }\r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default PagePreview;\r\n","import React from 'react';\r\nconst NotFound = () => {\r\n return (\r\n \r\n

Page not found

Sorry we couldn't find the page you were looking for.

\r\n

The page you were looking for is no longer at this location. This is usually due to one of the following reasons:

\r\n
    \r\n
  • It's been moved or deleted.
  • \r\n
  • You may have been provided the wrong web page address.
  • \r\n
  • It was mis-typed in the URL address bar.
  • \r\n
\r\n

If you came to this message through a web bookmark/favourite, please delete it as it appears to be out of date.

\r\n

To find what you are looking for:

\r\n \r\n
\r\n )\r\n}\r\nexport default NotFound;","import AppTitle from '../support/AppTitle.js';\r\nimport useAuth from '../auth/useAuth.js';\r\n\r\nimport React, { useState } from 'react';\r\nimport useAnalytics from '../support/Analytics.js';\r\nimport { Helmet } from \"react-helmet\";\r\nimport { useLocation, useHistory } from 'react-router';\r\nimport { Link } from \"react-router-dom\";\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport Button from '@material-ui/core/Button';\r\nimport TextField from '@material-ui/core/TextField'\r\n\r\nconst Login = (props) => {\r\n const { embed, open, onLogin, canCancel, message, homeButton } = props;\r\n const [loading, setLoading] = useState(false);\r\n const [username, setUsername] = useState('');\r\n const [password, setPassword] = useState('');\r\n const [errorMessage, setErrorMessage] = useState('');\r\n const [showError, setShowError] = useState(false);\r\n const analytics = useAnalytics();\r\n\r\n let history = useHistory();\r\n let location = useLocation();\r\n let auth = useAuth();\r\n let { from } = location.state || { from: { pathname: \"/\" } };\r\n \r\n let login = () => {\r\n auth.signin(username, password)\r\n .then((response) => {\r\n setLoading(false);\r\n setShowError(false);\r\n if (!embed) {\r\n history.replace(from == \"/login\" ? \"/\" : from);\r\n } else {\r\n if(onLogin) onLogin(true);\r\n }\r\n analytics.tag('event', 'login', { method: 'default' });\r\n })\r\n .catch((error) => {\r\n console.log(error);\r\n setShowError(true);\r\n if (error.response) {\r\n setErrorMessage(error.response.data.message);\r\n }\r\n setLoading(false);\r\n });\r\n };\r\n\r\n const handleLogin = (e) => {\r\n e.preventDefault();\r\n setLoading(true);\r\n login();\r\n }\r\n const handleEditClose = () => {\r\n if(onLogin) onLogin(false);\r\n };\r\n const handleEnter = (e) => {\r\n if (e.which === 13) {\r\n handleLogin(e);\r\n }\r\n }\r\n\r\n const mainContent = () => {\r\n return (\r\n \r\n

{message ? message : \"Please login using your UOW username and password.\"}

\r\n setUsername(e.target.value)} autoFocus label=\"Username/email\" fullWidth={embed} onKeyPress={handleEnter} />\r\n setPassword(e.target.value)} label=\"Password\" fullWidth={embed} onKeyPress={handleEnter} />\r\n {showError ?

Something went wrong: {errorMessage}

: }\r\n
\r\n );\r\n };\r\n\r\n const mainButtons = () => {\r\n return (\r\n \r\n {homeButton ? : null }\r\n \r\n \r\n );\r\n };\r\n\r\n return (\r\n
handleLogin(e)} autoComplete=\"on\">\r\n
\r\n {embed ?\r\n \r\n Login\r\n \r\n {mainContent()}\r\n \r\n {mainButtons()}\r\n {canCancel ? : null}\r\n \r\n \r\n :\r\n \r\n {AppTitle(\"Login\")}\r\n {mainContent()}\r\n {mainButtons()}\r\n \r\n }\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default Login;","module.exports = __webpack_public_path__ + \"static/media/logo.f1dfda34.svg\";","module.exports = \"data:image/png;base64,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\"","import axios from 'axios';\r\n\r\nconst TagService = {\r\n cachedList: { \"article\": [], \"showcase\": [], \"page\": [], \"unlisted\": [], \"template\": [], \"search\": [] },\r\n cachedTime: { \"article\": 0, \"showcase\": 0, \"page\": 0, \"unlisted\": 0, \"template\": 0, \"search\": 0 },\r\n getList: function (request, updateTime = null) {\r\n var self = this;\r\n //check local storage\r\n var time = parseInt(localStorage.getItem(\"lthub_cached_tags_time_\" + request.area));\r\n if (time && time > self.cachedTime[request.area]) {\r\n self.cachedTime[request.area] = time;\r\n var tags = localStorage.getItem(\"lthub_cached_tags_\" + request.area);\r\n if (tags) {\r\n try {\r\n self.cachedList[request.area] = JSON.parse(tags);\r\n } catch (e) {\r\n self.cachedList[request.area] = null;\r\n }\r\n }\r\n\r\n }\r\n if (typeof updateTime == \"string\")\r\n updateTime = parseInt(updateTime);\r\n\r\n //if current version is old than timestamp from settings\r\n if (updateTime === null || updateTime > self.cachedTime[request.area] || !self.cachedList[request.area] || self.cachedList[request.area].length == 0) {\r\n return axios.get(\"api/tags/list\", { params: request }, { withCredentials: true })\r\n .then((response) => {\r\n self.cachedTime[request.area] = updateTime;\r\n self.cachedList[request.area] = response.data.data;\r\n localStorage.setItem(\"lthub_cached_tags_\" + request.area, JSON.stringify(self.cachedList[request.area]));\r\n localStorage.setItem(\"lthub_cached_tags_time_\" + request.area, self.cachedTime[request.area] + \"\");\r\n return self.cachedList[request.area];\r\n });\r\n } else {\r\n return new Promise((resolve, reject) => {\r\n resolve(self.cachedList[request.area]);\r\n });\r\n }\r\n },\r\n getEditList: (request) => {\r\n return axios.get(\"api/tags/editlist\", { params: request }, { withCredentials: true });\r\n },\r\n updateTag: (request) => {\r\n return axios.put(\"api/tags\", request, { withCredentials: true });\r\n },\r\n updateTagOrder: (request) => {\r\n return axios.put(\"api/tags/order\", request, { withCredentials: true });\r\n },\r\n deleteTag: (request) => {\r\n return axios.delete(\"api/tags/\" + request.id, {}, { withCredentials: true });\r\n }\r\n};\r\n\r\nexport default TagService;","import React, { useState, useEffect } from 'react';\r\nimport AddBoxOutlinedIcon from '@material-ui/icons/AddBoxOutlined';\r\nimport FileCopy from '@material-ui/icons/FileCopy';\r\nimport IndeterminateCheckBoxOutlinedIcon from '@material-ui/icons/IndeterminateCheckBoxOutlined';\r\nimport Button from '@material-ui/core/Button';\r\nimport Tooltip from '@material-ui/core/Tooltip';\r\nimport { StylesProvider, makeStyles } from '@material-ui/core/styles';\r\nimport Alert from '@material-ui/lab/Alert';\r\nimport Snackbar from '@material-ui/core/Snackbar';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n pasteButton: {\r\n fontSize: \"0.8rem !important\",\r\n marginTop: \"0 !important\",\r\n textTransform: \"none !important\",\r\n paddingLeft: \"4px !important\"\r\n }\r\n}));\r\n\r\nconst TranscriptButton = (props) => {\r\n const classes = useStyles();\r\n const [saveSuccess, setSaveSuccess] = useState(false);\r\n const [hidden, setHidden] = useState(props?.hidden ?? true)\r\n const [pasteHover, setPasteHover] = useState(false)\r\n const [hashName, setHashName] = useState(props?.hashName ?? '');\r\n\r\n useEffect(() => {\r\n console.log(window.location.hash);\r\n if (hashName != '') {\r\n if (window.location.hash.toLowerCase() == '#' + hashName) {\r\n setHidden(false);\r\n } else {\r\n if (props?.hidden !== false)\r\n setHidden(true);\r\n }\r\n }\r\n }, [window.location.hash, hashName]);\r\n\r\n const handleTranscript = () => {\r\n setHidden(!hidden);\r\n }\r\n useEffect(() => {\r\n if (hidden) {\r\n props.contentblock.style.display = 'none';\r\n\r\n } else {\r\n props.contentblock.style.display = 'block';\r\n if(props.big)\r\n props.contentblock.setAttribute(\"data-big\", \"\");\r\n }\r\n if (pasteHover) {\r\n props.contentblock.style.border = \"2px dashed rgb(153, 153, 153)\";\r\n\r\n } else {\r\n props.contentblock.style.border = '2px solid transparent';\r\n\r\n }\r\n }, [hidden, pasteHover]);\r\n useEffect(() => {\r\n props.contentblock.classList.toggle(\"pastable\", props.paste);\r\n }, [props.paste]);\r\n\r\n function copyFormatted(html) {\r\n var container = document.createElement('div')\r\n container.innerHTML = html\r\n container.style.position = 'fixed'\r\n container.style.pointerEvents = 'none'\r\n container.style.opacity = 0\r\n var activeSheets = Array.prototype.slice.call(document.styleSheets)\r\n .filter(function (sheet) {\r\n return !sheet.disabled\r\n })\r\n document.body.appendChild(container)\r\n window.getSelection().removeAllRanges()\r\n var range = document.createRange()\r\n range.selectNode(container)\r\n window.getSelection().addRange(range)\r\n document.execCommand('copy')\r\n for (var i = 0; i < activeSheets.length; i++)\r\n activeSheets[i].disabled = true\r\n document.execCommand('copy')\r\n for (var i = 0; i < activeSheets.length; i++)\r\n activeSheets[i].disabled = false\r\n document.body.removeChild(container)\r\n }\r\n\r\n const handleCopy = () => {\r\n copyFormatted(props.contentblock.innerHTML); setSaveSuccess(true);\r\n\r\n }; const handleSuccessClose = function () {\r\n setSaveSuccess(false);\r\n };\r\n return (\r\n \r\n \r\n \r\n {props.paste && !hidden ? \r\n \r\n : null}\r\n \r\n Copied to clipboard \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default TranscriptButton;","import axios from 'axios';\r\n\r\nconst NavService = {\r\n cachedList: [],\r\n cachedTime: 0,\r\n getList: function (request, updateTime = null) {\r\n var self = this;\r\n\r\n //check local storage\r\n var time = parseInt(localStorage.getItem(\"lthub_cached_nav_time\"));\r\n if (time && time > self.cachedTime) {\r\n self.cachedTime = time;\r\n var entries = localStorage.getItem(\"lthub_cached_nav\");\r\n if (entries)\r\n self.cachedList = JSON.parse(entries);\r\n if (entries) {\r\n try {\r\n self.cachedList = JSON.parse(entries);\r\n } catch (e) {\r\n self.cachedList = null;\r\n }\r\n }\r\n }\r\n\r\n if (typeof updateTime == \"string\")\r\n updateTime = parseInt(updateTime);\r\n\r\n //if current version is old than timestamp from settings\r\n if (updateTime === null || updateTime > self.cachedTime || !self.cachedList || self.cachedList.length == 0) {\r\n return axios.get(\"api/nav\", { params: request }, { withCredentials: true })\r\n .then((response) => {\r\n self.cachedTime = updateTime;\r\n self.cachedList = response.data.data;\r\n localStorage.setItem(\"lthub_cached_nav\", JSON.stringify(self.cachedList));\r\n localStorage.setItem(\"lthub_cached_nav_time\", self.cachedTime + \"\");\r\n return self.cachedList;\r\n });\r\n } else {\r\n return new Promise((resolve, reject) => {\r\n resolve(self.cachedList);\r\n });\r\n }\r\n },\r\n update: (request) => {\r\n return axios.put(\"api/nav\", request, { withCredentials: true });\r\n }\r\n};\r\n\r\nexport default NavService;","import React, { useState } from 'react';\r\nimport List from '@material-ui/core/List';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport ListItem from '@material-ui/core/ListItem';\r\nimport ListItemIcon from '@material-ui/core/ListItemIcon';\r\nimport ListItemText from '@material-ui/core/ListItemText';\r\nimport Checkbox from '@material-ui/core/Checkbox';\r\nimport Radio from '@material-ui/core/Radio';\r\nimport Tooltip from '@material-ui/core/Tooltip';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport HelpOutline from '@material-ui/icons/HelpOutline';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\r\nimport Accordion from '@material-ui/core/Accordion';\r\nimport AccordionSummary from '@material-ui/core/AccordionSummary';\r\nimport AccordionDetails from '@material-ui/core/AccordionDetails';\r\n\r\nconst pickerStyles = makeStyles((theme) => ({\r\n root: {\r\n width: '100%',\r\n paddingTop: '0px',\r\n paddingBottom: '0px'\r\n },\r\n item: {\r\n paddingTop: '0',\r\n paddingBottom: '0'\r\n },\r\n check: {\r\n padding: '4px'\r\n },\r\n icon: {\r\n minWidth: 'auto'\r\n },\r\n header: {\r\n fontSize: '1.1em !important',\r\n marginBottom: '0px !important',\r\n paddingTop: '1px !important'\r\n },\r\n acc: {\r\n border: '0px solid rgba(0, 0, 0, .125)',\r\n boxShadow: 'none',\r\n marginBottom: '4px',\r\n '&:not(:last-child)': {\r\n borderBottom: 0,\r\n },\r\n '&:before': {\r\n display: 'none',\r\n },\r\n '&.Mui-expanded': {\r\n margin: '0',\r\n marginBottom: '4px'\r\n },\r\n '& .MuiAccordionSummary-content': {\r\n margin: '0',\r\n },\r\n paddingLeft: '0px',\r\n marginLeft: '0px'\r\n },\r\n accHead: {\r\n margin: 0,\r\n flexDirection: \"row-reverse\",\r\n minHeight: 'auto !important',\r\n alignItems: 'flex-start',\r\n '&$expanded': {\r\n margin: '0',\r\n minHeight: 'auto !important'\r\n },\r\n '& .MuiIconButton-root': {\r\n padding: '2px',\r\n margin: 0\r\n },\r\n '&:hover': {\r\n cursor: 'pointer',\r\n backgroundColor: 'var(--hoverGrey)'\r\n },\r\n '& .MuiAccordionSummary-content': {\r\n justifyContent: 'space-between'\r\n },\r\n paddingLeft: '0px',\r\n marginLeft: '0px'\r\n },\r\n accContent: {\r\n paddingTop: '0px',\r\n paddingBottom: '0px',\r\n paddingLeft: '0px',\r\n marginLeft: '0px'\r\n }\r\n}));\r\nconst TagPicker = (props) => {\r\n const classes = pickerStyles();\r\n const { tag, UpdateTags, open, enabled } = props;\r\n const [isOpen, setIsOpen] = useState(open ?? false);\r\n const handleOpen = () => {\r\n setIsOpen(!isOpen);\r\n };\r\n const handleToggle = (optionId) => {\r\n return function () {\r\n if (enabled)\r\n UpdateTags(optionId);\r\n }\r\n };\r\n\r\n return (\r\n \r\n } >\r\n {tag.name}\r\n {tag.description ?\r\n \r\n : \"\"\r\n }\r\n \r\n \r\n \r\n {tag.options.map((option) => {\r\n const labelId = `checkbox-list-label-${option.id}`;\r\n return (\r\n \r\n \r\n {tag.type === \"multiple\" ? () : ()\r\n }\r\n \r\n \r\n \r\n );\r\n })}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default TagPicker;\r\n","import React, { useState, useContext, createContext } from \"react\";\r\nimport axios from 'axios';\r\n\r\nconst authContext = createContext();\r\n\r\nfunction ProvideAuth({ children }) {\r\n const auth = useProvideAuth();\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n}\r\n\r\nconst standardAuth = {\r\n isAuthenticated: false,\r\n ping() {\r\n return axios.get('api/auth', {}, { withCredentials: true })\r\n .then(response => { standardAuth.isAuthenticated = true; return response.data; })\r\n .catch(response => { standardAuth.isAuthenticated = false; return response; });\r\n },\r\n signin(username, password) {\r\n return axios.post('api/auth/login', { username: username, password: password }, { withCredentials: true })\r\n .then(response => {\r\n standardAuth.isAuthenticated = true;\r\n return response.data;\r\n });\r\n },\r\n signout() {\r\n return axios.post('api/auth/logout', {}, { withCredentials: true })\r\n .then(response => { standardAuth.isAuthenticated = false; return response; });\r\n },\r\n initSSO: (returnUrl) => {\r\n return axios.post('api/auth/sso?returnUrl=' + encodeURIComponent(returnUrl), {}, { withCredentials: true });\r\n },\r\n};\r\n\r\nfunction useAuth() {\r\n return useContext(authContext);\r\n}\r\n\r\nfunction useProvideAuth() {\r\n const updateUser = (u) => {\r\n setUser(() => {\r\n var toStore = Object.assign({}, u);\r\n delete toStore.updateUser;\r\n localStorage.setItem(\"lthub_user\", JSON.stringify(toStore));\r\n toStore.updateUser = updateUser;\r\n return toStore;\r\n });\r\n };\r\n\r\n const initSSO = (returnURL) => {\r\n return standardAuth.initSSO(returnURL).then(response => {\r\n window.location.href = response.data;\r\n return response.data;\r\n });\r\n };\r\n\r\n const [user, setUser] = useState({ \"updateUser\": updateUser, \"id\": 0 });\r\n\r\n const [init, setInit] = useState(true);\r\n var restoreUser = function () {\r\n var stored = localStorage.getItem(\"lthub_user\");\r\n updateUser(stored ? JSON.parse(stored) : null);\r\n setInit(false);\r\n };\r\n\r\n const signin = (username, password) => {\r\n return standardAuth.signin(username, password).then(response => { window.localStorage.setItem(\"lthub_has_loggedin\", \"1\"); updateUser(response.user); return response; });\r\n };\r\n\r\n const signout = (soft = false) => {\r\n if (soft) {\r\n standardAuth.isAuthenticated = false;\r\n updateUser({ id: 0 });\r\n return Promise.resolve();\r\n } else {\r\n return standardAuth.signout().then(response => {\r\n updateUser({ id: 0 });\r\n standardAuth.isAuthenticated = false;\r\n return response;\r\n });\r\n }\r\n };\r\n\r\n const ping = () => {\r\n return standardAuth.ping()\r\n .then(response => {\r\n if (response.message === \"yes\") {\r\n window.localStorage.setItem(\"lthub_has_loggedin\", \"1\");\r\n updateUser(response.user);\r\n return response.message;\r\n } else {\r\n signout(true);\r\n }\r\n })\r\n .catch(response => { signout(true); });\r\n };\r\n\r\n\r\n if (init) {\r\n restoreUser();\r\n setTimeout(ping, 2000);\r\n }\r\n\r\n return {\r\n initSSO,\r\n user,\r\n signin,\r\n signout,\r\n ping\r\n };\r\n}\r\n\r\nexport default useAuth;\r\nexport { ProvideAuth };","module.exports = __webpack_public_path__ + \"static/media/logo-horizontal.69940079.svg\";","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJQAAAA4CAYAAAAb4tFBAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDcuMS1jMDAwIDc5LmRhYmFjYmIsIDIwMjEvMDQvMTQtMDA6Mzk6NDQgICAgICAgICI+IDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+IDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCAyMy4wIChXaW5kb3dzKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo0ODNBRjAxOTRENjQxMUVDOEYxQzg3QTg5MzIyMzMwRSIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo0ODNBRjAxQTRENjQxMUVDOEYxQzg3QTg5MzIyMzMwRSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjQ4M0FGMDE3NEQ2NDExRUM4RjFDODdBODkzMjIzMzBFIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjQ4M0FGMDE4NEQ2NDExRUM4RjFDODdBODkzMjIzMzBFIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+11clbAAAE7pJREFUeNrsnQl4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\"","module.exports = __webpack_public_path__ + \"static/media/aboriginalFlag.5713c521.svg\";","module.exports = __webpack_public_path__ + \"static/media/torresFlag.3fb341e2.svg\";","import axios from 'axios';\r\n\r\nconst SettingService = {\r\n getSettings: () => {\r\n return axios.get(\"api/settings\", {}, { withCredentials: true });\r\n },\r\n updateSetting: (request) => {\r\n if (typeof request.settingValue != \"string\")\r\n request.settingValue = request.settingValue.toString();\r\n return axios.put(\"api/settings\", request, { withCredentials: true });\r\n }\r\n};\r\n\r\nexport default SettingService;","import SettingService from '../settings/SettingService.js';\r\n\r\nimport React, { useContext, useEffect, useReducer } from 'react';\r\n\r\nconst SettingsContext = React.createContext({});\r\nfunction useSettings() {\r\n return useContext(SettingsContext);\r\n}\r\nfunction useProvideSettings() {\r\n let local = localStorage.getItem(\"lthub_config\");\r\n const [settings, setSettings] = useReducer((state, newState) => ({ ...state, ...newState }), local ? JSON.parse(local) : {});\r\n\r\n var loadSettings = function () {\r\n SettingService.getSettings()\r\n .then((response) => {\r\n if ('data' in response && 'data' in response.data) {\r\n var updatedSettings = { ...settings };\r\n var anyUpdate = false;\r\n for (var name in response.data.data) {\r\n var s = response.data.data[name];\r\n if (s.name in updatedSettings) {\r\n if (updatedSettings[s.name].settingValue != s.settingValue || updatedSettings[s.name].type != s.type) {\r\n updatedSettings[s.name] = s;\r\n setSettings({ [s.name]: s });\r\n anyUpdate = true;\r\n }\r\n } else {\r\n updatedSettings[s.name] = s;\r\n setSettings({ [s.name]: s });\r\n anyUpdate = true;\r\n }\r\n }\r\n if (anyUpdate) {\r\n //setSettings(updatedSettings);\r\n localStorage.setItem(\"lthub_config\", JSON.stringify(updatedSettings));\r\n console.log(\"updated settings\", updatedSettings);\r\n } else {\r\n console.log(\"local settings up to date\");\r\n }\r\n }\r\n })\r\n .catch(function (e) {\r\n\r\n }\r\n );\r\n };\r\n useEffect(loadSettings, []);//only run once\r\n\r\n const list = () => {\r\n return [...Object.values(settings)];\r\n };\r\n const get = (name) => {\r\n if (name in settings)\r\n return settings[name].settingValue;\r\n else return 0;\r\n };\r\n const set = (setting) => {\r\n setSettings({ [setting.name]: setting });\r\n return SettingService.updateSetting(setting);\r\n };\r\n\r\n return { get, set, list };\r\n}\r\n\r\nfunction ProvideSettings({ children }) {\r\n let settings = useProvideSettings();\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n}\r\n\r\nexport default useSettings;\r\nexport { ProvideSettings };","import Page from \"./pages/Page.js\";\r\nimport Areas from './support/Areas.js';\r\nimport AppTitle from './support/AppTitle.js';\r\n\r\nimport React from 'react';\r\nimport { Helmet } from \"react-helmet\";\r\n\r\nconst Home = (props) => {\r\n return (\r\n
\r\n \r\n {AppTitle(\"\")}\r\n \r\n \r\n
\r\n );\r\n};\r\n\r\nexport default Home;","import React, { createContext, useState, useContext, useEffect } from 'react';\r\n\r\n// Create the context\r\nconst DarkModeContext = createContext();\r\n\r\n// Combined provider and logic to inject dark mode\r\nexport const DarkModeProvider = ({ children }) => {\r\n const [isDarkMode, setIsDarkMode] = useState(false);\r\n\r\n useEffect(() => {\r\n // Read the user's theme preference from localStorage on initial load\r\n const storedTheme = localStorage.getItem('theme');\r\n \r\n const isDark = storedTheme === 'dark';\r\n\r\n // Set the state based on the stored preference\r\n setIsDarkMode(isDark);\r\n\r\n }, []);\r\n\r\n useEffect(() => {\r\n // Apply or remove the dark-mode class based on isDarkMode state\r\n if (isDarkMode) {\r\n console.log(\"adding dark mode\");\r\n document.body.classList.add('dark-mode');\r\n localStorage.setItem('theme', 'dark'); // Store the theme preference\r\n } else {\r\n console.log(\"removing dark mode\");\r\n document.body.classList.remove('dark-mode');\r\n localStorage.setItem('theme', 'light'); // Store the theme preference\r\n }\r\n }, [isDarkMode]);\r\n\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n};\r\n\r\n// Custom hook to use the DarkModeContext\r\nexport const useDarkMode = () => useContext(DarkModeContext);\r\n","import React, { useEffect, useState } from 'react';\r\nimport { useDarkMode } from './DarkModeContext';\r\nimport BrightnessLowIcon from '@material-ui/icons/BrightnessLow';\r\nimport Brightness2Icon from '@material-ui/icons/Brightness2';\r\nimport IconButton from '@material-ui/core/IconButton';\r\n\r\n\r\nconst ThemeToggle = ({className }) => {\r\n const { isDarkMode, setIsDarkMode } = useDarkMode();\r\n\r\n useEffect(() => {\r\n //// Apply the dark-mode class based on the theme state\r\n //if (isDarkMode) {\r\n // document.body.classList.add('dark-mode');\r\n // localStorage.setItem('theme', 'dark');\r\n //} else {\r\n // document.body.classList.remove('dark-mode');\r\n // localStorage.setItem('theme', 'light');\r\n\r\n console.log(isDarkMode);\r\n }, [isDarkMode]);\r\n\r\n const toggleTheme = () => {\r\n setIsDarkMode(!isDarkMode);\r\n };\r\n\r\n return ( \r\n \r\n {isDarkMode ? : }\r\n \r\n );\r\n};\r\n\r\nexport default ThemeToggle;\r\n","import useAuth from \"./auth/useAuth.js\";\r\nimport Login from './auth/Login.js';\r\nimport SearchBar from './support/SearchBar.js';\r\nimport useAnalytics from './support/Analytics.js';\r\nimport useSettings from './settings/useSettings.js';\r\nimport { useDarkMode } from './support/DarkModeContext';\r\nimport NavService from './navitems/NavService.js';\r\nimport { getRoute } from './support/Hijack.js';\r\n\r\nimport logo from '../media/logo.svg';\r\nimport logowhite from '../media/logo-white.png';\r\nimport logoHorizontal from '../media/logo-horizontal.svg';\r\nimport logoHorizontalWhite from '../media/logo-horizontal-white.png';\r\n\r\nimport React, { useState, useEffect, useRef } from 'react';\r\nimport ListSubheader from '@material-ui/core/ListSubheader';\r\nimport Button from '@material-ui/core/Button';\r\nimport { useHistory } from \"react-router-dom\";\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport Toolbar from '@material-ui/core/Toolbar';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport SearchIcon from '@material-ui/icons/Search';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport PersonIcon from '@material-ui/icons/Person';\r\nimport Box from '@material-ui/core/Box';\r\nimport MenuIcon from '@material-ui/icons/Menu';\r\nimport Menu from '@material-ui/core/Menu';\r\nimport MenuItem from '@material-ui/core/MenuItem';\r\nimport { Link, useLocation } from 'react-router-dom';\r\nimport SwipeableDrawer from '@material-ui/core/SwipeableDrawer';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport Clear from '@material-ui/icons/Clear';\r\nimport KeyboardArrowDownIcon from '@material-ui/icons/KeyboardArrowDown';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport Tooltip from '@material-ui/core/Tooltip';\r\nimport SvgIcon from '@material-ui/core/SvgIcon';\r\nimport ListItemIcon from '@material-ui/core/ListItemIcon';\r\n\r\nimport ThemeToggle from './support/ThemeToggle';\r\n\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n toolbar: {\r\n borderBottom: 'none',\r\n padding: '30px 0 20px 0',\r\n display: 'none',\r\n alignItems: 'start',\r\n [theme.breakpoints.up('md')]: {\r\n display: 'flex',\r\n },\r\n \"@media print\": {\r\n display: \"none !important\"\r\n }\r\n },\r\n toolbarMobile: {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n padding: '5px 0 20px 0',\r\n margin: '0',\r\n alignItems: 'start',\r\n [theme.breakpoints.up('md')]: {\r\n display: 'none',\r\n },\r\n },\r\n toolbarRow: {\r\n width: '100%',\r\n display: 'flex',\r\n\r\n },\r\n toolbarLink: {\r\n padding: '0',\r\n flexShrink: '0',\r\n\r\n\r\n },\r\n toolbarLinkMobile: {\r\n paddingTop: 0,\r\n marginTop:0,\r\n alignItems: 'start',\r\n\r\n },\r\n fg: {\r\n flexGrow: \"1\"\r\n },\r\n logo: {\r\n height: '95px',\r\n },\r\n removePadding: {\r\n padding: '0'\r\n },\r\n removeMargin: {\r\n margin: '0'\r\n },\r\n searchBar: { \r\n height: '30px'\r\n },\r\n selectedLink: {\r\n color: 'var(--red)'\r\n },\r\n searchText: {\r\n '& input': {\r\n fontFamily: \"'Montserrat', Verdana, Geneva, sans-serif\",\r\n color: 'var(--darkBlue)',\r\n fontWeight: '300',\r\n fontWeight: '700',\r\n fontSize: '.9rem',\r\n },\r\n '& input::placeholder': {\r\n color: 'var(--darkBlue)',\r\n }\r\n\r\n },\r\n iconLabel: {\r\n fontFamily: \"'Montserrat', Verdana, Geneva, sans-serif\",\r\n flexShrink: '0',\r\n color: \"var(--darkBlue)\",\r\n textTransform: \"uppercase\",\r\n fontWeight: 700,\r\n fontSize: \".9rem\",\r\n textDecoration: \"none\",\r\n padding: '0 3px 5px 3px',\r\n borderRadius: 0,\r\n [theme.breakpoints.up('md')]: {\r\n padding: '4px 12px 4px 0px',\r\n },\r\n '&:hover': {\r\n color: \"var(--red)\",\r\n backgroundColor: \"rgba(0, 0, 0, 0)\",\r\n textDecoration: \"none\"\r\n },\r\n \"&:focus-visible\": {\r\n borderBottom: \"2px solid var(--black)\"\r\n }\r\n },\r\n menuUserName: {\r\n fontFamily: \"'Montserrat', Verdana, Geneva, sans-serif\",\r\n color: \"var(--red)\",\r\n textTransform: \"uppercase\",\r\n fontWeight: 700,\r\n fontSize: \".9rem\",\r\n textDecoration: \"none\",\r\n margin: '0 12px 5px 12px',\r\n [theme.breakpoints.up('md')]: {\r\n display: 'none',\r\n },\r\n },\r\n menuLabelHeading: {\r\n fontFamily: \"'Montserrat', Verdana, Geneva, sans-serif\",\r\n color: \"var(--red)\",\r\n textTransform: \"uppercase\",\r\n fontWeight: 700,\r\n fontSize: \".9rem\",\r\n textDecoration: \"none\",\r\n display: \"block\",\r\n margin: '0 12px 0px 12px',\r\n '& a': {\r\n color: \"var(--red)\",\r\n '&:hover': {\r\n textDecoration: 'none'\r\n }\r\n }\r\n\r\n },\r\n menuLabel: {\r\n fontFamily: \"'Montserrat', Verdana, Geneva, sans-serif\",\r\n color: \"var(--darkBlue)\",\r\n textTransform: \"uppercase\",\r\n fontWeight: 700,\r\n fontSize: \".9rem\",\r\n textDecoration: \"none\",\r\n display: \"block\",\r\n margin: '0 12px 0px 12px',\r\n '& a': {\r\n color: \"var(--darkBlue)\",\r\n '&:hover': {\r\n textDecoration: 'none'\r\n }\r\n },\r\n minHeight: \"auto\",\r\n paddingTop: \"6px\",\r\n paddingBottom: \"6px\"\r\n \r\n },\r\n menuLabelFlex: {\r\n display: \"flex\"\r\n },\r\n menuLabelIcon: {\r\n minWidth: \"32px\"\r\n },\r\n menuSubLabel: {\r\n fontSize: \".8rem\",\r\n fontWeight: 400,\r\n marginLeft: \"20px\"\r\n },\r\n menuItem: {\r\n verticalAlign: \"middle\",\r\n '&::after': {\r\n content: '\"|\"',\r\n paddingLeft: \"8px\",\r\n color: \"var(--darkBlue)\",\r\n fontSize: \"1.1em\",\r\n display: \"inline-block\",\r\n marginTop: \"-2px\"\r\n }\r\n },\r\n menuItemWithMenu: {\r\n display: \"inline-flex\",\r\n alignItems: \"center\",\r\n padding: \"0 !important\",\r\n margin: \"0 !important\",\r\n boxSizing: \"border-box\",\r\n fontSize: \"0.9rem !important\",\r\n \"&:hover\": {\r\n background: \"none\"\r\n },\r\n \"&:focus-visible\": {\r\n borderBottom: \"2px solid var(--black)\"\r\n }\r\n },\r\n menuDesc: {\r\n fontFamily: \"'Montserrat', Verdana, Geneva, sans-serif\",\r\n color: \"var(--darkGrey)\",\r\n fontSize: \".8rem\",\r\n textDecoration: \"none\",\r\n display: \"block\",\r\n margin: '0 12px 0px 12px',\r\n paddingLeft: '16px',\r\n paddingRight: '16px',\r\n minHeight: \"auto\"\r\n }, \r\n searchInputBox: { \r\n borderBottom: '2px solid var(--red)', \r\n marginTop: 0,\r\n '&::before': { \r\n borderBottom: '2px solid var(--red)'\r\n },\r\n '&::after': { \r\n borderBottom: '2px solid var(--red)'\r\n },\r\n '&::hover': { \r\n borderBottom: '2px solid var(--red)'\r\n }\r\n\r\n },\r\n sectionDesktop: {\r\n display: 'none',\r\n [theme.breakpoints.up('md')]: {\r\n display: 'block',\r\n },\r\n },\r\n sectionMobile: {\r\n display: 'block',\r\n [theme.breakpoints.up('md')]: {\r\n display: 'none',\r\n },\r\n '& > .MuiPaper-root': {\r\n padding: '1em',\r\n maxWidth: '75%',\r\n width: 'auto',\r\n display: 'block'\r\n }\r\n },\r\n navPopup: {\r\n borderTop: 'none',\r\n borderColor: 'var(--lightGrey)',\r\n paddingBottom: '15px'\r\n },\r\n b1: {\r\n display: \"flex\",\r\n justifyContent: \"space-between\"\r\n }\r\n}));\r\n\r\nexport default function NavMenu(props) {\r\n const settings = useSettings();\r\n const [showSearch, setShowSearch] = useState(false);\r\n const [anchorEl, setAnchorEl] = React.useState(null);\r\n const [whichMenu, setWhichMenu] = React.useState('');\r\n const [filter, setFilter] = React.useState('');\r\n const [login, setLogin] = useState(false);\r\n const [showLogin, setShowLogin] = useState(0);\r\n const { isDarkMode, setIsDarkMode } = useDarkMode();\r\n\r\n let auth = useAuth();\r\n const [loadingSSO, setLoadingSSO] = useState(false);\r\n const [errorMessage, setErrorMessage] = useState('');\r\n const [showError, setShowError] = useState(false);\r\n \r\n const menuRef = useRef(0);\r\n\r\n const [navItems, setNavItems] = useState(NavService.cachedList);\r\n\r\n const classes = useStyles();\r\n let location = useLocation();\r\n let history = useHistory();\r\n const analytics = useAnalytics();\r\n const { sections, title } = props;\r\n const handleShowSearch = (e) => {\r\n setShowSearch(!showSearch);\r\n };\r\n const handleClick = (e, which) => {\r\n setAnchorEl(e.currentTarget);\r\n setWhichMenu(which);\r\n }; \r\n const handleClose = (e) => {\r\n setAnchorEl(null);\r\n setMobileOpen(false);\r\n };\r\n const handleLogout = () => {\r\n auth.signout(); \r\n setAnchorEl(null);\r\n };\r\n const handleLogin = () => {\r\n setLogin(true);\r\n setAnchorEl(null);\r\n };\r\n const handleSearch = (search) => {\r\n analytics.tag('event', 'search', { search_term: search });\r\n history.push(\"/search?sort=score&filter=\" + search);\r\n setShowSearch(false);\r\n };\r\n const onLogin = (success) => {\r\n if (success) {\r\n\r\n } else {\r\n\r\n }\r\n setLogin(false);\r\n };\r\n\r\n const [lastNavTime, setLastNavTime] = useState(0);\r\n useEffect(() => {\r\n var updated = settings.get(\"Nav last updated\");\r\n if (lastNavTime != updated) {\r\n setLastNavTime(updated);\r\n NavService.getList({}, updated).then((response) => {\r\n setNavItems(response);\r\n });\r\n }\r\n }, [settings]);\r\n\r\n useEffect(() => {\r\n var pm = document.querySelectorAll(\"#popup-menu\");\r\n for (var i = 0; i < pm.length; i++) {\r\n if (pm[i] != menuRef.current) {\r\n pm[i].parentNode.removeChild(pm[i]);\r\n }\r\n }\r\n }, []);\r\n \r\n const [mobileOpen, setMobileOpen] = React.useState(false);\r\n const toggleMobile = (open) => (event) => {\r\n setMobileOpen(open);\r\n };\r\n\r\n function getReturnUrl() {\r\n var baseUrl = document.getElementsByTagName('base')[0].getAttribute('href');\r\n if (baseUrl.length > 0 && baseUrl[baseUrl.length - 1] == \"/\")//strip trailing slash\r\n baseUrl = baseUrl.slice(0, baseUrl.length - 1);\r\n const origin = window.location.origin;\r\n const urlParams = new URLSearchParams(window.location.search);\r\n const originP = urlParams.get('origin');\r\n if (originP && originP !== \"/login\") {\r\n return `${origin}${originP}`;\r\n } else {\r\n return `${origin}${baseUrl}`;\r\n }\r\n }\r\n\r\n const sso = () => {\r\n var returnUrl = getReturnUrl();\r\n setLoadingSSO(true);\r\n setTimeout(function () {\r\n auth.initSSO(returnUrl)\r\n .then((response) => {\r\n setLoadingSSO(false);\r\n setShowError(false);\r\n })\r\n .catch((error) => {\r\n console.log(error);\r\n setShowError(true);\r\n if (error.response) {\r\n setErrorMessage(error.response.data.message);\r\n }\r\n setLoadingSSO(false);\r\n });\r\n }, 500);\r\n\r\n };\r\n\r\n const renderMenuItem = (index, mobile = false) => {\r\n var el = null;\r\n var item = navItems[index];\r\n var route = item.url ? getRoute(item.url) : \"\";\r\n if (route !== false) {\r\n if (index !== navItems.length - 1 && navItems[index + 1].isChild && item.isChild == false) {\r\n if (!mobile) {\r\n //desktop heading\r\n el = ;\r\n } else {\r\n //mobile heading\r\n el = {item.name};\r\n }\r\n } else {\r\n if (!item.isChild) {\r\n if (!mobile) {\r\n //desktop main\r\n el = {item.name};\r\n } else {\r\n //mobile main\r\n el = \r\n {item.name};\r\n }\r\n } else {\r\n if (!mobile) {\r\n //desktop sub\r\n el = \r\n {item.name};\r\n } else {\r\n //mobile sub\r\n el = \r\n {item.name};\r\n }\r\n }\r\n }\r\n } else {\r\n if (!mobile) {\r\n //desktop external\r\n if (item.isChild) {\r\n el = \r\n {item.name};\r\n } else {\r\n el = {item.name};\r\n }\r\n } else {\r\n //mobile external\r\n if (item.isChild) {\r\n el = \r\n {item.name};\r\n } else {\r\n el = \r\n {item.name};\r\n }\r\n\r\n }\r\n }\r\n\r\n return el;\r\n };\r\n const renderMenu = (mobile = false) => {\r\n let out = [];\r\n if(navItems)\r\n for (var i = 0; i < navItems.length; i++) {\r\n if (mobile || !navItems[i].isChild) {\r\n out.push(renderMenuItem(i, mobile));\r\n }\r\n }\r\n return out;\r\n };\r\n const renderMenuPopup = () => {\r\n let out = [];\r\n switch (whichMenu) {\r\n case \"account\":\r\n if (auth.user?.id) {\r\n out.push(Log out);\r\n if (auth.user.id && auth.user.roles && auth.user.roles.indexOf(\"admin\") > -1) {\r\n out.push(Administration);\r\n out.push(Users);\r\n out.push(Tags);\r\n out.push(Site Settings);\r\n out.push(Page Templates);\r\n }\r\n if (auth.user.id && auth.user.roles && (auth.user.roles.indexOf(\"page.contributor\") > -1 || auth.user.roles.indexOf(\"page.approver\") > -1)) {\r\n out.push(Loose pages);\r\n }\r\n if (auth.user.id && auth.user.roles && (auth.user.roles.indexOf(\"unlisted.contributor\") > -1 || auth.user.roles.indexOf(\"unlisted.approver\") > -1)) {\r\n out.push(Unlisted pages);\r\n }\r\n if (auth.user.id && auth.user.roles && auth.user.roles.indexOf(\"admin\") > -1) {\r\n out.push(Glossary);\r\n out.push(Navigation);\r\n }\r\n \r\n if (auth.user.id && auth.user.roles && auth.user.roles.find((r) => r.endsWith(\".contributor\"))) {\r\n out.push(File Manager);\r\n }\r\n\r\n if (auth.user.id && auth.user.roles && auth.user.roles.indexOf(\"admin\") > -1) {\r\n out.push(Recycling bin);\r\n }\r\n if (auth.user.id && auth.user.roles && auth.user.roles.indexOf(\"data/reporting\") > -1) {\r\n out.push(Logs);\r\n }\r\n } else {\r\n out.push(Log in);\r\n out.push(\r\n \r\n Microsoft Sign-on\r\n {loadingSSO ? : null}\r\n );\r\n }\r\n break;\r\n default:\r\n var whichId = parseInt(whichMenu);\r\n if (!isNaN(whichId)) {\r\n for (var i = whichId + 1; i < navItems.length; i++) {\r\n if (navItems[i].isChild) {\r\n out.push(renderMenuItem(i, false));\r\n } else {\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n return out;\r\n };\r\n\r\n return (\r\n \r\n {/* DESKTOP TOOLBAR */}\r\n \r\n {/* LOGO */}\r\n \r\n \"UOW { setShowLogin(showLogin + 1); }} onTouchEnd={() => { setShowLogin(showLogin + 1); }} /> \r\n \r\n \r\n \r\n \r\n \r\n \r\n {/* MOBILE TOOLBAR */}\r\n \r\n \r\n {/* LOGO */}\r\n \r\n \"UOW { setShowLogin(showLogin + 1); }} onTouchEnd={() => { setShowLogin(showLogin + 1); }} />\r\n \r\n \r\n {/* ACCOUNT */}\r\n \r\n {/* FULL MENU */}\r\n \r\n {(showLogin > 5 || auth.user.id) ?\r\n handleClick(e, 'account')} tabIndex=\"0\">\r\n : null}\r\n \r\n {/* THEME TOGGLE */}\r\n {auth.user.id ?\r\n : null}\r\n \r\n \r\n \r\n \r\n \r\n {/* SEARCH */}\r\n {showSearch ?\r\n \r\n } /> \r\n \r\n :\r\n \r\n }\r\n \r\n \r\n \r\n \r\n {/* MENU */}\r\n \r\n {renderMenuPopup()}\r\n \r\n \r\n \r\n Menu\r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nconst MicrosoftLogo = () => {\r\n return \r\n \r\n \r\n \r\n \r\n \r\n ;\r\n};\r\n","import useSettings from '../settings/useSettings.js';\r\nimport { useEffect } from 'react';\r\n\r\nconst useSiteImprove = () => {\r\n const settings = useSettings();\r\n\r\n useEffect(() => {\r\n const siteImproveId = settings.get('SiteImprove ID');\r\n if (!siteImproveId) return;\r\n\r\n const script = document.createElement('script');\r\n script.src = `https://siteimproveanalytics.com/js/siteanalyze_${siteImproveId}.js`;\r\n script.async = true;\r\n document.body.appendChild(script);\r\n\r\n return () => {\r\n if (script.parentNode) {\r\n document.body.removeChild(script);\r\n }\r\n };\r\n }, [settings]);\r\n};\r\n\r\nexport default useSiteImprove;","import logo from '../media/logo.svg'\r\nimport logowhite from '../media/logo-white.png';\r\nimport aboriginalFlag from '../media/aboriginalFlag.svg'\r\nimport torresFlag from '../media/torresFlag.svg'\r\n\r\nimport useSettings from \"./settings/useSettings.js\";\r\nimport { useDarkMode } from './support/DarkModeContext';\r\nimport React, { useState, useEffect, useRef } from 'react';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport Box from '@material-ui/core/Box';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport { Link } from 'react-router-dom';\r\nimport useSiteImprove from './support/useSiteImprove.js';\r\n\r\nimport EmailIcon from '@material-ui/icons/MailOutline';\r\nimport PhoneAndroid from '@material-ui/icons/PhoneAndroid';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n root: {\r\n fontSize: '0.9em',\r\n borderTopStyle: 'solid',\r\n borderTopColor: '#eee',\r\n borderTopWidth: '1px',\r\n paddingTop: '2em',\r\n \"@media print\": {\r\n display: \"none !important\"\r\n }\r\n },\r\n top: {\r\n marginBottom: '2em'\r\n },\r\n bottom: {\r\n paddingBottom: '15px'\r\n },\r\n subhead: {\r\n fontSize: '1em',\r\n marginBottom: '0.8em',\r\n fontWeight: \"bold !important\"\r\n },\r\n logo: {\r\n height: '95px'\r\n },\r\n flag: {\r\n width: '50px',\r\n height: 'auto',\r\n display: 'inline-block',\r\n margin: '2px'\r\n },\r\n flag2: {\r\n width: '45px',\r\n height: 'auto',\r\n display: 'inline-block',\r\n margin: '2px'\r\n },\r\n statement: {\r\n width: '40%'\r\n },\r\n copy: {\r\n textAlign: 'right',\r\n width: '50%'\r\n },\r\n b1: {\r\n display: \"flex\",\r\n justifyContent: \"space-between\"\r\n },\r\n icon: {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n maxWidth: '250px',\r\n '& svg': { width: \"1.3em\", height: \"1.3em\", marginRight: \"0.5em\" },\r\n '& div': {flex: 1}\r\n }\r\n}));\r\nexport default function Footer(props) {\r\n //const settings = useSettings();\r\n const classes = useStyles();\r\n const { isDarkMode, setIsDarkMode } = useDarkMode();\r\n useSiteImprove();\r\n /*const mailto = useRef();\r\n const [email, setEmail] = useState(settings.get(\"Email\") || \"ltc-central@uow.edu.au\");\r\n\r\n useEffect(() => {\r\n setEmail(settings.get(\"Email\"));\r\n mailto.current.setAttribute(\"href\", \"mailto:\" + settings.get(\"Email\"));\r\n }, [settings]);*/\r\n return (\r\n \r\n \r\n \r\n Contact Learning, Teaching & Curriculum\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n
(02) 4221 4004)
\r\n 8:30 AM to 5:00 PM Monday to Friday (AEDT)
\r\n
\r\n
\r\n \r\n \"UOW\r\n \r\n
\r\n \r\n \r\n \"Aboriginal\r\n \"Torres\r\n \r\n \r\n \r\n \r\n On the lands that we study, we walk, and we live, we acknowledge and respect the traditional custodians and cultural knowledge holders of these lands.\r\n \r\n \r\n Copyright © {new Date().getFullYear()} University of Wollongong\r\n
CRICOS Provider No: 00102E | Privacy & cookie usage | Copyright & disclaimer\r\n
\r\n
\r\n
\r\n );\r\n}\r\n","import React, { useState, useEffect } from 'react';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport Snackbar from '@material-ui/core/Snackbar';\r\nimport Alert from '@material-ui/lab/Alert';\r\nimport Button from '@material-ui/core/Button';\r\nimport { Link } from \"react-router-dom\";\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n root: {\r\n textAlign: 'center'\r\n }\r\n}));\r\n\r\nconst Consent = () => {\r\n const classes = useStyles();\r\n\r\n const getConsent = function () {\r\n return document.cookie.split(';').some((item) => item.includes('.AspNet.Consent=yes'));\r\n };\r\n\r\n const [consent, setConsent] = useState(getConsent());\r\n const [open, setOpen] = useState(!consent);\r\n\r\n const applyConsent = function () {\r\n setConsent(true);\r\n var date = new Date();\r\n var newDate = new Date(date.setMonth(date.getMonth() + 1));\r\n document.cookie = \".AspNet.Consent=yes; expires=\" + (newDate.toUTCString())+\"; path=/; secure; samesite=strict\";\r\n };\r\n const handleConsent = () => {\r\n applyConsent(true);\r\n setOpen(false);\r\n }\r\n const handleClose = () => {\r\n setOpen(false);\r\n applyConsent(true);\r\n }\r\n\r\n return (\r\n \r\n \r\n We use cookies to improve your experience on our site. To find out more, read our privacy & cookie usage information
\r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default Consent;\r\n","import React, { useEffect } from \"react\";\r\nimport { useLocation } from \"react-router-dom\";\r\nimport Tooltip from '@material-ui/core/Tooltip';\r\nimport Box from '@material-ui/core/Box';\r\nimport Slide from '@material-ui/core/Slide';\r\nimport ExpandLessIcon from '@material-ui/icons/ExpandLess';\r\nimport Fab from '@material-ui/core/Fab';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport useScrollTrigger from '@material-ui/core/useScrollTrigger';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n main: {\r\n position: \"fixed\",\r\n right: \"0.5em\",\r\n bottom: \"0.5em\",\r\n zIndex: 99,\r\n \"@media print\": {\r\n display: \"none !important\"\r\n }\r\n },\r\n button: {\r\n border: \"var(--black) 1px solid\",\r\n padding: \"4px\",\r\n boxShadow: \"none\",\r\n background: \"var(--white)\",\r\n },\r\n icon: {\r\n fontSize: \"4em\"\r\n }\r\n}));\r\n\r\nconst ScrollToTop = function () {\r\n const classes = useStyles();\r\n const { pathname } = useLocation();\r\n\r\n const trigger = useScrollTrigger({ threshold: 1, disableHysteresis: true });\r\n\r\n const scroll = () => {\r\n window.scrollTo(0, 0);\r\n };\r\n\r\n useEffect(() => {\r\n scroll();\r\n }, [pathname]);\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default ScrollToTop;","import AppTitle from '../support/AppTitle.js';\r\nimport useAuth from \"../auth/useAuth.js\";\r\nimport useSettings from \"../settings/useSettings.js\";\r\nimport TagPicker from '../tags/TagPicker.js';\r\nimport TagService from '../tags/TagService.js';\r\nimport PageService from '../pages/PageService.js';\r\nimport Page from '../pages/Page.js';\r\nimport PagePreview from '../pages/PagePreview.js';\r\nimport SearchBar from '../support/SearchBar.js';\r\n\r\nimport React, { useState, useEffect } from 'react';\r\nimport useAnalytics from '../support/Analytics.js';\r\nimport { Helmet } from \"react-helmet\";\r\nimport { Link as RouterLink, useLocation, useRouteMatch, useHistory} from \"react-router-dom\";\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport SwipeableDrawer from '@material-ui/core/SwipeableDrawer';\r\nimport Button from '@material-ui/core/Button';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport AddIcon from '@material-ui/icons/Add';\r\nimport Box from '@material-ui/core/Box';\r\nimport Tooltip from '@material-ui/core/Tooltip';\r\nimport Clear from '@material-ui/icons/Clear';\r\nimport FilterListIcon from '@material-ui/icons/FilterList';\r\nimport Badge from '@material-ui/core/Badge';\r\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\r\nimport Select from '@material-ui/core/Select';\r\nimport MenuItem from '@material-ui/core/MenuItem';\r\nimport Grid from '@material-ui/core/Grid';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\n\r\nconst filterListStyles = makeStyles((theme) => ({\r\n sectionDesktop: {\r\n display: 'none',\r\n [theme.breakpoints.up('md')]: {\r\n display: 'block',\r\n },\r\n },\r\n sectionMobile: {\r\n display: 'block',\r\n [theme.breakpoints.up('md')]: {\r\n display: 'none',\r\n },\r\n '& > .MuiPaper-root': {\r\n padding: '1em',\r\n maxWidth: '75%',\r\n width: 'auto'\r\n }\r\n }\r\n}));\r\nconst FilterList = (props) => {\r\n const { tags, UpdateTags, mobileOpen, toggleMobile, enabled } = props;\r\n const classes = filterListStyles();\r\n \r\n\r\n const toggleFilter = (tagId) => {\r\n return function (optionId) {\r\n UpdateTags(tagId, optionId);\r\n }\r\n };\r\n\r\n const renderPickers = (m) => {\r\n var out = [], count = 0;\r\n for (var i = 0; i < tags.length; i++) {\r\n if (!tags[i].hidden) {\r\n out.push( { return curr ? true : o.enabled; }, false) == true}\r\n key={ 'mobile-filter-' + tags[i].id } \r\n UpdateTags={ toggleFilter(tags[i].id)} tag={tags[i]} />);\r\n count++;\r\n }\r\n }\r\n return out;\r\n };\r\n\r\n return (\r\n
\r\n { toggleMobile(false) }} onOpen={() => { toggleMobile(true) }}>\r\n \r\n Filter\r\n { toggleMobile(false) }} color=\"inherit\">\r\n \r\n {renderPickers(true)}\r\n \r\n
\r\n Filter\r\n {renderPickers(false)}\r\n
\r\n
\r\n );\r\n};\r\n\r\nconst pageListStyles = makeStyles((theme) => ({\r\n main: {\r\n flexGrow: 1\r\n },\r\n list: {\r\n \r\n },\r\n sort: { \r\n color: \"var(--darkBlue)\",\r\n textTransform: \"uppercase\",\r\n '& > .MuiInputBase-input': {\r\n fontWeight: 700,\r\n fontSize: \".9rem\",\r\n padding: '5px 24px 5px 5px'\r\n },\r\n textDecoration: \"none\",\r\n marginLeft: \"1em\", \r\n [theme.breakpoints.down('sm')]: {\r\n flex: '0 0 100%',\r\n marginLeft: 0,\r\n marginBottom: '10px'\r\n },\r\n\r\n fontFamily: \"var(--secondaryText)\",\r\n border: 'none',\r\n content: 'none',\r\n transition: 'none',\r\n transform: 'none',\r\n borderBottom: '2px solid var(--red)', \r\n //marginTop: 0,\r\n '&::before': {\r\n content: 'none',\r\n border: 'none',\r\n transition: 'none',\r\n transform: 'none'\r\n },\r\n '&::after': {\r\n content: 'none',\r\n border: 'none',\r\n transition: 'none',\r\n transform: 'none'\r\n },\r\n '&::hover': {\r\n content: 'none',\r\n border: 'none',\r\n transition: 'none',\r\n transform: 'none'\r\n },\r\n \r\n \r\n },\r\n sortItem: { \r\n fontFamily: \"var(--secondaryText)\",\r\n color: \"var(--darkBlue)\", \r\n textTransform: \"uppercase\",\r\n fontWeight: 700,\r\n fontSize: \".9rem\",\r\n },\r\n sectionDesktop: {\r\n display: 'none',\r\n [theme.breakpoints.up('md')]: {\r\n display: 'block',\r\n },\r\n },\r\n sectionMobile: {\r\n display: 'unset',\r\n [theme.breakpoints.up('md')]: {\r\n display: 'none',\r\n },\r\n '& > .MuiPaper-root': {\r\n padding: '1em',\r\n maxWidth: '75%',\r\n width: 'auto'\r\n }\r\n },\r\n filterWrapper: {\r\n flexBasis: '0%',\r\n flexShrink: '0',\r\n [theme.breakpoints.up('md')]: {\r\n flexBasis: (!!window.MSInputMethodContext && !!document.documentMode)?'auto':'25%',\r\n }\r\n }\r\n}));\r\nconst PageList = (props) => {\r\n let location = useLocation();\r\n let history = useHistory();\r\n let match = useRouteMatch();\r\n let settings = useSettings();\r\n const analytics = useAnalytics();\r\n\r\n var query = new URLSearchParams(location.search);\r\n const classes = pageListStyles();\r\n const auth = useAuth();\r\n const { area } = props;\r\n const [canContribute, setCanContribute] = useState(false);\r\n const [canApprove, setCanApprove] = useState(false);\r\n const [canContributeCollection, setCanContributeCollection] = useState(false);\r\n const [canApproveCollection, setCanApproveCollection] = useState(false);\r\n const [tags, setTags] = useState(TagService.cachedList[area.url]);\r\n const [pages, setPages] = useState([]);\r\n const [filter, setFilter] = useState(props?.filter ?? query.get('filter') ?? '');//can set initial search on URL args or props\r\n const [sort, setSort] = useState(props?.sort ?? query.get('sort') ?? 'popularity');//can set initial search on URL args or props\r\n const [canLoadMore, setCanLoadMore] = useState(false);//for infinite loading\r\n const [initialised, setInitialised] = useState(false);//make sure tags are loaded before initial pages load to prevent double load\r\n const [pageSize, setPageSize] = useState(parseInt(settings.get(\"Pages fetch size\")) || 10);\r\n const [mobileOpen, setMobileOpen] = React.useState(false);\r\n const [queryLoaded, setQueryLoaded] = useState(query.get(\"loaded\"));\r\n const [loading, setLoading] = useState(true);\r\n\r\n const [override, setOverride] = useState(null);\r\n\r\n useEffect(() => {\r\n if (area.url == \"article\" || area.url == \"showcase\" || area.url == \"page\" || area.url == \"unlisted\") {\r\n setCanContribute(auth.user.id && auth.user?.roles && auth.user.roles.indexOf(area.url + \".contributor\") !== -1);\r\n setCanApprove(auth.user.id && auth.user?.roles && auth.user.roles.indexOf(area.url + \".approver\") !== -1);\r\n if (area.url == \"article\") {\r\n setCanContributeCollection(auth.user.id && auth.user?.roles && auth.user.roles.indexOf(\"collection.contributor\") !== -1);\r\n setCanApproveCollection(auth.user.id && auth.user?.roles && auth.user.roles.indexOf(\"collection.approver\") !== -1);\r\n }\r\n } else if (area.url != \"search\" && auth.user.id && auth.user?.roles && auth.user.roles.indexOf(\"admin\") !== -1) {\r\n setCanContribute(true);\r\n setCanApprove(true);\r\n } else {\r\n setCanContribute(false);\r\n setCanApprove(false);\r\n setCanContributeCollection(false);\r\n setCanApproveCollection(false);\r\n }\r\n }, [area,auth]);\r\n\r\n useEffect(() => {\r\n query = new URLSearchParams(location.search);\r\n var f = query.get('filter') ?? filter ?? '';\r\n if(f != filter){}\r\n setFilter(f);\r\n var changedTags = applyEnabled(tags);\r\n if (changedTags) {\r\n findOverride(changedTags);\r\n setTags(changedTags);\r\n }\r\n },[location]);\r\n\r\n var applyEnabled = function (tgs) {\r\n var oldSelectedTags = [], response = [...tgs];\r\n\r\n var changed = false;\r\n var queryTags = query.getAll('options');\r\n if (queryTags.length > 0) {\r\n oldSelectedTags = queryTags.map((t) => parseInt(t));\r\n }\r\n for (var i = 0; i < response.length; i++) {\r\n for (var j = 0; j < response[i].options.length; j++) {\r\n var newE = (oldSelectedTags.indexOf(response[i].options[j].id) !== -1);\r\n if (newE != response[i].options[j].enabled) {\r\n changed = true;\r\n }\r\n response[i].options[j].enabled = newE;\r\n }\r\n }\r\n if (changed)\r\n return response;\r\n else\r\n return null;\r\n };\r\n const [lastTagFetch, setLastTagFetch] = useState(0);\r\n var fetchTags = function () {\r\n var time = settings.get(\"Tags last updated\");\r\n if (lastTagFetch !== time) {\r\n setLastTagFetch(time);\r\n setPageSize(parseInt(settings.get(\"Pages fetch size\")) || 10);\r\n TagService.getList({ area: area.url }, time)\r\n .then((response) => {\r\n var changed = applyEnabled(response);\r\n setTags(changed ? changed : response);\r\n setInitialised(true);\r\n setLoading(true);\r\n findOverride(changed ? changed : response);\r\n })\r\n .catch(function (e) {\r\n setTags([]);\r\n });\r\n }\r\n };\r\n useEffect(fetchTags, [settings]);\r\n\r\n const findOverride = (tgs) => {\r\n if (!tgs) tgs = tags;\r\n //determine override tag if enabled\r\n var cat = null, tgs = [...tgs];\r\n for (var i = 0; i < tgs.length; i++) {\r\n if (tgs[i].isCategory) {\r\n for (var j = 0; j < tgs[i].options.length; j++) {\r\n if (tgs[i].options[j].enabled) {\r\n cat = tgs[i].options[j];\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n setOverride(cat);\r\n };\r\n\r\n const fetchPages = (showMore = false) => {\r\n\r\n if (!initialised) return false;\r\n\r\n var tagRequest = [];\r\n for (var i = 0; i < tags.length; i++) {\r\n for (var j = 0; j < tags[i].options.length; j++) {\r\n if (tags[i].options[j].enabled) {\r\n tagRequest.push(tags[i].options[j].id);\r\n }\r\n }\r\n }\r\n\r\n if (pageSize) {\r\n var newPages = (showMore ? [...pages] : []);\r\n var req = { filter: filter, page: Math.floor(newPages.length / pageSize), pageSize: pageSize, options: tagRequest, area: area.url, sort: sort };\r\n console.log(req)\r\n //initial query load\r\n if (queryLoaded && queryLoaded > pageSize) {\r\n req.page = 0;\r\n req.pageSize = queryLoaded;\r\n setQueryLoaded(0);\r\n }\r\n\r\n setLoading(true);\r\n PageService.getList(req)\r\n .then((response) => {\r\n if ('data' in response && 'data' in response.data) {\r\n var l = newPages.length;\r\n for (var i = 0; i < response.data.data.length; i++) {\r\n var found = false;\r\n for (var j = 0; j < l; j++) {\r\n if (newPages[j].id == response.data.data[i].id) {\r\n found = true;\r\n break;\r\n }\r\n }\r\n if (!found) {\r\n newPages.push(response.data.data[i]);\r\n }\r\n }\r\n\r\n setPages(newPages);\r\n console.log(\"fetched\", newPages.length, \"of\", response.data.total, \"pages\");\r\n setCanLoadMore(response.data.total != newPages.length);\r\n analytics.tag('event', 'view_search_results', {\r\n search_term: filter,\r\n items: newPages.map((p) => { return { item_id: p.id, item_name: p.title }; })\r\n });\r\n\r\n const params = new URLSearchParams();\r\n if (filter) params.append('filter', filter); else params.delete('filter');\r\n if (sort) params.append('sort', sort); else params.delete('sort');\r\n params.delete('options');\r\n if (tagRequest.length > 0) {\r\n for (var i = 0; i < tagRequest.length; i++)\r\n params.append('options', tagRequest[i]);\r\n }\r\n params.append('loaded', newPages.length);\r\n history.replace(match.path + \"?\" + params.toString());\r\n\r\n setLoading(false);\r\n }\r\n })\r\n .catch(function (e) {\r\n\r\n });\r\n }\r\n };\r\n useEffect(fetchPages, [filter, sort, tags, initialised]);\r\n\r\n const UpdateTags = () => {\r\n return function (tagId, optionId) {\r\n var oldTags = [...tags];\r\n var needUpdate = false;\r\n //for each in the tag db\r\n for (var t = 0; t < oldTags.length; t++) {\r\n if (oldTags[t].id == tagId) {\r\n var enabled = false;\r\n for (var o = 0; o < oldTags[t].options.length; o++) {\r\n if (oldTags[t].options[o].id == optionId) {\r\n oldTags[t].options[o].enabled = !oldTags[t].options[o].enabled;\r\n enabled = oldTags[t].options[o].enabled;\r\n needUpdate = true;\r\n break;\r\n }\r\n }\r\n\r\n //turn off other group members if needed\r\n if (oldTags[t].type == \"single\" && enabled) {\r\n for (var o = 0; o < oldTags[t].options.length; o++) {\r\n if (oldTags[t].options[o].id != optionId) {\r\n oldTags[t].options[o].enabled = false;\r\n }\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n\r\n\r\n if (needUpdate) {\r\n setTags(oldTags);\r\n findOverride(oldTags);\r\n var selectedOptions = [];\r\n for (var t = 0; t < oldTags.length; t++) {\r\n for (var o = 0; o < oldTags[t].options.length; o++) {\r\n if (oldTags[t].options[o].enabled) {\r\n selectedOptions.push(oldTags[t].options[o].id);\r\n }\r\n }\r\n }\r\n //localStorage.setItem(\"lthub_selected_tags\", JSON.stringify(selectedOptions));\r\n }\r\n }\r\n };\r\n\r\n const applyFilter = (v) => {\r\n if ((sort != \"\" && v == \"\") || v != \"\") {\r\n setSort(\"score\");\r\n analytics.tag('event', 'search', { search_term: v });\r\n }\r\n setFilter(v);\r\n };\r\n const applySort = (e) => {\r\n setSort(e.target.value);\r\n };\r\n const handleShowMore = () => {\r\n setCanLoadMore(false);\r\n fetchPages(true);\r\n };\r\n\r\n const generateTitle = () => {\r\n if (override == null) {\r\n return area.plural;\r\n } else {\r\n return override.name;\r\n }\r\n };\r\n const generateIntro = () => {\r\n if (override == null) {\r\n switch (area.url) {\r\n case \"showcase\":\r\n case \"article\":\r\n case \"search\":\r\n return ();\r\n case \"template\":\r\n return (

Templates are a special page type which does not show up in search results,\r\n they are intended to be used as a starting point for other page types.\r\n For example, if you make a template page setting out the basic headings and structure\r\n for an Article and then assign it as the article template in the Site Settings area,\r\n any new Articles created will start with the content of the template.

);\r\n break;\r\n case \"page\":\r\n return (

Loose pages are normal pages in the system but are not articles or showcase pages. Unlike Unlisted pages, they can be found using the sitewide search.

);\r\n break;\r\n case \"unlisted\":\r\n return (

Unlisted pages are normal pages in the system but are not articles or showcase pages. Unlike Loose pages, they cannot be found using the sitewide search.

);\r\n break;\r\n case \"collection\":\r\n return (

Collections are a curated, commentated list of other articles and resources in the hub.

);\r\n break;\r\n\r\n }\r\n } else {\r\n return (

{override.description}

);\r\n }\r\n };\r\n\r\n const [pickedTags, setPickedTags] = React.useState(0);\r\n const calcPickedTags = () => {\r\n var count = 0;\r\n for (var i = 0; i < tags.length; i++) {\r\n if (tags[i].hidden == false) {\r\n for (var j = 0; j < tags[i].options.length; j++) {\r\n if (tags[i].options[j].enabled)\r\n count++;\r\n }\r\n }\r\n }\r\n setPickedTags(count);\r\n };\r\n useEffect(calcPickedTags, [tags]);\r\n\r\n const toggleMobile = (o) => {\r\n setMobileOpen(o);\r\n }\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n { toggleMobile(true) }} color=\"inherit\">\r\n \r\n \r\n \r\n \r\n {generateTitle()}\r\n \r\n {(canContribute || canContributeCollection) ?
\r\n {canContribute ?\r\n \r\n \r\n \r\n : null}\r\n  \r\n {canContributeCollection ?\r\n \r\n \r\n \r\n : null}\r\n
: null }\r\n
\r\n {generateIntro()}\r\n \r\n \r\n \r\n {AppTitle(generateTitle())}\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Results\r\n \r\n {pages.length > 0 ?\r\n pages.map((page) => {\r\n return (\r\n \r\n );\r\n })\r\n :\r\n (loading ? : No {generateTitle()} matching your criteria were found.)\r\n }\r\n \r\n {canLoadMore ? () : null}\r\n \r\n \r\n
\r\n );\r\n};\r\n\r\nexport default PageList;\r\n","import Areas from '../support/Areas.js';\r\nimport PrivateRoute from \"../auth/PrivateRoute.js\";\r\nimport PageList from \"../pages/PageList.js\";\r\nimport Page from \"../pages/Page.js\";\r\nimport useAuth from \"../auth/useAuth.js\";\r\n\r\nimport React, { useState, useEffect, lazy, Suspense } from 'react';\r\nimport { Route, Switch, useRouteMatch } from \"react-router-dom\";\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\n\r\nconst EditPage = lazy(() => import('./EditPage.js'));\r\n\r\nconst Pages = () => {\r\n const auth = useAuth();\r\n const [isAdmin, setIsAdmin] = useState(auth.user.id && auth.user?.roles && auth.user.roles.indexOf(\"admin\") !== -1);\r\n const [canView, setCanView] = useState(auth.user.id && auth.user?.roles && auth.user.roles.indexOf(\"admin\") !== -1);\r\n const [search, setSearch] = useState(Areas.find(x => x.url === 'search'));\r\n \r\n useEffect(() => {\r\n setIsAdmin(auth.user.id && auth.user?.roles && auth.user.roles.indexOf(\"admin\") !== -1);\r\n }, [auth]);\r\n\r\n const hasAccess = (area) => {\r\n return area.features.indexOf(\"publicList\") !== -1 ||\r\n (auth.user.id && auth.user?.roles && area.roles.some(r => auth.user.roles.indexOf(r) !== -1));\r\n }\r\n\r\n return (\r\n \r\n {Areas.map((value, index) => {\r\n return (\r\n \r\n {hasAccess(value) ? : }\r\n \r\n );\r\n })}\r\n {Areas.map((value, index) => {\r\n return (\r\n \r\n \r\n \r\n );\r\n })}\r\n \r\n );\r\n};\r\n\r\n\r\n//this can only be run through router. pages themselves need to be rendered independently of the router\r\nconst PageManager = (props) => {\r\n const [Area, setArea] = useState(props?.area);\r\n let match = useRouteMatch();\r\n return (\r\n \r\n \r\n \r\n \r\n\r\n \r\n }>\r\n \r\n \r\n );\r\n};\r\n\r\nexport default Pages;\r\n","import AppTitle from '../support/AppTitle.js';\r\nimport useAuth from \"../auth/useAuth.js\";\r\nimport Hijack from '../support/Hijack.js';\r\nimport useSettings from \"../settings/useSettings.js\";\r\nimport GlossaryService from '../glossary/GlossaryService.js';\r\n\r\nimport React, { useState, useEffect, useReducer, useRef, lazy, Suspense } from 'react';\r\nimport EditIcon from '@material-ui/icons/Edit';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport Box from '@material-ui/core/Box';\r\nimport Tooltip from '@material-ui/core/Tooltip';\r\nimport AddIcon from '@material-ui/icons/Add';\r\nimport Button from '@material-ui/core/Button';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport Check from '@material-ui/icons/Check';\r\nimport Alert from '@material-ui/lab/Alert';\r\nimport DeleteForeverIcon from '@material-ui/icons/DeleteForever';\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogContentText from '@material-ui/core/DialogContentText';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport { FormHelperText } from '@material-ui/core';\r\nimport { useLocation } from 'react-router-dom';\r\nimport { Helmet } from \"react-helmet\";\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\n\r\nconst RichTextEditor = lazy(() => import('../support/RichTextEditor.js'));\r\n\r\nconst Glossary = () => {\r\n return (\r\n \r\n );\r\n};\r\n\r\nconst EditForm = (props) => {\r\n const [errors, setErrors] = useState({});\r\n const [error, setError] = useState(null);\r\n const [entry, setEntry] = useReducer((state, newState) => ({ ...state, ...newState }), props.entry);\r\n const updateField = (field, value) => { setEntry({ [field]: value }); }\r\n const handleInput = (e) => { updateField(e.target.name, e.target.value); };\r\n const [isEditing, setIsEditing] = useState((entry.id == 0));\r\n const [open, setOpen] = useState(false);\r\n const myRef = useRef(null);\r\n const contentRef = useRef(null);\r\n const settings = useSettings();\r\n let location = useLocation();\r\n useEffect(() => {\r\n if (location.hash.toLowerCase() == encodeURI((\"#\" + entry.name).toLowerCase())) {\r\n myRef.current.scrollIntoView(true);\r\n }\r\n \r\n }, [location]);\r\n\r\n\r\n const showEditForm = () => {\r\n setIsEditing(!isEditing);\r\n }\r\n const handleCancel = () => {\r\n props.resetData();\r\n setIsEditing(false);\r\n\r\n }\r\n const handleSave = (e) => {\r\n if (e) e.preventDefault(); \r\n return GlossaryService.updateGlossary(entry).then((response) => { \r\n settings.set({ \"name\": \"Glossary last updated\", \"settingValue\": (new Date()).getTime() });\r\n props.resetData();\r\n setIsEditing(false);\r\n }).catch((error) => {\r\n if ('response' in error && 'data' in error.response) {\r\n setError(error.response.data.title);\r\n setErrors(error.response.data.errors);\r\n }\r\n });\r\n };\r\n const handleDelete = (entry) => {\r\n GlossaryService.deleteGlossary(entry).then((response) => {\r\n props.onDelete(entry);\r\n settings.set({ \"name\": \"Glossary last updated\", \"settingValue\": (new Date()).getTime() });\r\n setOpen(false);\r\n });\r\n };\r\n const showConfirmDialog = () => {\r\n setOpen(true);\r\n };\r\n const handleClose = () => {\r\n setOpen(false);\r\n };\r\n\r\n return (\r\n
\r\n {isEditing ?\r\n
\r\n

{entry.id == 0 ? Create new entry : Editing {entry.name}}

\r\n \r\n \r\n \r\n
\r\n Content\r\n }>\r\n { updateField('content', content); }}\r\n />\r\n \r\n \r\n {error ? {error} : \"\"}\r\n \r\n
\r\n\r\n :\r\n
\r\n \r\n

{entry.name} \r\n {props.canContribute ?\r\n \r\n \r\n \r\n \r\n :\r\n \r\n }\r\n

\r\n

{entry.description}

\r\n

\r\n \r\n \r\n {\"Are you sure you wish to delete \" + entry.name + \"?\"}\r\n \r\n \r\n WARNING: Deleting a glossary entry will not automatically remove links from content pages!\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n

\r\n }\r\n \r\n
\r\n );\r\n}\r\nconst GlossaryList = () => {\r\n const auth = useAuth();\r\n const [glossaryEntries, setGlossaryEntries] = useState([]);\r\n const [filter, setFilter] = useState(\"\");\r\n const [tempFilter, setTempFilter] = useState(\"\");\r\n const [sort, setSort] = useState(\"name\");\r\n const [dir, setDir] = useState(\"asc\");\r\n const [page, setPage] = useState(0);\r\n const pageSizes = [0];\r\n const settings = useSettings();\r\n\r\n \r\n const [pageSize, setPageSize] = useState(pageSizes[0]);\r\n \r\n const [total, setTotal] = useState(0);\r\n const [canContribute, setCanContribute] = useState(false);\r\n\r\n\r\n const [lastGlossaryTime, setLastGlossaryTime] = useState(0);\r\n const updateData = () => {\r\n var updated = settings.get(\"Glossary last updated\");\r\n if (lastGlossaryTime != updated) {\r\n setLastGlossaryTime(updated);\r\n GlossaryService.getList({ filter: filter, sort: sort, dir: dir, page: page, pageSize: pageSize }, updated)\r\n .then((response) => {\r\n setGlossaryEntries(response);\r\n // setTotal(response.data.total);\r\n })\r\n .catch((e) => {\r\n console.log(e);\r\n });\r\n }\r\n };\r\n useEffect(updateData, [page, pageSize, dir, sort, filter, settings]);\r\n\r\n useEffect(() => {\r\n if (auth.user.id) {\r\n if (auth.user?.roles.indexOf(\"admin\") > -1) {\r\n setCanContribute(true);\r\n }\r\n else {\r\n setCanContribute(false);\r\n }\r\n } else { setCanContribute(false); }\r\n }, [auth]);\r\n\r\n const handleAdd = (e) => {\r\n var currentArray = [];\r\n currentArray.push({\r\n id: 0,\r\n name: \"\",\r\n description: \"\",\r\n content: \"\"\r\n });\r\n glossaryEntries.map((g) => (currentArray.push(g))); \r\n \r\n setGlossaryEntries(currentArray);\r\n\r\n };\r\n const resetData = () => {\r\n updateData([page, pageSize, dir, sort, filter]);\r\n }\r\n const handleDelete = (entry) => {\r\n let tempEntries = [...glossaryEntries], ind = -1;\r\n for (var i = 0; i < tempEntries.length; i++) {\r\n if (tempEntries[i].id == entry.id) {\r\n ind = i;\r\n break;\r\n }\r\n }\r\n if (ind != -1) {\r\n tempEntries.splice(ind, 1);\r\n setGlossaryEntries(tempEntries);\r\n }\r\n };\r\n\r\n return (\r\n \r\n \r\n {AppTitle(\"Glossary\")}\r\n \r\n

Glossary {canContribute ? : }

\r\n \r\n {glossaryEntries.map((g) => (\r\n
\r\n \r\n
\r\n
\r\n ))\r\n }\r\n \r\n
\r\n );\r\n}\r\n\r\nexport default Glossary;","import { red } from '@material-ui/core/colors';\r\nimport { createMuiTheme } from '@material-ui/core/styles';\r\n\r\nconst darkBlue = getComputedStyle(document.documentElement).getPropertyValue('--darkBlue');\r\n// A custom theme for this app\r\nconst theme = createMuiTheme({\r\n breakpoints: {\r\n values: {\r\n xs: 0,\r\n sm: 600,\r\n md: 960,\r\n lg: 1180,\r\n xl: 1920,\r\n },\r\n },\r\n palette: {\r\n primary: {\r\n main: '#001641',\r\n },\r\n secondary: {\r\n main: '#001641',\r\n },\r\n danger: {\r\n main: \"#ED0A00\",\r\n },\r\n error: {\r\n main: \"#ED0A00\",\r\n },\r\n background: {\r\n default: 'var(--white)',\r\n }, \r\n },\r\n});\r\n\r\n\r\nexport default theme;","import Home from './components/Home.js';\r\nimport NavMenu from './components/NavMenu.js';\r\nimport Footer from './components/Footer.js';\r\nimport Consent from './components/support/Consent.js';\r\nimport NotFound from './components/support/NotFound.js';\r\n\r\nimport Areas from './components/support/Areas.js';\r\nimport ScrollToTop from './components/support/ScrollToTop.js';\r\nimport useAuth from './components/auth/useAuth.js';\r\nimport { ProvideAuth } from './components/auth/useAuth.js';\r\nimport PrivateRoute from './components/auth/PrivateRoute.js';\r\nimport { ProvideSettings } from './components/settings/useSettings.js';\r\nimport { ProvideAnalytics } from './components/support/Analytics.js';\r\n\r\nimport Pages from './components/pages/Pages.js';\r\nimport Glossary from './components/glossary/Glossary.js';\r\n\r\nimport theme from './components/theme';\r\nimport jss from './components/jss';\r\nimport { getClassGen } from './components/jss';\r\n\r\nimport React, { useState, useRef, lazy, Suspense, useEffect } from 'react';\r\nimport axios from 'axios';\r\nimport { Route, Switch, useLocation, Redirect } from 'react-router';\r\nimport { Link } from 'react-router-dom';\r\nimport { ThemeProvider } from '@material-ui/core/styles';\r\nimport CssBaseline from '@material-ui/core/CssBaseline';\r\nimport Container from '@material-ui/core/Container';\r\nimport { StylesProvider } from '@material-ui/core/styles';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport { DarkModeProvider } from './components/support/DarkModeContext';\r\n\r\n import './custom.css';\r\n\r\nconst Login = lazy(() => import('./components/auth/Login.js'));\r\nconst Users = lazy(() => import('./components/users/Users.js'));\r\nconst Tags = lazy(() => import('./components/tags/Tags.js'));\r\nconst Settings = lazy(() => import('./components/settings/Settings.js'));\r\nconst FileManager = lazy(() => import('./components/files/FileManager.js'));\r\nconst Logs = lazy(() => import('./components/logs/Logs.js'));\r\nconst NavItems = lazy(() => import('./components/navitems/NavItems.js'));\r\nconst Trash = lazy(() => import('./components/pages/Trash.js'));\r\n\r\nconst App = (props) => {\r\n let auth = useAuth();\r\n const mainRef = useRef();\r\n\r\n const [login, setLogin] = useState(false);\r\n\r\n const [ax, setAx] = React.useState(false);\r\n if (!ax) {\r\n axios.interceptors.response.use(function (response) {\r\n return response;\r\n }, function (error) {\r\n var err = error;\r\n if ('response' in err) {\r\n err = error.response;\r\n }\r\n if (err) {\r\n if (err.status === 401) {\r\n setLogin(true);\r\n auth.signout(true);\r\n } else if (err.status === 403) {\r\n console.log(\"invalid permissions\", err.message);\r\n }\r\n } else if (error.request) {\r\n console.log(error.request);\r\n } else {\r\n console.log('Error', error.message);\r\n }\r\n return Promise.reject(error);\r\n });\r\n setAx(true);\r\n }\r\n\r\n const onLogin = (success) => {\r\n if (success) {\r\n\r\n } else {\r\n\r\n }\r\n setLogin(false);\r\n };\r\n\r\n const unauthDev = () => {\r\n if (process.env.REACT_APP_ENV !== \"Development\")\r\n return false;\r\n if (auth?.user?.id)\r\n return false;\r\n if (window.localStorage.getItem(\"lthub_has_loggedin\") === \"1\")\r\n return false;\r\n return true;\r\n };\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n mainRef.current.scrollIntoView({ behavior: 'smooth' })}>Skip to Content\r\n \r\n
\r\n \r\n {typeof window != \"undefined\" ? : null}\r\n {!unauthDev() ? \r\n \r\n\r\n {Areas.map((value, index) => {\r\n return ();\r\n })}\r\n \r\n\r\n }>\r\n }>\r\n }>\r\n }>\r\n }>\r\n }>\r\n }>\r\n }>\r\n \r\n : null}\r\n \r\n \r\n \r\n \r\n }>\r\n \r\n \r\n \r\n
\r\n