{"version":3,"mappings":"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","names":["bindEvent","target","type","handler","intercept","value","setValue","get","set","v","querySelector","selector","scrollToHash","hash","fallbackTop","el","createIntegration","init","utils","ignore","wrap","signal","createSignal","a","b","next","onCleanup","normalizeIntegration","integration","pathIntegration","replace","scroll","state","notify","delta","createBeforeLeave","listeners","subscribe","listener","confirm","to","options","e","l","force","hasSchemeRegex","trimPathRegex","normalizePath","path","omitSlash","s","resolvePath","base","from","basePath","fromPath","result","invariant","message","joinPaths","extractSearchParams","url","params","key","createMatcher","partial","matchFilters","pattern","splat","segments","len","location","locSegments","lenDiff","match","matchFilter","i","segment","locSegment","dynamic","matchSegment","remainder","input","filter","isEqual","scoreRoute","route","score","createMemoObject","fn","map","owner","getOwner","_","property","runWithOwner","createMemo","expandOptionals","prefix","suffix","prefixes","results","expansion","p","MAX_REDIRECTS","RouterContextObj","createContext","RouteContextObj","useRouter","useContext","TempRoute","useRoute","useResolvedPath","useHref","router","to_","useNavigate","useLocation","useIsRouting","useParams","createRoutes","routeDef","fallback","component","data","children","isLeaf","shared","createComponent","element","asArray","acc","originalPath","createBranch","routes","index","matches","createBranches","stack","branches","routeDefs","def","isEmptyArray","branch","getRouteMatches","createLocation","origin","prev","path_","pathname","search","on","createRouterContext","out","source","setSource","parsePath","renderPath","beforeLeave","output","isRouting","setIsRouting","start","callback","startTransition","reference","setReference","setState","referrers","baseRoute","navigatorFactory","navigateFromRoute","untrack","resolve","nextState","resolvedTo","current","isServer","resetErrorBoundaries","navigateEnd","first","createRenderEffect","handleAnchorClick","evt","href","rel","delegateEvents","createRouteContext","parent","child","outlet","preload","Router","props","routerState","_$createComponent","Provider","Routes","parentRoute","Outlet","m","length","Object","assign","push","disposers","root","routeStates","nextMatches","prevMatches","equal","prevMatch","nextMatch","createRoot","dispose","splice","forEach","Show","when","keyed","useRoutes","A","mergeProps","inactiveClass","activeClass","rest","splitProps","isActive","undefined","split","toLowerCase","loc","end","startsWith","_el$","_tmpl$","_$spread","_$mergeProps","JSON","stringify","classList","class","mainIntroductionCSSClass","mainItemTitleCSSClass","statLabelCSSClass","tooltipCSSClass","itemGridCSSClass","secondaryButtonClass","getItemCssClass","item","ItemIcon","local","imgProps","window","hostname","endsWith","_$setAttribute","hideNav","setHideNav","globalAgeFilter","setGlobalAgeFilter","globalCivFilter","setGlobalCivsFilter","getStructuredItems","civilization","sdk","__vitePreload","civ","units","splitUnitsIntoGroups","order","buildings","splitBuildingsIntoGroups","technologies","splitTechnologiesIntroGroups","civilizations","Get","info","parseCurrentLocation","subroute","itemType","typeToPathMap","building","unit","technology","getItemHref","civs","CIVILIZATIONS","slug","id","Card","minAge","variations","reduce","includes","abbr","Math","min","age","_$insert","Link","CardHeader","_c$","_$memo","_c$2","_el$2","_tmpl$2","_el$3","firstChild","_el$4","Icon","icon","name","_el$5","_tmpl$3","For","each","CivFlag","_c$3","_el$6","_tmpl$4","_el$7","_$effect","_p$","_v$","_v$2","_$className","style","setProperty","removeProperty","_el$8","_tmpl$5","_el$9","_el$10","nextSibling","_el$11","_el$12","_el$13","_el$14","PRETTY_AGE_MAP","displayClasses","join","_v$3","_v$4","_v$5","isMac","test","navigator","userAgent","getEverything","SDK","flat","mergeSearchableData","keywords","SIMILAIR_ITEMS","x","flatMap","allItems","q","trim","ks","k","max","indexOf","sort","scrollSelectedIntoView","wrapper","selectedEl","offsetTop","clientHeight","scrollTop","scrollTo","top","behavior","Search","query","setQuery","createResource","selected","setSelected","navigate","changeSelected","close","inputRef","focus","createEffect","globalKeyupListener","metaKey","ctrlKey","preventDefault","onMount","addEventListener","removeEventListener","$$keydown","$$input","currentTarget","_ref$","_$use","_ref$2","_$delegateEvents","t","n","r","o","c","f","u","g","d","h","y","w","P","R","D","O","L","W","T","C","H","S","Tooltip","hover","setHover","delay","attachTo","positionTooltip","position","updatePosition","computePosition","placement","strategy","middleware","flip","shift","then","left","opacity","zIndex","setTimeout","Portal","itemTypeLabels","QuickNav","currentCivilization","CIVILIZATION_BY_SLUG","setCivilization","view","setView","show","setShow","document","body","add","remove","list","currentItem","positionPopup","bottom","$$click","_tmpl$6","values","_tmpl$7","entries","label","_el$15","_tmpl$8","items","_el$16","_tmpl$9","_el$17","_el$18","role","_el$19","_tmpl$10","_el$20","_tmpl$11","innerHTML","Toolbar","pending","smartCivLink","navButtonClass","noScroll","NavLink","ref","r$","toggle","thenBy_module","identity","ignoreCase","makeCompareFunction","opt","prop","v1","uf","preprocess","cmp","v2","descTokens","tb","func","getUnitStats","forCiv","mapCivsArgument","getStats","combatStats","mergeVariationsToStats","fc","techs","getItemTechnologies","tech","lazelyPickJustTheFirst","modifier","modifierMatches","SUPPORTED_MODIFIER_PROPERTIES","_b","_a","_c","firstBy","variation","stats","bonus","melee","weapons","burst","total","arr","cat","previousAgeValue","mod","mi","previousModifierValue","roundToDecimals","number","decimals","roundToGameTicks","calculateStatParts","stat","maxAge","round","val","parts","upgrades","maxBonusInAge","tryCreateVsBonusName","_d","StatBar","totalEl","setParts","setValues","multiplier","fromEntries","sum","formattedMultiplier","displayAlways","_c$4","_c$5","_c$6","_c$7","_el$21","_el$22","_c$8","_el$23","_el$24","_c$11","_el$26","_el$27","_c$9","_el$28","_el$29","_c$12","_el$31","_el$32","_c$10","_el$33","_el$34","_el$36","_el$37","_c$13","_el$38","_el$39","projectiles","_el$40","_el$41","_el$42","_el$43","_el$44","_el$45","_el$47","_el$48","_el$49","_el$50","_el$51","_el$52","_el$53","_el$54","_el$55","_el$56","_el$58","_el$59","_el$61","Index","part","partEl","isBase","className","unique","hide","_el$62","_tmpl$13","_el$63","_tmpl$12","_el$64","_el$65","_el$66","_el$67","_el$68","_el$69","_el$70","_tmpl$14","_c$14","_el$71","_tmpl$15","_el$72","_c$15","_el$74","_tmpl$16","description","StatNumber","helperEl","_el$75","_tmpl$17","_el$76","_el$77","_el$78","_ref$3","_c$16","helper","_c$17","_el$80","_tmpl$18","_el$81","_ref$4","_c$18","_el$82","_tmpl$19","_el$83","_c$19","unitLabel","_el$84","_tmpl$20","_c$20","_el$85","_tmpl$21","_el$86","_el$88","_c$21","_el$89","_tmpl$22","_el$79","_el$91","_tmpl$23","_el$92","_el$95","_el$93","_el$94","_el$96","_tmpl$24","_el$97","_el$101","_el$98","_el$99","_el$102","_tmpl$25","_el$103","_el$107","_el$104","_el$105","dps","attackDuration","damage","calculateDpsParts","speed","attacks","attack","StatDps","attackSpeed","_el$108","_el$109","_el$110","_el$111","_ref$5","_c$22","_c$23","_el$132","_el$133","_ref$6","_tmpl$27","_c$24","_el$135","_tmpl$28","_el$136","_c$25","_el$137","_tmpl$29","_el$138","_el$140","_el$112","_tmpl$26","_el$113","_el$114","_el$115","_el$116","_el$117","_el$118","_el$119","_el$120","_el$121","_el$122","_el$123","_el$124","_el$125","_el$126","_el$127","_el$128","_el$129","_el$130","_el$131","formatSecondsToTime","seconds","floor","formatSecondsToPhrase","formatCurreny","StatCosts","_el$141","_tmpl$30","_el$142","_el$143","costs","_el$144","_tmpl$31","_el$145","_el$146","RESOURCES","BuildingCard","ITEMS","BUILDINGS","getMostAppropriateVariation","hitpoints","siegeAttack","rangedAttack","rangedArmor","fireArmor","meleeAttack","Random","args","obj","array","j","probability","content","featuredContent","getRelatedContent","featured","fetchContent","CURATED_CONTENT_API","defaultLimit","RelatedContent","related","limit","setLimit","Suspense","title","slice","ContentRow","relatedItems","getRelatedItems","thumbnail","creator_url","creator","youtube_data","videoDuration","ids","console","error","ReportButton","showReport","setShowReport","increaseBarSizeForClass","getBarSize","baseSize","increasedSize","classes","some","UnitCard","UNITS","fireAttack","meleeArmor","moveSpeed","civBackdrops","CivDetailRoute","civConfig","loading","setActivePage","_el$25","overview","_el$30","_el$35","toUpperCase","UnitOverviewRoute","where","Array","TechnologyCard","dlcFlag","Header","itemCssClass","CivPicker","keys","CivOptionsForItem","ProducedAt","productionBuildings","producedBy","Set","Promise","all","warn","Boolean","getItemType","TECHNOLOGIES","AvailableUpgrades","Wrapper","useTransition","UnavailableForCiv","AgeTabs","setAge","PRETTY_AGE_MAP_SHORT","disabled","ExpansionInfo","ItemPage","PatchHistory","patchHistory","getPatchHistory","patchesExpanded","setPatchesExpanded","history","expanded","setExpanded","patch","date","valueOf","Date","now","toLocaleDateString","dateStyle","diff","change","Abilities","sortedMappedAbilities","abilities","ab","active","ability","activatedOn","auraRange","InlineItemLink","itemId","unlockedBy","cooldown","UnitDetailRoute","unmatched","setUnmatched","affects","tryRedirectToClosestMatch","setActivePageForItem","UnitSidebar","minRange","maxRange","lineOfSight","buttonClass","CivOverviewRoute","BuildingOverviewRoute","BuildingDetailRoute","producedAt","research","BuildingSidebar","popcapIncrease","amount","garrison","capacity","AboutRoute","TechnologyDetailRoute","PRETTY_AGE_MAP_LONG","TechnologoiesOverviewRoute","TableOfContentsContext","headings","TableOfContentsProvider","setHeadings","level","slugified","find","concat","requestAnimationFrame","getElementById","scrollIntoView","TableOfContentsAnchor","createHeadingId","removeHeading","useTableOfContents","scrollIntoViewIfNeeded","stopImmediatePropagation","pushState","block","TableOfContents","Anchor","PatchDetailRoute","patches","setCiv","sections","changes","ci","Map","filteredPatchNotes","chs","filterdChange","pagination","findIndex","previous","introduction","buildId","season","DirtSimpleMd","md","officialUrl","html","onClick","section","Section","Sidebar","subtitle","unmapped","capitlize","DiffList","sortPatchDiff","DevNote","note","_el$46","line","alt","_el$57","_el$60","SearchRoute","noResult","setNoResult","URLSearchParams","searchUrl","URL","select","toString","PatchListRoute","reverse","patchSummary","notes","day","month","year","summary","daysSinceLastPatch","buffed","nerfed","fixed","ceil","getTime","SidebarNav","allData","currentItemType","TreeMenu","TreeItem","TreeGroup","isOpen","TreeGroupToggle","toggleClass","TreeGroupItems","TreeMenuContext","setIsOpen","createUniqueId","onKeyDown","stopPropagation","_$addEventListener","focusableElements","focusOnElement","direction","elements","querySelectorAll","currentlyFocusedIndex","activeElement","nextIndex","lazy","activePage","closestMatch","findClosestMatch","lastPathname","setAttribute","meta","createElement","head","appendChild","App","resetFocusEl","preventScroll","getBoundingClientRect","ErrorBoundary","err","retry","errPath","log","initializeExplorer","render","onNavigate","mainNav"],"sources":["../../../node_modules/@solidjs/router/dist/integration.js","../../../node_modules/@solidjs/router/dist/lifecycle.js","../../../node_modules/@solidjs/router/dist/utils.js","../../../node_modules/@solidjs/router/dist/routing.js","../../../node_modules/@solidjs/router/dist/components.jsx","../../../app/frontend/lib/explorer/src/styles.ts","../../../app/frontend/lib/explorer/src/components/ItemIcon.tsx","../../../app/frontend/lib/explorer/src/global.tsx","../../../app/frontend/lib/explorer/src/components/Cards.tsx","../../../app/frontend/lib/explorer/src/components/Search.tsx","../../../node_modules/@floating-ui/core/dist/floating-ui.core.esm.min.js","../../../node_modules/@floating-ui/dom/dist/floating-ui.dom.esm.min.js","../../../app/frontend/lib/explorer/src/components/Tooltip.tsx","../../../app/frontend/lib/explorer/src/components/QuickNav.tsx","../../../app/frontend/lib/explorer/src/components/Toolbar.tsx","../../../node_modules/thenby/thenBy.module.js","../../../app/frontend/lib/explorer/src/query/stats.ts","../../../app/frontend/lib/explorer/src/components/Stats.tsx","../../../app/frontend/lib/explorer/src/components/BuildingCard.tsx","../../../app/frontend/lib/explorer/src/components/quiz/random.ts","../../../app/frontend/lib/explorer/src/query/content.ts","../../../app/frontend/lib/explorer/src/components/RelatedContent.tsx","../../../app/frontend/lib/explorer/src/components/ReportButton.tsx","../../../app/frontend/lib/explorer/src/components/UnitCard.tsx","../../../app/frontend/lib/explorer/src/data/civData.ts","../../../app/frontend/lib/explorer/src/routes/civs/[slug].tsx","../../../app/frontend/lib/explorer/src/routes/units/units.tsx","../../../app/frontend/lib/explorer/src/components/TechnologyCard.tsx","../../../app/frontend/lib/explorer/assets/dlc-flag.png","../../../app/frontend/lib/explorer/src/components/ItemPage.tsx","../../../app/frontend/lib/explorer/src/components/PatchHistory.tsx","../../../app/frontend/lib/explorer/src/components/Abilities.tsx","../../../app/frontend/lib/explorer/src/routes/units/[id].tsx","../../../app/frontend/lib/explorer/src/routes/home.tsx","../../../app/frontend/lib/explorer/src/routes/buildings/buildings.tsx","../../../app/frontend/lib/explorer/src/routes/buildings/[id].tsx","../../../app/frontend/lib/explorer/src/routes/about.tsx","../../../app/frontend/lib/explorer/src/routes/technologies/[id].tsx","../../../app/frontend/lib/explorer/src/routes/technologies/technologies.tsx","../../../app/frontend/lib/explorer/src/components/TableOfContents.tsx","../../../app/frontend/lib/explorer/src/routes/patches/[id].tsx","../../../app/frontend/lib/explorer/src/routes/search.tsx","../../../app/frontend/lib/explorer/src/routes/patches/index.tsx","../../../app/frontend/lib/explorer/src/components/SidebarNav.tsx","../../../app/frontend/lib/explorer/src/App.tsx","../../../app/frontend/lib/explorer/src/index.tsx","../../../app/frontend/entrypoints/explorer.ts"],"sourcesContent":["import { createSignal, onCleanup } from \"solid-js\";\nfunction bindEvent(target, type, handler) {\n target.addEventListener(type, handler);\n return () => target.removeEventListener(type, handler);\n}\nfunction intercept([value, setValue], get, set) {\n return [get ? () => get(value()) : value, set ? (v) => setValue(set(v)) : setValue];\n}\nfunction querySelector(selector) {\n if (selector === \"#\") {\n return null;\n }\n // Guard against selector being an invalid CSS selector\n try {\n return document.querySelector(selector);\n }\n catch (e) {\n return null;\n }\n}\nfunction scrollToHash(hash, fallbackTop) {\n const el = querySelector(`#${hash}`);\n if (el) {\n el.scrollIntoView();\n }\n else if (fallbackTop) {\n window.scrollTo(0, 0);\n }\n}\nexport function createMemoryHistory() {\n const entries = [\"/\"];\n let index = 0;\n const listeners = [];\n const go = (n) => {\n // https://github.com/remix-run/react-router/blob/682810ca929d0e3c64a76f8d6e465196b7a2ac58/packages/router/history.ts#L245\n index = Math.max(0, Math.min(index + n, entries.length - 1));\n const value = entries[index];\n listeners.forEach(listener => listener(value));\n };\n return {\n get: () => entries[index],\n set: ({ value, scroll, replace }) => {\n if (replace) {\n entries[index] = value;\n }\n else {\n entries.splice(index + 1, entries.length - index, value);\n index++;\n }\n if (scroll) {\n scrollToHash(value.split(\"#\")[1] || \"\", true);\n }\n },\n back: () => {\n go(-1);\n },\n forward: () => {\n go(1);\n },\n go,\n listen: (listener) => {\n listeners.push(listener);\n return () => {\n const index = listeners.indexOf(listener);\n listeners.splice(index, 1);\n };\n }\n };\n}\nexport function createIntegration(get, set, init, utils) {\n let ignore = false;\n const wrap = (value) => (typeof value === \"string\" ? { value } : value);\n const signal = intercept(createSignal(wrap(get()), { equals: (a, b) => a.value === b.value }), undefined, next => {\n !ignore && set(next);\n return next;\n });\n init &&\n onCleanup(init((value = get()) => {\n ignore = true;\n signal[1](wrap(value));\n ignore = false;\n }));\n return {\n signal,\n utils\n };\n}\nexport function normalizeIntegration(integration) {\n if (!integration) {\n return {\n signal: createSignal({ value: \"\" })\n };\n }\n else if (Array.isArray(integration)) {\n return {\n signal: integration\n };\n }\n return integration;\n}\nexport function staticIntegration(obj) {\n return {\n signal: [() => obj, next => Object.assign(obj, next)]\n };\n}\nexport function pathIntegration() {\n return createIntegration(() => ({\n value: window.location.pathname + window.location.search + window.location.hash,\n state: history.state\n }), ({ value, replace, scroll, state }) => {\n if (replace) {\n window.history.replaceState(state, \"\", value);\n }\n else {\n window.history.pushState(state, \"\", value);\n }\n scrollToHash(window.location.hash.slice(1), scroll);\n }, notify => bindEvent(window, \"popstate\", () => notify()), {\n go: delta => window.history.go(delta)\n });\n}\nexport function hashIntegration() {\n return createIntegration(() => window.location.hash.slice(1), ({ value, replace, scroll, state }) => {\n if (replace) {\n window.history.replaceState(state, \"\", \"#\" + value);\n }\n else {\n window.location.hash = value;\n }\n const hashIndex = value.indexOf(\"#\");\n const hash = hashIndex >= 0 ? value.slice(hashIndex + 1) : \"\";\n scrollToHash(hash, scroll);\n }, notify => bindEvent(window, \"hashchange\", () => notify()), {\n go: delta => window.history.go(delta),\n renderPath: path => `#${path}`,\n parsePath: str => {\n const to = str.replace(/^.*?#/, \"\");\n // Hash-only hrefs like `#foo` from plain anchors will come in as `/#foo` whereas a link to\n // `/foo` will be `/#/foo`. Check if the to starts with a `/` and if not append it as a hash\n // to the current path so we can handle these in-page anchors correctly.\n if (!to.startsWith(\"/\")) {\n const [, path = \"/\"] = window.location.hash.split(\"#\", 2);\n return `${path}#${to}`;\n }\n return to;\n }\n });\n}\nexport function memoryIntegration() {\n const memoryHistory = createMemoryHistory();\n return createIntegration(memoryHistory.get, memoryHistory.set, memoryHistory.listen, {\n go: memoryHistory.go\n });\n}\n","export function createBeforeLeave() {\n let listeners = new Set();\n function subscribe(listener) {\n listeners.add(listener);\n return () => listeners.delete(listener);\n }\n let ignore = false;\n function confirm(to, options) {\n if (ignore)\n return !(ignore = false);\n const e = {\n to,\n options,\n defaultPrevented: false,\n preventDefault: () => (e.defaultPrevented = true)\n };\n for (const l of listeners)\n l.listener({\n ...e,\n from: l.location,\n retry: (force) => {\n force && (ignore = true);\n l.navigate(to, options);\n }\n });\n return !e.defaultPrevented;\n }\n return {\n subscribe,\n confirm\n };\n}\n","import { createMemo, getOwner, runWithOwner } from \"solid-js\";\nconst hasSchemeRegex = /^(?:[a-z0-9]+:)?\\/\\//i;\nconst trimPathRegex = /^\\/+|(\\/)\\/+$/g;\nexport function normalizePath(path, omitSlash = false) {\n const s = path.replace(trimPathRegex, \"$1\");\n return s ? (omitSlash || /^[?#]/.test(s) ? s : \"/\" + s) : \"\";\n}\nexport function resolvePath(base, path, from) {\n if (hasSchemeRegex.test(path)) {\n return undefined;\n }\n const basePath = normalizePath(base);\n const fromPath = from && normalizePath(from);\n let result = \"\";\n if (!fromPath || path.startsWith(\"/\")) {\n result = basePath;\n }\n else if (fromPath.toLowerCase().indexOf(basePath.toLowerCase()) !== 0) {\n result = basePath + fromPath;\n }\n else {\n result = fromPath;\n }\n return (result || \"/\") + normalizePath(path, !result);\n}\nexport function invariant(value, message) {\n if (value == null) {\n throw new Error(message);\n }\n return value;\n}\nexport function joinPaths(from, to) {\n return normalizePath(from).replace(/\\/*(\\*.*)?$/g, \"\") + normalizePath(to);\n}\nexport function extractSearchParams(url) {\n const params = {};\n url.searchParams.forEach((value, key) => {\n params[key] = value;\n });\n return params;\n}\nexport function createMatcher(path, partial, matchFilters) {\n const [pattern, splat] = path.split(\"/*\", 2);\n const segments = pattern.split(\"/\").filter(Boolean);\n const len = segments.length;\n return (location) => {\n const locSegments = location.split(\"/\").filter(Boolean);\n const lenDiff = locSegments.length - len;\n if (lenDiff < 0 || (lenDiff > 0 && splat === undefined && !partial)) {\n return null;\n }\n const match = {\n path: len ? \"\" : \"/\",\n params: {}\n };\n const matchFilter = (s) => matchFilters === undefined ? undefined : matchFilters[s];\n for (let i = 0; i < len; i++) {\n const segment = segments[i];\n const locSegment = locSegments[i];\n const dynamic = segment[0] === \":\";\n const key = dynamic ? segment.slice(1) : segment;\n if (dynamic && matchSegment(locSegment, matchFilter(key))) {\n match.params[key] = locSegment;\n }\n else if (dynamic || !matchSegment(locSegment, segment)) {\n return null;\n }\n match.path += `/${locSegment}`;\n }\n if (splat) {\n const remainder = lenDiff ? locSegments.slice(-lenDiff).join(\"/\") : \"\";\n if (matchSegment(remainder, matchFilter(splat))) {\n match.params[splat] = remainder;\n }\n else {\n return null;\n }\n }\n return match;\n };\n}\nfunction matchSegment(input, filter) {\n const isEqual = (s) => s.localeCompare(input, undefined, { sensitivity: \"base\" }) === 0;\n if (filter === undefined) {\n return true;\n }\n else if (typeof filter === \"string\") {\n return isEqual(filter);\n }\n else if (typeof filter === \"function\") {\n return filter(input);\n }\n else if (Array.isArray(filter)) {\n return filter.some(isEqual);\n }\n else if (filter instanceof RegExp) {\n return filter.test(input);\n }\n return false;\n}\nexport function scoreRoute(route) {\n const [pattern, splat] = route.pattern.split(\"/*\", 2);\n const segments = pattern.split(\"/\").filter(Boolean);\n return segments.reduce((score, segment) => score + (segment.startsWith(\":\") ? 2 : 3), segments.length - (splat === undefined ? 0 : 1));\n}\nexport function createMemoObject(fn) {\n const map = new Map();\n const owner = getOwner();\n return new Proxy({}, {\n get(_, property) {\n if (!map.has(property)) {\n runWithOwner(owner, () => map.set(property, createMemo(() => fn()[property])));\n }\n return map.get(property)();\n },\n getOwnPropertyDescriptor() {\n return {\n enumerable: true,\n configurable: true\n };\n },\n ownKeys() {\n return Reflect.ownKeys(fn());\n }\n });\n}\nexport function mergeSearchString(search, params) {\n const merged = new URLSearchParams(search);\n Object.entries(params).forEach(([key, value]) => {\n if (value == null || value === \"\") {\n merged.delete(key);\n }\n else {\n merged.set(key, String(value));\n }\n });\n const s = merged.toString();\n return s ? `?${s}` : \"\";\n}\nexport function expandOptionals(pattern) {\n let match = /(\\/?\\:[^\\/]+)\\?/.exec(pattern);\n if (!match)\n return [pattern];\n let prefix = pattern.slice(0, match.index);\n let suffix = pattern.slice(match.index + match[0].length);\n const prefixes = [prefix, (prefix += match[1])];\n // This section handles adjacent optional params. We don't actually want all permuations since\n // that will lead to equivalent routes which have the same number of params. For example\n // `/:a?/:b?/:c`? only has the unique expansion: `/`, `/:a`, `/:a/:b`, `/:a/:b/:c` and we can\n // discard `/:b`, `/:c`, `/:b/:c` by building them up in order and not recursing. This also helps\n // ensure predictability where earlier params have precidence.\n while ((match = /^(\\/\\:[^\\/]+)\\?/.exec(suffix))) {\n prefixes.push((prefix += match[1]));\n suffix = suffix.slice(match[0].length);\n }\n return expandOptionals(suffix).reduce((results, expansion) => [...results, ...prefixes.map(p => p + expansion)], []);\n}\n","import { createComponent, createContext, createMemo, createRenderEffect, createSignal, on, onCleanup, untrack, useContext, startTransition, resetErrorBoundaries } from \"solid-js\";\nimport { isServer, delegateEvents } from \"solid-js/web\";\nimport { normalizeIntegration } from \"./integration\";\nimport { createBeforeLeave } from \"./lifecycle\";\nimport { createMemoObject, extractSearchParams, invariant, resolvePath, createMatcher, joinPaths, scoreRoute, mergeSearchString, expandOptionals } from \"./utils\";\nconst MAX_REDIRECTS = 100;\nexport const RouterContextObj = createContext();\nexport const RouteContextObj = createContext();\nexport const useRouter = () => invariant(useContext(RouterContextObj), \"Make sure your app is wrapped in a \");\nlet TempRoute;\nexport const useRoute = () => TempRoute || useContext(RouteContextObj) || useRouter().base;\nexport const useResolvedPath = (path) => {\n const route = useRoute();\n return createMemo(() => route.resolvePath(path()));\n};\nexport const useHref = (to) => {\n const router = useRouter();\n return createMemo(() => {\n const to_ = to();\n return to_ !== undefined ? router.renderPath(to_) : to_;\n });\n};\nexport const useNavigate = () => useRouter().navigatorFactory();\nexport const useLocation = () => useRouter().location;\nexport const useIsRouting = () => useRouter().isRouting;\nexport const useMatch = (path, matchFilters) => {\n const location = useLocation();\n const matchers = createMemo(() => expandOptionals(path()).map(path => createMatcher(path, undefined, matchFilters)));\n return createMemo(() => {\n for (const matcher of matchers()) {\n const match = matcher(location.pathname);\n if (match)\n return match;\n }\n });\n};\nexport const useParams = () => useRoute().params;\nexport const useRouteData = () => useRoute().data;\nexport const useSearchParams = () => {\n const location = useLocation();\n const navigate = useNavigate();\n const setSearchParams = (params, options) => {\n const searchString = untrack(() => location.pathname + mergeSearchString(location.search, params) + location.hash);\n navigate(searchString, {\n scroll: false,\n resolve: false,\n ...options\n });\n };\n return [location.query, setSearchParams];\n};\nexport const useBeforeLeave = (listener) => {\n const s = useRouter().beforeLeave.subscribe({\n listener,\n location: useLocation(),\n navigate: useNavigate()\n });\n onCleanup(s);\n};\nexport function createRoutes(routeDef, base = \"\", fallback) {\n const { component, data, children } = routeDef;\n const isLeaf = !children || (Array.isArray(children) && !children.length);\n const shared = {\n key: routeDef,\n element: component\n ? () => createComponent(component, {})\n : () => {\n const { element } = routeDef;\n return element === undefined && fallback\n ? createComponent(fallback, {})\n : element;\n },\n preload: routeDef.component\n ? component.preload\n : routeDef.preload,\n data\n };\n return asArray(routeDef.path).reduce((acc, path) => {\n for (const originalPath of expandOptionals(path)) {\n const path = joinPaths(base, originalPath);\n const pattern = isLeaf ? path : path.split(\"/*\", 1)[0];\n acc.push({\n ...shared,\n originalPath,\n pattern,\n matcher: createMatcher(pattern, !isLeaf, routeDef.matchFilters)\n });\n }\n return acc;\n }, []);\n}\nexport function createBranch(routes, index = 0) {\n return {\n routes,\n score: scoreRoute(routes[routes.length - 1]) * 10000 - index,\n matcher(location) {\n const matches = [];\n for (let i = routes.length - 1; i >= 0; i--) {\n const route = routes[i];\n const match = route.matcher(location);\n if (!match) {\n return null;\n }\n matches.unshift({\n ...match,\n route\n });\n }\n return matches;\n }\n };\n}\nfunction asArray(value) {\n return Array.isArray(value) ? value : [value];\n}\nexport function createBranches(routeDef, base = \"\", fallback, stack = [], branches = []) {\n const routeDefs = asArray(routeDef);\n for (let i = 0, len = routeDefs.length; i < len; i++) {\n const def = routeDefs[i];\n if (def && typeof def === \"object\" && def.hasOwnProperty(\"path\")) {\n const routes = createRoutes(def, base, fallback);\n for (const route of routes) {\n stack.push(route);\n const isEmptyArray = Array.isArray(def.children) && def.children.length === 0;\n if (def.children && !isEmptyArray) {\n createBranches(def.children, route.pattern, fallback, stack, branches);\n }\n else {\n const branch = createBranch([...stack], branches.length);\n branches.push(branch);\n }\n stack.pop();\n }\n }\n }\n // Stack will be empty on final return\n return stack.length ? branches : branches.sort((a, b) => b.score - a.score);\n}\nexport function getRouteMatches(branches, location) {\n for (let i = 0, len = branches.length; i < len; i++) {\n const match = branches[i].matcher(location);\n if (match) {\n return match;\n }\n }\n return [];\n}\nexport function createLocation(path, state) {\n const origin = new URL(\"http://sar\");\n const url = createMemo(prev => {\n const path_ = path();\n try {\n return new URL(path_, origin);\n }\n catch (err) {\n console.error(`Invalid path ${path_}`);\n return prev;\n }\n }, origin, {\n equals: (a, b) => a.href === b.href\n });\n const pathname = createMemo(() => url().pathname);\n const search = createMemo(() => url().search, true);\n const hash = createMemo(() => url().hash);\n const key = createMemo(() => \"\");\n return {\n get pathname() {\n return pathname();\n },\n get search() {\n return search();\n },\n get hash() {\n return hash();\n },\n get state() {\n return state();\n },\n get key() {\n return key();\n },\n query: createMemoObject(on(search, () => extractSearchParams(url())))\n };\n}\nexport function createRouterContext(integration, base = \"\", data, out) {\n const { signal: [source, setSource], utils = {} } = normalizeIntegration(integration);\n const parsePath = utils.parsePath || (p => p);\n const renderPath = utils.renderPath || (p => p);\n const beforeLeave = utils.beforeLeave || createBeforeLeave();\n const basePath = resolvePath(\"\", base);\n const output = isServer && out\n ? Object.assign(out, {\n matches: [],\n url: undefined\n })\n : undefined;\n if (basePath === undefined) {\n throw new Error(`${basePath} is not a valid base path`);\n }\n else if (basePath && !source().value) {\n setSource({ value: basePath, replace: true, scroll: false });\n }\n const [isRouting, setIsRouting] = createSignal(false);\n const start = async (callback) => {\n setIsRouting(true);\n try {\n await startTransition(callback);\n }\n finally {\n setIsRouting(false);\n }\n };\n const [reference, setReference] = createSignal(source().value);\n const [state, setState] = createSignal(source().state);\n const location = createLocation(reference, state);\n const referrers = [];\n const baseRoute = {\n pattern: basePath,\n params: {},\n path: () => basePath,\n outlet: () => null,\n resolvePath(to) {\n return resolvePath(basePath, to);\n }\n };\n if (data) {\n try {\n TempRoute = baseRoute;\n baseRoute.data = data({\n data: undefined,\n params: {},\n location,\n navigate: navigatorFactory(baseRoute)\n });\n }\n finally {\n TempRoute = undefined;\n }\n }\n function navigateFromRoute(route, to, options) {\n // Untrack in case someone navigates in an effect - don't want to track `reference` or route paths\n untrack(() => {\n if (typeof to === \"number\") {\n if (!to) {\n // A delta of 0 means stay at the current location, so it is ignored\n }\n else if (utils.go) {\n beforeLeave.confirm(to, options) && utils.go(to);\n }\n else {\n console.warn(\"Router integration does not support relative routing\");\n }\n return;\n }\n const { replace, resolve, scroll, state: nextState } = {\n replace: false,\n resolve: true,\n scroll: true,\n ...options\n };\n const resolvedTo = resolve ? route.resolvePath(to) : resolvePath(\"\", to);\n if (resolvedTo === undefined) {\n throw new Error(`Path '${to}' is not a routable path`);\n }\n else if (referrers.length >= MAX_REDIRECTS) {\n throw new Error(\"Too many redirects\");\n }\n const current = reference();\n if (resolvedTo !== current || nextState !== state()) {\n if (isServer) {\n if (output) {\n output.url = resolvedTo;\n }\n setSource({ value: resolvedTo, replace, scroll, state: nextState });\n }\n else if (beforeLeave.confirm(resolvedTo, options)) {\n const len = referrers.push({ value: current, replace, scroll, state: state() });\n start(() => {\n setReference(resolvedTo);\n setState(nextState);\n resetErrorBoundaries();\n }).then(() => {\n if (referrers.length === len) {\n navigateEnd({\n value: resolvedTo,\n state: nextState\n });\n }\n });\n }\n }\n });\n }\n function navigatorFactory(route) {\n // Workaround for vite issue (https://github.com/vitejs/vite/issues/3803)\n route = route || useContext(RouteContextObj) || baseRoute;\n return (to, options) => navigateFromRoute(route, to, options);\n }\n function navigateEnd(next) {\n const first = referrers[0];\n if (first) {\n if (next.value !== first.value || next.state !== first.state) {\n setSource({\n ...next,\n replace: first.replace,\n scroll: first.scroll\n });\n }\n referrers.length = 0;\n }\n }\n createRenderEffect(() => {\n const { value, state } = source();\n // Untrack this whole block so `start` doesn't cause Solid's Listener to be preserved\n untrack(() => {\n if (value !== reference()) {\n start(() => {\n setReference(value);\n setState(state);\n });\n }\n });\n });\n if (!isServer) {\n function handleAnchorClick(evt) {\n if (evt.defaultPrevented ||\n evt.button !== 0 ||\n evt.metaKey ||\n evt.altKey ||\n evt.ctrlKey ||\n evt.shiftKey)\n return;\n const a = evt\n .composedPath()\n .find(el => el instanceof Node && el.nodeName.toUpperCase() === \"A\");\n if (!a || !a.hasAttribute(\"link\"))\n return;\n const href = a.href;\n if (a.target || (!href && !a.hasAttribute(\"state\")))\n return;\n const rel = (a.getAttribute(\"rel\") || \"\").split(/\\s+/);\n if (a.hasAttribute(\"download\") || (rel && rel.includes(\"external\")))\n return;\n const url = new URL(href);\n if (url.origin !== window.location.origin ||\n (basePath && url.pathname && !url.pathname.toLowerCase().startsWith(basePath.toLowerCase())))\n return;\n const to = parsePath(url.pathname + url.search + url.hash);\n const state = a.getAttribute(\"state\");\n evt.preventDefault();\n navigateFromRoute(baseRoute, to, {\n resolve: false,\n replace: a.hasAttribute(\"replace\"),\n scroll: !a.hasAttribute(\"noscroll\"),\n state: state && JSON.parse(state)\n });\n }\n // ensure delegated events run first\n delegateEvents([\"click\"]);\n document.addEventListener(\"click\", handleAnchorClick);\n onCleanup(() => document.removeEventListener(\"click\", handleAnchorClick));\n }\n return {\n base: baseRoute,\n out: output,\n location,\n isRouting,\n renderPath,\n parsePath,\n navigatorFactory,\n beforeLeave\n };\n}\nexport function createRouteContext(router, parent, child, match, params) {\n const { base, location, navigatorFactory } = router;\n const { pattern, element: outlet, preload, data } = match().route;\n const path = createMemo(() => match().path);\n preload && preload();\n const route = {\n parent,\n pattern,\n get child() {\n return child();\n },\n path,\n params,\n data: parent.data,\n outlet,\n resolvePath(to) {\n return resolvePath(base.path(), to, path());\n }\n };\n if (data) {\n try {\n TempRoute = route;\n route.data = data({ data: parent.data, params, location, navigate: navigatorFactory(route) });\n }\n finally {\n TempRoute = undefined;\n }\n }\n return route;\n}\n","/*@refresh skip*/\nimport { children, createMemo, createRoot, mergeProps, on, Show, splitProps } from \"solid-js\";\nimport { isServer } from \"solid-js/web\";\nimport { pathIntegration, staticIntegration } from \"./integration\";\nimport { createBranches, createRouteContext, createRouterContext, getRouteMatches, RouteContextObj, RouterContextObj, useHref, useLocation, useNavigate, useResolvedPath, useRoute, useRouter } from \"./routing\";\nimport { joinPaths, normalizePath, createMemoObject } from \"./utils\";\nexport const Router = (props) => {\n const { source, url, base, data, out } = props;\n const integration = source || (isServer ? staticIntegration({ value: url || \"\" }) : pathIntegration());\n const routerState = createRouterContext(integration, base, data, out);\n return ({props.children});\n};\nexport const Routes = (props) => {\n const router = useRouter();\n const parentRoute = useRoute();\n const routeDefs = children(() => props.children);\n const branches = createMemo(() => createBranches(routeDefs(), joinPaths(parentRoute.pattern, props.base || \"\"), Outlet));\n const matches = createMemo(() => getRouteMatches(branches(), router.location.pathname));\n const params = createMemoObject(() => {\n const m = matches();\n const params = {};\n for (let i = 0; i < m.length; i++) {\n Object.assign(params, m[i].params);\n }\n return params;\n });\n if (router.out) {\n router.out.matches.push(matches().map(({ route, path, params }) => ({\n originalPath: route.originalPath,\n pattern: route.pattern,\n path,\n params\n })));\n }\n const disposers = [];\n let root;\n const routeStates = createMemo(on(matches, (nextMatches, prevMatches, prev) => {\n let equal = prevMatches && nextMatches.length === prevMatches.length;\n const next = [];\n for (let i = 0, len = nextMatches.length; i < len; i++) {\n const prevMatch = prevMatches && prevMatches[i];\n const nextMatch = nextMatches[i];\n if (prev && prevMatch && nextMatch.route.key === prevMatch.route.key) {\n next[i] = prev[i];\n }\n else {\n equal = false;\n if (disposers[i]) {\n disposers[i]();\n }\n createRoot(dispose => {\n disposers[i] = dispose;\n next[i] = createRouteContext(router, next[i - 1] || parentRoute, () => routeStates()[i + 1], () => matches()[i], params);\n });\n }\n }\n disposers.splice(nextMatches.length).forEach(dispose => dispose());\n if (prev && equal) {\n return prev;\n }\n root = next[0];\n return next;\n }));\n return (\n {route => {route.outlet()}}\n );\n};\nexport const useRoutes = (routes, base) => {\n return () => {routes};\n};\nexport const Route = (props) => {\n const childRoutes = children(() => props.children);\n return mergeProps(props, {\n get children() {\n return childRoutes();\n }\n });\n};\nexport const Outlet = () => {\n const route = useRoute();\n return (\n {child => {child.outlet()}}\n );\n};\nexport function A(props) {\n props = mergeProps({ inactiveClass: \"inactive\", activeClass: \"active\" }, props);\n const [, rest] = splitProps(props, [\n \"href\",\n \"state\",\n \"class\",\n \"activeClass\",\n \"inactiveClass\",\n \"end\"\n ]);\n const to = useResolvedPath(() => props.href);\n const href = useHref(to);\n const location = useLocation();\n const isActive = createMemo(() => {\n const to_ = to();\n if (to_ === undefined)\n return false;\n const path = normalizePath(to_.split(/[?#]/, 1)[0]).toLowerCase();\n const loc = normalizePath(location.pathname).toLowerCase();\n return props.end ? path === loc : loc.startsWith(path);\n });\n return ();\n}\n// deprecated alias exports\nexport { A as Link, A as NavLink };\nexport function Navigate(props) {\n const navigate = useNavigate();\n const location = useLocation();\n const { href, state } = props;\n const path = typeof href === \"function\" ? href({ navigate, location }) : href;\n navigate(path, { replace: true, state });\n return null;\n}\n","import { UnifiedItem } from \"./types/data\";\n\nexport const mainIntroductionCSSClass = `leading-8 text-white/80 text-lg lg:text-xl my-8 max-w-prose whitespace-pre-wrap`;\nexport const mainItemTitleCSSClass = `text-3xl font-bold text-white`;\nexport const statLabelCSSClass = `text-white/50 uppercase text-xs font-bold tracking-widest`;\nexport const tooltipCSSClass = `bg-gray-800 outline-2 outline outline-white/20 p-4 max-w-sm drop-shadow-lg rounded`;\nexport const itemGridCSSClass = `grid grid-cols-1 sm:grid-cols-2 xl:grid-cols-3 gap-7`;\nexport const secondaryButtonClass = `text-gray-300 font-bold text-sm bg-gray-600 rounded px-3 py-2 hover:bg-gray-500 hover:text-gray-50 transition`;\n\nexport function getItemCssClass(item: UnifiedItem) {\n return item.type === \"unit\" ? \"item-unit\" :\n item.type == \"building\" ? \"item-building\" :\n item.type == \"technology\" ? \"item-tech\" :\n item.type == \"ability\" ? \"item-ability\" : \"item-building\";\n}\n","import { Component, JSX, splitProps } from \"solid-js\";\n\nexport const ItemIcon: Component & { url: string }> = (props) => {\n const [local, imgProps] = splitProps(props, [\"url\"]);\n \n const useLocal = (import.meta.env.DEV || window.location.hostname.endsWith('pages.dev'));\n const inRuby = !!import.meta.env.VITE_RUBY_SOURCE_CODE_DIR;\n const url = useLocal ? local.url?.replace(/https?:\\/\\/[a-z0-9.]+\\/images/, inRuby ? '/vite-dev/lib/explorer/data/images' : '') : local.url;\n\n return ;\n};\n","import { createSignal } from \"solid-js\";\nimport { civAbbr } from \"./types/data\";\nimport { CivConfig } from \"@data/types/civs\";\nimport { splitUnitsIntoGroups, splitBuildingsIntoGroups, splitTechnologiesIntroGroups } from \"./query/utils\";\n\nexport const [hideNav, setHideNav] = createSignal(false);\nexport const [globalAgeFilter, setGlobalAgeFilter] = createSignal(4);\nexport const [globalCivFilter, setGlobalCivsFilter] = createSignal(null);\n\nexport async function getStructuredItems(civilization?: CivConfig) {\n const sdk = await import(\"@data/sdk\");\n if (!civilization)\n return {\n civ: undefined,\n units: splitUnitsIntoGroups(sdk.units.order(\"hitpoints\", \"age\")),\n buildings: splitBuildingsIntoGroups(sdk.buildings.order(\"hitpoints\", \"age\")),\n technologies: splitTechnologiesIntroGroups(sdk.technologies.order(\"age\")),\n };\n const civ = sdk.civilizations.Get(civilization);\n if (!civ.info) return;\n return {\n civ,\n units: splitUnitsIntoGroups(civ.units.order(\"hitpoints\", \"age\")),\n buildings: splitBuildingsIntoGroups(civ.buildings.order(\"hitpoints\", \"age\")),\n technologies: splitTechnologiesIntroGroups(civ.technologies.order(\"age\")),\n };\n}\n\nexport function parseCurrentLocation(pathname: string) {\n const path = pathname?.toLowerCase() ?? \"\";\n const [route, civ, subroute] = path.match(/\\/civs\\/([a-z]+)\\/?([\\w/-]*)/i) ?? [];\n const itemType = subroute?.split(\"/\")[0] || (civ?.length ? \"\" : path.match(/(units|buildings|technologies)/i)?.[0])?.toLowerCase();\n const id = [\"buildings\", \"technologies\", \"units\"].includes(itemType);\n return { route, civ, subroute, itemType };\n}\n","import { Link } from \"@solidjs/router\";\nimport { Component, For, ParentComponent } from \"solid-js\";\nimport { CIVILIZATIONS, PRETTY_AGE_MAP } from \"../config\";\nimport { civConfig, UnifiedItem } from \"../types/data\";\nimport { CivFlag } from \"./CivFlag\";\nimport { Icon } from \"./Icon\";\nimport { ItemIcon } from \"./ItemIcon\";\nimport { globalAgeFilter } from \"../global\";\n\nconst typeToPathMap = {\n building: \"buildings\",\n unit: \"units\",\n technology: \"technologies\",\n};\n\nexport function getItemHref(item: UnifiedItem, civ?: civConfig) {\n if (item.civs.length == 1 && !civ) civ = CIVILIZATIONS[item.civs[0]];\n return `${civ ? `/civs/${civ.slug}` : \"\"}/${typeToPathMap[item.type]}/${item.id}`;\n}\n\nexport const Card: ParentComponent<{ item: UnifiedItem; civ?: civConfig }> = (props) => {\n const minAge = () => (!props.civ ? props.item.minAge : props.item.variations.reduce((a, v) => (v.civs.includes(props.civ.abbr) ? Math.min(a, v.age) : a), 4));\n\n return (\n = minAge() ? 1 : 0.5 }}\n >\n \n \n \n\n {props.children}\n\n {props.civ ? (\n props.item.civs.length == 1 && (\n
\n \n Unique to {props.civ.name}\n \n
\n )\n ) : (\n
\n \n {(civ) =>\n props.item.type != \"technology\" ? (\n \n \n \n ) : (\n \n )\n }\n \n {props.item.civs.length == 1 && (\n \n Unique\n \n )}\n
\n )}\n \n );\n};\n\nexport const CardHeader: Component<{ item: UnifiedItem; civ?: civConfig; minAge: number }> = (props) => {\n return (\n
\n
\n \n
\n
\n
\n

{props.item.name}

\n {PRETTY_AGE_MAP[props.minAge]}\n
\n

{props.item.displayClasses.join(\", \")}

\n
\n
\n );\n};\n\n// const increaseBarSizeForClass = [\"Siege\", \"Elephant\"];\n// function getBarSize(unit: UnifiedItem, baseSize: number, increasedSize: number) {\n// return unit.classes.some((c) => increaseBarSizeForClass.includes(c)) ? increasedSize : baseSize;\n// }\n\n// export const Card: Component<{ unit: UnifiedItem<(Building | Unit | Technology)>; baseHref?: string; civ?: civConfig | civAbbr }> = (props) => {\n// const [stats] = createResource(() => getUnitStats(props.unit, props.civ));\n// const minAge = createMemo(() => props.unit.variations.sort((a, b) => a.age - b.age)[0].age);\n\n// return (\n// = minAge() ? 1 : 0.5 }}\n// >\n// \n//
\n//
\n// \n//
\n//
\n//
\n//

{props.unit.name}

\n// {PRETTY_AGE_MAP[minAge()]}\n//
\n//

{props.unit.classes.join(\", \")}

\n//
\n//
\n// \n// \n// <>\n//
\n// \n// \n// {/* */}\n// \n// {/* */}\n// \n//
\n//
\n//
\n// \n//
\n// \n// \n//
\n// \n//
\n// \n// );\n// };\n","import { Link, useLocation, useNavigate } from \"@solidjs/router\";\nimport { Component, createEffect, createResource, createSignal, For, onCleanup, onMount, Show } from \"solid-js\";\nimport { ITEMS, SIMILAIR_ITEMS } from \"../config\";\nimport { UnifiedItem } from \"../types/data\";\nimport { getItemHref } from \"./Cards\";\nimport { Icon } from \"./Icon\";\nimport { ItemIcon } from \"./ItemIcon\";\n\nconst isMac = /mac/i.test(navigator.userAgent);\n\nasync function getEverything() {\n const SDK = await import(\"@data/sdk\");\n return [SDK.buildings, SDK.technologies, SDK.units].flat();\n}\n\nfunction mergeSearchableData(item: UnifiedItem) {\n const keywords = [\n item.name.toLowerCase(),\n item.displayClasses.join(\" \").toLowerCase(),\n SIMILAIR_ITEMS.filter((x) => x.includes(item.id)).flatMap((x) => x.join(\" \").replace(\"-\", \" \")),\n ];\n return [keywords.join(\" \"), keywords] as [string, string[]];\n}\n\nlet allItems: [match: string, keywords: string[], item: UnifiedItem][];\nexport async function search(q: string = \"\") {\n q = q.trim().toLowerCase();\n if (!q.length) return [];\n\n allItems ??= (await getEverything()).map((x) => [...mergeSearchableData(x), x] as [string, string[], UnifiedItem]);\n\n return allItems\n .filter(([m]) => m.includes(q))\n .map(([, ks, item]) => ({\n score: ks.reduce((acc, k, i) => {\n let score = 0;\n if (k.includes(q)) score += 8 - i * 5;\n else return acc;\n if (i == 0) score += Math.max(Math.max(10 - k.length, 5) - k.indexOf(q), 0);\n if (item.type == \"unit\") score += 5;\n return acc + score;\n }, 0),\n item,\n }))\n .sort((a, b) => b.score - a.score);\n}\n\nfunction scrollSelectedIntoView(wrapper: HTMLElement) {\n const selectedEl = wrapper?.querySelector(\".selected\");\n if (!selectedEl) return;\n\n if (selectedEl.offsetTop - wrapper.clientHeight > wrapper.scrollTop - selectedEl.clientHeight * 2)\n wrapper.scrollTo({ top: selectedEl.offsetTop, behavior: \"smooth\" });\n else if (selectedEl.offsetTop - selectedEl.clientHeight < wrapper.scrollTop)\n wrapper.scrollTo({\n top: selectedEl.offsetTop - wrapper.clientHeight + selectedEl.clientHeight,\n behavior: \"smooth\",\n });\n}\n\nexport const Search: Component<{ class?: string }> = (props) => {\n const [query, setQuery] = createSignal(\"\");\n const [results] = createResource(query, search);\n const [selected, setSelected] = createSignal(0);\n const navigate = useNavigate();\n const location = useLocation();\n const changeSelected = (delta: number) => {\n setSelected(Math.min(Math.max(selected() + delta, -1), results().length - 1));\n scrollSelectedIntoView(wrapper);\n };\n const close = () => {\n setQuery(\"\");\n setSelected(-1);\n inputRef.value = \"\";\n };\n\n const focus = () => inputRef.focus();\n createEffect(() => location.pathname && close());\n createEffect(() => results() && setSelected(0));\n\n function globalKeyupListener(e: KeyboardEvent) {\n if (e.key === \"k\" && (e.metaKey || e.ctrlKey)) {\n focus();\n e.preventDefault();\n }\n }\n\n onMount(() => window.addEventListener(\"keydown\", globalKeyupListener));\n onCleanup(() => window.removeEventListener(\"keydown\", globalKeyupListener));\n\n let inputRef: HTMLInputElement;\n let wrapper: HTMLDivElement;\n\n return (\n
\n \n
\n
\n {query() ? `↓↑ ↵` : `${isMac ? \"⌘\" : \"ctrl\"} + k`}\n
\n
\n setQuery(e.currentTarget.value)}\n onKeyDown={(e) => {\n if (e.key == \"ArrowUp\") changeSelected(-1);\n if (e.key == \"ArrowDown\") changeSelected(1);\n if (e.key == \"Escape\") close();\n if (e.key == \"Enter\" && selected() >= 0) {\n navigate(getItemHref(results()[selected()].item));\n close();\n }\n }}\n />\n 1}>\n \n \n
No results
\n
\n \n {({ score, item }, i) => (\n \n
\n \n
\n {item.name}\n {/* {score} */}\n \n )}\n
\n
\n \n \n );\n};\n","function t(t){return t.split(\"-\")[0]}function e(t){return t.split(\"-\")[1]}function n(e){return[\"top\",\"bottom\"].includes(t(e))?\"x\":\"y\"}function r(t){return\"y\"===t?\"height\":\"width\"}function o(o){let{reference:i,floating:a,placement:l}=o;const s=i.x+i.width/2-a.width/2,c=i.y+i.height/2-a.height/2;let f;switch(t(l)){case\"top\":f={x:s,y:i.y-a.height};break;case\"bottom\":f={x:s,y:i.y+i.height};break;case\"right\":f={x:i.x+i.width,y:c};break;case\"left\":f={x:i.x-a.width,y:c};break;default:f={x:i.x,y:i.y}}const m=n(l),u=r(m);switch(e(l)){case\"start\":f[m]=f[m]-(i[u]/2-a[u]/2);break;case\"end\":f[m]=f[m]+(i[u]/2-a[u]/2)}return f}const i=async(t,e,n)=>{const{placement:r=\"bottom\",strategy:i=\"absolute\",middleware:a=[],platform:l}=n;let s=await l.getElementRects({reference:t,floating:e,strategy:i}),{x:c,y:f}=o({...s,placement:r}),m=r,u={};for(let n=0;n({name:\"arrow\",options:e,async fn(o){const{element:i,padding:l=0}=null!=e?e:{},{x:s,y:c,placement:f,rects:u,platform:p}=o;if(null==i)return{};const g=a(l),d={x:s,y:c},h=n(t(f)),y=r(h),x=await p.getDimensions({element:i}),w=\"y\"===h?\"top\":\"left\",b=\"y\"===h?\"bottom\":\"right\",v=u.reference[y]+u.reference[h]-d[h]-u.floating[y],A=d[h]-u.reference[h],P=await p.getOffsetParent({element:i}),k=P?\"y\"===h?P.clientHeight||0:P.clientWidth||0:0,R=v/2-A/2,D=g[w],O=k-x[y]-g[b],C=k/2-x[y]/2+R,E=m(D,C,O);return{data:{[h]:E,centerOffset:C-E}}}}),p={left:\"right\",right:\"left\",bottom:\"top\",top:\"bottom\"};function g(t){return t.replace(/left|right|bottom|top/g,(t=>p[t]))}function d(t,o){const i=\"start\"===e(t),a=n(t),l=r(a);let s=\"x\"===a?i?\"right\":\"left\":i?\"bottom\":\"top\";return o.reference[l]>o.floating[l]&&(s=g(s)),{main:s,cross:g(s)}}const h={start:\"end\",end:\"start\"};function y(t){return t.replace(/start|end/g,(t=>h[t]))}const x=[\"top\",\"right\",\"bottom\",\"left\"],w=x.reduce(((t,e)=>t.concat(e,e+\"-start\",e+\"-end\")),[]);const b=function(n){return void 0===n&&(n={}),{name:\"autoPlacement\",options:n,async fn(r){var o,i,a,l,c,f;const{x:m,y:u,rects:p,middlewareData:g,placement:h}=r,{alignment:x=null,allowedPlacements:b=w,autoAlignment:v=!0,...A}=n;if(null!=(o=g.autoPlacement)&&o.skip)return{};const P=function(n,r,o){return(n?[...o.filter((t=>e(t)===n)),...o.filter((t=>e(t)!==n))]:o.filter((e=>t(e)===e))).filter((t=>!n||e(t)===n||!!r&&y(t)!==t))}(x,v,b),k=await s(r,A),R=null!=(i=null==(a=g.autoPlacement)?void 0:a.index)?i:0,D=P[R],{main:O,cross:C}=d(D,p);if(h!==D)return{x:m,y:u,reset:{placement:P[0]}};const E=[k[t(D)],k[O],k[C]],B=[...null!=(l=null==(c=g.autoPlacement)?void 0:c.overflows)?l:[],{placement:D,overflows:E}],H=P[R+1];if(H)return{data:{index:R+1,overflows:B},reset:{placement:H}};const z=B.slice().sort(((t,e)=>t.overflows[0]-e.overflows[0])),F=null==(f=z.find((t=>{let{overflows:e}=t;return e.every((t=>t<=0))})))?void 0:f.placement;return{data:{skip:!0},reset:{placement:null!=F?F:z[0].placement}}}}};const v=function(e){return void 0===e&&(e={}),{name:\"flip\",options:e,async fn(n){var r,o;const{placement:i,middlewareData:a,rects:l,initialPlacement:c}=n;if(null!=(r=a.flip)&&r.skip)return{};const{mainAxis:f=!0,crossAxis:m=!0,fallbackPlacements:u,fallbackStrategy:p=\"bestFit\",flipAlignment:h=!0,...x}=e,w=t(i),b=u||(w===c||!h?[g(c)]:function(t){const e=g(t);return[y(t),e,y(e)]}(c)),v=[c,...b],A=await s(n,x),P=[];let k=(null==(o=a.flip)?void 0:o.overflows)||[];if(f&&P.push(A[w]),m){const{main:t,cross:e}=d(i,l);P.push(A[t],A[e])}if(k=[...k,{placement:i,overflows:P}],!P.every((t=>t<=0))){var R,D;const t=(null!=(R=null==(D=a.flip)?void 0:D.index)?R:0)+1,e=v[t];if(e)return{data:{index:t,overflows:k},reset:{placement:e}};let n=\"bottom\";switch(p){case\"bestFit\":{var O;const t=null==(O=k.slice().sort(((t,e)=>t.overflows.filter((t=>t>0)).reduce(((t,e)=>t+e),0)-e.overflows.filter((t=>t>0)).reduce(((t,e)=>t+e),0)))[0])?void 0:O.placement;t&&(n=t);break}case\"initialPlacement\":n=c}return{data:{skip:!0},reset:{placement:n}}}return{}}}};function A(t,e){return{top:t.top-e.height,right:t.right-e.width,bottom:t.bottom-e.height,left:t.left-e.width}}function P(t){return x.some((e=>t[e]>=0))}const k=()=>({name:\"hide\",async fn(t){const e=await s(t,{elementContext:\"reference\"}),n=await s(t,{altBoundary:!0}),r=A(e,t.rects.reference),o=A(n,t.rects.floating);return{data:{referenceHidden:P(r),referenceHiddenOffsets:r,escaped:P(o),escapedOffsets:o}}}});const R=function(e){return void 0===e&&(e=0),{name:\"offset\",options:e,fn(r){const{x:o,y:i,placement:a,rects:l}=r,s=function(e){let{placement:r,rects:o,value:i}=e;const a=t(r),l=[\"left\",\"top\"].includes(a)?-1:1,s=\"function\"==typeof i?i({...o,placement:r}):i,{mainAxis:c,crossAxis:f}=\"number\"==typeof s?{mainAxis:s,crossAxis:0}:{mainAxis:0,crossAxis:0,...s};return\"x\"===n(a)?{x:f,y:c*l}:{x:c*l,y:f}}({placement:a,rects:l,value:e});return{x:o+s.x,y:i+s.y,data:s}}}};function D(t){return\"x\"===t?\"y\":\"x\"}const O=function(e){return void 0===e&&(e={}),{name:\"shift\",options:e,async fn(r){const{x:o,y:i,placement:a}=r,{mainAxis:l=!0,crossAxis:c=!1,limiter:f={fn:t=>{let{x:e,y:n}=t;return{x:e,y:n}}},...u}=e,p={x:o,y:i},g=await s(r,u),d=n(t(a)),h=D(d);let y=p[d],x=p[h];if(l){const t=\"y\"===d?\"bottom\":\"right\";y=m(y+g[\"y\"===d?\"top\":\"left\"],y,y-g[t])}if(c){const t=\"y\"===h?\"bottom\":\"right\";x=m(x+g[\"y\"===h?\"top\":\"left\"],x,x-g[t])}const w=f.fn({...r,[d]:y,[h]:x});return{...w,data:{x:w.x-o,y:w.y-i}}}}},C=function(e){return void 0===e&&(e={}),{options:e,fn(r){const{x:o,y:i,placement:a,rects:l,middlewareData:s}=r,{offset:c=0,mainAxis:f=!0,crossAxis:m=!0}=e,u={x:o,y:i},p=n(a),g=D(p);let d=u[p],h=u[g];const y=\"function\"==typeof c?c({...l,placement:a}):c,x=\"number\"==typeof y?{mainAxis:y,crossAxis:0}:{mainAxis:0,crossAxis:0,...y};if(f){const t=\"y\"===p?\"height\":\"width\",e=l.reference[p]-l.floating[t]+x.mainAxis,n=l.reference[p]+l.reference[t]-x.mainAxis;dn&&(d=n)}if(m){var w,b,v,A;const e=\"y\"===p?\"width\":\"height\",n=[\"top\",\"left\"].includes(t(a)),r=l.reference[g]-l.floating[e]+(n&&null!=(w=null==(b=s.offset)?void 0:b[g])?w:0)+(n?0:x.crossAxis),o=l.reference[g]+l.reference[e]+(n?0:null!=(v=null==(A=s.offset)?void 0:A[g])?v:0)-(n?x.crossAxis:0);ho&&(h=o)}return{[p]:d,[g]:h}}}},E=function(n){return void 0===n&&(n={}),{name:\"size\",options:n,async fn(r){var o;const{placement:i,rects:a,middlewareData:l}=r,{apply:c,...m}=n;if(null!=(o=l.size)&&o.skip)return{};const u=await s(r,m),p=t(i),g=\"end\"===e(i);let d,h;\"top\"===p||\"bottom\"===p?(d=p,h=g?\"left\":\"right\"):(h=p,d=g?\"top\":\"bottom\");const y=f(u.left,0),x=f(u.right,0),w=f(u.top,0),b=f(u.bottom,0),v={height:a.floating.height-([\"left\",\"right\"].includes(i)?2*(0!==w||0!==b?w+b:f(u.top,u.bottom)):u[d]),width:a.floating.width-([\"top\",\"bottom\"].includes(i)?2*(0!==y||0!==x?y+x:f(u.left,u.right)):u[h])};return null==c||c({...v,...a}),{data:{skip:!0},reset:{rects:!0}}}}},B=function(e){return void 0===e&&(e={}),{name:\"inline\",options:e,async fn(r){var o,i;const{placement:s,elements:m,rects:u,platform:p,strategy:g,middlewareData:d}=r,{padding:h=2,x:y,y:x}=e;if(null!=(o=d.inline)&&o.skip)return{};const w=l(await p.convertOffsetParentRelativeRectToViewportRelativeRect({rect:u.reference,offsetParent:await p.getOffsetParent({element:m.floating}),strategy:g})),b=Array.from(null!=(i=await(null==p.getClientRects?void 0:p.getClientRects({element:m.reference})))?i:[]),v=a(h);return{data:{skip:!0},reset:{rects:await p.getElementRects({reference:{getBoundingClientRect:function(){var e;if(2===b.length&&b[0].left>b[1].right&&null!=y&&null!=x)return null!=(e=b.find((t=>y>t.left-v.left&&yt.top-v.top&&x=2){if(\"x\"===n(s)){const e=b[0],n=b[b.length-1],r=\"top\"===t(s),o=e.top,i=n.bottom,a=r?e.left:n.left,l=r?e.right:n.right;return{top:o,bottom:i,left:a,right:l,width:l-a,height:i-o,x:a,y:o}}const e=\"left\"===t(s),r=f(...b.map((t=>t.right))),o=c(...b.map((t=>t.left))),i=b.filter((t=>e?t.left===o:t.right===r)),a=i[0].top,l=i[i.length-1].bottom;return{top:a,bottom:l,left:o,right:r,width:r-o,height:l-a,x:o,y:a}}return w}},floating:m.floating,strategy:g})}}}}};export{u as arrow,b as autoPlacement,i as computePosition,s as detectOverflow,v as flip,k as hide,B as inline,C as limitShift,R as offset,l as rectToClientRect,O as shift,E as size};\n","import{rectToClientRect as t,computePosition as e}from\"@floating-ui/core\";export{arrow,autoPlacement,detectOverflow,flip,hide,inline,limitShift,offset,shift,size}from\"@floating-ui/core\";function n(t){return\"[object Window]\"===(null==t?void 0:t.toString())}function o(t){if(null==t)return window;if(!n(t)){const e=t.ownerDocument;return e&&e.defaultView||window}return t}function i(t){return o(t).getComputedStyle(t)}function r(t){return n(t)?\"\":t?(t.nodeName||\"\").toLowerCase():\"\"}function l(t){return t instanceof o(t).HTMLElement}function c(t){return t instanceof o(t).Element}function f(t){return t instanceof o(t).ShadowRoot||t instanceof ShadowRoot}function u(t){const{overflow:e,overflowX:n,overflowY:o}=i(t);return/auto|scroll|overlay|hidden/.test(e+o+n)}function s(t){return[\"table\",\"td\",\"th\"].includes(r(t))}function h(t){const e=navigator.userAgent.toLowerCase().includes(\"firefox\"),n=i(t);return\"none\"!==n.transform||\"none\"!==n.perspective||\"paint\"===n.contain||[\"transform\",\"perspective\"].includes(n.willChange)||e&&\"filter\"===n.willChange||e&&!!n.filter&&\"none\"!==n.filter}const d=Math.min,a=Math.max,g=Math.round;function p(t,e){void 0===e&&(e=!1);const n=t.getBoundingClientRect();let o=1,i=1;return e&&l(t)&&(o=t.offsetWidth>0&&g(n.width)/t.offsetWidth||1,i=t.offsetHeight>0&&g(n.height)/t.offsetHeight||1),{width:n.width/o,height:n.height/i,top:n.top/i,right:n.right/o,bottom:n.bottom/i,left:n.left/o,x:n.left/o,y:n.top/i}}function m(t){return(e=t,(e instanceof o(e).Node?t.ownerDocument:t.document)||window.document).documentElement;var e}function w(t){return n(t)?{scrollLeft:t.pageXOffset,scrollTop:t.pageYOffset}:{scrollLeft:t.scrollLeft,scrollTop:t.scrollTop}}function y(t){return p(m(t)).left+w(t).scrollLeft}function x(t,e,n){const o=l(e),i=m(e),c=p(t,o&&function(t){const e=p(t);return g(e.width)!==t.offsetWidth||g(e.height)!==t.offsetHeight}(e));let f={scrollLeft:0,scrollTop:0};const s={x:0,y:0};if(o||!o&&\"fixed\"!==n)if((\"body\"!==r(e)||u(i))&&(f=w(e)),l(e)){const t=p(e,!0);s.x=t.x+e.clientLeft,s.y=t.y+e.clientTop}else i&&(s.x=y(i));return{x:c.left+f.scrollLeft-s.x,y:c.top+f.scrollTop-s.y,width:c.width,height:c.height}}function v(t){return\"html\"===r(t)?t:t.assignedSlot||t.parentNode||(f(t)?t.host:null)||m(t)}function b(t){return l(t)&&\"fixed\"!==getComputedStyle(t).position?t.offsetParent:null}function L(t){const e=o(t);let n=b(t);for(;n&&s(n)&&\"static\"===getComputedStyle(n).position;)n=b(n);return n&&(\"html\"===r(n)||\"body\"===r(n)&&\"static\"===getComputedStyle(n).position&&!h(n))?e:n||function(t){let e=v(t);for(;l(e)&&![\"html\",\"body\"].includes(r(e));){if(h(e))return e;e=e.parentNode}return null}(t)||e}function W(t){return{width:t.offsetWidth,height:t.offsetHeight}}function T(t){return[\"html\",\"body\",\"#document\"].includes(r(t))?t.ownerDocument.body:l(t)&&u(t)?t:T(v(t))}function C(t,e){var n;void 0===e&&(e=[]);const i=T(t),r=i===(null==(n=t.ownerDocument)?void 0:n.body),l=o(i),c=r?[l].concat(l.visualViewport||[],u(i)?i:[]):i,f=e.concat(c);return r?f:f.concat(C(v(c)))}function R(e,n){return\"viewport\"===n?t(function(t){const e=o(t),n=m(t),i=e.visualViewport;let r=n.clientWidth,l=n.clientHeight,c=0,f=0;return i&&(r=i.width,l=i.height,Math.abs(e.innerWidth/i.scale-i.width)<.01&&(c=i.offsetLeft,f=i.offsetTop)),{width:r,height:l,x:c,y:f}}(e)):c(n)?function(t){const e=p(t),n=e.top+t.clientTop,o=e.left+t.clientLeft;return{top:n,left:o,x:o,y:n,right:o+t.clientWidth,bottom:n+t.clientHeight,width:t.clientWidth,height:t.clientHeight}}(n):t(function(t){var e;const n=m(t),o=w(t),r=null==(e=t.ownerDocument)?void 0:e.body,l=a(n.scrollWidth,n.clientWidth,r?r.scrollWidth:0,r?r.clientWidth:0),c=a(n.scrollHeight,n.clientHeight,r?r.scrollHeight:0,r?r.clientHeight:0);let f=-o.scrollLeft+y(t);const u=-o.scrollTop;return\"rtl\"===i(r||n).direction&&(f+=a(n.clientWidth,r?r.clientWidth:0)-l),{width:l,height:c,x:f,y:u}}(m(e)))}function H(t){const e=C(v(t)),n=[\"absolute\",\"fixed\"].includes(i(t).position)&&l(t)?L(t):t;return c(n)?e.filter((t=>c(t)&&function(t,e){const n=null==e.getRootNode?void 0:e.getRootNode();if(t.contains(e))return!0;if(n&&f(n)){let n=e;do{if(n&&t===n)return!0;n=n.parentNode||n.host}while(n)}return!1}(t,n)&&\"body\"!==r(t))):[]}const S={getElementRects:t=>{let{reference:e,floating:n,strategy:o}=t;return{reference:x(e,L(n),o),floating:{...W(n),x:0,y:0}}},convertOffsetParentRelativeRectToViewportRelativeRect:t=>function(t){let{rect:e,offsetParent:n,strategy:o}=t;const i=l(n),c=m(n);if(n===c)return e;let f={scrollLeft:0,scrollTop:0};const s={x:0,y:0};if((i||!i&&\"fixed\"!==o)&&((\"body\"!==r(n)||u(c))&&(f=w(n)),l(n))){const t=p(n,!0);s.x=t.x+n.clientLeft,s.y=t.y+n.clientTop}return{...e,x:e.x-f.scrollLeft+s.x,y:e.y-f.scrollTop+s.y}}(t),getOffsetParent:t=>{let{element:e}=t;return L(e)},isElement:t=>c(t),getDocumentElement:t=>{let{element:e}=t;return m(e)},getClippingClientRect:t=>function(t){let{element:e,boundary:n,rootBoundary:o}=t;const i=[...\"clippingParents\"===n?H(e):[].concat(n),o],r=i[0],l=i.reduce(((t,n)=>{const o=R(e,n);return t.top=a(o.top,t.top),t.right=d(o.right,t.right),t.bottom=d(o.bottom,t.bottom),t.left=a(o.left,t.left),t}),R(e,r));return l.width=l.right-l.left,l.height=l.bottom-l.top,l.x=l.left,l.y=l.top,l}(t),getDimensions:t=>{let{element:e}=t;return W(e)},getClientRects:t=>{let{element:e}=t;return e.getClientRects()}},D=(t,n,o)=>e(t,n,{platform:S,...o});export{D as computePosition,C as getScrollParents};\n","import { computePosition, offset, flip, shift } from \"@floating-ui/dom\";\nimport { Component, createSignal, onMount, onCleanup, Show } from \"solid-js\";\nimport { Portal } from \"solid-js/web\";\n\nexport const Tooltip: Component<{ attachTo: HTMLElement }> = (props) => {\n let [hover, setHover] = createSignal(false);\n const delay = 50;\n\n onMount(() => {\n props.attachTo?.addEventListener(\"mouseenter\", () => setHover(true));\n props.attachTo?.addEventListener(\"mouseleave\", () => setHover(false));\n });\n\n onCleanup(() => {\n props.attachTo?.removeEventListener(\"mouseenter\", () => setHover(true));\n props.attachTo?.removeEventListener(\"mouseleave\", () => setHover(false));\n });\n\n function positionTooltip(el) {\n Object.assign(el.style, { position: \"absolute\" });\n function updatePosition() {\n computePosition(props.attachTo, el, {\n placement: \"bottom-start\",\n strategy: \"absolute\",\n middleware: [flip(), shift()],\n }).then(({ x, y }) =>\n Object.assign(el.style, {\n left: `${x}px`,\n top: `${y}px`,\n opacity: \"\",\n zIndex: 999,\n })\n );\n }\n window.setTimeout(updatePosition, delay);\n window.addEventListener(\"scroll\", updatePosition);\n\n onCleanup(() => {\n window.removeEventListener(\"scroll\", updatePosition);\n });\n }\n return (\n <>\n \n \n
positionTooltip(el)}>\n {props.children}\n
\n
\n
\n \n );\n};\n","import { CivConfig, CivSlug } from \"@data/types/civs\";\nimport { Link, NavLink, useLocation } from \"@solidjs/router\";\nimport { Component, For, createEffect, createMemo, createResource, createSignal, onCleanup } from \"solid-js\";\nimport { CIVILIZATIONS, CIVILIZATION_BY_SLUG, ITEMS } from \"../config\";\nimport { parseCurrentLocation, getStructuredItems } from \"../global\";\nimport { Portal, Show } from \"solid-js/web\";\nimport { ItemSlug } from \"@data/sdk/utils\";\nimport { computePosition, offset, flip, shift, size } from \"@floating-ui/dom\";\nimport { Search } from \"./Search\";\nimport { ItemIcon } from \"./ItemIcon\";\nimport { getItemHref } from \"./Cards\";\nimport { Icon } from \"./Icon\";\nimport { CivFlag } from \"./CivFlag\";\n\nconst SDK = import(\"@data/sdk\");\nconst itemTypeLabels = {\n units: \"Units\",\n buildings: \"Buildings\",\n technologies: \"Technologies\",\n};\n\nexport const QuickNav: Component = () => {\n const location = useLocation();\n const current = createMemo(() => parseCurrentLocation(location.pathname));\n const currentCivilization = () => CIVILIZATION_BY_SLUG[current().civ as CivSlug] ?? undefined;\n const [civilization, setCivilization] = createSignal(currentCivilization());\n const [data] = createResource(civilization, getStructuredItems);\n const [view, setView] = createSignal<\"buildings\" | \"units\" | \"technologies\" | string>(current().itemType);\n const [show, setShow] = createSignal(true);\n\n createEffect(() => {\n setView(() => current().itemType || \"units\");\n });\n\n createEffect(() => {\n show() ? document.body.classList.add(\"overflow-hidden\") : document.body.classList.remove(\"overflow-hidden\");\n show() && setCivilization(() => currentCivilization());\n show() && setView(() => current().itemType || \"units\");\n });\n\n createEffect(() => view() && list.scrollTo({ top: 0 }));\n createEffect(() => current() && setShow(false));\n\n const [currentItem] = createResource(\n () => current().subroute,\n async () => {\n if (civilization()) return (await SDK).civilizations.Get(civilization()).Get(current().subroute as ItemSlug);\n else return (await SDK).Get(current().subroute as ItemSlug);\n }\n );\n\n let attachTo: HTMLButtonElement;\n let list: HTMLDivElement;\n function positionPopup(el) {\n function updatePosition() {\n computePosition(attachTo, el, {\n placement: \"bottom\",\n strategy: \"fixed\",\n }).then(({ x, y }) =>\n Object.assign(el.style, {\n left: `0px`,\n top: `${y + 10}px`,\n bottom: \"0px\",\n opacity: \"\",\n zIndex: 999,\n })\n );\n }\n updatePosition();\n window.addEventListener(\"scroll\", updatePosition);\n\n onCleanup(() => {\n window.removeEventListener(\"scroll\", updatePosition);\n });\n }\n\n return (\n
\n \n \n \n
positionPopup(el)}>\n
\n
\n
\n \n {(civ) => (\n \n )}\n \n
\n
\n
\n {Object.entries(itemTypeLabels).map(([type, label]) => (\n \n ))}\n
\n
\n \n {([key, items]) =>\n items?.length ? (\n
\n
\n

{key}

\n
\n \n {(item) => (\n \n
\n \n
\n

$2')}>

\n \n )}\n
\n
\n ) : (\n <>\n )\n }\n
\n
\n
\n
\n
\n
\n
\n );\n};\n","import { Link, NavLink, useIsRouting, useLocation } from \"@solidjs/router\";\nimport { Component, createMemo, createSignal, For, Show } from \"solid-js\";\nimport { CIVILIZATIONS, CIVILIZATION_BY_SLUG } from \"../config\";\nimport { tooltipCSSClass } from \"../styles\";\nimport { civAbbr, civConfig } from \"../types/data\";\nimport { CivFlag } from \"./CivFlag\";\nimport { Icon } from \"./Icon\";\nimport { Search } from \"./Search\";\nimport { Tooltip } from \"./Tooltip\";\nimport { globalAgeFilter, hideNav, setGlobalAgeFilter } from \"../global\";\nimport { QuickNav } from \"./QuickNav\";\n\nexport const Toolbar: Component = () => {\n const pending = useIsRouting();\n\n const location = useLocation();\n const current = createMemo(() => {\n const [route, civ, subroute] = location.pathname.match(/\\/civs\\/([a-z]+)\\/?([\\w/-]*)/i) ?? [];\n return { route, civ, subroute };\n });\n\n const smartCivLink = (civ: civConfig) => {\n const subroute = [`/civs/${civ.slug}`, current().subroute].join(\"/\");\n if (location.pathname.includes(subroute)) return `/civs/${civ.slug}`;\n return subroute;\n };\n\n const navButtonClass =\n \"w-12 h-7 md:w-10 lg:h-7 md:hover:bg-white md:hover:text-black bg-gray-900 text-white/70 text-lg px-3 grid rounded-md flex-none transition\";\n\n return (\n \n
\n
\n
\n {current().subroute ? (\n \n \n \n ) : (\n \n \n \n )}\n\n \n {(civ) => (\n \n
\n \n \n {(civ) => (\n \n )}\n \n\n {() => {\n let el;\n return (\n <>\n \n \n \n \n
\n

Learn more about the Explorer.

\n
\n \n {([type, label]) => (\n
\n {label}\n
\n )}\n \n
\n
\n \n );\n }}\n\n \n
\n
\n
\n Work in Progress: The Knights Templar and House of Lancaster civilizations aren't fully updated and miss stats, abilities and upgrades.
Explorer will continue to be updated over the next few weeks for both old and new civs.\n
\n
\n );\n};\n","/***\n Copyright 2013 Teun Duynstee\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n*/\nmodule.exports = (function() {\n\n function identity(v){return v;}\n\n function ignoreCase(v){return typeof(v)===\"string\" ? v.toLowerCase() : v;}\n\n function makeCompareFunction(f, opt){\n opt = typeof(opt)===\"object\" ? opt : {direction:opt};\n \n if(typeof(f)!=\"function\"){\n var prop = f;\n // make unary function\n f = function(v1){return !!v1[prop] ? v1[prop] : \"\";}\n }\n if(f.length === 1) {\n // f is a unary function mapping a single item to its sort score\n var uf = f;\n var preprocess = opt.ignoreCase?ignoreCase:identity;\n var cmp = opt.cmp || function(v1,v2) {return v1 < v2 ? -1 : v1 > v2 ? 1 : 0;}\n f = function(v1,v2) {return cmp(preprocess(uf(v1)), preprocess(uf(v2)));}\n }\n const descTokens = {\"-1\":'', desc:''};\n if(opt.direction in descTokens) return function(v1,v2){return -f(v1,v2)};\n return f;\n }\n\n /* adds a secondary compare function to the target function (`this` context)\n which is applied in case the first one returns 0 (equal)\n returns a new compare function, which has a `thenBy` method as well */\n function tb(func, opt) {\n /* should get value false for the first call. This can be done by calling the \n exported function, or the firstBy property on it (for es6 module compatibility)\n */\n var x = (typeof(this) == \"function\" && !this.firstBy) ? this : false;\n var y = makeCompareFunction(func, opt);\n var f = x ? function(a, b) {\n return x(a,b) || y(a,b);\n }\n : y;\n f.thenBy = tb;\n return f;\n }\n tb.firstBy = tb;\n return tb;\n})();\n","import { firstBy } from \"thenby\";\nimport { ITEMS } from \"@data/types/items\";\nimport { SUPPORTED_MODIFIER_PROPERTIES } from \"../config\";\nimport { Building, civAbbr, civConfig, Item, Modifier, Technology, UnifiedItem, Unit } from \"../types/data\";\nimport { CalculatedStats, Stat, StatPart, StatProperty } from \"../types/stats\";\nimport { getItemTechnologies, mapCivsArgument, modifierMatches } from \"./utils\";\n\nexport async function getUnitStats(\n type: T,\n unit: string | UnifiedItem,\n civ?: civAbbr | civConfig\n): Promise> {\n const forCiv = mapCivsArgument(civ);\n const getStats = async (unit: UnifiedItem) => {\n const combatStats = mergeVariationsToStats(unit.variations.filter((u) => u.civs.some((c) => forCiv.some((fc) => fc.abbr == c))));\n const techs = await getItemTechnologies(type, unit, civ);\n\n for (const tech of techs) {\n let lazelyPickJustTheFirst = tech.variations.sort((a, b) => b.civs.length - a.civs.length)[0]; //tech.variations?.[0];\n for (const modifier of lazelyPickJustTheFirst.effects) {\n if (!lazelyPickJustTheFirst) continue;\n if (tech.civs.length > 1) lazelyPickJustTheFirst.unique = false;\n // if (modifier.type == \"influence\") continue;\n if (!modifierMatches(modifier.select, unit).any) continue;\n if (SUPPORTED_MODIFIER_PROPERTIES.includes(modifier.property as any)) {\n combatStats[modifier.property] ??= { category: modifier.property, parts: [], modifiers: [], bonus: [] };\n\n combatStats[modifier.property]?.[modifier.type == \"bonus\" ? \"bonus\" : \"modifiers\"].push([\n modifier,\n tech.id,\n lazelyPickJustTheFirst.age,\n lazelyPickJustTheFirst,\n ]);\n }\n }\n }\n\n return combatStats;\n };\n\n if (typeof unit == \"string\") return getStats((await import(\"@data/sdk\"))[type].get(unit));\n else return getStats(unit);\n}\n\nfunction mergeVariationsToStats(variations: (Unit | Building)[]) {\n return variations\n .sort(\n firstBy((a, b) => a.age - b.age) // Sort by age\n .thenBy((a, b) => b.civs.length - a.civs.length) // Sort by civs\n .thenBy((a, b) => a.id.length - b.id.length) // Sort by id length, putting basic varations first\n )\n .filter((v, i, a) => a.findIndex((x) => x.age == v.age) >= i) // Drop variation if there's already one for the same age\n .map((variation) => {\n const stats: Partial> = {\n hitpoints: variation.hitpoints,\n lineOfSight: variation.sight.line / 4.5,\n };\n\n if (variation.type == \"unit\") stats.moveSpeed = variation.movement.speed;\n\n const bonus: Modifier[] = [];\n\n const melee = variation.weapons.find((w) => w?.type == \"melee\");\n // Only take the first Melee weapon\n const weapons = variation.weapons.filter((w) => w?.type != \"melee\" || w === melee);\n\n for (const w of weapons) {\n if (!w) continue;\n const burst = 1; //w.burst?.count ?? 1;\n // We assume there's only one weapon per type per variation, for now.\n // Edit 11-10-2022: Oh boy was I wrong.\n // Edit 9-11-2023: Yep.\n if (w.type == \"melee\") stats.meleeAttack = w.damage * burst;\n else if (w.type == \"ranged\") stats.rangedAttack = w.damage * burst;\n else if (w.type == \"siege\") stats.siegeAttack = w.damage * burst;\n else if (w.type == \"fire\") stats.fireAttack = w.damage * burst;\n\n if (w.type != \"fire\" || variation.weapons.length == 1) stats.attackSpeed = w.speed;\n\n if (w.burst) stats.burst = w.burst.count;\n\n if (w.type == \"siege\" || w.type == \"ranged\") {\n stats.maxRange = w.range.max;\n stats.minRange = w.range.min;\n }\n\n if (w.modifiers) {\n bonus.push(...w.modifiers);\n }\n }\n\n for (const a of variation.armor) {\n // We assume there's only one armor type per variation, for now.\n if (a.type == \"melee\") stats.meleeArmor = a.value;\n else if (a.type == \"ranged\") stats.rangedArmor = a.value;\n else if (a.type == \"fire\") stats.fireArmor = a.value;\n }\n\n return [variation, stats, bonus] as [typeof variation, typeof stats, Modifier[]];\n })\n .reduce((total, [variation, stats, bonus], i, arr) => {\n for (const [cat, value] of Object.entries(stats)) {\n const previousAgeValue = arr[i - 1]?.[1][cat] ?? 0;\n (total[cat as StatProperty] ??= { category: cat as StatProperty, parts: [], modifiers: [], bonus: [] }).parts.push([\n value - previousAgeValue,\n variation.id,\n variation.age,\n variation,\n previousAgeValue ? \"upgrade\" : \"base\",\n ]);\n if (bonus.length) {\n bonus.forEach((mod, mi) => {\n mod = { ...mod };\n const previousModifierValue = arr[i - 1]?.[2][mi]?.value ?? 0;\n if ((mod.effect as any) == \"increase\") mod.effect = \"change\";\n if (previousModifierValue) mod.value = mod.value - previousModifierValue;\n total[cat as StatProperty].bonus.push([mod, variation.id, variation.age, variation, \"bonus\"]);\n });\n }\n }\n return total;\n }, {} as Partial>);\n}\n\nexport function roundToDecimals(number: number, decimals: number) {\n return Math.round(number * Math.pow(10, decimals)) / Math.pow(10, decimals);\n}\n\nexport function roundToGameTicks(number: number) {\n const tick = 0.125;\n return Math.round(number / tick) * tick;\n}\n\nexport function calculateStatParts(\n stat: Stat,\n maxAge: number,\n { decimals, target, item }: { decimals?: number; target?: UnifiedItem | Item; item?: UnifiedItem | Item } = { decimals: 0 }\n): CalculatedStats {\n if (!stat) return { total: 0, base: 0, upgrades: 0, technologies: 0, bonus: 0, parts: [], max: 0 };\n if (!decimals) decimals = 0;\n const round = (val) => (stat.category == \"attackSpeed\" ? roundToGameTicks(val) : roundToDecimals(val, decimals));\n const parts = stat.parts.sort((a, b) => a[2] - b[2]).map(([v, i, a, ...r]) => [a > maxAge ? 0 : round(v), i, a, ...r] as StatPart);\n\n let base = parts[0]?.[0] ?? 0;\n let upgrades = parts.reduce((total, [value]) => total + value, 0) - base;\n let technologies = 0;\n parts.push(\n ...stat.modifiers\n .sort(\n firstBy>((a, b) => {\n if (a[0].effect == \"multiply\") return 1;\n else if (b[0].effect == \"multiply\") return -1;\n else return a[0].value - b[0].value;\n })\n .thenBy((a, b) => (a[3].unique ? 1 : b[3].unique ? -1 : 0))\n .thenBy((a, b) => a[2] - b[2])\n )\n .reduce((parts, [modifier, id, age, variation]) => {\n if (modifier.property != stat.category) return parts;\n if (item && !modifierMatches(modifier.select, item).any) return parts;\n if (modifier.type == \"ability\" || modifier.type == \"influence\") return parts;\n let value = 0;\n if (age <= maxAge) {\n if (modifier.effect == \"multiply\") {\n value = (modifier.value - 1) * (base + upgrades + technologies);\n } else if (modifier.effect == \"change\") value = modifier.value;\n }\n technologies += value;\n parts.push([round(value), id, age, variation, \"technology\"]);\n return parts;\n }, [] as StatPart[])\n );\n\n let maxBonusInAge = {\n 1: 0,\n 2: 0,\n 3: 0,\n 4: 0,\n };\n let bonus = 0;\n if (stat.bonus)\n parts.push(\n ...stat.bonus?.reduce((parts, [modifier, id, age, variation]) => {\n if (modifier.property != stat.category) return parts;\n if (target && !modifierMatches(modifier.target, target).any) return parts;\n if (modifier.type == \"ability\" || modifier.type == \"influence\") return parts;\n let value = 0;\n if (age <= maxAge) {\n if (modifier.effect == \"multiply\") value = Math.round((modifier.value - 1) * (base + upgrades));\n else if (modifier.effect == \"change\") value = modifier.value;\n }\n if (value > maxBonusInAge[age]) maxBonusInAge[age] = value;\n const tryCreateVsBonusName = [\n ...(modifier.target?.id ?? []),\n ...(modifier.target?.class ?? []).map((c) => c.flatMap((x) => x.split(\"_\")).join(\" \")),\n ].join(\", \");\n parts.push([round(value), id, age, variation, \"bonus\", `Bonus damage vs ${tryCreateVsBonusName}`]);\n return parts;\n }, [] as StatPart[])\n );\n\n bonus = Object.values(maxBonusInAge).reduce((a, b) => a + b, 0);\n base = round(base);\n upgrades = round(upgrades);\n technologies = round(technologies);\n bonus = round(bonus);\n const total = round(base + upgrades + technologies);\n const max = total + bonus;\n\n return { total, base, upgrades, technologies, bonus, parts, max };\n}\n","import { Component, createEffect, createMemo, createSignal, Index, on, Show } from \"solid-js\";\nimport { RESOURCES } from \"../../assets\";\nimport { CIVILIZATIONS, PRETTY_AGE_MAP } from \"../config\";\nimport { calculateStatParts, roundToDecimals } from \"../query/stats\";\nimport { statLabelCSSClass, tooltipCSSClass } from \"../styles\";\nimport { Item, UnifiedItem } from \"../types/data\";\nimport { CalculatedStats, Stat, StatPart } from \"../types/stats\";\nimport { Icon } from \"./Icon\";\nimport { globalAgeFilter, globalCivFilter } from \"../global\";\nimport { Tooltip } from \"./Tooltip\";\n\nexport const StatBar: Component<{\n label: string;\n icon?: string;\n item: UnifiedItem;\n stat: Stat;\n /** Event when the total value is zero, display the graph,\n * useful for i.e. armor or other properties that will always be present in a\n * later age or after upgrades */\n displayAlways?: boolean;\n multiplier?: Stat;\n max: number;\n age?: () => number;\n}> = (props) => {\n let totalEl;\n\n const [parts, setParts] = createSignal([] as StatPart[]);\n const [values, setValues] = createSignal({ base: 0, upgrades: 0, technologies: 0, bonus: 0, total: 0 });\n createEffect(\n on([globalAgeFilter, globalCivFilter, () => props.age?.()], () => {\n const { parts, ...rest } = calculateStatParts(props.stat, props.age?.() ?? globalAgeFilter(), { item: props.item });\n setParts(parts.map(([v, ...p]) => [v * multiplier(), ...p]));\n setValues(Object.fromEntries(Object.entries(rest).map(([k, v]) => [k, v * multiplier()])) as any);\n })\n );\n const multiplier = createMemo(() => props.multiplier?.parts?.reduce((sum, [v]) => sum + v, 0) ?? 1);\n const formattedMultiplier = () => (props.multiplier ? `${multiplier()}× ` : \"\");\n return (\n 0 || props.displayAlways}>\n
\n
\n \n {props.icon && }\n {values().base}\n {props.multiplier && <>*}\n {values().total > values().base && (\n \n \n {values().total}\n \n )}\n {values().bonus && (\n \n {\" \"}\n \n {values().bonus}\n \n )}\n \n {/* {props.multiplier && (\n \n ÷ {multiplier()}\n \n \n )} */}\n {props.label}\n
\n {values().total && (\n \n
\n {props.multiplier &&

*Total of {multiplier()} projectiles

}\n Base\n \n {props.multiplier && (\n \n {formattedMultiplier()}\n {values().base / multiplier()} =\n \n )}\n {values().base}\n \n
\n {values().upgrades && (\n <>\n \n Upgrades\n \n {props.multiplier && (\n \n {formattedMultiplier()}\n {values().upgrades / multiplier()} =\n \n )}\n + {values().upgrades}\n \n
\n \n )}\n {values().technologies && (\n <>\n \n Technologies\n \n {props.multiplier && (\n \n {formattedMultiplier()}\n {values().technologies / multiplier()} =\n \n )}\n + {values().technologies}\n \n
\n \n )}\n
\n Total {values().total}\n {values().bonus && (\n
\n \n Bonus{\" \"}\n \n {props.multiplier && (\n \n {formattedMultiplier()}\n {values().bonus / multiplier()} =\n \n )}\n + {values().bonus}\n \n
\n )}\n 1}>\n {() => {\n const projectiles = multiplier();\n const base = values().base / projectiles;\n return (\n
\n

{projectiles}×

\n
\n

Every volley has {projectiles} projectiles

\n

Target armor has effect on each individual projectile

\n
Example
\n
\n (projectile damage\n {` - `}\n target armor) ×{\" \"}\n projectiles ={\" \"}\n total damage\n
\n
\n ({base}\n {` - `}\n 2) ×{\" \"}\n {projectiles} ={\" \"}\n {(base - 2) * projectiles}\n
\n
\n
\n );\n }}\n
\n
\n
\n )}\n
\n {/* {formattedMultiplier()} */}\n \n {(part, i) => {\n const [value, id, age, variation, type, label] = part();\n\n let partEl;\n const isBase = [\"unit\", \"building\"].includes(variation.type) && i == 0;\n let className = isBase\n ? \"bg-bar-base\" + (value < props.max * 0.75 ? \" shrink-0\" : \"\")\n : type == \"bonus\"\n ? \"bg-white/20 !text-white shrink\"\n : type == \"upgrade\" && [\"building\"].includes(variation.type)\n ? \"bg-bar-building shrink\"\n : type == \"upgrade\" ?? [\"unit\"].includes(variation.type)\n ? \"bg-bar-upgrade shrink-0\"\n : variation.unique\n ? \"bg-bar-unique\"\n : type == \"technology\"\n ? \"bg-bar-technology\"\n : \"bg-bar-base shrink-0\";\n const hide = () => part()[0] <= 0;\n return (\n \n \n
\n
\n \n {type}\n {!isBase && \"+\"} {value ?? 0}\n \n {PRETTY_AGE_MAP[age]}\n
\n {type == \"upgrade\" && `${PRETTY_AGE_MAP[age]} upgrade for `}\n {variation.name}\n {label &&

{label}

}\n {variation.unique && (\n

\n Unique to {CIVILIZATIONS[variation.civs[0]].name}\n

\n )}\n\n {![\"upgrade\", \"base\"].includes(type) &&

{variation.description}

}\n
\n
\n
\n );\n }}\n \n
\n \n
\n );\n};\n\nexport const StatNumber: Component<{\n label: string;\n displayAlways?: boolean;\n helper?: string;\n unitLabel?: string;\n multiplier?: number;\n stat: Stat;\n age?: () => number;\n}> = (props) => {\n const [parts, setParts] = createSignal[]>([]);\n const [values, setValues] = createSignal({ base: 0, upgrades: 0, technologies: 0, bonus: 0, total: 0 });\n createEffect(\n on([globalAgeFilter, () => props.age?.()], () => {\n const { parts, ...rest } = calculateStatParts(props.stat, props.age?.() ?? globalAgeFilter(), { decimals: 3 });\n setValues(rest);\n setParts(parts);\n })\n );\n\n let el;\n let helperEl;\n\n return (\n \n
\n \n {props.label}\n {props.helper && }\n \n {props.helper && (\n \n
\n

{props.helper}

\n
\n
\n )}\n\n \n {values().base}\n {values().total != values().base && (\n \n {values().total}\n \n )}\n {props.unitLabel && {props.unitLabel}}\n {values().bonus && (+ {values().bonus})}\n {props.multiplier && × {props.multiplier}}\n \n \n
\n \n {(part, i) => {\n const [value, id, age, variation, type, label] = part();\n return value ? (\n <>\n {type == \"base\" ? (\n
\n Base ({PRETTY_AGE_MAP[age]}) {value}\n
\n ) : type == \"upgrade\" ? (\n
\n {variation.name} ({PRETTY_AGE_MAP[age]}) + {value}\n
\n ) : type == \"technology\" ? (\n
\n {variation.name} ({PRETTY_AGE_MAP[age]})\n \n {\" \"}\n {value > 1 && \"+\"}\n {value}\n \n
\n ) : (\n <>\n )}\n \n ) : (\n <>\n );\n }}\n
\n
\n
\n
\n
\n );\n};\n\nfunction dps(attackDuration: number, damage: number) {\n return attackDuration && damage ? roundToDecimals(damage / attackDuration, 2) : 0;\n}\n\nfunction calculateDpsParts(speed: CalculatedStats, attacks: CalculatedStats[]) {\n return attacks.reduce(\n (acc, attack) => {\n acc.base += dps(speed.base, attack.base);\n acc.upgrades += dps(speed.base + speed.upgrades, attack.upgrades);\n acc.technologies += dps(speed.total, attack.technologies) + (acc.upgrades - dps(speed.total, attack.upgrades));\n acc.bonus += dps(speed.total + speed.bonus, attack.bonus);\n acc.total += dps(speed.total, attack.total);\n return acc;\n },\n { base: 0, upgrades: 0, technologies: 0, total: 0, bonus: 0 }\n );\n}\n\nexport const StatDps: Component<{\n label: string;\n displayAlways?: boolean;\n helper?: string;\n speed: Stat;\n attacks: Stat[];\n stat: Stat;\n age?: () => number;\n}> = (props) => {\n const [values, setValues] = createSignal({ base: 0, upgrades: 0, technologies: 0, bonus: 0, total: 0 });\n createEffect(\n on([globalAgeFilter, () => props.age?.()], () => {\n const attackSpeed = calculateStatParts(props.speed, props.age?.() ?? globalAgeFilter(), { decimals: 3 });\n const attacks = props.attacks.map((attack) => calculateStatParts(attack, props.age?.() ?? globalAgeFilter(), { decimals: 0 }));\n setValues(calculateDpsParts(attackSpeed, attacks));\n })\n );\n\n let el;\n let helperEl;\n\n return (\n \n
\n \n {props.label}\n {props.helper && }\n \n {props.helper && (\n \n
\n

{props.helper}

\n
\n
\n )}\n\n \n {values().base}\n {DPS}\n {values().total != values().base && (\n \n {values().total}\n \n )}\n {values().bonus && (\n \n {\" \"}\n {values().bonus}\n \n )}\n \n \n
\n
\n Base {values().base} dps\n
\n Upgrades {values().upgrades} dps\n
\n Technologies {values().technologies} dps\n
\n Total {values().total} dps\n
\n Bonus {values().bonus} dps\n
\n
\n
\n
\n );\n};\n\nexport function formatSecondsToTime(seconds: number) {\n const h = Math.floor(seconds / 3600);\n const m = Math.floor((seconds % 3600) / 60);\n const s = Math.round(seconds % 60);\n return `${h > 0 ? `${h}:` : \"\"}${h && m < 10 ? `0${m}` : m}:${s < 10 ? `0${s}` : s}`;\n}\n\nexport function formatSecondsToPhrase(seconds: number) {\n const h = Math.floor(seconds / 3600);\n const m = Math.floor((seconds % 3600) / 60);\n const s = Math.round(seconds % 60);\n // 1 hour 2 minutes 3 seconds\n return `${h > 0 ? `${h} hr${h > 1 ? \"s\" : \"\"} ` : \"\"}${m > 0 ? `${m} min${m > 1 ? \"s\" : \"\"} ` : \"\"}${s > 0 ? `${s} sec${s > 1 ? \"s\" : \"\"}` : \"\"}`.trim();\n}\nfunction formatCurreny(number: number) {\n return number > 2500 ? `${number / 1000}k` : number;\n}\n\nexport const StatCosts: Component<{ costs: Item[\"costs\"] }> = (props) => (\n
\n
Costs
\n
\n {[\"food\", \"wood\", \"gold\", \"stone\", \"oliveoil\", \"time\", \"popcap\", \"vizier\"].map(\n (type) =>\n (type == \"popcap\" ? props.costs[type] > 1 : props.costs[type] > 0) && (\n
\n
{type == \"time\" ? formatSecondsToTime(props.costs[type]) : formatCurreny(props.costs[type])}
\n \n
\n )\n )}\n
\n
\n);\n","import { Component, createMemo, createResource, Show } from \"solid-js\";\nimport { ITEMS } from \"@data/types/items\";\nimport { getUnitStats } from \"../query/stats\";\nimport { getMostAppropriateVariation } from \"../query/utils\";\nimport { Building, civConfig, UnifiedItem } from \"../types/data\";\nimport { Card } from \"./Cards\";\nimport { StatBar, StatCosts, StatDps, StatNumber } from \"./Stats\";\n\nexport const BuildingCard: Component<{ item: UnifiedItem; civ?: civConfig }> = (props) => {\n const [stats] = createResource(() => getUnitStats(ITEMS.BUILDINGS, props.item, props.civ));\n const variation = createMemo(() => getMostAppropriateVariation(props.item, props.civ));\n\n return (\n \n \n <>\n
\n \n \n \n \n \n
\n
\n
\n \n
\n \n \n
\n \n
\n
\n );\n};\n","export class Random {\n static pick(first: T[]): T;\n static pick(first: T, ...args: T[]): T;\n static pick(first: T, ...args: T[]): T {\n const options = !args?.length && Array.isArray(first) ? first : [first, ...args];\n return options[Random.integer(options.length)];\n }\n\n static key(obj: Record) {\n return Random.pick(Object.keys(obj));\n }\n\n static coinflip() {\n return Math.random() > 0.5;\n }\n\n static order(array: T[]): T[] {\n for (let i = array.length - 1; i > 0; i--) {\n const j = Math.floor(Math.random() * (i + 1));\n [array[i], array[j]] = [array[j], array[i]];\n }\n return array;\n }\n\n /** Returns true */\n static chance(probability: number) {\n return Math.random() < probability;\n }\n\n static integer(max: number) {\n return Math.floor(Math.random() * max);\n }\n}\n","import { Random } from \"@components/quiz/random\";\nimport { CURATED_CONTENT_API } from \"../config\";\nimport { civConfig, Item, UnifiedItem } from \"../types/data\";\n\nexport interface ContentItem {\n title: string;\n type: string;\n relatedItems?: string[];\n approved: boolean;\n tags: string[];\n creator: string;\n civilizations: string[];\n url: string;\n description: string;\n creator_url?: string;\n youtube_data?: Youtubedata;\n thumbnail?: string;\n}\n\ninterface Youtubedata {\n title: string;\n videoId: string;\n channelId: string;\n videoDuration: string;\n}\n\nlet content: ContentItem[];\nlet featuredContent: ContentItem[];\nexport async function getRelatedContent(\n { item, civilization, featured }: { item?: Item | UnifiedItem; civilization?: civConfig; featured?: boolean } = { featured: true }\n) {\n if (featured) featuredContent ??= await fetchContent(true);\n else content ??= await fetchContent(false);\n return Random.order(featured ? featuredContent : content).filter(\n (c) =>\n (item && c.relatedItems?.some((i) => i.includes(\"baseId\" in item ? item.baseId : item.id))) ||\n (civilization && c.civilizations.some((civ) => civ.toLowerCase() === civilization.slug)) ||\n (!item && !civilization)\n );\n}\n\nasync function fetchContent(featured: boolean): Promise {\n try {\n const res = await fetch(CURATED_CONTENT_API + (featured ? \"featured.json\" : \"content.json\"));\n const items = await res.json();\n if (!items[0].url || !items[0].title) throw \"Response not in expected format\";\n return items;\n } catch (e) {\n console.error(e);\n }\n}\n","import { Link } from \"@solidjs/router\";\nimport { Component, createResource, createSignal, For, Suspense } from \"solid-js\";\nimport { getRelatedContent, ContentItem } from \"../query/content\";\nimport { getItemCssClass } from \"../styles\";\nimport { civConfig, Item, UnifiedItem } from \"../types/data\";\nimport { getItemHref } from \"./Cards\";\nimport { Icon } from \"./Icon\";\nimport { ItemIcon } from \"./ItemIcon\";\nimport { Random } from \"./quiz/random\";\nimport { formatSecondsToTime } from \"./Stats\";\n\nconst defaultLimit = 3;\nexport const RelatedContent: Component<{ item?: Item | UnifiedItem; civ?: civConfig; title?: string }> = (props) => {\n const [related] = createResource(() => ({ item: props.item, civilization: props.civ, featured: true }), getRelatedContent);\n const [limit, setLimit] = createSignal(defaultLimit);\n return (\n
\n \n {props.title && related()?.length && (\n \n )}\n {(content) => }\n {related()?.length > limit() && (\n \n )}\n \n
\n );\n};\n\nexport const ContentRow: Component<{ content: ContentItem; item?: Item | UnifiedItem; civ?: civConfig }> = (props) => {\n const [relatedItems] = createResource(() => props.content.relatedItems?.filter((x) => !props.item || !x.endsWith(props.item?.id)), getRelatedItems);\n return (\n
\n \n {props.content.thumbnail ? (\n <>\n \n \n ) : (\n
\n \n
\n )}\n \n\n
\n \n {props.content.title}\n \n

{props.content.description}

\n \n
\n {props.content.creator_url ? (\n \n {props.content.creator}\n \n ) : (\n props.content.creator\n )}\n
\n
\n {props.content.youtube_data?.videoDuration && formatSecondsToTime(+props.content.youtube_data.videoDuration) + \" \"}\n {props.content.type}\n
\n \n
\n \n {(item, i) => (\n \n \n {relatedItems().length < 3 && {item.name}}\n \n )}\n \n
\n
\n
\n
\n
\n );\n};\n\nasync function getRelatedItems(ids: string[]) {\n const sdk = await import(\"@data/sdk/index\");\n let Get = sdk.Get;\n\n const items: UnifiedItem[] = [];\n for (const id of ids) {\n try {\n const item = Get(id.split(\"/\").slice(-2).join(\"/\") as any);\n if (item) items.push(item);\n } catch (e) {\n console.error(`Could not find related item with ${id}`, e);\n }\n }\n return items;\n}\n","import { Outlet, useLocation } from \"@solidjs/router\";\nimport { Component, createSignal, Show } from \"solid-js\";\nimport { Portal } from \"solid-js/web\";\nimport { tooltipCSSClass } from \"../styles\";\nimport { Icon } from \"./Icon\";\nimport { Tooltip } from \"./Tooltip\";\n\nexport const ReportButton: Component = () => {\n const [showReport, setShowReport] = createSignal(false);\n const url = () => useLocation().pathname;\n let el;\n return (\n <>\n setShowReport(true)}\n ref={el}\n class=\"text-gray-300 font-bold text-sm bg-gray-600 rounded px-3 py-2 hover:bg-gray-500 hover:text-gray-50 transition\"\n >\n Report incorrect info\n \n \n
\n Something missing or incorrect on this page? It can happen! We manage and collect all data manually, you can help us by reporting if something is\n incorrect.\n
\n
\n \n \n
\n
\n
\n setShowReport(false)}\n >\n Back\n \n
\n\n
\n \n Loading…\n \n
\n
\n
\n
\n
\n \n );\n};\n","import { Link } from \"@solidjs/router\";\nimport { RouterUtils } from \"@solidjs/router\";\nimport { Component, createEffect, createMemo, createResource, Show } from \"solid-js\";\nimport { ITEMS, PRETTY_AGE_MAP } from \"../config\";\nimport { getUnitStats } from \"../query/stats\";\nimport { getMostAppropriateVariation } from \"../query/utils\";\nimport { civAbbr, civConfig, UnifiedItem, Unit } from \"../types/data\";\nimport { Card, CardHeader } from \"./Cards\";\nimport { StatBar, StatCosts, StatDps, StatNumber } from \"./Stats\";\n\nconst increaseBarSizeForClass = [\"siege\", \"elephant\", \"incendiary\"];\nfunction getBarSize(unit: UnifiedItem, baseSize: number, increasedSize: number) {\n return unit.classes.some((c) => increaseBarSizeForClass.includes(c)) ? increasedSize : baseSize;\n}\n\nexport const UnitCard: Component<{ unit: UnifiedItem; civ?: civConfig }> = (props) => {\n const [stats] = createResource(() => getUnitStats(ITEMS.UNITS, props.unit, props.civ));\n const variation = createMemo(() => getMostAppropriateVariation(props.unit, props.civ));\n\n return (\n \n \n <>\n
\n \n \n \n \n \n \n \n \n
\n
\n
\n \n \n
\n \n \n
\n \n
\n
\n );\n};\n","import { CivAbbr } from \"@data/sdk/utils\";\n\nexport const civBackdrops: Record = {\n ay: \"https://www.ageofempires.com/wp-content/uploads/2023/09/ABB-AYY_Keyart_Ayyubids_1920x1080-1.png\",\n ab: \"https://www.ageofempires.com/wp-content/uploads/2021/06/bg-age4-civ-abb-splash-right-desk.webp\",\n by: \"https://www.ageofempires.com/wp-content/uploads/2023/09/BYZ_keyart_Byzantines_1920x1080.png\",\n ch: \"https://www.ageofempires.com/wp-content/uploads/2021/06/bg-age4-civ-chi-splash-right-desk.png\",\n de: \"https://www.ageofempires.com/wp-content/uploads/2021/06/bg-age4-civ-del-splash-right-desk.png\",\n en: \"https://www.ageofempires.com/wp-content/uploads/2021/06/bg-age4-civ-eng-splash-right-desk.png\",\n fr: \"https://www.ageofempires.com/wp-content/uploads/2021/06/bg-age4-civ-fre-splash-right-desk.webp\",\n ja: \"https://www.ageofempires.com/wp-content/uploads/2023/09/JPN_keyart_Japanese_1920x1036.png\",\n je: \"https://www.ageofempires.com/wp-content/uploads/2023/10/FRE_JDA_keyart_cropped_civ-page_1920x1090_2.png\",\n hr: \"https://www.ageofempires.com/wp-content/uploads/2021/08/bg-age4-civ-hre-splash-right-desk.webp\",\n ma: \"https://www.ageofempires.com/wp-content/uploads/2022/08/bg-age4-civ-mal-splash-right-desk.png\",\n mo: \"https://www.ageofempires.com/wp-content/uploads/2021/06/bg-age4-civ-mon-splash-right-desk.png\",\n ot: \"https://www.ageofempires.com/wp-content/uploads/2022/08/bg-age4-civ-ott-splash-right-desk.png\",\n ru: \"https://www.ageofempires.com/wp-content/uploads/2021/08/bg-age4-civ-rus-splash-right-desk.png\",\n zx: \"https://www.ageofempires.com/wp-content/uploads/2023/09/CHI-ZXL_Keyart_Zhu-Xis-Legacy_1920x1080.png\",\n od: \"https://www.ageofempires.com/wp-content/uploads/2023/10/HRE-OotD_Keyart_Order-of-the-Dragon_1920x1090.png\",\n};\n","import { Link, useIsRouting, useLocation, useParams } from \"@solidjs/router\";\nimport { createEffect, createResource, For, on, Show, Suspense } from \"solid-js\";\nimport { setActivePage } from \"../../App\";\nimport { BuildingCard } from \"@components/BuildingCard\";\nimport { CivFlag } from \"@components/CivFlag\";\nimport { ItemIcon } from \"@components/ItemIcon\";\nimport { RelatedContent } from \"@components/RelatedContent\";\nimport { ReportButton } from \"@components/ReportButton\";\nimport { UnitCard } from \"@components/UnitCard\";\nimport { CIVILIZATION_BY_SLUG } from \"../../config\";\nimport { civBackdrops } from \"../../data/civData\";\nimport { splitBuildingsIntoGroups, splitTechnologiesIntroGroups, splitUnitsIntoGroups } from \"../../query/utils\";\nimport { itemGridCSSClass, mainIntroductionCSSClass } from \"../../styles\";\n\nexport const CivDetailRoute = () => {\n const pending = useIsRouting();\n const params = useParams();\n const civConfig = CIVILIZATION_BY_SLUG[params.slug];\n const [data] = createResource(async () => {\n const civ = (await import(\"@data/sdk\")).civilizations.Get(civConfig.abbr);\n return {\n civ,\n units: splitUnitsIntoGroups(civ.units.order(\"hitpoints\", \"age\")),\n buildings: splitBuildingsIntoGroups(civ.buildings.order(\"hitpoints\", \"age\")),\n technologies: splitTechnologiesIntroGroups(civ.technologies.order(\"age\")),\n };\n });\n\n createEffect(\n on(data, () => !data.loading && setActivePage({ title: data()?.civ.info.name, description: data()?.civ.info.description, location: useLocation() }))\n );\n\n return (\n <>\n
\n
\n
\n
\n
\n \n
\n
\n Civilization\n

{data()?.civ.info.name}

\n
\n
\n

{data()?.civ.info.description}

\n
\n\n

Jump to

\n Loading

}>\n
\n \n {(unit) =>\n unit.unique && (\n \n
\n \n
\n {unit.name}\n \n )\n }\n
\n
\n
\n \n {(building) =>\n building.unique && (\n \n
\n \n
\n {building.name}\n \n )\n }\n
\n
\n
\n \n {(tech) =>\n tech.unique && (\n \n
\n \n
\n {tech.name}\n \n )\n }\n
\n
\n
\n
\n
\n \n {(x) => (\n
\n

{x.title}

\n {x.description &&

{x.description}

}\n {x.list && (\n
    \n {(y) =>
  • {y}
  • }
    \n
\n )}\n
\n )}\n
\n
\n
\n
\n \n
\n \n
\n
\n \n

Loading...

\n
\n
\n
\n
\n
\n \n }\n >\n \n {([k, v]) =>\n v?.length ? (\n
\n

{k[0].toUpperCase() + k.slice(1)}

\n
\n {(unit) => }\n
\n
\n ) : (\n <>\n )\n }\n
\n \n \n

Loading...

\n
\n
\n
\n
\n
\n \n }\n >\n \n {([k, v]) =>\n v?.length ? (\n
\n

{k[0].toUpperCase() + k.slice(1)}

\n
\n {(item) => }\n
\n
\n ) : (\n <>\n )\n }\n
\n \n
\n \n
\n \n \n );\n};\n","import { useLocation, useParams } from \"@solidjs/router\";\nimport { createResource, For, Suspense } from \"solid-js\";\nimport { setActivePage } from \"../../App\";\nimport { UnitCard } from \"@components/UnitCard\";\nimport { CIVILIZATION_BY_SLUG, ITEMS } from \"../../config\";\nimport { splitUnitsIntoGroups } from \"../../query/utils\";\nimport { itemGridCSSClass } from \"../../styles\";\n\nexport const UnitOverviewRoute = () => {\n const params = useParams();\n const civ = CIVILIZATION_BY_SLUG[params.slug];\n const [units] = createResource(async () => {\n const SDK = await import(\"@data/sdk\");\n return splitUnitsIntoGroups(SDK.units.where({ civilization: civ?.abbr }).order(\"hitpoints\", \"age\"));\n });\n\n setActivePage({ title: `Units ${civ ? ` — ${civ?.name}` : \"\"}`, location: useLocation() });\n\n return (\n
\n \n

Loading...

\n
\n {() =>
}
\n
\n \n }\n >\n \n {([k, v]) =>\n v?.length ? (\n
\n

{k[0].toUpperCase() + k.slice(1)}

\n
\n {(unit) => }\n
\n
\n ) : (\n <>\n )\n }\n
\n \n
\n );\n};\n","import { Component, createMemo } from \"solid-js\";\nimport { CIVILIZATIONS, PRETTY_AGE_MAP } from \"../config\";\nimport { getMostAppropriateVariation } from \"../query/utils\";\nimport { UnifiedItem, Technology, civConfig } from \"../types/data\";\nimport { Card, CardHeader } from \"./Cards\";\nimport { StatCosts } from \"./Stats\";\n\nexport const TechnologyCard: Component<{ item: UnifiedItem; civ?: civConfig }> = (props) => {\n const variation = createMemo(() => getMostAppropriateVariation(props.item, props.civ));\n return (\n \n
\n

{variation()?.description}

\n \n
\n
\n );\n};\n","export default \"__VITE_ASSET__2784b987__\"","import { Link } from \"@solidjs/router\";\nimport { Component, createResource, For, Match, ParentComponent, Show, Switch, useTransition } from \"solid-js\";\nimport { getItemHref } from \"./Cards\";\nimport { CivFlag } from \"./CivFlag\";\nimport { TechnologyCard } from \"./TechnologyCard\";\nimport { CIVILIZATIONS, ITEMS, PRETTY_AGE_MAP, PRETTY_AGE_MAP_SHORT } from \"../config\";\nimport { getItemTechnologies } from \"../query/utils\";\nimport { getItemCssClass, itemGridCSSClass, mainIntroductionCSSClass, mainItemTitleCSSClass } from \"../styles\";\nimport { civAbbr, civConfig, UnifiedItem } from \"../types/data\";\nimport { Icon } from \"./Icon\";\nimport { civBackdrops } from \"../data/civData\";\nimport { ItemIcon } from \"./ItemIcon\";\nimport { CivConfig, CivInfo } from \"@data/types/civs\";\nimport dlcFlag from \"../../assets/dlc-flag.png\";\n\nconst Header: Component<{ item: UnifiedItem; civ?: civConfig }> = (props) => {\n const itemCssClass = getItemCssClass(props.item);\n return (\n
\n
\n \n
\n
\n {props.item.displayClasses.join(\", \")}\n

{props.item.name}

\n {props.civ && (\n \n \n {props.civ?.name}\n \n )}\n
\n
\n );\n};\n\nconst CivPicker: Component<{ item: UnifiedItem }> = (props) => {\n return (\n <>\n

\n {props.item.civs.length > 1\n ? `Available for ${props.item.civs.length == Object.keys(CIVILIZATIONS).length ? \"all\" : props.item.civs.length} civilizations`\n : `Exclusively available to one civialization`}\n

\n

\n This unit is available for the below civilizations. Click on a civilization to see more detailed information, including specific bonuses and upgrades.\n

\n \n \n );\n};\n\nconst ProducedAt: Component<{ item: UnifiedItem; civ: civConfig; title?: string }> = (props) => {\n const [productionBuildings] = createResource(\n () => ({ item: props.item, civ: props.civ?.abbr }),\n async ({ item, civ }) => {\n const producedBy = [...new Set(item.variations.filter((v) => !civ || v.civs.includes(civ)).flatMap((v) => v.producedBy))];\n const items = await Promise.all(producedBy.map(async (b) => (await import(\"@data/sdk\")).buildings.get(b)));\n if (items.length != producedBy.length) console.warn(\"Some buildings were not found\", producedBy, items);\n return (civ ? items.filter((i) => !!i && i.civs.includes(civ)) : items).filter(Boolean).sort((a, b) => b.civs?.length - a.civs?.length);\n }\n );\n\n return (\n \n

{props.title ?? \"Produced at\"}

\n
\n \n {(building) => (\n \n
\n \n
\n {building.name}\n \n )}\n
\n
\n
\n );\n};\n\nfunction getItemType(item: UnifiedItem) {\n return item.type === \"unit\" ? ITEMS.UNITS : item.type === \"building\" ? ITEMS.BUILDINGS : ITEMS.TECHNOLOGIES;\n}\n\nconst AvailableUpgrades: Component<{ item: UnifiedItem; civ: civConfig }> = (props) => {\n const [technologies] = createResource(\n () => ({ item: props.item, civ: props.civ }),\n async ({ item, civ }) => item && (await getItemTechnologies(getItemType(item), item, civ, true))\n //.flatMap((x) => x.variations)\n // We're not really picking up the variations right now\n );\n return (\n \n

Technology Upgrades

\n
\n {(tech) => }\n
\n
\n );\n};\n\nconst Wrapper: ParentComponent<{ civ?: civConfig }> = (props) => {\n const [pending] = useTransition();\n return (\n <>\n {/* */}\n
\n {props.children}\n \n
\n
\n \n \n );\n};\n\nconst UnavailableForCiv: Component<{ item: UnifiedItem; civ: civConfig }> = (props) => {\n const itemCssClass = getItemCssClass(props.item);\n return (\n
\n
\n
\n \n
\n
\n {props.item.displayClasses}\n

{props.item.name}

\n
\n \n {(civ) => (\n \n {CIVILIZATIONS[civ].name}\n \n )}\n \n
\n
\n
\n

\n The {props.item.name} is unique, and not available for {props.civ.name}.\n

\n\n \n \n \n {props.civ.name}'s {getItemType(props.item)}\n \n \n \n
\n );\n};\n\nconst CivOptionsForItem: ParentComponent<{ item: UnifiedItem; civs: civAbbr[]; prefix?: string }> = (props) => (\n <>\n
\n {props.children}\n \n {(civ) => (\n \n {props.prefix} {CIVILIZATIONS[civ].name}\n \n \n )}\n \n
\n \n);\n\n// const Fandom: Component<{ query: string }> = (props) => {\n// const [content] = createResource(async () => {\n// const res = await fetch(\n// `https://corsanywhere.herokuapp.com/https://ageofempires.fandom.com/wikia.php?controller=UnifiedSearchSuggestionsController&method=getSuggestions&query=${props.query}&format=json`\n// );\n// const results = await res.json();\n// console.log(results);\n// const bestMatch = Object.entries(results.ids).find(([title, id]) => title.toUpperCase().includes(\"IV\"));\n// return bestMatch?.[0] ?? (Object.keys(results.ids)[0] as string);\n// });\n\n// return (\n// \n// View on Fandom\n// \n// );\n// };\n\nconst AgeTabs: Component<{ age: () => number; setAge: (age: number) => void; minAge?: number }> = (props) => (\n
\n {[1, 2, 3, 4].map((a) => (\n props.setAge(a)}\n class={`basis-1/4 p-2 ${\n props.minAge && a >= props.minAge\n ? props.age() == a\n ? \"cursor-default text-white\"\n : \"bg-gray-400/30 hover:bg-gray-500/50 text-gray-100\"\n : \"bg-gray-400/30 text-gray-400\"\n }`}\n disabled={props.minAge && a < props.minAge}\n >\n {PRETTY_AGE_MAP_SHORT[a]}\n \n ))}\n
\n);\n\nconst ExpansionInfo: Component<{ civ: CivConfig }> = (props) => (\n <>\n \n
\n \n
\n

\n {props.civ.name} is part of the Sultans Ascend expansion\n

\n

\n Get it on\n \n Steam\n \n \n Xbox\n \n \n MS Store\n \n

\n
\n
\n
\n \n
\n \n
\n

\n {props.civ.name} is part of the Knights of Cross and Rose expansion\n

\n

\n Get it on\n \n Steam\n \n \n Xbox\n \n \n MS Store\n \n

\n
\n
\n
\n \n);\n\nexport const ItemPage = {\n Wrapper,\n Header,\n ProducedAt,\n UnavailableForCiv,\n AvailableUpgrades,\n CivPicker,\n AgeTabs,\n ExpansionInfo,\n};\n","import { Link } from \"@solidjs/router\";\nimport { Component, createResource, createSignal, For } from \"solid-js\";\nimport { getPatchHistory } from \"../query/utils\";\nimport { UnifiedItem, civConfig } from \"../types/data\";\nimport { Icon } from \"./Icon\";\nimport { CivFlag } from \"./CivFlag\";\n\nexport const PatchHistory: Component<{ item: UnifiedItem; civ?: civConfig }> = (props) => {\n const [patchHistory] = createResource(() => getPatchHistory(props.item, props.civ ? [props.civ] : undefined));\n const [patchesExpanded, setPatchesExpanded] = createSignal(false);\n return (\n
\n {patchHistory()?.length &&

Patch History

}\n \n {(history) => {\n const [expanded, setExpanded] = createSignal(false);\n return (\n
\n \n {history.patch.name}\n \n {history.patch.date.valueOf() > Date.now() && (\n

\n \n \n To be released on {history.patch.date.toLocaleDateString(\"en-US\", { dateStyle: \"long\" })}. This page will be updated when the patch is\n released.\n \n

\n )}\n i < 6 || expanded())}>\n {([type, change, civs]) => (\n
\n
\n {type == \"buff\" && }\n {type == \"nerf\" && }\n {type == \"fix\" && }\n
\n

\n {!props.civ && civs?.length >= 1 ? civs.map((c) => ) : <>}\n {change}\n

\n
\n )}\n
\n {history.diff.length > 6 && !expanded() && (\n \n )}\n
\n );\n }}\n
\n {patchHistory()?.length > 2 && !patchesExpanded() && (\n \n )}\n
\n );\n};\n","import { Ability, ITEMS } from \"@data/types/items\";\nimport { CivAbbr, ItemList, ItemSlug } from \"@data/sdk/utils\";\nimport { formatSecondsToPhrase, formatSecondsToTime } from \"./Stats\";\nimport { Component, Show, For, createResource } from \"solid-js\";\nimport { ItemIcon } from \"./ItemIcon\";\nimport { ITEM_TYPES } from \"@data/lib/config\";\nimport { Link } from \"@solidjs/router\";\nimport { civConfig } from \"@data/types/civs\";\nimport { getItemHref } from \"./Cards\";\n\nexport const Abilities: Component<{ abilities: ItemList; civ: civConfig }> = (props) => {\n const sortedMappedAbilities = () => props.abilities.map((ab) => ab.variations[0]).sort((a, b) => (a.active == \"manual\" ? -1 : 1));\n return (\n \n

Abilities and influences

\n\n
\n \n {(ability) => (\n
\n \n \n
\n
\n

{ability.name}

\n

\n {ability.description}\n\n {ability.activatedOn?.length && (\n <>\n {ability.active === \"toggle\"\n ? \" Toggle on \"\n : ability.auraRange === 0\n ? \" Activate on \"\n : ` When ${ability.auraRange >= 1 ? `in ${ability.auraRange} tiles range of` : `near`}`}\n {ability.activatedOn?.map((id, i, l) => (\n <>\n \n {`${i == l.length - 2 ? \" or \" : i < l.length - 1 ? \", \" : \"\"}`}\n \n ))}\n .\n \n )}\n\n {ability.unlockedBy?.length && (\n <>\n {\" \"}\n Requires{\" \"}\n {ability.unlockedBy?.map((id) => (\n \n ))}\n \n )}\n\n {ability.cooldown && (\n <>\n {\" \"}\n {formatSecondsToPhrase(ability.cooldown)} cooldown\n {/* {ability.active == \"manual\"\n ? \" when activated. \"\n : ability.active == \"toggle\"\n ? \" when toggled.\"\n : ability.active == \"always\"\n ? \" after triggering\"\n : \"\"} */}\n \n )}\n

\n
\n
\n )}\n \n \n
\n );\n};\n\nconst InlineItemLink: Component<{ itemId: ItemSlug; civ: civConfig }> = (props) => {\n const SDK = import(\"@data/sdk/index\");\n const [item] = createResource(props.itemId, async (id) => (await SDK).civilizations.Get(props.civ).Get(id));\n\n return (\n \n {(item) => (\n \n
\n \n
\n {item.name}\n \n )}\n
\n );\n};\n","import { Link, useParams } from \"@solidjs/router\";\nimport { Component, createEffect, createMemo, createResource, createSignal, For, Show } from \"solid-js\";\nimport { setActivePageForItem, tryRedirectToClosestMatch } from \"../../App\";\nimport { ReportButton } from \"@components/ReportButton\";\nimport { StatNumber, StatBar, StatDps, StatCosts } from \"@components/Stats\";\nimport { CIVILIZATION_BY_SLUG, ITEMS } from \"../../config\";\nimport { getUnitStats } from \"../../query/stats\";\nimport { mainIntroductionCSSClass } from \"../../styles\";\nimport { Building, civConfig, UnifiedItem, Unit } from \"../../types/data\";\nimport { ItemPage } from \"@components/ItemPage\";\nimport { PatchHistory } from \"@components/PatchHistory\";\nimport { getMostAppropriateVariation } from \"../../query/utils\";\nimport { RelatedContent } from \"@components/RelatedContent\";\nimport { ItemList } from \"@data/sdk/utils\";\nimport { Ability } from \"@data/types/items\";\nimport { Abilities } from \"@components/Abilities\";\nconst SDK = import(\"@data/sdk/index\");\nexport function UnitDetailRoute() {\n const itemType = ITEMS.UNITS;\n const params = useParams();\n const civ = CIVILIZATION_BY_SLUG[params.slug];\n const [unmatched, setUnmatched] = createSignal(false);\n const [item] = createResource(params.id, async (id) => (await SDK).units.get(id));\n const [abilities] = createResource(async () =>\n !civ ? ([] as ItemList) : (await SDK).abilities.where({ civilization: civ.abbr, affects: `units/${params.id}` }).order(\"age\")\n );\n\n const variation = createMemo(() => getMostAppropriateVariation(item(), civ));\n\n createEffect(() => {\n if (!item()) return;\n if (civ && !item()?.civs.includes(civ.abbr)) tryRedirectToClosestMatch(itemType, params.id, civ, () => setUnmatched(true));\n setActivePageForItem(item(), civ);\n });\n\n return (\n \n \n {(item) => (\n
\n
\n \n
{variation()?.description}
\n\n \n\n \n\n \n {/* {item().name && } */}\n {!civ && }\n\n \n\n \n\n
\n \n
\n
\n \n
\n )}\n
\n {!unmatched() && }\n {unmatched() && }\n {item.error &&
Error!
}\n
\n );\n}\n\nconst UnitSidebar: Component<{ item?: UnifiedItem; civ: civConfig }> = (props) => {\n const [stats] = createResource(\n () => ({ unit: props.item, civ: props.civ }),\n (x) => getUnitStats(ITEMS.UNITS, x.unit, x.civ)\n );\n const variation = createMemo(() => getMostAppropriateVariation(props.item, props.civ));\n const [age, setAge] = createSignal(4);\n\n return (\n
\n
\n \n
\n \n {(stats) => (\n <>\n
\n \n
\n \n \n \n \n \n \n \n
\n
\n
\n {stats.attackSpeed && (\n
\n \n
\n )}\n \n \n \n \n \n
\n \n )}\n
\n
\n );\n};\n","import { CivFlag } from \"@components/CivFlag\";\nimport { Icon } from \"@components/Icon\";\nimport { Tooltip } from \"@components/Tooltip\";\nimport { Link, useLocation } from \"@solidjs/router\";\nimport { For } from \"solid-js\";\nimport { setActivePage } from \"../App\";\nimport { CIVILIZATIONS } from \"../config\";\nimport { mainIntroductionCSSClass, tooltipCSSClass } from \"../styles\";\nconst buttonClass = `block font-bold px-7 py-2 rounded-full transition hover:opacity-70`;\nexport const CivOverviewRoute = () => {\n setActivePage({ title: \"Civilizations\", description: \"Overview of all civilizations\", location: useLocation() });\n let el;\n return (\n <>\n
\n
\n
\n

AoE4 Explorer

\n \n Patch 13.0.4178 (Preview)\n \n \n
The Explorer includes all changes introduced with Season 10 Patch 13.0.4178
\n
\n
\n

Discover all units, buildings and technologies in the game.

\n\n

\n AoE4 World Explorer provides you with a detailed breakdown on what specific upgrades, tecnologies and bonuses make units perform better.\n
\n
\n Use the tool to explore different civilizations, buidlings and army units and get a better understanding of Age of Empires 4.\n
\n
\n

\n
\n \n Learn more\n \n \n \n \n Explore All Units\n \n \n \n Explore All Buildings\n \n
\n
\n
\n \n {(civ) => (\n \n \n

{civ.name}

\n \n \n )}\n
\n
\n
\n \n
\n \n \n
\n \n \n );\n};\n","import { useLocation, useParams } from \"@solidjs/router\";\nimport { createResource, For, Suspense } from \"solid-js\";\nimport { setActivePage } from \"../../App\";\nimport { BuildingCard } from \"@components/BuildingCard\";\nimport { CIVILIZATION_BY_SLUG, ITEMS } from \"../../config\";\nimport { splitBuildingsIntoGroups } from \"../../query/utils\";\nimport { itemGridCSSClass } from \"../../styles\";\n\nexport const BuildingOverviewRoute = () => {\n const params = useParams();\n const civ = CIVILIZATION_BY_SLUG[params.slug];\n const [buildings] = createResource(async () =>\n splitBuildingsIntoGroups((await import(\"@data/sdk\")).buildings.where({ civilization: civ?.abbr }).order(\"age\"))\n );\n\n setActivePage({ title: `Buildings ${civ ? ` — ${civ?.name}` : \"\"}`, location: useLocation() });\n\n return (\n
\n \n

Loading...

\n
\n {() =>
}
\n
\n \n }\n >\n \n {([k, v]) =>\n v?.length ? (\n
\n

{k[0].toUpperCase() + k.slice(1)}

\n
\n {(unit) => }\n
\n
\n ) : (\n <>\n )\n }\n
\n \n
\n );\n};\n","import { Link, useParams } from \"@solidjs/router\";\nimport { Component, createEffect, createMemo, createResource, createSignal, For, Show } from \"solid-js\";\nimport { setActivePageForItem, tryRedirectToClosestMatch } from \"../../App\";\nimport { getItemHref } from \"@components/Cards\";\nimport { ItemIcon } from \"@components/ItemIcon\";\nimport { ItemPage } from \"@components/ItemPage\";\nimport { PatchHistory } from \"@components/PatchHistory\";\nimport { RelatedContent } from \"@components/RelatedContent\";\nimport { ReportButton } from \"@components/ReportButton\";\nimport { StatNumber, StatBar, StatDps, StatCosts } from \"@components/Stats\";\nimport { TechnologyCard } from \"@components/TechnologyCard\";\nimport { Tooltip } from \"@components/Tooltip\";\nimport { UnitCard } from \"@components/UnitCard\";\nimport { CIVILIZATION_BY_SLUG, ITEMS } from \"../../config\";\nimport { getUnitStats } from \"../../query/stats\";\nimport { getMostAppropriateVariation } from \"../../query/utils\";\nimport { mainIntroductionCSSClass } from \"../../styles\";\nimport { Building, civAbbr, civConfig, UnifiedItem } from \"../../types/data\";\nimport { ItemList } from \"@data/sdk/utils\";\nimport { Ability } from \"@data/types/items\";\nimport { Abilities } from \"@components/Abilities\";\n\nconst SDK = import(\"@data/sdk/index\");\n\nexport function BuildingDetailRoute() {\n const itemType = ITEMS.BUILDINGS;\n const params = useParams();\n const civ: civConfig = CIVILIZATION_BY_SLUG[params.slug];\n const [unmatched, setUnmatched] = createSignal(false);\n const [item] = createResource(params.id, async (id) => (await SDK).buildings.get(id));\n const variation = createMemo(() => getMostAppropriateVariation(item(), civ));\n\n createEffect(() => {\n if (!item()) return;\n if (civ && !item()?.civs.includes(civ.abbr)) tryRedirectToClosestMatch(itemType, params.id, civ, () => setUnmatched(true));\n setActivePageForItem(item(), civ);\n });\n\n const [units] = createResource(async () => (await SDK).units.where({ producedAt: params.id, civilization: civ?.abbr }));\n const [research] = createResource(async () => (await SDK).technologies.where({ producedAt: params.id, civilization: civ?.abbr }).order(\"age\"));\n const [abilities] = createResource(async () =>\n !civ ? ([] as ItemList) : (await SDK).abilities.where({ civilization: civ.abbr, affects: `buildings/${params.id}` }).order(\"age\")\n );\n\n return (\n \n \n {(item) => (\n
\n
\n \n
{variation()?.description}
\n\n \n\n {!civ && }\n\n \n\n
\n \n
\n \n

Produces

\n\n
\n \n {(unit) => {\n let el;\n return (\n \n
\n \n
\n {unit.name}\n \n
\n \n
\n
\n \n );\n }}\n
\n
\n
\n \n

Researches

\n\n
\n \n {(tech) => {\n let el;\n return (\n \n
\n \n
\n $2')}\n />\n \n
\n \n
\n
\n \n );\n }}\n
\n
\n
\n\n \n\n \n
\n \n
\n )}\n
\n {unmatched() && }\n {!unmatched() && }\n {item.error &&
Error!
}\n
\n );\n}\n\nconst BuildingSidebar: Component<{ item: UnifiedItem; civ: civConfig }> = (props) => {\n const [stats] = createResource(\n () => ({ unit: props.item, civ: props.civ }),\n (x) => getUnitStats(ITEMS.UNITS, x.unit, x.civ)\n );\n\n const variation = createMemo(() => getMostAppropriateVariation(props.item, props.civ));\n const [age, setAge] = createSignal(4);\n\n return (\n
\n
\n \n \n {(amount) => (\n
\n
Effects
\n

Increases max population by {amount}

\n
\n )}\n
\n \n {(g) => (\n
\n
Garrison
\n

Can garrison up to {g.capacity} units

\n
\n )}\n
\n
\n \n {(stats) => (\n <>\n
\n \n
\n \n \n \n \n \n \n
\n
\n
\n {stats.attackSpeed && (\n
\n \n
\n )}\n \n \n \n \n \n
\n \n )}\n
\n
\n );\n};\n","import { useLocation } from \"@solidjs/router\";\nimport { createSignal, For } from \"solid-js\";\nimport { setActivePage } from \"../App\";\nimport { CivFlag } from \"@components/CivFlag\";\nimport { Icon } from \"@components/Icon\";\nimport { ReportButton } from \"@components/ReportButton\";\nimport { mainIntroductionCSSClass } from \"../styles\";\n\nexport const AboutRoute = () => {\n setActivePage({ title: \"About\", description: \"About the AoE4 Explorer\", location: useLocation() });\n const [x] = createSignal(true);\n return (\n
\n
\n

AoE4 Explorer

\n

Discover all units, buildings and technologies in the game.

\n

\n AoE4 World Explorer provides you with a detailed breakdown on what specific upgrades, tecnologies and bonuses make units perform better.\n
\n
\n Use the tool to explore different civilizations, buidlings and army units and get a better understanding of Age of Empires 4.\n

\n
\n\n
\n
\n
\n
\n \n Age IV\n \n
\n
\n

Filter by age

\n

\n When viewing the stats for one or multiple units, use the Age switcher in the top right to change the age. Any upgrades and technologies not\n available in the selected age will be excluded from the stats.\n

\n
\n\n
\n
\n
\n
\n \n \n 19\n \n 38\n \n \n Melee Attack\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n

Inspect combat stats

\n

Hover over specific parts of a bar to see how statistics like hitpoints, attack and armor are build up. Hover over the label to see the totals.

\n
\n\n
\n
\n
\n \n \n \n \n
\n
\n

Compare civs

\n

Click through the flags to see what bonuses and stats a unit gets for different civilizations.

\n
\n\n
\n
\n \n
\n

Help us improve

\n

Notice anything wrong? Do let us know!

\n
\n\n
\n \n {([type, label]) => (\n
\n {label}\n
\n )}\n \n
\n
\n
\n

Credits & Contributors

\n

\n AoE4 Explorer is created by{\" \"}\n \n Robert van Hoesel\n {\" \"}\n with help from{\" \"}\n \n René Klačan\n \n . The data is sourced from game files, communities and for the most part pulled from the{\" \"}\n \n AOE4 Quick Sheet\n {\" \"}\n created by{\" \"}\n \n MugenNoSora\n \n . Special thanks to{\" \"}\n \n rudyairlines\n {\" \"}\n and{\" \"}\n \n aoemods\n \n .\n

\n\n

If you would like to contribute that is certainly appreciated, here are ways you can help:

\n \n\n

Use the data!

\n

\n Interested in using the data of the explorer in your own project? All the data on units, buildings, technologies and civs is open source and available\n in JSON over at{\" \"}\n \n aoe4world/data\n \n . Use it to speed up the development of your awesome tools and do let us know if you build something.\n

\n
\n
\n );\n};\n","import { useParams } from \"@solidjs/router\";\nimport { createEffect, createMemo, createResource, createSignal, Show } from \"solid-js\";\nimport { setActivePageForItem, tryRedirectToClosestMatch } from \"../../App\";\nimport { ItemPage } from \"@components/ItemPage\";\nimport { PatchHistory } from \"@components/PatchHistory\";\nimport { RelatedContent } from \"@components/RelatedContent\";\nimport { ReportButton } from \"@components/ReportButton\";\nimport { StatCosts } from \"@components/Stats\";\nimport { CIVILIZATION_BY_SLUG, ITEMS, PRETTY_AGE_MAP_LONG } from \"../../config\";\nimport { getMostAppropriateVariation } from \"../../query/utils\";\nimport { mainIntroductionCSSClass } from \"../../styles\";\nimport { Technology } from \"../../types/data\";\n\nexport function TechnologyDetailRoute() {\n const itemType = ITEMS.TECHNOLOGIES;\n const params = useParams();\n const civ = CIVILIZATION_BY_SLUG[params.slug];\n const [unmatched, setUnmatched] = createSignal(false);\n const [item] = createResource(params.id, async (id) => (await import(\"@data/sdk/index\")).technologies.get(id));\n\n createEffect(() => {\n if (!item()) return;\n if (civ && !item()?.civs.includes(civ.abbr)) tryRedirectToClosestMatch(itemType, params.id, civ, () => setUnmatched(true));\n setActivePageForItem(item(), civ);\n });\n\n const variation = createMemo(() => getMostAppropriateVariation(item(), civ));\n\n return (\n \n \n {(item) => (\n
\n
\n \n
{item?.description}
\n {item?.minAge > 0 ?
Available in the {PRETTY_AGE_MAP_LONG[item?.minAge]}
: <>}\n\n \n\n \n\n {!civ && }\n\n \n\n \n\n
\n \n
\n
\n
\n
\n \n
\n
\n
\n )}\n
\n\n {unmatched() && }\n {item.error &&
Error!
}\n
\n );\n}\n","import { useLocation, useParams } from \"@solidjs/router\";\nimport { createResource, For, Suspense } from \"solid-js\";\nimport { setActivePage } from \"../../App\";\nimport { TechnologyCard } from \"@components/TechnologyCard\";\nimport { CIVILIZATION_BY_SLUG, ITEMS } from \"../../config\";\nimport { splitTechnologiesIntroGroups } from \"../../query/utils\";\nimport { itemGridCSSClass } from \"../../styles\";\n\nexport const TechnologoiesOverviewRoute = () => {\n const params = useParams();\n const civ = CIVILIZATION_BY_SLUG[params.slug];\n const [technologies] = createResource(async () =>\n splitTechnologiesIntroGroups((await import(\"@data/sdk\")).technologies.where({ civilization: civ?.abbr }).order(\"age\"))\n );\n\n setActivePage({ title: `Technologies ${civ ? ` — ${civ?.name}` : \"\"}`, location: useLocation() });\n\n return (\n
\n \n

Loading...

\n
\n {() =>
}
\n
\n \n }\n >\n \n {([k, v]) =>\n v?.length ? (\n
\n

{k[0].toUpperCase() + k.slice(1)}

\n
\n {(unit) => }\n
\n
\n ) : (\n <>\n )\n }\n
\n \n
\n );\n};\n","import { Accessor, Component, createContext, createSignal, onCleanup, onMount, useContext } from \"solid-js\";\n\ntype Heading = { label: string; id: string; level: number };\ntype TocContext = {\n headings: Accessor;\n add(label: string, level?: number): string;\n remove(id: string): void;\n};\nconst TableOfContentsContext = createContext({\n headings: () => [],\n add: () => \"\",\n remove: () => null,\n});\n\nexport const TableOfContentsProvider: Component = (props) => {\n const [headings, setHeadings] = createSignal([]);\n const value: TocContext = {\n headings,\n add: (label: string, level = 1) => {\n const slugified = label.replace(/\\s/g, \"-\").toLowerCase();\n let id = slugified;\n let i = 0;\n while (headings().find((h) => h.id === id)) id = `${slugified}-${i++}`;\n setHeadings(headings().concat({ label, id, level }));\n return id;\n },\n remove: (id: string) => setHeadings(headings().filter((h) => h.id !== id)),\n };\n\n onMount(() => {\n const id = window.location.hash?.replace(\"#\", \"\");\n if (!id) return;\n headings()?.find((h) => h.id === id) && requestAnimationFrame(() => document.getElementById(id)?.scrollIntoView());\n });\n\n return {props.children};\n};\n\nexport const TableOfContentsAnchor: Component<{ label: string; level?: number }> = (props) => {\n const { add: createHeadingId, remove: removeHeading } = useContext(TableOfContentsContext);\n const id = createHeadingId(props.label, props.level);\n onCleanup(() => removeHeading(id));\n return ;\n};\n\nexport function useTableOfContents() {\n return useContext(TableOfContentsContext);\n}\n\nexport function scrollIntoViewIfNeeded(e: MouseEvent, id: string) {\n const el = document.getElementById(id);\n if (el) {\n e.preventDefault();\n e.stopImmediatePropagation();\n history.pushState({}, \"\", `#${id}`);\n el.scrollIntoView({ behavior: \"smooth\", block: \"start\" });\n return false;\n }\n}\n\nexport const TableOfContents = {\n Provider: TableOfContentsProvider,\n Anchor: TableOfContentsAnchor,\n};\n","import { Link, useLocation, useParams } from \"@solidjs/router\";\nimport { Component, createMemo, onMount, createResource, createSignal, For, Index, Resource, createEffect, Show, onCleanup } from \"solid-js\";\nimport { setActivePage } from \"../../App\";\nimport { getItemHref } from \"@components/Cards\";\nimport { CivFlag } from \"@components/CivFlag\";\nimport { Icon } from \"@components/Icon\";\nimport { ItemIcon } from \"@components/ItemIcon\";\nimport { scrollIntoViewIfNeeded, TableOfContents, useTableOfContents } from \"@components/TableOfContents\";\nimport { CIVILIZATIONS, CIVILIZATION_BY_SLUG } from \"../../config\";\nimport { capitlize, getItemByCanonicalName, sortPatchDiff } from \"../../query/utils\";\nimport { getItemCssClass, mainIntroductionCSSClass } from \"../../styles\";\nimport { civAbbr, Item, UnifiedItem } from \"../../types/data\";\nimport { PatchLine, PatchSection, PatchSet } from \"../../types/patches\";\nimport { setHideNav } from \"../../global\";\nimport { ItemGroup, ItemSlug } from \"@data/sdk/utils\";\n\nexport const PatchDetailRoute = () => {\n setHideNav(true);\n onCleanup(() => setHideNav(false));\n const params = useParams();\n const [patch] = createResource(async () => (await import(\"../../data/patches/patch\")).patches.find((patch) => patch.id === params.id));\n const [civ, setCiv] = createSignal(CIVILIZATION_BY_SLUG[params.civ]?.abbr);\n const [items] = createResource(patch, async (patch) => {\n const SDK = await import(\"@data/sdk/index\");\n const items = patch.sections.flatMap((s) => s.changes).flatMap((c) => c.items.map((ci) => [ci, SDK.Get(ci as ItemSlug)] as [string, ItemGroup]));\n return new Map(items);\n });\n\n const [filteredPatchNotes] = createResource(\n () => ({ patch: patch(), items: items(), civ: civ() }),\n ({ patch, items, civ }) => {\n if (!patch || !items) return [];\n if (!civ) return patch?.sections;\n\n return patch?.sections?.reduce((sections, s) => {\n const changes = s.changes.reduce((chs, c) => {\n if (c.civs.length ? c.civs.includes(civ) : !c.items.length || c.items.some((i) => items.get(i)?.civs.includes(civ))) {\n const filterdChange: PatchSet = { ...c };\n filterdChange.items = c.items.filter((i) => !i || items.get(i)?.civs.includes(civ));\n filterdChange.diff = filterdChange.diff.filter(([t, d, c]) => !c?.length || c.includes(civ));\n chs.push(filterdChange);\n }\n return chs;\n }, [] as PatchSet[]);\n if ((!s.civs?.length || (s.civs && s.civs.includes(civ))) && changes.length) sections.push({ ...s, changes });\n return sections;\n }, [] as PatchSection[]);\n }\n );\n\n const [pagination] = createResource(params.id, async (id) => {\n const { patches } = await import(\"../../data/patches/patch\");\n const i = patches.findIndex((p) => p.id === id);\n return { previous: patches[i - 1], next: patches[i + 1] };\n });\n\n createEffect(\n () =>\n patch() &&\n setActivePage({\n title: `${patch()?.name} ${civ() ? `– ${CIVILIZATIONS[civ()]?.name}` : \"\"}`,\n description: patch()?.introduction,\n location: useLocation(),\n })\n );\n\n return (\n \n
\n
\n \n {(prev) => (\n \n {prev().name}\n \n )}\n \n \n All\n \n \n {(next) => (\n \n {next().name} \n \n )}\n \n
\n

\n {patch()?.name} {civ() && `– ${CIVILIZATIONS[civ()]?.name}`}\n

\n
\n {patch()?.date.toLocaleDateString(\"en-US\", { dateStyle: \"full\" })} {patch()?.buildId && #{patch().buildId}}\n \n Season {patch()?.season} {patch()?.type}\n \n
\n
\n \n
\n\n {patch()?.officialUrl && (\n \n Read full release notes \n \n )}\n {patch()?.html}\n
\n
\n
\n
\n
Filter updates by civilization
\n
\n setCiv(null)}\n class={`w-10 h-6 rounded grid place-content-center bg-gray-400 uppercase text-sm text-white hover:text-gray-50 ${\n !civ() ? \"outline outline-white\" : \"\"\n }`}\n >\n All\n \n \n {(c) => (\n setCiv(c.abbr)}>\n \n \n )}\n \n
\n
Click on different units or technologies to learn more about them.
\n
\n\n {(section) =>
}\n
\n
\n {civ() && (\n
\n

\n Showing notes for the {CIVILIZATIONS[civ()]?.name}. Other patch notes are hidden.\n

\n setCiv(null)}\n class=\"rounded basis-full grid place-content-center uppercase p-1 mt-3 bg-gray-400 text-[12px] text-white hover:text-gray-50\"\n >\n View the full notes\n \n
\n )}\n\n \n
\n
\n
\n );\n};\n\nconst Section: Component<{ section: PatchSection; items: Map; civ: civAbbr }> = (props) => {\n return (\n
\n \n\n {props.section.title &&

{props.section.title}

}\n {props.section.subtitle &&

{props.section.subtitle}

}\n {props.section.description &&

{props.section.description}

}\n {props.section.md && }\n \n {(c) => (\n
\n {(c.items.length || c.title) && (\n
\n {c.title &&

{c.title}

}\n \n {(ci) => {\n const item = props.items?.get(ci);\n if (item && props.civ && !item.civs.includes(props.civ)) return null;\n if (item) {\n const itemCssClass = getItemCssClass(item);\n return (\n \n
\n \n
\n {item.name}\n \n );\n }\n const unmapped = ci.split(\"/\");\n console.warn(`Item not found: ${unmapped[1]} in ${unmapped[0]}`);\n return {capitlize(unmapped[1])};\n }}\n
\n
\n )}\n \n \n
\n )}\n
\n
\n );\n};\n\nconst DevNote: Component<{ note: string }> = (props) => {\n return (\n props.note && (\n
\n
Developer note
\n

\"{props.note}\"

\n
\n )\n );\n};\nconst DiffList: Component<{ diff: PatchLine[] }> = (props) => (\n
    \n \n {([type, change]) => (\n
  • \n
    \n {type == \"buff\" && }\n {type == \"nerf\" && }\n {type == \"fix\" && }\n
    \n

    {change}

    \n
  • \n )}\n
    \n
\n);\n\nconst Sidebar = () => {\n const { headings } = useTableOfContents();\n\n return (\n
\n Jump to\n \n {(s, i) => (\n scrollIntoViewIfNeeded(e, s.id)}\n class={`block my-1 text-gray-200 hover:text-gray-50 ${s.level > 1 ? \"pl-4\" : \"font-bold mt-3\"}`}\n >\n {s.label}\n \n )}\n \n
\n );\n};\n\nconst DirtSimpleMd: Component<{ md: string }> = (props) => {\n return (\n
\n {...(props.md ?? \"\").split(\"\\n\").map((line) => {\n const l = line.trim();\n if (l.startsWith(\"###\")) return
{l.slice(4)}
;\n if (l.startsWith(\"##\")) return

{l.slice(3)}

;\n if (l.startsWith(\"#\")) return

{l.slice(2)}

;\n if (l.startsWith(\"> \")) return ;\n if (l.startsWith(\"![\") && l.endsWith(\")\")) {\n const [_, alt, url] = l.match(/!\\[(.*)\\]\\((.*)\\)/);\n return {alt};\n }\n if (l.startsWith(\"[\") && l.includes(\"](\") && l.endsWith(\")\")) {\n const [_, label, url] = l.match(/\\[(.*)\\]\\((.*)\\)/);\n return (\n \n {label}\n \n );\n }\n if (line.startsWith(\" * \") || line.startsWith(\" - \"))\n return (\n

\n {line.slice(6)}\n

\n );\n if (l.startsWith(\"* \") || l.startsWith(\"- \"))\n return (\n

\n {l.slice(2)}\n

\n );\n\n return

{l}

;\n })}\n
\n );\n};\n","import { useNavigate } from \"@solidjs/router\";\nimport { Component, createSignal } from \"solid-js\";\nimport { getItemHref } from \"@components/Cards\";\nimport { Icon } from \"@components/Icon\";\nimport { search, Search } from \"@components/Search\";\nimport { mainIntroductionCSSClass } from \"../styles\";\n\nexport const SearchRoute: Component = () => {\n const navigate = useNavigate();\n const [noResult, setNoResult] = createSignal();\n const q = new URLSearchParams(window.location.search).get(\"q\");\n if (q)\n search(q).then((i) => {\n const item = i?.[0]?.item;\n if (item) navigate(getItemHref(item));\n else setNoResult(q);\n });\n\n const searchUrl = new URL(window.location.href);\n searchUrl.search = \"?q=\";\n return (\n
\n

\n \n Quick Search\n

\n {noResult() && (\n
\n

\n \n No results for \"{noResult()}\"\n

\n

Try searching for something else.

\n
\n )}\n\n

Use this url to create a search shortcut to the explorer in Chrome or Firefox.

\n (t.target as HTMLInputElement).select()}\n />\n
\n

Learn how to add a site search short cut in

\n \n Chrome\n \n \n Firefox\n \n
\n
\n );\n};\n","import { Link, useLocation } from \"@solidjs/router\";\nimport { createResource, onCleanup } from \"solid-js\";\nimport { setActivePage } from \"../../App\";\nimport { Icon } from \"@components/Icon\";\nimport { PatchNotes } from \"../../types/patches\";\nimport { CivAbbr } from \"@data/sdk/utils\";\nimport { mainIntroductionCSSClass } from \"../../styles\";\nimport { setHideNav } from \"../../global\";\n\nexport const PatchListRoute = () => {\n setHideNav(true);\n onCleanup(() => setHideNav(false));\n const [patches] = createResource(async () => [...(await import(\"../../data/patches/patch\")).patches].reverse().map(patchSummary));\n\n setActivePage({ title: \"Patches\", location: useLocation() });\n\n return (\n
\n

Age of Empires IV Patch History

\n

\n An overview of all balance patches released since Season One. Hotfixes without balance changes are excluded. Click on a Patch to learn more.\n

\n\n
\n

\n buffs\n

\n

\n nerfs\n

\n

\n fixes\n

\n
\n\n
    \n
    \n {patches()?.map((patch) => (\n \n

    \n {patch.notes.date.toLocaleDateString(\"en\", { day: \"numeric\", month: \"short\", year: \"numeric\" })}\n

    \n
    \n
    \n \n

    {patch.notes.name}

    \n
    \n {patch.notes.season !== 0 && `S${patch.notes.season}`} {patch.notes.type}\n {patch.notes.buildId && v{patch.notes.buildId}}\n
    \n \n\n
    \n

    {patch.notes.summary}

    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n\n {/*
    \n
    \n {patch.buffed > 0 && (\n

    \n {patch.buffed} buffs\n

    \n )}\n {patch.nerfed > 0 && (\n

    \n {patch.nerfed} nerfs\n

    \n )}\n {patch.fixed > 0 && (\n

    \n {patch.fixed} fixes\n

    \n )}\n
    \n
    */}\n\n {/*
    \n {patch.civs.map((civ) => (\n \n ))}\n
    */}\n \n ))}\n
\n
\n );\n};\n\nfunction patchSummary(notes: PatchNotes, i: number, patches: PatchNotes[]) {\n let buffed = 0,\n nerfed = 0,\n fixed = 0;\n\n let civs = new Set();\n for (const change of notes.sections.flatMap((section) => section.changes)) {\n change.civs.forEach((x) => civs.add(x));\n for (const [type] of change.diff) {\n if (type === \"buff\") buffed++;\n else if (type === \"nerf\") nerfed++;\n else if (type === \"fix\") fixed++;\n }\n }\n\n const daysSinceLastPatch = Math.ceil(i < patches.length - 1 ? (notes.date.getTime() - patches[i + 1].date.getTime()) / 1000 / 60 / 60 / 24 : 0);\n\n return {\n buffed,\n nerfed,\n fixed,\n civs: [...civs],\n notes,\n daysSinceLastPatch,\n };\n}\n","import { CivSlug } from \"@data/sdk/utils\";\nimport { Link, useLocation, useParams } from \"@solidjs/router\";\nimport {\n Component,\n For,\n JSX,\n ParentComponent,\n Show,\n Suspense,\n createContext,\n createEffect,\n createMemo,\n createResource,\n createSignal,\n createUniqueId,\n useContext,\n} from \"solid-js\";\nimport { CIVILIZATION_BY_SLUG } from \"../config\";\nimport { splitUnitsIntoGroups, splitBuildingsIntoGroups, splitTechnologiesIntroGroups } from \"../query/utils\";\nimport { getItemHref } from \"./Cards\";\nimport { ItemIcon } from \"./ItemIcon\";\nimport { CivConfig } from \"@data/types/civs\";\nimport { getStructuredItems, parseCurrentLocation } from \"../global\";\nimport { CivFlag } from \"./CivFlag\";\nimport { Icon } from \"./Icon\";\nconst SDK = import(\"@data/sdk\");\n\nexport const SidebarNav: Component = (props) => {\n const location = useLocation();\n const current = createMemo(() => parseCurrentLocation(location.pathname));\n const civilization = () => CIVILIZATION_BY_SLUG[current().civ as CivSlug] ?? undefined;\n const [data] = createResource(civilization, getStructuredItems);\n const [allData] = createResource(() => getStructuredItems());\n const currentItemType = () => current().itemType || \"units\";\n return (\n
\n \n {(data) => (\n \n )}\n \n
\n );\n};\n\nconst TreeMenu: ParentComponent = (props) =>
    {props.children}
;\n\nconst TreeMenuContext = createContext<{ isOpen: () => boolean; toggle: () => boolean; id: string; label: string }>();\n\nconst TreeGroup: ParentComponent<{ label: string; isOpen: boolean }> = (props) => {\n const [isOpen, setIsOpen] = createSignal(props.isOpen);\n const id = createUniqueId();\n createEffect(() => setIsOpen(props.isOpen));\n return setIsOpen((x) => !x), id, label: props.label }}>{props.children};\n};\n\nconst TreeGroupItems: ParentComponent> = (props) => {\n const { isOpen, label, id } = useContext(TreeMenuContext);\n\n return (\n \n
    \n {props.children}\n
\n
\n );\n};\n\nconst TreeGroupToggle: ParentComponent & { toggleClass?: string }> = (props) => {\n const { isOpen, toggle, id } = useContext(TreeMenuContext);\n const onKeyDown = (e: KeyboardEvent) => {\n if (e.key == \"ArrowLeft\" && isOpen()) {\n toggle();\n e.stopPropagation();\n }\n if (e.key == \"ArrowRight\" && !isOpen()) {\n toggle();\n e.stopPropagation();\n }\n };\n return (\n \n );\n};\nconst focusableElements = \"button, [href]\";\nconst TreeItem: ParentComponent<{}> = (props) => {\n const onKeyDown = (e: KeyboardEvent) => {\n if (e.key == \"ArrowDown\") {\n focusOnElement(focusableElements, \"next\");\n e.stopPropagation();\n }\n if (e.key == \"ArrowUp\") {\n focusOnElement(focusableElements, \"previous\");\n e.stopPropagation();\n }\n };\n return (\n
  • \n {props.children}\n
  • \n );\n};\n\nfunction focusOnElement(selector, direction) {\n const elements = Array.from(document.querySelectorAll(selector));\n const currentlyFocusedIndex = elements.findIndex((element) => element === document.activeElement);\n let nextIndex;\n if (direction === \"next\") {\n nextIndex = (currentlyFocusedIndex + 1) % elements.length;\n } else if (direction === \"previous\") {\n nextIndex = (currentlyFocusedIndex - 1 + elements.length) % elements.length;\n }\n const nextElement = elements[nextIndex];\n nextElement.focus();\n}\n","import { Link, RouteDefinition, useLocation, useNavigate, useRoutes } from \"@solidjs/router\";\nimport { Component, createEffect, createSignal, ErrorBoundary, lazy, on, Show } from \"solid-js\";\nimport { Toolbar } from \"./components/Toolbar\";\nimport { Nav } from \"./components/Nav\";\nimport { CivDetailRoute } from \"./routes/civs/[slug]\";\nimport { UnitOverviewRoute } from \"./routes/units/units\";\nimport { UnitDetailRoute } from \"./routes/units/[id]\";\nimport { CivOverviewRoute } from \"./routes/home\";\nimport { Icon } from \"./components/Icon\";\nimport { BuildingOverviewRoute } from \"./routes/buildings/buildings\";\nimport { BuildingDetailRoute } from \"./routes/buildings/[id]\";\nimport { AboutRoute } from \"./routes/about\";\nimport { TechnologyDetailRoute } from \"./routes/technologies/[id]\";\nimport { TechnologoiesOverviewRoute } from \"./routes/technologies/technologies\";\nimport { civConfig, UnifiedItem } from \"./types/data\";\nimport { ITEMS, SIMILAIR_ITEMS } from \"./config\";\nimport { getItemHref } from \"./components/Cards\";\nimport { PatchDetailRoute } from \"./routes/patches/[id]\";\nimport { findClosestMatch } from \"./query/utils\";\nimport { SearchRoute } from \"./routes/search\";\nimport { PatchListRoute } from \"./routes/patches\";\nimport { SidebarNav } from \"@components/SidebarNav\";\nimport { hideNav } from \"./global\";\n\nconst routes: RouteDefinition[] = [\n {\n path: \"/\",\n component: () => CivOverviewRoute,\n },\n {\n path: \"/civs\",\n component: () => {\n useNavigate()(\"/\");\n return null;\n },\n },\n {\n path: \"/civs/:slug\",\n component: () => CivDetailRoute,\n },\n {\n path: \"/civs/:slug/units\",\n component: () => UnitOverviewRoute,\n },\n {\n path: \"/civs/:slug/units/:id\",\n component: () => UnitDetailRoute,\n },\n {\n path: \"/civs/:slug/buildings\",\n component: () => BuildingOverviewRoute,\n },\n {\n path: \"/civs/:slug/buildings/:id\",\n component: () => BuildingDetailRoute,\n },\n {\n path: \"/civs/:slug/technologies\",\n component: () => TechnologoiesOverviewRoute,\n },\n {\n path: \"/civs/:slug/technologies/:id\",\n component: () => TechnologyDetailRoute,\n },\n {\n path: \"/units\",\n component: () => UnitOverviewRoute,\n },\n {\n path: \"/units/:id\",\n component: () => UnitDetailRoute,\n },\n {\n path: \"/buildings\",\n component: () => BuildingOverviewRoute,\n },\n {\n path: \"/buildings/:id\",\n component: () => BuildingDetailRoute,\n },\n {\n path: \"/technologies\",\n component: () => TechnologoiesOverviewRoute,\n },\n {\n path: \"/technologies/:id\",\n component: () => TechnologyDetailRoute,\n },\n {\n path: \"/about\",\n component: () => AboutRoute,\n },\n {\n path: \"/quiz\",\n component: lazy(() => import(\"./routes/quiz/quiz\")),\n },\n {\n path: \"/quiz/twitch\",\n component: lazy(() => import(\"./routes/quiz/twitch\")),\n },\n {\n path: \"/quiz/twitch/:channel\",\n component: lazy(() => import(\"./routes/quiz/twitch\")),\n },\n {\n path: \"/patches/\",\n component: () => PatchListRoute,\n },\n {\n path: \"/patches/:id\",\n component: () => PatchDetailRoute,\n },\n {\n path: \"civs/:civ/patches/:id\",\n component: () => PatchDetailRoute,\n },\n {\n path: \"/search\",\n component: () => SearchRoute,\n },\n {\n path: \"/content\",\n component: lazy(() => import(\"./routes/content/content\")),\n },\n];\n\nexport const [activePage, setActivePage] = createSignal<{ title?: string; description?: string; location: ReturnType }>();\n\nexport const setActivePageForItem = (item: UnifiedItem, civ: civConfig) =>\n setActivePage({\n title: item.name + (civ?.name ? ` — ${civ?.name}` : \"\"),\n description: item.description,\n location: useLocation(),\n });\n\nexport async function tryRedirectToClosestMatch(type: ITEMS, id: string, civ: civConfig, fallback?: Function) {\n const navigate = useNavigate();\n const closestMatch = await findClosestMatch(type, id, civ);\n if (closestMatch) navigate(getItemHref(closestMatch, civ));\n else fallback();\n}\n\nlet lastPathname: string;\ncreateEffect(\n on(activePage, () => {\n if (lastPathname === activePage()?.location?.pathname) return;\n lastPathname = activePage()?.location?.pathname;\n document.title = activePage()?.title ? activePage().title + \" – Explorer – AoE4 World\" : \"Explorer – AoE4 World\";\n if (!document.querySelector(\"meta[name=description]\")) {\n const meta = document.createElement(\"meta\");\n meta.name = \"description\";\n meta.content = activePage()?.description ?? \"\";\n document.head.appendChild(meta);\n } else document.querySelector(\"meta[name=description]\")?.setAttribute(\"content\", activePage()?.description ?? \"\");\n })\n);\nconst App: Component = () => {\n const Routes = useRoutes(routes);\n const location = useLocation();\n let resetFocusEl: HTMLDivElement;\n\n createEffect(() => {\n location.pathname;\n if (resetFocusEl) {\n resetFocusEl.focus({ preventScroll: true });\n if (resetFocusEl.getBoundingClientRect().top < 0) resetFocusEl.scrollIntoView();\n }\n });\n\n return (\n <>\n
    \n \n {\n const location = useLocation();\n let errPath = location.pathname;\n console.log(err);\n createEffect(() => {\n if (location.pathname != errPath) retry();\n });\n return (\n
    \n
    \n

    \n \n Problem while loading page\n

    \n

    \n Something went terribly wrong. It's likely a bug (just like in the game) and possibly something else. If it persists, we'd really like to know\n so we can fix it. You can report it and include the below error.\n

    \n
    {err.toString()}
    \n \n \n Report bug\n \n
    \n
    \n );\n }}\n >\n
    \n \n \n \n
    \n \n
    \n
    \n \n \n );\n};\n\nexport default App;\n","import \"./index.css\";\nimport { render } from \"solid-js/web\";\nimport { Router } from \"@solidjs/router\";\nimport { Path } from \"@solidjs/router/dist/types\";\n\nimport App, { activePage } from \"./App\";\nimport { createEffect, on } from \"solid-js\";\n\ninterface explorerOptions {\n /** The path at which the explorer is located */\n base?: string;\n /** Callback function to be used after each navigation */\n onNavigate?: (page: { title?: string; description?: string; location: Path }) => void;\n}\n\nexport function initializeExplorer(el: HTMLElement = document.getElementById(\"explorer\"), options: explorerOptions = {}) {\n let router: typeof Router;\n render(\n () => (\n \n \n \n ),\n el\n );\n\n if (options.onNavigate) {\n let lastPathname: string;\n createEffect(\n on(activePage, () => {\n if (lastPathname === activePage()?.location?.pathname) return;\n lastPathname = activePage()?.location?.pathname;\n options.onNavigate({ title: activePage().title, description: activePage().description, location: activePage().location });\n })\n );\n }\n}\n","import { initializeExplorer } from '../lib/explorer/src/index'\n\ndeclare global {\n interface Window {\n gtag: any\n }\n}\n\nif (document.getElementById('explorer')) {\n const mainNav = document.querySelector('#main-nav, nav')\n mainNav.classList.add('relative')\n mainNav.classList.remove('sticky')\n const base = '/explorer'\n // Todo, disable first pageview in base tracking https://developers.google.com/analytics/devguides/collection/gtagjs#install_the_global_site_tag\n initializeExplorer(document.getElementById('explorer'), {\n base,\n onNavigate: ({ title, location }) => {\n window.gtag('event', 'page_view', {\n page_title: `${title} – Explorer`,\n page_path: `${base}${location.pathname}`,\n app_area: 'explorer',\n })\n },\n })\n document.getElementById('explorer-skeleton').remove()\n}\n"],"file":"assets/explorer-c01b4f69.js"}