{"version":3,"sources":["components/support/Areas.js","components/support/Analytics.js","components/pages/Page.js","components/support/SearchBar.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/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/jss.js"],"names":["Areas","AnalyticsContext","React","createContext","ProvideAnalytics","children","analytics","settings","useSettings","useState","get","code","setCode","setAnalytics","initialised","setInitialised","useEffect","c","GA4React","isInitialized","initialize","then","ga4","err","tag","type","category","value","gtag","useProvideAnalytics","Provider","useAnalytics","useContext","VersionPicker","lazy","pageStyles","makeStyles","theme","page","overflowWrap","maxWidth","height","noprint","display","description","marginBottom","spacing","paddingBottom","marginTop","collapse","color","padding","fontSize","chipWarn","background","Category","props","items","collection","collapseOpen","setCollapse","contentRef","useRef","classes","inner","container","map","item","ii","pageDescription","key","id","sm","xs","selectedOptions","tags","uneditable","className","component","variant","name","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","location","useLocation","history","useHistory","d","categories","JSON","parse","lastGlossaryTime","setLastGlossaryTime","updated","getList","response","user","roles","indexOf","query","URLSearchParams","search","console","log","req","redirect","campaign","getPage","state","hasUrl","pathname","endsWith","url","hasId","hasFamily","family","redirectPath","replace","hash","catch","e","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","aria-label","to","title","plural","Fragment","AppTitle","rel","href","property","content","justifyContent","buttons","RouterLink","onClick","label","controlButtons","stringify","modified","thumbnail","index","renderContent","alignItems","edge","window","print","format","align","style","origin","open","onClose","aria-labelledby","approvePage","oldData","startIcon","fullWidth","fallback","onSelect","selpage","selected","revertPage","deletePage","useStyles","searchBar","flex","searchBarFull","searchText","fontFamily","fontWeight","searchInputBox","borderBottom","searchButton","textTransform","textDecoration","margin","cursor","marginLeft","marginRight","transition","SearchBar","filter","onSearch","onChange","tip","startAdornment","disabled","tempFilter","setTempFilter","applyFilter","preventDefault","handleFilterChange","target","InputProps","position","disableRipple","endAdornment","disableUnderline","autoFocus","placeholder","onKeyPress","which","previewStyles","root","flexDirection","borderColor","breakpoints","down","paddingLeft","width","edit","image","textAlign","chip","whiteSpace","videoLink","flexGrow","marginBlockStart","marginBlockEnd","showcase","flexBasis","left","bottom","backgroundColor","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","from","login","signin","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","ProvideAuth","updateUser","u","setUser","toStore","Object","assign","init","setInit","signout","soft","standardAuth","isAuthenticated","ping","stored","restoreUser","useProvideAuth","post","SettingService","getSettings","updateSetting","settingValue","toString","SettingsContext","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","menuSubLabel","menuItem","verticalAlign","menuItemWithMenu","boxSizing","menuDesc","paddingRight","sectionDesktop","sectionMobile","navPopup","borderTop","b1","NavMenu","showSearch","setShowSearch","anchorEl","setAnchorEl","whichMenu","setWhichMenu","setLogin","showLogin","setShowLogin","menuRef","navItems","setNavItems","handleShowSearch","sections","handleClick","currentTarget","handleClose","setMobileOpen","handleLogout","handleSearch","search_term","lastNavTime","setLastNavTime","pm","querySelectorAll","parentNode","mobileOpen","toggleMobile","event","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","whichId","isNaN","renderMenuPopup","SwipeableDrawer","anchor","onOpen","Typography","gutterBottom","success","borderTopStyle","borderTopColor","borderTopWidth","top","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","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","CircularProgress","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","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","as","substr","glossary","glossaryLinks","getElementsByClassName","contents","hasAttribute","titles","contains","gridItems","iframes","par","h","w","parseFloat","insertBefore","NoRouterHijack","protocols","defaultProps","hostnames","protocol","startsWith","destination","test","host","port","getLocation","ctrlKey","shiftKey","metaKey","el","parentElement","nodeName","shouldRouterHandle","substring","withRouter","rest","allowed","canView","pageCache","prerenderedJSON","encid","encodeURIComponent","ls","jls","getListSimple","getListVersions","getAutocomplete","updatePage","head","childNodes","nodeType","nodeValue","styleNode","createComment","firstChild","nextSibling","create","jssPreset","insertionPoint","pre","createGenerateClassName","productionPrefix"],"mappings":"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","file":"static/js/main.0621a6bc.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\"],\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\"],\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\"],\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\"],\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\"],\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 { GA4React } from \"ga-4-react\";\r\nimport useSettings from '../settings/useSettings.js';\r\nimport React, { useContext, useEffect, useState } from 'react';\r\n\r\n//need this context to track the initialisation of the analytics\r\n//doing it with the library's normal methods resulted in a complete crash on browsers with adblock\r\n\r\nconst AnalyticsContext = React.createContext({});\r\nfunction useAnalytics() {\r\n return useContext(AnalyticsContext);\r\n}\r\nfunction useProvideAnalytics() {\r\n var settings = useSettings();\r\n const [code, setCode] = useState(settings.get(\"Google ID\") || \"\");\r\n const [analytics, setAnalytics] = useState(null);\r\n const [initialised, setInitialised] = useState(false);\r\n\r\n useEffect(function () {\r\n var c = settings.get(\"Google ID\");\r\n if (c && (code != c || !GA4React.isInitialized())) {\r\n setCode(c);\r\n const ga4react = new GA4React(c);\r\n ga4react.initialize().then((ga4) => {\r\n setInitialised(true);\r\n setAnalytics(ga4);\r\n }, (err) => {\r\n //console.error(err)\r\n });\r\n }\r\n }, [settings]);\r\n\r\n const tag = (type, category, value) => {\r\n if (initialised) {\r\n analytics.gtag(type, category, value)\r\n }\r\n };\r\n\r\n return { tag };\r\n}\r\n\r\nfunction ProvideAnalytics({ children }) {\r\n let analytics = useProvideAnalytics();\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n}\r\n\r\nexport default useAnalytics;\r\nexport { ProvideAnalytics };","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 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 },\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: '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 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 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}));\r\n\r\nconst SearchBar = (props) => {\r\n const location = useLocation();\r\n \r\n const classes = useStyles();\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 },\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 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 {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 },\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};\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 [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 == \"yes\")\r\n return response;\r\n else\r\n signout(true);\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, 5000);\r\n }\r\n\r\n return {\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\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: '10px 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 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 const menuRef = useRef(0);\r\n\r\n const [navItems, setNavItems] = useState(NavService.cachedList);\r\n\r\n const classes = useStyles();\r\n const auth = useAuth();\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 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 }\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}","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\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 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}));\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 /*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 Request support\r\n

\r\n

\r\n Contribute to the Hub\r\n

\r\n

\r\n Provide feedback\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 if (auth.user.id && auth.user?.roles) {\r\n if (auth.user.roles.indexOf(area.url + \".contributor\") !== -1 || auth.user.roles.indexOf(area.url + \".approver\") !== -1) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n return (\r\n \r\n {Areas.map((value, index) => {\r\n return (\r\n \r\n {(value.features.indexOf(\"publicList\") !== -1 || 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