{"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/support/useSiteImprove.js","components/Footer.js","components/support/Consent.js","components/support/ScrollToTop.js","components/pages/PageList.js","components/pages/Pages.js","components/glossary/Glossary.js","components/theme.js","App.js","registerServiceWorker.js","index.js","components/support/AppTitle.js","components/glossary/GlossaryLink.js","components/support/Popup.js","components/support/Hijack.js","components/glossary/GlossaryService.js","components/auth/PrivateRoute.js","components/pages/PageService.js","components/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","initSSO","returnURL","useProvideAuth","post","returnUrl","encodeURIComponent","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","menuLabelFlex","menuLabelIcon","menuSubLabel","menuItem","verticalAlign","menuItemWithMenu","boxSizing","menuDesc","paddingRight","sectionDesktop","sectionMobile","navPopup","borderTop","b1","NavMenu","showSearch","setShowSearch","anchorEl","setAnchorEl","whichMenu","setWhichMenu","setLogin","showLogin","setShowLogin","loadingSSO","setLoadingSSO","menuRef","navItems","setNavItems","handleShowSearch","sections","handleClick","currentTarget","handleClose","setMobileOpen","handleLogout","handleSearch","search_term","lastNavTime","setLastNavTime","pm","querySelectorAll","parentNode","mobileOpen","toggleMobile","event","sso","originP","getReturnUrl","renderMenuItem","route","getRoute","isChild","MenuItem","Button","aria-controls","aria-haspopup","Link","renderMenu","Toolbar","Box","logowhite","onTouchEnd","disableGutters","logoHorizontalWhite","logoHorizontal","anchorOrigin","vertical","horizontal","transformOrigin","keepMounted","Boolean","PaperProps","getContentAnchorEl","role","ListSubheader","find","r","ListItemIcon","CircularProgress","sx","top","whichId","isNaN","renderMenuPopup","SwipeableDrawer","anchor","onOpen","Typography","gutterBottom","success","MicrosoftLogo","SvgIcon","xmlns","viewBox","fill","useSiteImprove","siteImproveId","script","async","borderTopStyle","borderTopColor","borderTopWidth","subhead","flag","flag2","statement","copy","Footer","aboriginalFlag","torresFlag","Date","getFullYear","Consent","cookie","split","some","includes","consent","setConsent","setOpen","applyConsent","date","newDate","setMonth","getMonth","toUTCString","Snackbar","Alert","main","right","zIndex","ScrollToTop","trigger","useScrollTrigger","threshold","disableHysteresis","scroll","Slide","appear","direction","Tooltip","Fab","filterListStyles","FilterList","toggleFilter","tagId","renderPickers","m","count","reduce","curr","o","pageListStyles","sort","transform","sortItem","filterWrapper","MSInputMethodContext","documentMode","PageList","match","useRouteMatch","canContributeCollection","setCanContributeCollection","setCanApproveCollection","setTags","pages","setPages","setFilter","setSort","canLoadMore","setCanLoadMore","pageSize","setPageSize","queryLoaded","setQueryLoaded","override","setOverride","f","changedTags","applyEnabled","findOverride","tgs","oldSelectedTags","changed","queryTags","getAll","t","newE","lastTagFetch","setLastTagFetch","isCategory","fetchPages","showMore","tagRequest","newPages","Math","floor","l","found","total","p","item_id","item_name","append","path","generateTitle","pickedTags","setPickedTags","Badge","badgeContent","overlap","showZero","generateIntro","oldTags","needUpdate","v","Select","Grid","EditPage","PageManager","Area","exact","PrivateRoute","Pages","x","hasAccess","RichTextEditor","EditForm","errors","setErrors","setError","entry","setEntry","updateField","field","handleInput","isEditing","setIsEditing","myRef","encodeURI","TextField","defaultValue","helperText","resetData","multiline","FormHelperText","onEditorChange","updateGlossary","getTime","Hijack","Dialog","aria-describedby","DialogTitle","disableTypography","DialogContent","DialogContentText","DialogActions","deleteGlossary","onDelete","GlossaryList","glossaryEntries","setGlossaryEntries","dir","updateData","tempEntries","ind","splice","currentArray","g","Glossary","getComputedStyle","documentElement","getPropertyValue","createMuiTheme","md","lg","xl","palette","secondary","danger","default","Users","Tags","Settings","FileManager","Logs","NavItems","Trash","NoMatch","App","mainRef","ax","setAx","interceptors","use","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","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.a9913924.chunk.js","sourcesContent":["const Areas = [\r\n\t{\r\n\t\t\"url\": \"article\",\r\n\t\t\"name\": \"Article\",\r\n\t\t\"plural\": \"Articles\",\r\n\t\t\"roles\": [\"article.contributor\", \"article.approver\"],\r\n\t\t\"features\": [\"hiddenDescription\", \"content\", \"redirect\", \"tags\", \"private\", \"breadcrumbs\", \"print\", \"publicList\", \"socialButtons\"]\r\n\t},\r\n\t{\r\n\t\t\"url\": \"showcase\",\r\n\t\t\"name\": \"Showcase page\",\r\n\t\t\"plural\": \"Showcase pages\",\r\n\t\t\"roles\": [\"showcase.contributor\", \"showcase.approver\"],\r\n\t\t\"features\": [\"hiddenDescription\", \"content\", \"video\", \"image\", \"tags\", \"redirect\", \"private\", \"breadcrumbs\", \"print\", \"publicList\", /*\"noChipsInSearchPreview\",*/ \"socialButtons\"]\r\n\t},\r\n\t{\r\n\t\t\"url\": \"collection\",\r\n\t\t\"name\": \"Collection\",\r\n\t\t\"plural\": \"Collections\",\r\n\t\t\"roles\": [\"collection.contributor\", \"collection.approver\"],\r\n\t\t\"features\": [\"hiddenDescription\", \"content\", \"tags\", \"items\", \"redirect\", \"private\", \"breadcrumbs\", \"print\", \"socialButtons\"]\r\n\t},\r\n\t{\r\n\t\t\"url\": \"page\",\r\n\t\t\"name\": \"Page\",\r\n\t\t\"plural\": \"Pages\",\r\n\t\t\"roles\": [\"page.contributor\", \"page.approver\"],\r\n\t\t\"features\": [\"hiddenDescription\", \"content\", \"tags\", \"redirect\", \"private\", \"breadcrumbs\", \"simplebreadcrumbs\", \"socialButtons\"]\r\n\t},\r\n\t{\r\n\t\t\"url\": \"unlisted\",\r\n\t\t\"name\": \"Unlisted page\",\r\n\t\t\"plural\": \"Unlisted pages\",\r\n\t\t\"roles\": [\"unlisted.contributor\", \"unlisted.approver\"],\r\n\t\t\"features\": [\"content\", \"redirect\", \"private\"]\r\n\t},\r\n\t{\r\n\t\t\"url\": \"template\",\r\n\t\t\"name\": \"Template\",\r\n\t\t\"plural\": \"Templates\",\r\n\t\t\"roles\": [\"admin\"],\r\n\t\t\"features\": [\"hiddenDescription\", \"content\", \"video\", \"tags\"]\r\n\t},\r\n\t{\r\n\t\t\"url\": \"search\",\r\n\t\t\"name\": \"Search Result\",\r\n\t\t\"plural\": \"Search results\",\r\n\t\t\"meta\": true,\r\n\t\t\"roles\": [],\r\n\t\t\"features\": [\"publicList\"]\r\n\t}\r\n];\r\n\r\nexport default Areas;","import { 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 \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 initSSO: (returnUrl) => {\r\n return axios.post('api/auth/sso?returnUrl=' + encodeURIComponent(returnUrl), {}, { withCredentials: true });\r\n },\r\n};\r\n\r\nfunction useAuth() {\r\n return useContext(authContext);\r\n}\r\n\r\nfunction useProvideAuth() {\r\n const updateUser = (u) => {\r\n setUser(() => {\r\n var toStore = Object.assign({}, u);\r\n delete toStore.updateUser;\r\n localStorage.setItem(\"lthub_user\", JSON.stringify(toStore));\r\n toStore.updateUser = updateUser;\r\n return toStore;\r\n });\r\n };\r\n\r\n const initSSO = (returnURL) => {\r\n return standardAuth.initSSO(returnURL).then(response => {\r\n window.location.href = response.data;\r\n return response.data;\r\n });\r\n };\r\n\r\n const [user, setUser] = useState({ \"updateUser\": updateUser, \"id\": 0 });\r\n\r\n const [init, setInit] = useState(true);\r\n var restoreUser = function () {\r\n var stored = localStorage.getItem(\"lthub_user\");\r\n updateUser(stored ? JSON.parse(stored) : null);\r\n setInit(false);\r\n };\r\n\r\n const signin = (username, password) => {\r\n return standardAuth.signin(username, password).then(response => { window.localStorage.setItem(\"lthub_has_loggedin\", \"1\"); updateUser(response.user); return response; });\r\n };\r\n\r\n const signout = (soft = false) => {\r\n if (soft) {\r\n standardAuth.isAuthenticated = false;\r\n updateUser({ id: 0 });\r\n return Promise.resolve();\r\n } else {\r\n return standardAuth.signout().then(response => {\r\n updateUser({ id: 0 });\r\n standardAuth.isAuthenticated = false;\r\n return response;\r\n });\r\n }\r\n };\r\n\r\n const ping = () => {\r\n return standardAuth.ping()\r\n .then(response => {\r\n if (response.message === \"yes\") {\r\n window.localStorage.setItem(\"lthub_has_loggedin\", \"1\");\r\n updateUser(response.user);\r\n return response.message;\r\n } else {\r\n signout(true);\r\n }\r\n })\r\n .catch(response => { signout(true); });\r\n };\r\n\r\n\r\n if (init) {\r\n restoreUser();\r\n setTimeout(ping, 2000);\r\n }\r\n\r\n return {\r\n initSSO,\r\n user,\r\n signin,\r\n signout,\r\n ping\r\n };\r\n}\r\n\r\nexport default useAuth;\r\nexport { ProvideAuth };","module.exports = __webpack_public_path__ + \"static/media/logo-horizontal.69940079.svg\";","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJQAAAA4CAYAAAAb4tFBAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDcuMS1jMDAwIDc5LmRhYmFjYmIsIDIwMjEvMDQvMTQtMDA6Mzk6NDQgICAgICAgICI+IDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+IDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCAyMy4wIChXaW5kb3dzKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo0ODNBRjAxOTRENjQxMUVDOEYxQzg3QTg5MzIyMzMwRSIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo0ODNBRjAxQTRENjQxMUVDOEYxQzg3QTg5MzIyMzMwRSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjQ4M0FGMDE3NEQ2NDExRUM4RjFDODdBODkzMjIzMzBFIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjQ4M0FGMDE4NEQ2NDExRUM4RjFDODdBODkzMjIzMzBFIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+11clbAAAE7pJREFUeNrsnQl4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\"","module.exports = __webpack_public_path__ + \"static/media/aboriginalFlag.5713c521.svg\";","module.exports = __webpack_public_path__ + \"static/media/torresFlag.3fb341e2.svg\";","import axios from 'axios';\r\n\r\nconst SettingService = {\r\n getSettings: () => {\r\n return axios.get(\"api/settings\", {}, { withCredentials: true });\r\n },\r\n updateSetting: (request) => {\r\n if (typeof request.settingValue != \"string\")\r\n request.settingValue = request.settingValue.toString();\r\n return axios.put(\"api/settings\", request, { withCredentials: true });\r\n }\r\n};\r\n\r\nexport default SettingService;","import SettingService from '../settings/SettingService.js';\r\n\r\nimport React, { useContext, useEffect, useReducer } from 'react';\r\n\r\nconst SettingsContext = React.createContext({});\r\nfunction useSettings() {\r\n return useContext(SettingsContext);\r\n}\r\nfunction useProvideSettings() {\r\n let local = localStorage.getItem(\"lthub_config\");\r\n const [settings, setSettings] = useReducer((state, newState) => ({ ...state, ...newState }), local ? JSON.parse(local) : {});\r\n\r\n var loadSettings = function () {\r\n SettingService.getSettings()\r\n .then((response) => {\r\n if ('data' in response && 'data' in response.data) {\r\n var updatedSettings = { ...settings };\r\n var anyUpdate = false;\r\n for (var name in response.data.data) {\r\n var s = response.data.data[name];\r\n if (s.name in updatedSettings) {\r\n if (updatedSettings[s.name].settingValue != s.settingValue || updatedSettings[s.name].type != s.type) {\r\n updatedSettings[s.name] = s;\r\n setSettings({ [s.name]: s });\r\n anyUpdate = true;\r\n }\r\n } else {\r\n updatedSettings[s.name] = s;\r\n setSettings({ [s.name]: s });\r\n anyUpdate = true;\r\n }\r\n }\r\n if (anyUpdate) {\r\n //setSettings(updatedSettings);\r\n localStorage.setItem(\"lthub_config\", JSON.stringify(updatedSettings));\r\n console.log(\"updated settings\", updatedSettings);\r\n } else {\r\n console.log(\"local settings up to date\");\r\n }\r\n }\r\n })\r\n .catch(function (e) {\r\n\r\n }\r\n );\r\n };\r\n useEffect(loadSettings, []);//only run once\r\n\r\n const list = () => {\r\n return [...Object.values(settings)];\r\n };\r\n const get = (name) => {\r\n if (name in settings)\r\n return settings[name].settingValue;\r\n else return 0;\r\n };\r\n const set = (setting) => {\r\n setSettings({ [setting.name]: setting });\r\n return SettingService.updateSetting(setting);\r\n };\r\n\r\n return { get, set, list };\r\n}\r\n\r\nfunction ProvideSettings({ children }) {\r\n let settings = useProvideSettings();\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n}\r\n\r\nexport default useSettings;\r\nexport { ProvideSettings };","import Page from \"./pages/Page.js\";\r\nimport Areas from './support/Areas.js';\r\nimport AppTitle from './support/AppTitle.js';\r\n\r\nimport React from 'react';\r\nimport { Helmet } from \"react-helmet\";\r\n\r\nconst Home = (props) => {\r\n return (\r\n
\r\n \r\n {AppTitle(\"\")}\r\n \r\n \r\n
\r\n );\r\n};\r\n\r\nexport default Home;","import React, { createContext, useState, useContext, useEffect } from 'react';\r\n\r\n// Create the context\r\nconst DarkModeContext = createContext();\r\n\r\n// Combined provider and logic to inject dark mode\r\nexport const DarkModeProvider = ({ children }) => {\r\n const [isDarkMode, setIsDarkMode] = useState(false);\r\n\r\n useEffect(() => {\r\n // Read the user's theme preference from localStorage on initial load\r\n const storedTheme = localStorage.getItem('theme');\r\n \r\n const isDark = storedTheme === 'dark';\r\n\r\n // Set the state based on the stored preference\r\n setIsDarkMode(isDark);\r\n\r\n }, []);\r\n\r\n useEffect(() => {\r\n // Apply or remove the dark-mode class based on isDarkMode state\r\n if (isDarkMode) {\r\n console.log(\"adding dark mode\");\r\n document.body.classList.add('dark-mode');\r\n localStorage.setItem('theme', 'dark'); // Store the theme preference\r\n } else {\r\n console.log(\"removing dark mode\");\r\n document.body.classList.remove('dark-mode');\r\n localStorage.setItem('theme', 'light'); // Store the theme preference\r\n }\r\n }, [isDarkMode]);\r\n\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n};\r\n\r\n// Custom hook to use the DarkModeContext\r\nexport const useDarkMode = () => useContext(DarkModeContext);\r\n","import React, { useEffect, useState } from 'react';\r\nimport { useDarkMode } from './DarkModeContext';\r\nimport BrightnessLowIcon from '@material-ui/icons/BrightnessLow';\r\nimport Brightness2Icon from '@material-ui/icons/Brightness2';\r\nimport IconButton from '@material-ui/core/IconButton';\r\n\r\n\r\nconst ThemeToggle = ({className }) => {\r\n const { isDarkMode, setIsDarkMode } = useDarkMode();\r\n\r\n useEffect(() => {\r\n //// Apply the dark-mode class based on the theme state\r\n //if (isDarkMode) {\r\n // document.body.classList.add('dark-mode');\r\n // localStorage.setItem('theme', 'dark');\r\n //} else {\r\n // document.body.classList.remove('dark-mode');\r\n // localStorage.setItem('theme', 'light');\r\n\r\n console.log(isDarkMode);\r\n }, [isDarkMode]);\r\n\r\n const toggleTheme = () => {\r\n setIsDarkMode(!isDarkMode);\r\n };\r\n\r\n return ( \r\n \r\n {isDarkMode ? : }\r\n \r\n );\r\n};\r\n\r\nexport default ThemeToggle;\r\n","import useAuth from \"./auth/useAuth.js\";\r\nimport Login from './auth/Login.js';\r\nimport SearchBar from './support/SearchBar.js';\r\nimport useAnalytics from './support/Analytics.js';\r\nimport useSettings from './settings/useSettings.js';\r\nimport { useDarkMode } from './support/DarkModeContext';\r\nimport NavService from './navitems/NavService.js';\r\nimport { getRoute } from './support/Hijack.js';\r\n\r\nimport logo from '../media/logo.svg';\r\nimport logowhite from '../media/logo-white.png';\r\nimport logoHorizontal from '../media/logo-horizontal.svg';\r\nimport logoHorizontalWhite from '../media/logo-horizontal-white.png';\r\n\r\nimport React, { useState, useEffect, useRef } from 'react';\r\nimport ListSubheader from '@material-ui/core/ListSubheader';\r\nimport Button from '@material-ui/core/Button';\r\nimport { useHistory } from \"react-router-dom\";\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport Toolbar from '@material-ui/core/Toolbar';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport SearchIcon from '@material-ui/icons/Search';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport PersonIcon from '@material-ui/icons/Person';\r\nimport Box from '@material-ui/core/Box';\r\nimport MenuIcon from '@material-ui/icons/Menu';\r\nimport Menu from '@material-ui/core/Menu';\r\nimport MenuItem from '@material-ui/core/MenuItem';\r\nimport { Link, useLocation } from 'react-router-dom';\r\nimport SwipeableDrawer from '@material-ui/core/SwipeableDrawer';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport Clear from '@material-ui/icons/Clear';\r\nimport KeyboardArrowDownIcon from '@material-ui/icons/KeyboardArrowDown';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport Tooltip from '@material-ui/core/Tooltip';\r\nimport SvgIcon from '@material-ui/core/SvgIcon';\r\nimport ListItemIcon from '@material-ui/core/ListItemIcon';\r\n\r\nimport ThemeToggle from './support/ThemeToggle';\r\n\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n toolbar: {\r\n borderBottom: 'none',\r\n padding: '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 menuLabelFlex: {\r\n display: \"flex\"\r\n },\r\n menuLabelIcon: {\r\n minWidth: \"32px\"\r\n },\r\n menuSubLabel: {\r\n fontSize: \".8rem\",\r\n fontWeight: 400,\r\n marginLeft: \"20px\"\r\n },\r\n menuItem: {\r\n verticalAlign: \"middle\",\r\n '&::after': {\r\n content: '\"|\"',\r\n paddingLeft: \"8px\",\r\n color: \"var(--darkBlue)\",\r\n fontSize: \"1.1em\",\r\n display: \"inline-block\",\r\n marginTop: \"-2px\"\r\n }\r\n },\r\n menuItemWithMenu: {\r\n display: \"inline-flex\",\r\n alignItems: \"center\",\r\n padding: \"0 !important\",\r\n margin: \"0 !important\",\r\n boxSizing: \"border-box\",\r\n fontSize: \"0.9rem !important\",\r\n \"&:hover\": {\r\n background: \"none\"\r\n },\r\n \"&:focus-visible\": {\r\n borderBottom: \"2px solid var(--black)\"\r\n }\r\n },\r\n menuDesc: {\r\n fontFamily: \"'Montserrat', Verdana, Geneva, sans-serif\",\r\n color: \"var(--darkGrey)\",\r\n fontSize: \".8rem\",\r\n textDecoration: \"none\",\r\n display: \"block\",\r\n margin: '0 12px 0px 12px',\r\n paddingLeft: '16px',\r\n paddingRight: '16px',\r\n minHeight: \"auto\"\r\n }, \r\n searchInputBox: { \r\n borderBottom: '2px solid var(--red)', \r\n marginTop: 0,\r\n '&::before': { \r\n borderBottom: '2px solid var(--red)'\r\n },\r\n '&::after': { \r\n borderBottom: '2px solid var(--red)'\r\n },\r\n '&::hover': { \r\n borderBottom: '2px solid var(--red)'\r\n }\r\n\r\n },\r\n sectionDesktop: {\r\n display: 'none',\r\n [theme.breakpoints.up('md')]: {\r\n display: 'block',\r\n },\r\n },\r\n sectionMobile: {\r\n display: 'block',\r\n [theme.breakpoints.up('md')]: {\r\n display: 'none',\r\n },\r\n '& > .MuiPaper-root': {\r\n padding: '1em',\r\n maxWidth: '75%',\r\n width: 'auto',\r\n display: 'block'\r\n }\r\n },\r\n navPopup: {\r\n borderTop: 'none',\r\n borderColor: 'var(--lightGrey)',\r\n paddingBottom: '15px'\r\n },\r\n b1: {\r\n display: \"flex\",\r\n justifyContent: \"space-between\"\r\n }\r\n}));\r\n\r\nexport default function NavMenu(props) {\r\n const settings = useSettings();\r\n const [showSearch, setShowSearch] = useState(false);\r\n const [anchorEl, setAnchorEl] = React.useState(null);\r\n const [whichMenu, setWhichMenu] = React.useState('');\r\n const [filter, setFilter] = React.useState('');\r\n const [login, setLogin] = useState(false);\r\n const [showLogin, setShowLogin] = useState(0);\r\n const { isDarkMode, setIsDarkMode } = useDarkMode();\r\n\r\n let auth = useAuth();\r\n const [loadingSSO, setLoadingSSO] = useState(false);\r\n const [errorMessage, setErrorMessage] = useState('');\r\n const [showError, setShowError] = useState(false);\r\n \r\n const menuRef = useRef(0);\r\n\r\n const [navItems, setNavItems] = useState(NavService.cachedList);\r\n\r\n const classes = useStyles();\r\n let location = useLocation();\r\n let history = useHistory();\r\n const analytics = useAnalytics();\r\n const { sections, title } = props;\r\n const handleShowSearch = (e) => {\r\n setShowSearch(!showSearch);\r\n };\r\n const handleClick = (e, which) => {\r\n setAnchorEl(e.currentTarget);\r\n setWhichMenu(which);\r\n }; \r\n const handleClose = (e) => {\r\n setAnchorEl(null);\r\n setMobileOpen(false);\r\n };\r\n const handleLogout = () => {\r\n auth.signout(); \r\n setAnchorEl(null);\r\n };\r\n const handleLogin = () => {\r\n setLogin(true);\r\n setAnchorEl(null);\r\n };\r\n const handleSearch = (search) => {\r\n analytics.tag('event', 'search', { search_term: search });\r\n history.push(\"/search?sort=score&filter=\" + search);\r\n setShowSearch(false);\r\n };\r\n const onLogin = (success) => {\r\n if (success) {\r\n\r\n } else {\r\n\r\n }\r\n setLogin(false);\r\n };\r\n\r\n const [lastNavTime, setLastNavTime] = useState(0);\r\n useEffect(() => {\r\n var updated = settings.get(\"Nav last updated\");\r\n if (lastNavTime != updated) {\r\n setLastNavTime(updated);\r\n NavService.getList({}, updated).then((response) => {\r\n setNavItems(response);\r\n });\r\n }\r\n }, [settings]);\r\n\r\n useEffect(() => {\r\n var pm = document.querySelectorAll(\"#popup-menu\");\r\n for (var i = 0; i < pm.length; i++) {\r\n if (pm[i] != menuRef.current) {\r\n pm[i].parentNode.removeChild(pm[i]);\r\n }\r\n }\r\n }, []);\r\n \r\n const [mobileOpen, setMobileOpen] = React.useState(false);\r\n const toggleMobile = (open) => (event) => {\r\n setMobileOpen(open);\r\n };\r\n\r\n function getReturnUrl() {\r\n var baseUrl = document.getElementsByTagName('base')[0].getAttribute('href');\r\n if (baseUrl.length > 0 && baseUrl[baseUrl.length - 1] == \"/\")//strip trailing slash\r\n baseUrl = baseUrl.slice(0, baseUrl.length - 1);\r\n const origin = window.location.origin;\r\n const urlParams = new URLSearchParams(window.location.search);\r\n const originP = urlParams.get('origin');\r\n if (originP && originP !== \"/login\") {\r\n return `${origin}${originP}`;\r\n } else {\r\n return `${origin}${baseUrl}`;\r\n }\r\n }\r\n\r\n const sso = () => {\r\n var returnUrl = getReturnUrl();\r\n setLoadingSSO(true);\r\n setTimeout(function () {\r\n auth.initSSO(returnUrl)\r\n .then((response) => {\r\n setLoadingSSO(false);\r\n setShowError(false);\r\n })\r\n .catch((error) => {\r\n console.log(error);\r\n setShowError(true);\r\n if (error.response) {\r\n setErrorMessage(error.response.data.message);\r\n }\r\n setLoadingSSO(false);\r\n });\r\n }, 500);\r\n\r\n };\r\n\r\n const renderMenuItem = (index, mobile = false) => {\r\n var el = null;\r\n var item = navItems[index];\r\n var route = item.url ? getRoute(item.url) : \"\";\r\n if (route !== false) {\r\n if (index !== navItems.length - 1 && navItems[index + 1].isChild && item.isChild == false) {\r\n if (!mobile) {\r\n //desktop heading\r\n el = ;\r\n } else {\r\n //mobile heading\r\n el = {item.name};\r\n }\r\n } else {\r\n if (!item.isChild) {\r\n if (!mobile) {\r\n //desktop main\r\n el = {item.name};\r\n } else {\r\n //mobile main\r\n el = \r\n {item.name};\r\n }\r\n } else {\r\n if (!mobile) {\r\n //desktop sub\r\n el = \r\n {item.name};\r\n } else {\r\n //mobile sub\r\n el = \r\n {item.name};\r\n }\r\n }\r\n }\r\n } else {\r\n if (!mobile) {\r\n //desktop external\r\n if (item.isChild) {\r\n el = \r\n {item.name};\r\n } else {\r\n el = {item.name};\r\n }\r\n } else {\r\n //mobile external\r\n if (item.isChild) {\r\n el = \r\n {item.name};\r\n } else {\r\n el = \r\n {item.name};\r\n }\r\n\r\n }\r\n }\r\n\r\n return el;\r\n };\r\n const renderMenu = (mobile = false) => {\r\n let out = [];\r\n if(navItems)\r\n for (var i = 0; i < navItems.length; i++) {\r\n if (mobile || !navItems[i].isChild) {\r\n out.push(renderMenuItem(i, mobile));\r\n }\r\n }\r\n return out;\r\n };\r\n const renderMenuPopup = () => {\r\n let out = [];\r\n switch (whichMenu) {\r\n case \"account\":\r\n if (auth.user?.id) {\r\n out.push(Log out);\r\n if (auth.user.id && auth.user.roles && auth.user.roles.indexOf(\"admin\") > -1) {\r\n out.push(Administration);\r\n out.push(Users);\r\n out.push(Tags);\r\n out.push(Site Settings);\r\n out.push(Page Templates);\r\n }\r\n if (auth.user.id && auth.user.roles && (auth.user.roles.indexOf(\"page.contributor\") > -1 || auth.user.roles.indexOf(\"page.approver\") > -1)) {\r\n out.push(Loose pages);\r\n }\r\n if (auth.user.id && auth.user.roles && (auth.user.roles.indexOf(\"unlisted.contributor\") > -1 || auth.user.roles.indexOf(\"unlisted.approver\") > -1)) {\r\n out.push(Unlisted pages);\r\n }\r\n if (auth.user.id && auth.user.roles && auth.user.roles.indexOf(\"admin\") > -1) {\r\n out.push(Glossary);\r\n out.push(Navigation);\r\n }\r\n \r\n if (auth.user.id && auth.user.roles && auth.user.roles.find((r) => r.endsWith(\".contributor\"))) {\r\n out.push(File Manager);\r\n }\r\n\r\n if (auth.user.id && auth.user.roles && auth.user.roles.indexOf(\"admin\") > -1) {\r\n out.push(Recycling bin);\r\n }\r\n if (auth.user.id && auth.user.roles && auth.user.roles.indexOf(\"data/reporting\") > -1) {\r\n out.push(Logs);\r\n }\r\n } else {\r\n out.push(Log in);\r\n out.push(\r\n \r\n Microsoft Sign-on\r\n {loadingSSO ? : null}\r\n );\r\n }\r\n break;\r\n default:\r\n var whichId = parseInt(whichMenu);\r\n if (!isNaN(whichId)) {\r\n for (var i = whichId + 1; i < navItems.length; i++) {\r\n if (navItems[i].isChild) {\r\n out.push(renderMenuItem(i, false));\r\n } else {\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n return out;\r\n };\r\n\r\n return (\r\n \r\n {/* DESKTOP TOOLBAR */}\r\n \r\n {/* LOGO */}\r\n \r\n \"UOW { setShowLogin(showLogin + 1); }} onTouchEnd={() => { setShowLogin(showLogin + 1); }} /> \r\n \r\n \r\n \r\n \r\n \r\n \r\n {/* MOBILE TOOLBAR */}\r\n \r\n \r\n {/* LOGO */}\r\n \r\n \"UOW { setShowLogin(showLogin + 1); }} onTouchEnd={() => { setShowLogin(showLogin + 1); }} />\r\n \r\n \r\n {/* ACCOUNT */}\r\n \r\n {/* FULL MENU */}\r\n \r\n {(showLogin > 5 || auth.user.id) ?\r\n handleClick(e, 'account')} tabIndex=\"0\">\r\n : null}\r\n \r\n {/* THEME TOGGLE */}\r\n {auth.user.id ?\r\n : null}\r\n \r\n \r\n \r\n \r\n \r\n {/* SEARCH */}\r\n {showSearch ?\r\n \r\n } /> \r\n \r\n :\r\n \r\n }\r\n \r\n \r\n \r\n \r\n {/* MENU */}\r\n \r\n {renderMenuPopup()}\r\n \r\n \r\n \r\n Menu\r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nconst MicrosoftLogo = () => {\r\n return \r\n \r\n \r\n \r\n \r\n \r\n ;\r\n};\r\n","import useSettings from '../settings/useSettings.js';\r\nimport { useEffect } from 'react';\r\n\r\nconst useSiteImprove = () => {\r\n const settings = useSettings();\r\n\r\n useEffect(() => {\r\n const siteImproveId = settings.get('SiteImprove ID');\r\n if (!siteImproveId) return;\r\n\r\n const script = document.createElement('script');\r\n script.src = `https://siteimproveanalytics.com/js/siteanalyze_${siteImproveId}.js`;\r\n script.async = true;\r\n document.body.appendChild(script);\r\n\r\n return () => {\r\n if (script.parentNode) {\r\n document.body.removeChild(script);\r\n }\r\n };\r\n }, [settings]);\r\n};\r\n\r\nexport default useSiteImprove;","import logo from '../media/logo.svg'\r\nimport logowhite from '../media/logo-white.png';\r\nimport aboriginalFlag from '../media/aboriginalFlag.svg'\r\nimport torresFlag from '../media/torresFlag.svg'\r\n\r\nimport useSettings from \"./settings/useSettings.js\";\r\nimport { useDarkMode } from './support/DarkModeContext';\r\nimport React, { useState, useEffect, useRef } from 'react';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport Box from '@material-ui/core/Box';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport { Link } from 'react-router-dom';\r\nimport useSiteImprove from './support/useSiteImprove.js';\r\n\r\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 useSiteImprove();\r\n /*const mailto = useRef();\r\n const [email, setEmail] = useState(settings.get(\"Email\") || \"ltc-central@uow.edu.au\");\r\n\r\n useEffect(() => {\r\n setEmail(settings.get(\"Email\"));\r\n mailto.current.setAttribute(\"href\", \"mailto:\" + settings.get(\"Email\"));\r\n }, [settings]);*/\r\n return (\r\n \r\n \r\n \r\n Contact Learning, Teaching & Curriculum\r\n

\r\n 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 return area.features.indexOf(\"publicList\") !== -1 ||\r\n (auth.user.id && auth.user?.roles && area.roles.some(r => auth.user.roles.indexOf(r) !== -1));\r\n }\r\n\r\n return (\r\n \r\n {Areas.map((value, index) => {\r\n return (\r\n \r\n {hasAccess(value) ? : }\r\n \r\n );\r\n })}\r\n {Areas.map((value, index) => {\r\n return (\r\n \r\n \r\n \r\n );\r\n })}\r\n \r\n );\r\n};\r\n\r\n\r\n//this can only be run through router. pages themselves need to be rendered independently of the router\r\nconst PageManager = (props) => {\r\n const [Area, setArea] = useState(props?.area);\r\n let match = useRouteMatch();\r\n return (\r\n \r\n \r\n \r\n \r\n\r\n \r\n }>\r\n \r\n \r\n );\r\n};\r\n\r\nexport default Pages;\r\n","import AppTitle from '../support/AppTitle.js';\r\nimport useAuth from \"../auth/useAuth.js\";\r\nimport Hijack from '../support/Hijack.js';\r\nimport useSettings from \"../settings/useSettings.js\";\r\nimport GlossaryService from '../glossary/GlossaryService.js';\r\n\r\nimport React, { useState, useEffect, useReducer, useRef, lazy, Suspense } from 'react';\r\nimport EditIcon from '@material-ui/icons/Edit';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport Box from '@material-ui/core/Box';\r\nimport Tooltip from '@material-ui/core/Tooltip';\r\nimport AddIcon from '@material-ui/icons/Add';\r\nimport Button from '@material-ui/core/Button';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport Check from '@material-ui/icons/Check';\r\nimport Alert from '@material-ui/lab/Alert';\r\nimport DeleteForeverIcon from '@material-ui/icons/DeleteForever';\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogContentText from '@material-ui/core/DialogContentText';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport { FormHelperText } from '@material-ui/core';\r\nimport { useLocation } from 'react-router-dom';\r\nimport { Helmet } from \"react-helmet\";\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\n\r\nconst RichTextEditor = lazy(() => import('../support/RichTextEditor.js'));\r\n\r\nconst Glossary = () => {\r\n return (\r\n \r\n );\r\n};\r\n\r\nconst EditForm = (props) => {\r\n const [errors, setErrors] = useState({});\r\n const [error, setError] = useState(null);\r\n const [entry, setEntry] = useReducer((state, newState) => ({ ...state, ...newState }), props.entry);\r\n const updateField = (field, value) => { setEntry({ [field]: value }); }\r\n const handleInput = (e) => { updateField(e.target.name, e.target.value); };\r\n const [isEditing, setIsEditing] = useState((entry.id == 0));\r\n const [open, setOpen] = useState(false);\r\n const myRef = useRef(null);\r\n const contentRef = useRef(null);\r\n const settings = useSettings();\r\n let location = useLocation();\r\n useEffect(() => {\r\n if (location.hash.toLowerCase() == encodeURI((\"#\" + entry.name).toLowerCase())) {\r\n myRef.current.scrollIntoView(true);\r\n }\r\n \r\n }, [location]);\r\n\r\n\r\n const showEditForm = () => {\r\n setIsEditing(!isEditing);\r\n }\r\n const handleCancel = () => {\r\n props.resetData();\r\n setIsEditing(false);\r\n\r\n }\r\n const handleSave = (e) => {\r\n if (e) e.preventDefault(); \r\n return GlossaryService.updateGlossary(entry).then((response) => { \r\n settings.set({ \"name\": \"Glossary last updated\", \"settingValue\": (new Date()).getTime() });\r\n props.resetData();\r\n setIsEditing(false);\r\n }).catch((error) => {\r\n if ('response' in error && 'data' in error.response) {\r\n setError(error.response.data.title);\r\n setErrors(error.response.data.errors);\r\n }\r\n });\r\n };\r\n const handleDelete = (entry) => {\r\n GlossaryService.deleteGlossary(entry).then((response) => {\r\n props.onDelete(entry);\r\n settings.set({ \"name\": \"Glossary last updated\", \"settingValue\": (new Date()).getTime() });\r\n setOpen(false);\r\n });\r\n };\r\n const showConfirmDialog = () => {\r\n setOpen(true);\r\n };\r\n const handleClose = () => {\r\n setOpen(false);\r\n };\r\n\r\n return (\r\n
\r\n {isEditing ?\r\n
\r\n

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

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

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

\r\n

{entry.description}

\r\n

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

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

Glossary {canContribute ? : }

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