{"version":3,"file":"5.jbZZeazr.mjs","sources":["../../../../../../node_modules/svelte/src/runtime/internal/globals.js","../../../../../../src/routes/departments/+page.ts","../../../../../../src/routes/departments/+page.svelte"],"sourcesContent":["/** @type {typeof globalThis} */\nexport const globals =\n\ttypeof window !== 'undefined'\n\t\t? window\n\t\t: typeof globalThis !== 'undefined'\n\t\t? globalThis\n\t\t: // @ts-ignore Node typings have this\n\t\t  global;\n","import { api } from '$lib'\nimport type { PageLoad } from './$types'\n\nexport const csr = true\n\nexport const load: PageLoad = async () => {\n  const collegesData = await api.getColleges()\n\n  return {\n    colleges: collegesData.colleges\n  }\n}\n","<script lang=\"ts\">\n  import Header from '$lib/components/Header.svelte'\n  import SearchFilter from '$lib/components/SearchFilter.svelte'\n  import type { College } from '$lib/queries/college'\n  import { generateSrcset, getOptimizedSrc } from '$lib/utils/image'\n  import { sortby } from 'txstate-utils'\n  import type { PageData } from './$types'\n\n  export let data: PageData\n\n  // Define the type for colleges with formatted name\n  interface FormattedCollege extends College {\n    formattedName: string\n    formattedUrl: string\n    imageSrc: string\n    imageSrcset: string\n  }\n\n  // Map college names to their respective image URLs\n  const collegeImages = new Map<string, string>([\n    ['Applied Arts', 'https://docs.gato.txst.edu/723188/w/2000/applied-arts-banner.jpg'],\n    ['Education', 'https://docs.gato.txst.edu/723198/w/2000/education-banner.jpg'],\n    ['Fine Arts & Communication', 'https://docs.gato.txst.edu/723165/w/2000/fine-arts-communication-banner.jpg'],\n    ['Health Professions', 'https://docs.gato.txst.edu/723189/w/2000/health-professions-banner.jpg'],\n    ['Liberal Arts', 'https://docs.gato.txst.edu/723168/w/2000/liberal-arts-banner.jpg'],\n    ['Science & Engineering', 'https://docs.gato.txst.edu/723201/w/2000/science-engineering-banner.jpg'],\n    ['McCoy College of Business', 'https://docs.gato.txst.edu/723193/w/2000/mccoy-college-of-business-banner.jpg'],\n    ['Honors College', 'https://docs.gato.txst.edu/723169/w/2000/honors-college-banner.jpg'],\n    ['The Graduate College', 'https://docs.gato.txst.edu/723164/w/2000/the-graduate-college-banner.jpg'],\n    ['Library', 'https://docs.gato.txst.edu/786812/w/2000/university-libraries.jpg']\n  ])\n\n  // API returns the library as college 'Library'; display it as 'University Libraries'.\n  const collegeDisplayNames = new Map<string, string>([\n    ['Library', 'University Libraries']\n  ])\n  const displayName = (name: string): string => collegeDisplayNames.get(name) ?? name\n\n  // Default image fallback\n  const defaultImage = 'https://docs.gato.txst.edu/723201/w/2000/science-engineering-banner.jpg'\n  const filters = {\n    query: '',\n    college: '',\n    department: '',\n    page: 1,\n    perPage: 10,\n    tab: 'faculty'\n  }\n  // Extract colleges with proper default typing\n  $: ({ colleges = [] as College[] } = data)\n\n  // Type both college collections properly\n  let specialColleges: College[] = []\n  let regularColleges: FormattedCollege[] = []\n\n  // Reactive declarations with consistent parameter typing\n  const specialCollegeOrder: string[] = ['Honors College', 'The Graduate College', 'Library']\n  $: specialColleges = colleges\n    .filter((college: College) => specialCollegeOrder.includes(college.name))\n    .sort((a: College, b: College) =>\n      specialCollegeOrder.indexOf(a.name) - specialCollegeOrder.indexOf(b.name)\n    )\n\n  $: regularColleges = sortby(\n    colleges\n      .filter((college: College) =>\n        college.name !== 'Honors College'\n        && college.name !== 'The Graduate College'\n        && college.name !== 'Library'\n      )\n      .map((college: College) => {\n        const imageUrl = collegeImages.get(college.name.replace(/^College of /, '')) ?? collegeImages.get(college.name) ?? defaultImage\n        const formattedCollege: FormattedCollege = {\n          ...college,\n          formattedName: college.name.replace(/^College of /, ''),\n          formattedUrl: getCollegeUrl(college.name),\n          departments: sortby([...college.departments], 'name'),\n          imageSrc: getOptimizedSrc(imageUrl),\n          imageSrcset: generateSrcset(imageUrl)\n        }\n        return formattedCollege\n      }),\n    'formattedName'\n  )\n\n  // Helper function for department URLs\n  function getDepartmentUrl (departmentName: string): string {\n    return `/search?dept=${encodeURIComponent(departmentName)}&page=1&perpage=10`\n  }\n\n  // Helper function for college URLs\n  function getCollegeUrl (collegeName: string): string {\n    return `/search?college=${encodeURIComponent(collegeName)}&page=1&perpage=10`\n  }\n\n</script>\n<Header className=\"mt-6\"/>\n<div id=\"main-content\" class=\"wrapper flow mt-10\">\n  <h2 class=\"text-2xl font-bold mb-4 section-title\" style=\"--underline-color: var(--color-dark);\">Browse by Colleges and Departments</h2>\n  <div class=\"search my-4\">\n    <SearchFilter\n              {colleges}\n              {filters}\n              actionUrl=\"/search\"\n              className=\"home-search-filter\"\n              showTabs={false}\n              showPagination={false}\n              totalResults={0}\n            />\n  </div>\n  <ul class=\"college-list grid\">\n    <!-- Regular colleges -->\n    {#each regularColleges as college (college.name)}\n      <li class=\"flow college-item\">\n        <img\n          src={college.imageSrc}\n          srcset={college.imageSrcset}\n          sizes=\"(max-width: 768px) 100vw, 50vw\"\n          alt=\"{college.formattedName} campus view\"\n          class=\"college-image\"\n        >\n\n        <a class=\"college-link\" href=\"{college.formattedUrl}\">\n          <h3>{college.formattedName}</h3>\n        </a>\n        <ul class=\"department-list\">\n          {#each college.departments as department}\n            <li class=\"department-item\">\n              <a class=\"department-link\" href=\"{getDepartmentUrl(department.name)}\">\n                {department.name}\n              </a>\n            </li>\n          {/each}\n        </ul>\n      </li>\n    {/each}\n\n    <!-- Special colleges stacked in one grid cell -->\n    <li class=\"flow college-item\">\n      <div class=\"special-colleges-container\">\n        {#each specialColleges as college}\n          <div class=\"special-college-section flow\">\n            <img\n              src={getOptimizedSrc(collegeImages.get(college.name) ?? defaultImage)}\n              srcset={generateSrcset(collegeImages.get(college.name) ?? defaultImage)}\n              sizes=\"(max-width: 768px) 100vw, 50vw\"\n              alt=\"{displayName(college.name)} campus view\"\n              class=\"college-image\"\n            />\n            <a\n              class=\"college-link \"\n              href=\"{getCollegeUrl(college.name)}\"\n            >\n              <h3>{displayName(college.name)}</h3>\n            </a>\n\n          </div>\n        {/each}\n      </div>\n    </li>\n  </ul>\n</div>\n\n<style>\n  .department-list {\n    margin-left: 1rem;\n    list-style-type: disc;\n  }\n\n  .department-item {\n    margin-left: 0.75rem;\n  }\n\n  .college-link {\n    display: block;\n    color: var(--color-maroon-500);\n    font-size: var(--step-1);\n    line-height: 1.25;\n    margin-bottom: 0.5rem;\n  }\n\n  .department-link {\n    color: var(--color-link-02);\n  }\n\n  .college-image {\n    width: 100%;\n    height: 100px;\n    object-fit: cover;\n  }\n\n  ::marker {\n    color: var(--color-link-02);\n  }\n\n  .special-college-section {\n    margin-bottom: 1.5rem;\n  }\n\n  .special-college-section:last-child {\n    margin-bottom: 0;\n  }\n\n  @media (max-width: 768px) {\n    .college-image {\n      height: 140px;\n    }\n  }\n</style>\n"],"names":["globals","csr","load","api","t0_value","ctx","getDepartmentUrl","insert_hydration","target","li","anchor","append_hydration","a","dirty","set_data","t0","t1_value","each_value_2","ensure_array_like","i","src_url_equal","img","img_src_value","attr","srcset_url_equal","img_srcset_value","img_alt_value","a_href_value","h3","ul","t1","getOptimizedSrc","defaultImage","generateSrcset","getCollegeUrl","div","get_key","div2","h2","div0","div1","departmentName","collegeName","data","$$props","collegeImages","collegeDisplayNames","displayName","name","filters","specialColleges","regularColleges","specialCollegeOrder","$$invalidate","colleges","college","b","sortby","imageUrl"],"mappings":"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","x_google_ignoreList":[0]}