{"version":3,"file":"static/chunks/pages/research/theses-bf0492bfd8372a5d.js","mappings":"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","sources":["webpack://_N_E/./node_modules/@mui/material/esm/ListItemIcon/ListItemIcon.js","webpack://_N_E/./node_modules/@mui/material/esm/ListItemIcon/listItemIconClasses.js","webpack://_N_E/./node_modules/@mui/material/esm/Skeleton/Skeleton.js","webpack://_N_E/./node_modules/@mui/material/esm/Skeleton/skeletonClasses.js","webpack://_N_E/./node_modules/@mui/material/esm/styles/cssUtils.js","webpack://_N_E/?86aa","webpack://_N_E/./component/MoreResources.jsx","webpack://_N_E/./component/NextBreadcrumbs.jsx","webpack://_N_E/./pages/research/theses.js","webpack://_N_E/"],"sourcesContent":["import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"className\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport { getListItemIconUtilityClass } from './listItemIconClasses';\nimport ListContext from '../List/ListContext';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n alignItems,\n classes\n } = ownerState;\n const slots = {\n root: ['root', alignItems === 'flex-start' && 'alignItemsFlexStart']\n };\n return composeClasses(slots, getListItemIconUtilityClass, classes);\n};\nconst ListItemIconRoot = styled('div', {\n name: 'MuiListItemIcon',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, ownerState.alignItems === 'flex-start' && styles.alignItemsFlexStart];\n }\n})(({\n theme,\n ownerState\n}) => _extends({\n minWidth: 56,\n color: (theme.vars || theme).palette.action.active,\n flexShrink: 0,\n display: 'inline-flex'\n}, ownerState.alignItems === 'flex-start' && {\n marginTop: 8\n}));\n\n/**\n * A simple wrapper to apply `List` styles to an `Icon` or `SvgIcon`.\n */\nconst ListItemIcon = /*#__PURE__*/React.forwardRef(function ListItemIcon(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiListItemIcon'\n });\n const {\n className\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const context = React.useContext(ListContext);\n const ownerState = _extends({}, props, {\n alignItems: context.alignItems\n });\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsx(ListItemIconRoot, _extends({\n className: clsx(classes.root, className),\n ownerState: ownerState,\n ref: ref\n }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? ListItemIcon.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * The content of the component, normally `Icon`, `SvgIcon`,\n * or a `@mui/icons-material` SVG icon element.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default ListItemIcon;","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getListItemIconUtilityClass(slot) {\n return generateUtilityClass('MuiListItemIcon', slot);\n}\nconst listItemIconClasses = generateUtilityClasses('MuiListItemIcon', ['root', 'alignItemsFlexStart']);\nexport default listItemIconClasses;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"animation\", \"className\", \"component\", \"height\", \"style\", \"variant\", \"width\"];\nlet _ = t => t,\n _t,\n _t2,\n _t3,\n _t4;\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport PropTypes from 'prop-types';\nimport { keyframes, css } from '@mui/system';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport { alpha, unstable_getUnit as getUnit, unstable_toUnitless as toUnitless } from '../styles';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport { getSkeletonUtilityClass } from './skeletonClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n variant,\n animation,\n hasChildren,\n width,\n height\n } = ownerState;\n const slots = {\n root: ['root', variant, animation, hasChildren && 'withChildren', hasChildren && !width && 'fitContent', hasChildren && !height && 'heightAuto']\n };\n return composeClasses(slots, getSkeletonUtilityClass, classes);\n};\nconst pulseKeyframe = keyframes(_t || (_t = _`\n 0% {\n opacity: 1;\n }\n\n 50% {\n opacity: 0.4;\n }\n\n 100% {\n opacity: 1;\n }\n`));\nconst waveKeyframe = keyframes(_t2 || (_t2 = _`\n 0% {\n transform: translateX(-100%);\n }\n\n 50% {\n /* +0.5s of delay between each loop */\n transform: translateX(100%);\n }\n\n 100% {\n transform: translateX(100%);\n }\n`));\nconst SkeletonRoot = styled('span', {\n name: 'MuiSkeleton',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, styles[ownerState.variant], ownerState.animation !== false && styles[ownerState.animation], ownerState.hasChildren && styles.withChildren, ownerState.hasChildren && !ownerState.width && styles.fitContent, ownerState.hasChildren && !ownerState.height && styles.heightAuto];\n }\n})(({\n theme,\n ownerState\n}) => {\n const radiusUnit = getUnit(theme.shape.borderRadius) || 'px';\n const radiusValue = toUnitless(theme.shape.borderRadius);\n return _extends({\n display: 'block',\n // Create a \"on paper\" color with sufficient contrast retaining the color\n backgroundColor: theme.vars ? theme.vars.palette.Skeleton.bg : alpha(theme.palette.text.primary, theme.palette.mode === 'light' ? 0.11 : 0.13),\n height: '1.2em'\n }, ownerState.variant === 'text' && {\n marginTop: 0,\n marginBottom: 0,\n height: 'auto',\n transformOrigin: '0 55%',\n transform: 'scale(1, 0.60)',\n borderRadius: `${radiusValue}${radiusUnit}/${Math.round(radiusValue / 0.6 * 10) / 10}${radiusUnit}`,\n '&:empty:before': {\n content: '\"\\\\00a0\"'\n }\n }, ownerState.variant === 'circular' && {\n borderRadius: '50%'\n }, ownerState.variant === 'rounded' && {\n borderRadius: (theme.vars || theme).shape.borderRadius\n }, ownerState.hasChildren && {\n '& > *': {\n visibility: 'hidden'\n }\n }, ownerState.hasChildren && !ownerState.width && {\n maxWidth: 'fit-content'\n }, ownerState.hasChildren && !ownerState.height && {\n height: 'auto'\n });\n}, ({\n ownerState\n}) => ownerState.animation === 'pulse' && css(_t3 || (_t3 = _`\n animation: ${0} 1.5s ease-in-out 0.5s infinite;\n `), pulseKeyframe), ({\n ownerState,\n theme\n}) => ownerState.animation === 'wave' && css(_t4 || (_t4 = _`\n position: relative;\n overflow: hidden;\n\n /* Fix bug in Safari https://bugs.webkit.org/show_bug.cgi?id=68196 */\n -webkit-mask-image: -webkit-radial-gradient(white, black);\n\n &::after {\n animation: ${0} 1.6s linear 0.5s infinite;\n background: linear-gradient(\n 90deg,\n transparent,\n ${0},\n transparent\n );\n content: '';\n position: absolute;\n transform: translateX(-100%); /* Avoid flash during server-side hydration */\n bottom: 0;\n left: 0;\n right: 0;\n top: 0;\n }\n `), waveKeyframe, (theme.vars || theme).palette.action.hover));\nconst Skeleton = /*#__PURE__*/React.forwardRef(function Skeleton(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiSkeleton'\n });\n const {\n animation = 'pulse',\n className,\n component = 'span',\n height,\n style,\n variant = 'text',\n width\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const ownerState = _extends({}, props, {\n animation,\n component,\n variant,\n hasChildren: Boolean(other.children)\n });\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsx(SkeletonRoot, _extends({\n as: component,\n ref: ref,\n className: clsx(classes.root, className),\n ownerState: ownerState\n }, other, {\n style: _extends({\n width,\n height\n }, style)\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Skeleton.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * The animation.\n * If `false` the animation effect is disabled.\n * @default 'pulse'\n */\n animation: PropTypes.oneOf(['pulse', 'wave', false]),\n /**\n * Optional children to infer width and height from.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n /**\n * Height of the skeleton.\n * Useful when you don't want to adapt the skeleton to a text element but for instance a card.\n */\n height: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n /**\n * @ignore\n */\n style: PropTypes.object,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * The type of content that will be rendered.\n * @default 'text'\n */\n variant: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['circular', 'rectangular', 'rounded', 'text']), PropTypes.string]),\n /**\n * Width of the skeleton.\n * Useful when the skeleton is inside an inline element with no width of its own.\n */\n width: PropTypes.oneOfType([PropTypes.number, PropTypes.string])\n} : void 0;\nexport default Skeleton;","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getSkeletonUtilityClass(slot) {\n return generateUtilityClass('MuiSkeleton', slot);\n}\nconst skeletonClasses = generateUtilityClasses('MuiSkeleton', ['root', 'text', 'rectangular', 'rounded', 'circular', 'pulse', 'wave', 'withChildren', 'fitContent', 'heightAuto']);\nexport default skeletonClasses;","export function isUnitless(value) {\n return String(parseFloat(value)).length === String(value).length;\n}\n\n// Ported from Compass\n// https://github.com/Compass/compass/blob/master/core/stylesheets/compass/typography/_units.scss\n// Emulate the sass function \"unit\"\nexport function getUnit(input) {\n return String(input).match(/[\\d.\\-+]*\\s*(.*)/)[1] || '';\n}\n\n// Emulate the sass function \"unitless\"\nexport function toUnitless(length) {\n return parseFloat(length);\n}\n\n// Convert any CSS or value to any another.\n// From https://github.com/KyleAMathews/convert-css-length\nexport function convertLength(baseFontSize) {\n return (length, toUnit) => {\n const fromUnit = getUnit(length);\n\n // Optimize for cases where `from` and `to` units are accidentally the same.\n if (fromUnit === toUnit) {\n return length;\n }\n\n // Convert input length to pixels.\n let pxLength = toUnitless(length);\n if (fromUnit !== 'px') {\n if (fromUnit === 'em') {\n pxLength = toUnitless(length) * toUnitless(baseFontSize);\n } else if (fromUnit === 'rem') {\n pxLength = toUnitless(length) * toUnitless(baseFontSize);\n }\n }\n\n // Convert length in pixels to the output unit\n let outputLength = pxLength;\n if (toUnit !== 'px') {\n if (toUnit === 'em') {\n outputLength = pxLength / toUnitless(baseFontSize);\n } else if (toUnit === 'rem') {\n outputLength = pxLength / toUnitless(baseFontSize);\n } else {\n return length;\n }\n }\n return parseFloat(outputLength.toFixed(5)) + toUnit;\n };\n}\nexport function alignProperty({\n size,\n grid\n}) {\n const sizeBelow = size - size % grid;\n const sizeAbove = sizeBelow + grid;\n return size - sizeBelow < sizeAbove - size ? sizeBelow : sizeAbove;\n}\n\n// fontGrid finds a minimal grid (in rem) for the fontSize values so that the\n// lineHeight falls under a x pixels grid, 4px in the case of Material Design,\n// without changing the relative line height\nexport function fontGrid({\n lineHeight,\n pixels,\n htmlFontSize\n}) {\n return pixels / (lineHeight * htmlFontSize);\n}\n\n/**\n * generate a responsive version of a given CSS property\n * @example\n * responsiveProperty({\n * cssProperty: 'fontSize',\n * min: 15,\n * max: 20,\n * unit: 'px',\n * breakpoints: [300, 600],\n * })\n *\n * // this returns\n *\n * {\n * fontSize: '15px',\n * '@media (min-width:300px)': {\n * fontSize: '17.5px',\n * },\n * '@media (min-width:600px)': {\n * fontSize: '20px',\n * },\n * }\n * @param {Object} params\n * @param {string} params.cssProperty - The CSS property to be made responsive\n * @param {number} params.min - The smallest value of the CSS property\n * @param {number} params.max - The largest value of the CSS property\n * @param {string} [params.unit] - The unit to be used for the CSS property\n * @param {Array.number} [params.breakpoints] - An array of breakpoints\n * @param {number} [params.alignStep] - Round scaled value to fall under this grid\n * @returns {Object} responsive styles for {params.cssProperty}\n */\nexport function responsiveProperty({\n cssProperty,\n min,\n max,\n unit = 'rem',\n breakpoints = [600, 900, 1200],\n transform = null\n}) {\n const output = {\n [cssProperty]: `${min}${unit}`\n };\n const factor = (max - min) / breakpoints[breakpoints.length - 1];\n breakpoints.forEach(breakpoint => {\n let value = min + factor * breakpoint;\n if (transform !== null) {\n value = transform(value);\n }\n output[`@media (min-width:${breakpoint}px)`] = {\n [cssProperty]: `${Math.round(value * 10000) / 10000}${unit}`\n };\n });\n return output;\n}","\n (window.__NEXT_P = window.__NEXT_P || []).push([\n \"/research/theses\",\n function () {\n return require(\"private-next-pages/research/theses.js\");\n }\n ]);\n if(module.hot) {\n module.hot.dispose(function () {\n window.__NEXT_P.push([\"/research/theses\"])\n });\n }\n ","import {\n Card,\n CardContent,\n CardMedia,\n Typography,\n CardActionArea,\n Container,\n Grid,\n} from \"@mui/material\";\nimport moment from \"moment-timezone\";\nimport { useState, useEffect } from \"react\";\n\nconst SHOW_RESOURCES = 3;\n\nconst getInitials = (name, separator = \" \") => {\n return name\n .split(separator)\n .map((part) => part[0]?.toUpperCase() || \"\")\n .join(\"\");\n};\n\nconst truncateContent = (content, maxLength) => {\n const text = content.replace(/<[^>]+>/g, \"\"); // Strip HTML tags\n return text.length > maxLength ? `${text.substring(0, maxLength)}...` : text;\n};\n\nconst MoreResources = ({ filterId = [] }) => {\n const [resources, setResources] = useState([]);\n const [hasFetched, setHasFetched] = useState(false);\n\n useEffect(() => {\n if (!hasFetched) {\n const fetchResources = async () => {\n try {\n const response = await fetch(\"/api/getBlogPosts\");\n const data = await response.json();\n const filteredResources = data\n .filter((item) => !filterId.includes(item.id))\n .sort(() => 0.5 - Math.random())\n .slice(0, SHOW_RESOURCES);\n setResources(filteredResources);\n } catch (error) {\n console.error(\"Failed to fetch resources:\", error);\n }\n };\n\n fetchResources();\n setHasFetched(true); // Ensure fetch only happens once\n }\n }, [filterId, hasFetched]); // `filterId` ensures the fetch updates if `filterId` changes\n\n return (\n \n \n Read Next\n \n \n {resources.map((resource, idx) => (\n \n \n \n {resource.images?.length > 0 ? (\n \n ) : (\n \n )}\n \n \n {resource.title}\n \n \n {resource.author.displayName ||\n getInitials(resource.author.name)}\n \n \n {console.log(JSON.stringify(resource))}\n \n \n {moment(resource.published).fromNow()}\n \n \n \n \n \n ))}\n \n \n );\n};\n\nexport default MoreResources;\n","import React, { useEffect, useState } from \"react\";\nimport { useRouter } from \"next/router\";\nimport Link from \"next/link\";\nimport { Breadcrumbs, Typography } from \"@mui/material\";\nimport { ConvertPathText } from \"./Utils/utils\";\n\nconst NextBreadcrumbs = ({ title }) => {\n const router = useRouter();\n const [breadcrumbs, setBreadcrumbs] = useState(null);\n\n useEffect(() => {\n if (router) {\n const linkPath = router.asPath.split(\"/\");\n linkPath.shift();\n const pathArray = linkPath.map((path, i) => {\n return {\n breadcrumb: path,\n href: \"/\" + linkPath.slice(0, i + 1).join(\"/\"),\n };\n });\n setBreadcrumbs(pathArray);\n }\n }, [router]);\n\n if (!breadcrumbs) {\n return null;\n }\n const breadcrumbsLength = breadcrumbs.length;\n return (\n \n \n Home\n \n {breadcrumbs.map((breadcrumb, i) => {\n // const text = convertBreadcrumb(breadcrumb.breadcrumb);\n const text = ConvertPathText(breadcrumb.breadcrumb);\n if (breadcrumbsLength - 1 == i) {\n return (\n \n {title ? title : text}\n \n );\n }\n return (\n \n {text}\n \n );\n })}\n \n );\n};\n\nexport default NextBreadcrumbs;\n","import { Typography, Container, Box, Paper, ListItem, List, ListItemIcon, ListItemText, Divider, CircularProgress, Button, ButtonGroup, Skeleton } from \"@mui/material\";\nimport NextBreadcrumbs from \"../../component/NextBreadcrumbs\";\nimport Page from \"../../component/Page\";\nimport React, { useEffect, useState } from \"react\";\nimport MoreResources from \"../../component/MoreResources\";\n\nconst Theses = () => {\n const [data, setData] = useState(null);\n\n useEffect(() => {\n fetch(\"/api/getResearches\").then(res => res.json()).then(json => {\n const data = { theses: {} };\n for (const t of json?.theses) {\n const year = t?.year;\n if (year && !(year in data.theses)) {\n data.theses[year] = [];\n }\n if (t?.thesis) {\n data.theses[year].push({ honor: t?.honor !== \"FALSE\", thesis: t?.thesis });\n }\n }\n setData(data);\n })\n\n }, []);\n\n const l = [];\n if (data !== null) {\n const theses = data?.theses;\n for (const year in theses) {\n l.push(\n \n \n {year}\n \n {theses[year].map(\n (i, idx) =>\n \n \n \n {i.honor && HONOR\n }\n \n \n {i.thesis}\n \n \n \n\n )}\n\n \n )\n }\n }\n\n\n return (\n \n \n \n Theses\n \n \n \n \n \n {l.length > 0 ? \n {l}\n :\n <>\n \n {[...Array(6)].map((_, idx) => (\n \n \n \n ))}\n \n \n }\n\n \n \n\n \n \n );\n}\n\n\n\nexport default Theses;","(self[\"webpackChunk_N_E\"] = self[\"webpackChunk_N_E\"] || []).push([[3865],{\n\n/***/ 9894:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var _babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(3366);\n/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(7462);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(7294);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(6010);\n/* harmony import */ var _mui_base__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(8510);\n/* harmony import */ var _styles_styled__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(1719);\n/* harmony import */ var _styles_useThemeProps__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(8884);\n/* harmony import */ var _listItemIconClasses__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(8164);\n/* harmony import */ var _List_ListContext__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(7742);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(5893);\n\n\nconst _excluded = [\"className\"];\n\n\n\n\n\n\n\n\n\nconst useUtilityClasses = ownerState => {\n const {\n alignItems,\n classes\n } = ownerState;\n const slots = {\n root: ['root', alignItems === 'flex-start' && 'alignItemsFlexStart']\n };\n return (0,_mui_base__WEBPACK_IMPORTED_MODULE_2__/* [\"default\"] */ .Z)(slots, _listItemIconClasses__WEBPACK_IMPORTED_MODULE_3__/* .getListItemIconUtilityClass */ .f, classes);\n};\nconst ListItemIconRoot = (0,_styles_styled__WEBPACK_IMPORTED_MODULE_4__/* [\"default\"] */ .ZP)('div', {\n name: 'MuiListItemIcon',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, ownerState.alignItems === 'flex-start' && styles.alignItemsFlexStart];\n }\n})(({\n theme,\n ownerState\n}) => (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_5__/* [\"default\"] */ .Z)({\n minWidth: 56,\n color: (theme.vars || theme).palette.action.active,\n flexShrink: 0,\n display: 'inline-flex'\n}, ownerState.alignItems === 'flex-start' && {\n marginTop: 8\n}));\n\n/**\n * A simple wrapper to apply `List` styles to an `Icon` or `SvgIcon`.\n */\nconst ListItemIcon = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.forwardRef(function ListItemIcon(inProps, ref) {\n const props = (0,_styles_useThemeProps__WEBPACK_IMPORTED_MODULE_6__/* [\"default\"] */ .Z)({\n props: inProps,\n name: 'MuiListItemIcon'\n });\n const {\n className\n } = props,\n other = (0,_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_7__/* [\"default\"] */ .Z)(props, _excluded);\n const context = react__WEBPACK_IMPORTED_MODULE_0__.useContext(_List_ListContext__WEBPACK_IMPORTED_MODULE_8__/* [\"default\"] */ .Z);\n const ownerState = (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_5__/* [\"default\"] */ .Z)({}, props, {\n alignItems: context.alignItems\n });\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(ListItemIconRoot, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_5__/* [\"default\"] */ .Z)({\n className: (0,clsx__WEBPACK_IMPORTED_MODULE_9__/* [\"default\"] */ .Z)(classes.root, className),\n ownerState: ownerState,\n ref: ref\n }, other));\n});\n false ? 0 : void 0;\n/* harmony default export */ __webpack_exports__[\"Z\"] = (ListItemIcon);\n\n/***/ }),\n\n/***/ 8164:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"f\": function() { return /* binding */ getListItemIconUtilityClass; }\n/* harmony export */ });\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(1977);\n/* harmony import */ var _generateUtilityClass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(5463);\n\n\nfunction getListItemIconUtilityClass(slot) {\n return (0,_generateUtilityClass__WEBPACK_IMPORTED_MODULE_0__/* [\"default\"] */ .ZP)('MuiListItemIcon', slot);\n}\nconst listItemIconClasses = (0,_mui_utils__WEBPACK_IMPORTED_MODULE_1__/* [\"default\"] */ .Z)('MuiListItemIcon', ['root', 'alignItemsFlexStart']);\n/* harmony default export */ __webpack_exports__[\"Z\"] = (listItemIconClasses);\n\n/***/ }),\n\n/***/ 8304:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var _babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(3366);\n/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(7462);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(7294);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(6010);\n/* harmony import */ var _mui_system__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(917);\n/* harmony import */ var _mui_base__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(8510);\n/* harmony import */ var _styles__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(702);\n/* harmony import */ var _styles__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(1796);\n/* harmony import */ var _styles_styled__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(1719);\n/* harmony import */ var _styles_useThemeProps__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(8884);\n/* harmony import */ var _skeletonClasses__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(6025);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(5893);\n\n\nconst _excluded = [\"animation\", \"className\", \"component\", \"height\", \"style\", \"variant\", \"width\"];\nlet _ = t => t,\n _t,\n _t2,\n _t3,\n _t4;\n\n\n\n\n\n\n\n\n\n\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n variant,\n animation,\n hasChildren,\n width,\n height\n } = ownerState;\n const slots = {\n root: ['root', variant, animation, hasChildren && 'withChildren', hasChildren && !width && 'fitContent', hasChildren && !height && 'heightAuto']\n };\n return (0,_mui_base__WEBPACK_IMPORTED_MODULE_2__/* [\"default\"] */ .Z)(slots, _skeletonClasses__WEBPACK_IMPORTED_MODULE_3__/* .getSkeletonUtilityClass */ .B, classes);\n};\nconst pulseKeyframe = (0,_mui_system__WEBPACK_IMPORTED_MODULE_4__/* .keyframes */ .F4)(_t || (_t = _`\n 0% {\n opacity: 1;\n }\n\n 50% {\n opacity: 0.4;\n }\n\n 100% {\n opacity: 1;\n }\n`));\nconst waveKeyframe = (0,_mui_system__WEBPACK_IMPORTED_MODULE_4__/* .keyframes */ .F4)(_t2 || (_t2 = _`\n 0% {\n transform: translateX(-100%);\n }\n\n 50% {\n /* +0.5s of delay between each loop */\n transform: translateX(100%);\n }\n\n 100% {\n transform: translateX(100%);\n }\n`));\nconst SkeletonRoot = (0,_styles_styled__WEBPACK_IMPORTED_MODULE_5__/* [\"default\"] */ .ZP)('span', {\n name: 'MuiSkeleton',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, styles[ownerState.variant], ownerState.animation !== false && styles[ownerState.animation], ownerState.hasChildren && styles.withChildren, ownerState.hasChildren && !ownerState.width && styles.fitContent, ownerState.hasChildren && !ownerState.height && styles.heightAuto];\n }\n})(({\n theme,\n ownerState\n}) => {\n const radiusUnit = (0,_styles__WEBPACK_IMPORTED_MODULE_6__/* .getUnit */ .Wy)(theme.shape.borderRadius) || 'px';\n const radiusValue = (0,_styles__WEBPACK_IMPORTED_MODULE_6__/* .toUnitless */ .YL)(theme.shape.borderRadius);\n return (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_7__/* [\"default\"] */ .Z)({\n display: 'block',\n // Create a \"on paper\" color with sufficient contrast retaining the color\n backgroundColor: theme.vars ? theme.vars.palette.Skeleton.bg : (0,_styles__WEBPACK_IMPORTED_MODULE_8__/* .alpha */ .Fq)(theme.palette.text.primary, theme.palette.mode === 'light' ? 0.11 : 0.13),\n height: '1.2em'\n }, ownerState.variant === 'text' && {\n marginTop: 0,\n marginBottom: 0,\n height: 'auto',\n transformOrigin: '0 55%',\n transform: 'scale(1, 0.60)',\n borderRadius: `${radiusValue}${radiusUnit}/${Math.round(radiusValue / 0.6 * 10) / 10}${radiusUnit}`,\n '&:empty:before': {\n content: '\"\\\\00a0\"'\n }\n }, ownerState.variant === 'circular' && {\n borderRadius: '50%'\n }, ownerState.variant === 'rounded' && {\n borderRadius: (theme.vars || theme).shape.borderRadius\n }, ownerState.hasChildren && {\n '& > *': {\n visibility: 'hidden'\n }\n }, ownerState.hasChildren && !ownerState.width && {\n maxWidth: 'fit-content'\n }, ownerState.hasChildren && !ownerState.height && {\n height: 'auto'\n });\n}, ({\n ownerState\n}) => ownerState.animation === 'pulse' && (0,_mui_system__WEBPACK_IMPORTED_MODULE_4__/* .css */ .iv)(_t3 || (_t3 = _`\n animation: ${0} 1.5s ease-in-out 0.5s infinite;\n `), pulseKeyframe), ({\n ownerState,\n theme\n}) => ownerState.animation === 'wave' && (0,_mui_system__WEBPACK_IMPORTED_MODULE_4__/* .css */ .iv)(_t4 || (_t4 = _`\n position: relative;\n overflow: hidden;\n\n /* Fix bug in Safari https://bugs.webkit.org/show_bug.cgi?id=68196 */\n -webkit-mask-image: -webkit-radial-gradient(white, black);\n\n &::after {\n animation: ${0} 1.6s linear 0.5s infinite;\n background: linear-gradient(\n 90deg,\n transparent,\n ${0},\n transparent\n );\n content: '';\n position: absolute;\n transform: translateX(-100%); /* Avoid flash during server-side hydration */\n bottom: 0;\n left: 0;\n right: 0;\n top: 0;\n }\n `), waveKeyframe, (theme.vars || theme).palette.action.hover));\nconst Skeleton = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.forwardRef(function Skeleton(inProps, ref) {\n const props = (0,_styles_useThemeProps__WEBPACK_IMPORTED_MODULE_9__/* [\"default\"] */ .Z)({\n props: inProps,\n name: 'MuiSkeleton'\n });\n const {\n animation = 'pulse',\n className,\n component = 'span',\n height,\n style,\n variant = 'text',\n width\n } = props,\n other = (0,_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_10__/* [\"default\"] */ .Z)(props, _excluded);\n const ownerState = (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_7__/* [\"default\"] */ .Z)({}, props, {\n animation,\n component,\n variant,\n hasChildren: Boolean(other.children)\n });\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(SkeletonRoot, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_7__/* [\"default\"] */ .Z)({\n as: component,\n ref: ref,\n className: (0,clsx__WEBPACK_IMPORTED_MODULE_11__/* [\"default\"] */ .Z)(classes.root, className),\n ownerState: ownerState\n }, other, {\n style: (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_7__/* [\"default\"] */ .Z)({\n width,\n height\n }, style)\n }));\n});\n false ? 0 : void 0;\n/* harmony default export */ __webpack_exports__[\"Z\"] = (Skeleton);\n\n/***/ }),\n\n/***/ 6025:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"B\": function() { return /* binding */ getSkeletonUtilityClass; }\n/* harmony export */ });\n/* harmony import */ var _mui_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(1977);\n/* harmony import */ var _generateUtilityClass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(5463);\n\n\nfunction getSkeletonUtilityClass(slot) {\n return (0,_generateUtilityClass__WEBPACK_IMPORTED_MODULE_0__/* [\"default\"] */ .ZP)('MuiSkeleton', slot);\n}\nconst skeletonClasses = (0,_mui_utils__WEBPACK_IMPORTED_MODULE_1__/* [\"default\"] */ .Z)('MuiSkeleton', ['root', 'text', 'rectangular', 'rounded', 'circular', 'pulse', 'wave', 'withChildren', 'fitContent', 'heightAuto']);\n/* harmony default export */ __webpack_exports__[\"Z\"] = (skeletonClasses);\n\n/***/ }),\n\n/***/ 702:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"LV\": function() { return /* binding */ alignProperty; },\n/* harmony export */ \"Wy\": function() { return /* binding */ getUnit; },\n/* harmony export */ \"YL\": function() { return /* binding */ toUnitless; },\n/* harmony export */ \"dA\": function() { return /* binding */ isUnitless; },\n/* harmony export */ \"vY\": function() { return /* binding */ fontGrid; },\n/* harmony export */ \"vs\": function() { return /* binding */ convertLength; },\n/* harmony export */ \"ze\": function() { return /* binding */ responsiveProperty; }\n/* harmony export */ });\nfunction isUnitless(value) {\n return String(parseFloat(value)).length === String(value).length;\n}\n\n// Ported from Compass\n// https://github.com/Compass/compass/blob/master/core/stylesheets/compass/typography/_units.scss\n// Emulate the sass function \"unit\"\nfunction getUnit(input) {\n return String(input).match(/[\\d.\\-+]*\\s*(.*)/)[1] || '';\n}\n\n// Emulate the sass function \"unitless\"\nfunction toUnitless(length) {\n return parseFloat(length);\n}\n\n// Convert any CSS or value to any another.\n// From https://github.com/KyleAMathews/convert-css-length\nfunction convertLength(baseFontSize) {\n return (length, toUnit) => {\n const fromUnit = getUnit(length);\n\n // Optimize for cases where `from` and `to` units are accidentally the same.\n if (fromUnit === toUnit) {\n return length;\n }\n\n // Convert input length to pixels.\n let pxLength = toUnitless(length);\n if (fromUnit !== 'px') {\n if (fromUnit === 'em') {\n pxLength = toUnitless(length) * toUnitless(baseFontSize);\n } else if (fromUnit === 'rem') {\n pxLength = toUnitless(length) * toUnitless(baseFontSize);\n }\n }\n\n // Convert length in pixels to the output unit\n let outputLength = pxLength;\n if (toUnit !== 'px') {\n if (toUnit === 'em') {\n outputLength = pxLength / toUnitless(baseFontSize);\n } else if (toUnit === 'rem') {\n outputLength = pxLength / toUnitless(baseFontSize);\n } else {\n return length;\n }\n }\n return parseFloat(outputLength.toFixed(5)) + toUnit;\n };\n}\nfunction alignProperty({\n size,\n grid\n}) {\n const sizeBelow = size - size % grid;\n const sizeAbove = sizeBelow + grid;\n return size - sizeBelow < sizeAbove - size ? sizeBelow : sizeAbove;\n}\n\n// fontGrid finds a minimal grid (in rem) for the fontSize values so that the\n// lineHeight falls under a x pixels grid, 4px in the case of Material Design,\n// without changing the relative line height\nfunction fontGrid({\n lineHeight,\n pixels,\n htmlFontSize\n}) {\n return pixels / (lineHeight * htmlFontSize);\n}\n\n/**\n * generate a responsive version of a given CSS property\n * @example\n * responsiveProperty({\n * cssProperty: 'fontSize',\n * min: 15,\n * max: 20,\n * unit: 'px',\n * breakpoints: [300, 600],\n * })\n *\n * // this returns\n *\n * {\n * fontSize: '15px',\n * '@media (min-width:300px)': {\n * fontSize: '17.5px',\n * },\n * '@media (min-width:600px)': {\n * fontSize: '20px',\n * },\n * }\n * @param {Object} params\n * @param {string} params.cssProperty - The CSS property to be made responsive\n * @param {number} params.min - The smallest value of the CSS property\n * @param {number} params.max - The largest value of the CSS property\n * @param {string} [params.unit] - The unit to be used for the CSS property\n * @param {Array.number} [params.breakpoints] - An array of breakpoints\n * @param {number} [params.alignStep] - Round scaled value to fall under this grid\n * @returns {Object} responsive styles for {params.cssProperty}\n */\nfunction responsiveProperty({\n cssProperty,\n min,\n max,\n unit = 'rem',\n breakpoints = [600, 900, 1200],\n transform = null\n}) {\n const output = {\n [cssProperty]: `${min}${unit}`\n };\n const factor = (max - min) / breakpoints[breakpoints.length - 1];\n breakpoints.forEach(breakpoint => {\n let value = min + factor * breakpoint;\n if (transform !== null) {\n value = transform(value);\n }\n output[`@media (min-width:${breakpoint}px)`] = {\n [cssProperty]: `${Math.round(value * 10000) / 10000}${unit}`\n };\n });\n return output;\n}\n\n/***/ }),\n\n/***/ 8169:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\n (window.__NEXT_P = window.__NEXT_P || []).push([\n \"/research/theses\",\n function () {\n return __webpack_require__(4653);\n }\n ]);\n if(false) {}\n \n\n/***/ }),\n\n/***/ 1384:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(5893);\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(4288);\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(1138);\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(7138);\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(4278);\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(5285);\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(2213);\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(9677);\n/* harmony import */ var moment_timezone__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(8);\n/* harmony import */ var moment_timezone__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(moment_timezone__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(7294);\n\n\n\n\nconst SHOW_RESOURCES = 3;\nconst getInitials = function(name) {\n let separator = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : \" \";\n return name.split(separator).map((part)=>{\n var _part_;\n return ((_part_ = part[0]) === null || _part_ === void 0 ? void 0 : _part_.toUpperCase()) || \"\";\n }).join(\"\");\n};\nconst truncateContent = (content, maxLength)=>{\n const text = content.replace(/<[^>]+>/g, \"\"); // Strip HTML tags\n return text.length > maxLength ? \"\".concat(text.substring(0, maxLength), \"...\") : text;\n};\nconst MoreResources = (param)=>{\n let { filterId =[] } = param;\n const [resources, setResources] = (0,react__WEBPACK_IMPORTED_MODULE_2__.useState)([]);\n const [hasFetched, setHasFetched] = (0,react__WEBPACK_IMPORTED_MODULE_2__.useState)(false);\n (0,react__WEBPACK_IMPORTED_MODULE_2__.useEffect)(()=>{\n if (!hasFetched) {\n const fetchResources = async ()=>{\n try {\n const response = await fetch(\"/api/getBlogPosts\");\n const data = await response.json();\n const filteredResources = data.filter((item)=>!filterId.includes(item.id)).sort(()=>0.5 - Math.random()).slice(0, SHOW_RESOURCES);\n setResources(filteredResources);\n } catch (error) {\n console.error(\"Failed to fetch resources:\", error);\n }\n };\n fetchResources();\n setHasFetched(true); // Ensure fetch only happens once\n }\n }, [\n filterId,\n hasFetched\n ]); // `filterId` ensures the fetch updates if `filterId` changes\n return /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_mui_material__WEBPACK_IMPORTED_MODULE_3__/* [\"default\"] */ .Z, {\n sx: {\n pb: 2\n },\n children: [\n /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_4__/* [\"default\"] */ .Z, {\n variant: \"h4\",\n gutterBottom: true,\n children: \"Read Next\"\n }),\n /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_5__/* [\"default\"] */ .ZP, {\n container: true,\n spacing: 2,\n sx: {\n py: 2\n },\n children: resources.map((resource, idx)=>{\n var _resource_images;\n /*#__PURE__*/ return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_5__/* [\"default\"] */ .ZP, {\n item: true,\n xs: 12,\n sm: 6,\n md: 4,\n children: /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_6__/* [\"default\"] */ .Z, {\n children: /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_mui_material__WEBPACK_IMPORTED_MODULE_7__/* [\"default\"] */ .Z, {\n href: \"/topic/\" + resource.id,\n children: [\n ((_resource_images = resource.images) === null || _resource_images === void 0 ? void 0 : _resource_images.length) > 0 ? /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_8__/* [\"default\"] */ .Z, {\n image: resource.images[0].url,\n sx: {\n height: 150,\n objectFit: \"cover\"\n }\n }) : /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_8__/* [\"default\"] */ .Z, {\n component: \"img\",\n sx: {\n height: 150,\n objectFit: \"contain\"\n },\n image: \"/KCC-Logo.webp\"\n }),\n /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_mui_material__WEBPACK_IMPORTED_MODULE_9__/* [\"default\"] */ .Z, {\n sx: {\n py: 1\n },\n children: [\n /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_4__/* [\"default\"] */ .Z, {\n variant: \"body1\",\n noWrap: true,\n sx: {\n width: \"100%\",\n maxWidth: \"100%\"\n },\n children: resource.title\n }),\n /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_4__/* [\"default\"] */ .Z, {\n variant: \"caption\",\n children: resource.author.displayName || getInitials(resource.author.name)\n }),\n /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_4__/* [\"default\"] */ .Z, {\n variant: \"caption\",\n children: console.log(JSON.stringify(resource))\n }),\n /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_4__/* [\"default\"] */ .Z, {\n variant: \"subtitle2\",\n color: \"text.secondary\",\n component: \"div\",\n children: moment_timezone__WEBPACK_IMPORTED_MODULE_1___default()(resource.published).fromNow()\n })\n ]\n })\n ]\n })\n })\n }, \"more_resources_card_\".concat(idx));\n })\n })\n ]\n });\n};\n/* harmony default export */ __webpack_exports__[\"Z\"] = (MoreResources);\n\n\n/***/ }),\n\n/***/ 9733:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(5893);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(7294);\n/* harmony import */ var next_router__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(1163);\n/* harmony import */ var next_router__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(next_router__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(1664);\n/* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(next_link__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(1391);\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(1138);\n/* harmony import */ var _Utils_utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(7209);\n\n\n\n\n\n\nconst NextBreadcrumbs = (param)=>{\n let { title } = param;\n const router = (0,next_router__WEBPACK_IMPORTED_MODULE_2__.useRouter)();\n const [breadcrumbs, setBreadcrumbs] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{\n if (router) {\n const linkPath = router.asPath.split(\"/\");\n linkPath.shift();\n const pathArray = linkPath.map((path, i)=>{\n return {\n breadcrumb: path,\n href: \"/\" + linkPath.slice(0, i + 1).join(\"/\")\n };\n });\n setBreadcrumbs(pathArray);\n }\n }, [\n router\n ]);\n if (!breadcrumbs) {\n return null;\n }\n const breadcrumbsLength = breadcrumbs.length;\n return /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_mui_material__WEBPACK_IMPORTED_MODULE_5__/* [\"default\"] */ .Z, {\n \"aria-label\": \"breadcrumb\",\n children: [\n /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)((next_link__WEBPACK_IMPORTED_MODULE_3___default()), {\n underline: \"hover\",\n color: \"inherit\",\n href: \"/\",\n children: \"Home\"\n }),\n breadcrumbs.map((breadcrumb, i)=>{\n // const text = convertBreadcrumb(breadcrumb.breadcrumb);\n const text = (0,_Utils_utils__WEBPACK_IMPORTED_MODULE_4__/* .ConvertPathText */ .gO)(breadcrumb.breadcrumb);\n if (breadcrumbsLength - 1 == i) {\n return /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_6__/* [\"default\"] */ .Z, {\n color: \"text.primary\",\n children: title ? title : text\n }, \"Breadcrumb_\" + i);\n }\n return /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)((next_link__WEBPACK_IMPORTED_MODULE_3___default()), {\n underline: \"hover\",\n color: \"inherit\",\n href: breadcrumb.href,\n children: text\n }, \"Breadcrumb_\" + i);\n })\n ]\n });\n};\n/* harmony default export */ __webpack_exports__[\"Z\"] = (NextBreadcrumbs);\n\n\n/***/ }),\n\n/***/ 4653:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(5893);\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(7212);\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(4373);\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(1138);\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(848);\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(9894);\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(1702);\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(4288);\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(4265);\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(6798);\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(8881);\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(8304);\n/* harmony import */ var _component_NextBreadcrumbs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(9733);\n/* harmony import */ var _component_Page__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(4374);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(7294);\n/* harmony import */ var _component_MoreResources__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(1384);\n\n\n\n\n\n\nconst Theses = ()=>{\n const [data, setData] = (0,react__WEBPACK_IMPORTED_MODULE_3__.useState)(null);\n (0,react__WEBPACK_IMPORTED_MODULE_3__.useEffect)(()=>{\n fetch(\"/api/getResearches\").then((res)=>res.json()).then((json)=>{\n const data = {\n theses: {}\n };\n for (const t of json === null || json === void 0 ? void 0 : json.theses){\n const year = t === null || t === void 0 ? void 0 : t.year;\n if (year && !(year in data.theses)) {\n data.theses[year] = [];\n }\n if (t === null || t === void 0 ? void 0 : t.thesis) {\n data.theses[year].push({\n honor: (t === null || t === void 0 ? void 0 : t.honor) !== \"FALSE\",\n thesis: t === null || t === void 0 ? void 0 : t.thesis\n });\n }\n }\n setData(data);\n });\n }, []);\n const l = [];\n if (data !== null) {\n const theses = data === null || data === void 0 ? void 0 : data.theses;\n for(const year in theses){\n l.push(/*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_mui_material__WEBPACK_IMPORTED_MODULE_5__/* [\"default\"] */ .Z, {\n dense: true,\n children: [\n /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_6__/* [\"default\"] */ .Z, {\n children: /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_7__/* [\"default\"] */ .Z, {\n variant: \"h5\",\n sx: {\n pl: 2\n },\n children: year\n })\n }),\n theses[year].map((i, idx)=>/*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(react__WEBPACK_IMPORTED_MODULE_3__.Fragment, {\n children: /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_mui_material__WEBPACK_IMPORTED_MODULE_8__/* [\"default\"] */ .ZP, {\n sx: {\n height: 100\n },\n children: [\n /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_9__/* [\"default\"] */ .Z, {\n children: i.honor && /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_7__/* [\"default\"] */ .Z, {\n variant: \"caption\",\n sx: {\n color: \"#cf152d\"\n },\n children: \"HONOR\"\n })\n }),\n /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_10__/* [\"default\"] */ .Z, {\n sx: {\n fontSize: 10,\n pl: 3\n },\n children: i.thesis\n })\n ]\n })\n }, \"\".concat(year, \"_\").concat(i)))\n ]\n }));\n }\n }\n return /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_component_Page__WEBPACK_IMPORTED_MODULE_2__/* [\"default\"] */ .Z, {\n children: [\n /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_mui_material__WEBPACK_IMPORTED_MODULE_11__/* [\"default\"] */ .Z, {\n sx: {\n pt: 10,\n pb: 3\n },\n children: [\n /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_component_NextBreadcrumbs__WEBPACK_IMPORTED_MODULE_1__/* [\"default\"] */ .Z, {}),\n /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_7__/* [\"default\"] */ .Z, {\n variant: \"h3\",\n children: \"Theses\"\n }),\n /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_mui_material__WEBPACK_IMPORTED_MODULE_12__/* [\"default\"] */ .Z, {\n variant: \"outlined\",\n sx: {\n py: 1\n },\n children: [\n /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_13__/* [\"default\"] */ .Z, {\n href: \"/research/publication\",\n children: \"Navigate to Publication\"\n }),\n /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_13__/* [\"default\"] */ .Z, {\n href: \"/research/presentation\",\n children: \"Navigate to Presentation\"\n })\n ]\n }),\n /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_14__/* [\"default\"] */ .Z, {\n elevation: 3,\n sx: {\n p: 3\n },\n children: l.length > 0 ? /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_5__/* [\"default\"] */ .Z, {\n dense: true,\n children: l\n }) : /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n children: /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_5__/* [\"default\"] */ .Z, {\n children: [\n ...Array(6)\n ].map((_, idx)=>/*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_8__/* [\"default\"] */ .ZP, {\n sx: {\n display: \"flex\",\n justifyContent: \"space-between\"\n },\n children: /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_15__/* [\"default\"] */ .Z, {\n variant: \"rectangular\",\n height: 45,\n width: \"100%\"\n })\n }, \"skeleton_\" + idx))\n })\n })\n })\n ]\n }),\n /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_component_MoreResources__WEBPACK_IMPORTED_MODULE_4__/* [\"default\"] */ .Z, {})\n ]\n });\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (Theses);\n\n\n/***/ })\n\n},\n/******/ function(__webpack_require__) { // webpackRuntimeModules\n/******/ var __webpack_exec__ = function(moduleId) { return __webpack_require__(__webpack_require__.s = moduleId); }\n/******/ __webpack_require__.O(0, [2678,4885,6770,9412,5446,6087,4218,4374,9774,2888,179], function() { return __webpack_exec__(8169); });\n/******/ var __webpack_exports__ = __webpack_require__.O();\n/******/ _N_E = __webpack_exports__;\n/******/ }\n]);"],"names":["self","push","__unused_webpack_module","__webpack_exports__","__webpack_require__","_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_7__","_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_5__","react__WEBPACK_IMPORTED_MODULE_0__","clsx__WEBPACK_IMPORTED_MODULE_9__","_mui_base__WEBPACK_IMPORTED_MODULE_2__","_styles_styled__WEBPACK_IMPORTED_MODULE_4__","_styles_useThemeProps__WEBPACK_IMPORTED_MODULE_6__","_listItemIconClasses__WEBPACK_IMPORTED_MODULE_3__","_List_ListContext__WEBPACK_IMPORTED_MODULE_8__","react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__","_excluded","useUtilityClasses","ownerState","alignItems","classes","Z","root","f","ListItemIconRoot","ZP","name","slot","props","styles","alignItemsFlexStart","theme","minWidth","color","vars","palette","action","active","flexShrink","display","marginTop","ListItemIcon","forwardRef","inProps","ref","className","other","context","useContext","jsx","d","getListItemIconUtilityClass","_mui_utils__WEBPACK_IMPORTED_MODULE_1__","_generateUtilityClass__WEBPACK_IMPORTED_MODULE_0__","listItemIconClasses","_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_10__","_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_7__","clsx__WEBPACK_IMPORTED_MODULE_11__","_mui_system__WEBPACK_IMPORTED_MODULE_4__","_styles__WEBPACK_IMPORTED_MODULE_6__","_styles__WEBPACK_IMPORTED_MODULE_8__","_styles_styled__WEBPACK_IMPORTED_MODULE_5__","_styles_useThemeProps__WEBPACK_IMPORTED_MODULE_9__","_skeletonClasses__WEBPACK_IMPORTED_MODULE_3__","_","t","_t","_t2","_t3","_t4","variant","animation","hasChildren","width","height","B","pulseKeyframe","F4","waveKeyframe","SkeletonRoot","withChildren","fitContent","heightAuto","radiusUnit","Wy","shape","borderRadius","radiusValue","YL","backgroundColor","Skeleton","bg","Fq","text","primary","mode","marginBottom","transformOrigin","transform","Math","round","content","visibility","maxWidth","iv","hover","component","style","Boolean","children","as","getSkeletonUtilityClass","skeletonClasses","isUnitless","value","String","parseFloat","length","getUnit","input","match","toUnitless","convertLength","baseFontSize","toUnit","fromUnit","pxLength","outputLength","toFixed","alignProperty","size","grid","sizeBelow","sizeAbove","fontGrid","lineHeight","pixels","htmlFontSize","responsiveProperty","cssProperty","min","max","unit","breakpoints","output","factor","forEach","breakpoint","__unused_webpack_exports","window","__NEXT_P","react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__","_mui_material__WEBPACK_IMPORTED_MODULE_3__","_mui_material__WEBPACK_IMPORTED_MODULE_4__","_mui_material__WEBPACK_IMPORTED_MODULE_5__","_mui_material__WEBPACK_IMPORTED_MODULE_6__","_mui_material__WEBPACK_IMPORTED_MODULE_7__","_mui_material__WEBPACK_IMPORTED_MODULE_8__","_mui_material__WEBPACK_IMPORTED_MODULE_9__","moment_timezone__WEBPACK_IMPORTED_MODULE_1__","moment_timezone__WEBPACK_IMPORTED_MODULE_1___default","n","react__WEBPACK_IMPORTED_MODULE_2__","getInitials","separator","arguments","split","map","_part_","part","toUpperCase","join","MoreResources","filterId","param","resources","setResources","useState","hasFetched","setHasFetched","useEffect","fetchResources","response","fetch","data","json","filteredResources","filter","includes","item","id","sort","random","slice","error","console","jsxs","sx","pb","gutterBottom","container","spacing","py","resource","idx","_resource_images","xs","sm","md","href","images","image","url","objectFit","noWrap","title","author","displayName","log","JSON","stringify","published","fromNow","concat","react__WEBPACK_IMPORTED_MODULE_1__","next_router__WEBPACK_IMPORTED_MODULE_2__","next_link__WEBPACK_IMPORTED_MODULE_3__","next_link__WEBPACK_IMPORTED_MODULE_3___default","_Utils_utils__WEBPACK_IMPORTED_MODULE_4__","NextBreadcrumbs","router","useRouter","breadcrumbs","setBreadcrumbs","linkPath","asPath","shift","pathArray","path","i","breadcrumb","breadcrumbsLength","underline","gO","r","_mui_material__WEBPACK_IMPORTED_MODULE_10__","_mui_material__WEBPACK_IMPORTED_MODULE_11__","_mui_material__WEBPACK_IMPORTED_MODULE_12__","_mui_material__WEBPACK_IMPORTED_MODULE_13__","_mui_material__WEBPACK_IMPORTED_MODULE_14__","_mui_material__WEBPACK_IMPORTED_MODULE_15__","_component_NextBreadcrumbs__WEBPACK_IMPORTED_MODULE_1__","_component_Page__WEBPACK_IMPORTED_MODULE_2__","react__WEBPACK_IMPORTED_MODULE_3__","_component_MoreResources__WEBPACK_IMPORTED_MODULE_4__","Theses","setData","then","res","theses","year","thesis","honor","l","dense","pl","Fragment","fontSize","pt","elevation","p","Array","justifyContent","O","s","_N_E"],"sourceRoot":""}