{"version":3,"file":"static/js/172.2595dee5.chunk.js","mappings":"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","sources":["components/LoadingIcon.js","components/search/ReactQueryStatus.js","components/GoogleAd.js","components/single/BlueprintVersion.js","components/single/BlueprintInfoPanel.js","components/single/BlueprintMarkdown.js","components/single/BlueprintTitle.js","components/ItemIcon.js","components/NewIcon.js","components/single/BlueprintContentHeader.js","components/single/BlueprintTitles.js","components/single/CopyBlueprintButton.js","hooks/useIsFavorite.js","components/single/FavoriteIcon.js","components/single/FavoriteButton.js","components/single/ImgurThumbnail.js","components/single/NewItemHistogram.js","components/single/NewRequirementsHistogram.js","components/single/TagsPanel.js","components/single/EfficientSingleBlueprint.js","components/single/Spinner.js","data/entitiesWithIcons.js","helpers/buildImageUrl.ts","helpers/getHeaders.ts","hooks/useBlueprint.ts","hooks/useBlueprintStringSha.js","helpers/moderators.ts","hooks/useIsModerator.js"],"sourcesContent":["import {faCog} from '@fortawesome/free-solid-svg-icons';\nimport {FontAwesomeIcon} from '@fortawesome/react-fontawesome';\nimport PropTypes from 'prop-types';\nimport React from 'react';\n\nLoadingIcon.propTypes = {\n\tisLoading: PropTypes.bool.isRequired,\n};\n\nfunction LoadingIcon(props)\n{\n\treturn props.isLoading\n\t\t? \n\t\t: <>;\n}\n\nexport default LoadingIcon;\n","import {faBan, faCog, faWifi, faPause} from '@fortawesome/free-solid-svg-icons';\nimport {FontAwesomeIcon} from '@fortawesome/react-fontawesome';\nimport React from 'react';\n\nconst ReactQueryStatus = (props) =>\n{\n\tconst {fetchStatus, status} = props;\n\n\tif (status === 'loading' && fetchStatus === 'idle')\n\t{\n\t\treturn <>\n\t\t\t\n\t\t\t{' Waiting for query'}\n\t\t;\n\t}\n\n\tif (status === 'success' && fetchStatus === 'idle')\n\t{\n\t\treturn <>;\n\t}\n\n\tif (status === 'error' && fetchStatus === 'idle')\n\t{\n\t\treturn <>\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t{' error'}\n\t\t;\n\t}\n\n\tif (fetchStatus === 'fetching')\n\t{\n\t\treturn <>\n\t\t\t\n\t\t\t{' fetching'}\n\t\t;\n\t}\n\n\treturn <>\n\t\t\n\t\t{status}\n\t\t{' '}\n\t\t{fetchStatus}\n\t;\n};\n\nReactQueryStatus.propTypes = {};\nReactQueryStatus.defaultProps = {};\n\nexport default ReactQueryStatus;\n","import React from 'react';\n\nfunction GoogleAd()\n{\n\treturn (\n\t\t
\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t
\n\t);\n}\n\nexport default GoogleAd;\n","import {useQuery} from '@tanstack/react-query';\nimport {forbidExtraProps} from 'airbnb-prop-types';\n\nimport axios from 'axios';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport ReactQueryStatus from '../search/ReactQueryStatus';\n\nBlueprintVersion.propTypes = forbidExtraProps({\n\tblueprintStringSha: PropTypes.string,\n});\n\nfunction BlueprintVersion({blueprintStringSha})\n{\n\tconst queryKey = ['blueprintTitles', blueprintStringSha];\n\n\tconst result = useQuery(\n\t\tqueryKey,\n\t\t() => axios.get(`${process.env.REACT_APP_REST_URL}/api/blueprintContentTitlesBySha/${blueprintStringSha}`),\n\t\t{\n\t\t\tenabled : blueprintStringSha !== undefined,\n\t\t\tretry : false,\n\t\t\tcacheTime : 'Infinity',\n\t\t\tstaleTime : 'Infinity',\n\t\t\trefetchOnMount : false,\n\t\t\trefetchOnWindowFocus: false,\n\t\t\trefetchOnReconnect : false,\n\t\t},\n\t);\n\n\tconst {data, isSuccess} = result;\n\n\treturn <>\n\t\t\n\t\t{isSuccess && getVersion(data.data)}\n\t;\n}\n\nfunction getVersion(data)\n{\n\tif (data.blueprint_book)\n\t{\n\t\treturn getBlueprintVersion(data.blueprint_book);\n\t}\n\telse if (data.blueprint)\n\t{\n\t\treturn getBlueprintVersion(data.blueprint);\n\t}\n\telse if (data.deconstruction_planner)\n\t{\n\t\treturn getBlueprintVersion(data.deconstruction_planner);\n\t}\n\telse if (data.upgrade_planner)\n\t{\n\t\treturn getBlueprintVersion(data.upgrade_planner);\n\t}\n\telse\n\t{\n\t\tthrow new Error(JSON.stringify(data, null, 2));\n\t}\n}\n\nfunction getBlueprintVersion(data)\n{\n\treturn data.versionString;\n}\n\nexport default BlueprintVersion;\n","import {faCalendar, faClock, faCodeBranch, faHeart, faUser} from '@fortawesome/free-solid-svg-icons';\n\nimport {FontAwesomeIcon} from '@fortawesome/react-fontawesome';\nimport {forbidExtraProps} from 'airbnb-prop-types';\nimport dayjs from 'dayjs';\nimport relativeTime from 'dayjs/plugin/relativeTime';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport Card from 'react-bootstrap/Card';\nimport Table from 'react-bootstrap/Table';\nimport {Link} from 'react-router-dom';\nimport useBlueprint from '../../hooks/useBlueprint';\n\nimport BlueprintVersion from './BlueprintVersion';\n\nimport {useQueryClient} from '@tanstack/react-query';\n\ndayjs.extend(relativeTime);\n\nBlueprintInfoPanel.propTypes = forbidExtraProps({\n\tblueprintKey : PropTypes.string.isRequired,\n\tblueprintStringSha: PropTypes.string,\n\townedByCurrentUser: PropTypes.bool.isRequired,\n});\n\nfunction BlueprintInfoPanel({blueprintKey, blueprintStringSha, ownedByCurrentUser})\n{\n\tconst result = useBlueprint(blueprintKey);\n\n\tconst {\n\t\t\t author : {displayName},\n\t\t\t voteSummary,\n\t\t\t version : {createdOn, systemFrom, createdBy: {userId: authorId}},\n\t\t } = result.data.data;\n\n\tconst numberOfUpvotes = voteSummary?.numberOfUpvotes;\n\tconst queryClient = useQueryClient()\n\tif (voteSummary === undefined)\n\t{\n\t\tconsole.log('BlueprintInfoPanel clearing the query cache')\n\t\tqueryClient.clear()\n\t}\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\tInfo\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t{' Author'}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{displayName}\n\t\t\t\t\t\t\t\t{ownedByCurrentUser && {' (You)'}}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t{' Created'}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{dayjs(createdOn).fromNow()}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t{' Last Updated'}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{dayjs(systemFrom).fromNow()}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t{' Favorites'}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{numberOfUpvotes}\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t{' Version'}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t
\n\t);\n}\n\nexport default BlueprintInfoPanel;\n","import {forbidExtraProps} from 'airbnb-prop-types';\nimport {marked} from 'marked';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport useBlueprint from '../../hooks/useBlueprint';\n\nconst renderer = new marked.Renderer();\nrenderer.table = (header, body) => `\n\n${header}\n\n${body}\n
\n`;\nrenderer.image = (href, title, text) =>\n\t`\"${text}\"`;\n\nmarked.setOptions({\n\trenderer,\n\tgfm : true,\n\ttables : true,\n\tbreaks : false,\n\tpedantic : false,\n\tsanitize : false,\n\tsmartLists : true,\n\tsmartypants: false,\n});\n\nBlueprintMarkdown.propTypes = forbidExtraProps({\n\tblueprintKey: PropTypes.string.isRequired,\n});\n\nfunction BlueprintMarkdown({blueprintKey})\n{\n\tconst result = useBlueprint(blueprintKey);\n\tconst {descriptionMarkdown} = result.data.data;\n\tconst renderedMarkdown = marked(descriptionMarkdown);\n\n\treturn
;\n}\n\nexport default BlueprintMarkdown;\n","import {faLink} from '@fortawesome/free-solid-svg-icons';\nimport {FontAwesomeIcon} from '@fortawesome/react-fontawesome';\n\nimport {forbidExtraProps} from 'airbnb-prop-types';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport {Helmet} from 'react-helmet';\nimport useBlueprint from '../../hooks/useBlueprint';\n\nBlueprintTitle.propTypes = forbidExtraProps({\n\tblueprintKey: PropTypes.string.isRequired,\n});\n\nfunction BlueprintTitle({blueprintKey})\n{\n\tconst result = useBlueprint(blueprintKey);\n\tconst {title} = result.data.data;\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t{`Factorio Prints: ${title}`}\n\t\t\t\n\t\t\t

\n\t\t\t\t\n\t\t\t\t{` ${title}`}\n\t\t\t

\n\t\t\n\t);\n}\n\nexport default BlueprintTitle;\n","import {forbidExtraProps} from 'airbnb-prop-types';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport entitiesWithIcons from '../data/entitiesWithIcons';\n\nItemIcon.propTypes = forbidExtraProps({\n\titem: PropTypes.string,\n});\n\nfunction ItemIcon({item})\n{\n\tconst hasIcon = item !== null && entitiesWithIcons[item];\n\tconst iconClass = hasIcon ? `icon-${item}` : 'icon-blank';\n\tconst iconSrc = hasIcon ? `/icons/${item}.png` : '/icons/blank.png';\n\tconst alt = hasIcon ? `${item}` : 'blank';\n\n\treturn (\n\t\t\n\t\t\t\t\n\t\t\t\n\t);\n}\n\nexport default ItemIcon;\n","import {forbidExtraProps} from 'airbnb-prop-types';\nimport PropTypes from 'prop-types';\nimport React from 'react';\n\nNewIcon.propTypes = forbidExtraProps({\n\ticonName: PropTypes.string,\n\ticonType: PropTypes.string,\n});\n\nfunction NewIcon({iconName, iconType})\n{\n\tif (iconType === 'virtual')\n\t{\n\t\ticonType = 'virtual-signal';\n\t}\n\tif (iconType === undefined)\n\t{\n\t\ticonType = 'item';\n\t}\n\tconst iconClass = `icon-${iconName}`;\n\tconst iconSrc = `/icons/${iconType}/${iconName}.png`;\n\n\treturn (\n\t\t\n\t\t\t{/* eslint-disable-next-line */}\n\t\t\t\n\t\t\n\t);\n}\n\nexport default NewIcon;\n","import {forbidExtraProps} from 'airbnb-prop-types';\n\nimport PropTypes from 'prop-types';\nimport React from 'react';\n\nimport Button from 'react-bootstrap/Button';\nimport Card from 'react-bootstrap/Card';\nimport ListGroup from 'react-bootstrap/ListGroup';\n\nimport ItemIcon from '../ItemIcon';\nimport NewIcon from '../NewIcon';\n\nBlueprintContentHeader.propTypes = forbidExtraProps({\n\tdata : PropTypes.object.isRequired,\n\tblueprintKey : PropTypes.string.isRequired,\n\tblueprintStringSha: PropTypes.string.isRequired,\n\tpositionArray : PropTypes.arrayOf(PropTypes.number),\n});\n\nfunction getBlueprintBook(data, blueprintStringSha, blueprintKey, positionArray)\n{\n\tconst firstRow = getFirstRow(data);\n\n\tlet {blueprints, active_index} = data;\n\tif (blueprints === undefined)\n\t{\n\t\tblueprints = [];\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t{firstRow}\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t{\n\t\t\t\t\t\tblueprints.map((each, index) => (\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t)\n\t\t\t\t\t}\n\t\t\t\t\n\t\t\t\n\t\t\n\t);\n}\n\nfunction getFbeButton(positionArray, blueprintStringSha)\n{\n\tconst href = positionArray.length === 0\n\t\t? '/'\n\t\t: `/position/${positionArray.join('.')}`;\n\n\tconst caption = positionArray.join('.');\n\n\treturn \n\t\t\n\t\t\n\t\tRender image\n\t\t\n\t\t{caption}\n\t\n}\n\nfunction getBlueprint(data, positionArray, blueprintStringSha)\n{\n\tconst {icons, item, labelHtml} = data;\n\n\treturn (\n\t\t<>\n\t\t\t\n\t\t\t\n\t\t\t{icons && [...Array(4).keys()].map(index => getItemIconIfExists(icons, index))}\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t{getFbeButton(positionArray, blueprintStringSha)}\n\t\t\n\t);\n}\n\nfunction BlueprintContentHeader({data, blueprintStringSha, blueprintKey, positionArray = []})\n{\n\tif (data.blueprint_book)\n\t{\n\t\treturn getBlueprintBook(data.blueprint_book, blueprintStringSha, blueprintKey, positionArray);\n\t}\n\telse if (data.blueprint)\n\t{\n\t\treturn getBlueprint(data.blueprint, positionArray, blueprintStringSha);\n\t}\n\telse if (data.deconstruction_planner)\n\t{\n\t\treturn getBlueprint(data.deconstruction_planner, positionArray, blueprintStringSha);\n\t}\n\telse if (data.upgrade_planner)\n\t{\n\t\treturn getBlueprint(data.upgrade_planner, positionArray, blueprintStringSha);\n\t}\n\telse\n\t{\n\t\tthrow new Error(JSON.stringify(data, null, 2));\n\t}\n}\n\nfunction getFirstRow(data)\n{\n\tconst {icons, item, labelHtml} = data;\n\n\treturn (\n\t\t<>\n\t\t\t\n\t\t\t\n\t\t\t{icons && [...Array(4).keys()].map(index => getItemIconIfExists(icons, index))}\n\t\t\t\n\t\t\t\n\t\t\n\t);\n}\n\nfunction getItemIconIfExists(icons, index)\n{\n\tif (index >= icons.length)\n\t{\n\t\treturn ;\n\t}\n\n\tconst signal = icons[index].signal;\n\tconst {name: iconName, type: iconType} = signal;\n\n\tif (iconName === undefined)\n\t{\n\t\treturn ;\n\t}\n\n\treturn ;\n}\n\nexport default BlueprintContentHeader;\n","import {forbidExtraProps} from 'airbnb-prop-types';\nimport axios from 'axios';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport Card from 'react-bootstrap/Card';\nimport {useQuery} from '@tanstack/react-query';\nimport LoadingIcon from '../LoadingIcon';\nimport BlueprintContentHeader from './BlueprintContentHeader';\n\nBlueprintTitles.propTypes = forbidExtraProps({\n\tblueprintKey : PropTypes.string.isRequired,\n\tblueprintStringSha: PropTypes.string,\n});\n\nfunction BlueprintTitles({blueprintKey, blueprintStringSha})\n{\n\tconst queryKey = ['blueprintTitles', blueprintStringSha];\n\n\tconst {isLoading, isError, isSuccess, data, error} = useQuery(\n\t\tqueryKey,\n\t\t() => axios.get(`${process.env.REACT_APP_REST_URL}/api/blueprintContentTitlesBySha/${blueprintStringSha}`),\n\t\t{\n\t\t\tenabled : blueprintStringSha !== undefined,\n\t\t\tretry : false,\n\t\t\tcacheTime : 'Infinity',\n\t\t\tstaleTime : 'Infinity',\n\t\t\trefetchOnMount : false,\n\t\t\trefetchOnWindowFocus: false,\n\t\t\trefetchOnReconnect : false,\n\t\t},\n\t);\n\n\tif (isLoading)\n\t{\n\t\t// TODO 2023-03-08: implement placeholder\n\t\treturn (\n\t\t\t\n\t\t\t\t\n\t\t\t\t{' Loading blueprint titles'}\n\t\t\t\n\t\t);\n\t}\n\n\tif (isError)\n\t{\n\t\treturn {`Error loading data: ${error}`};\n\t}\n\n\tif (isSuccess)\n\t{\n\t\treturn ;\n\t}\n\n\treturn null;\n}\n\nexport default BlueprintTitles;\n","import {faCheck, faClipboard} from '@fortawesome/free-solid-svg-icons';\nimport {FontAwesomeIcon} from '@fortawesome/react-fontawesome';\nimport {forbidExtraProps} from 'airbnb-prop-types';\nimport copy from 'copy-to-clipboard';\nimport PropTypes from 'prop-types';\nimport React, {useEffect} from 'react';\nimport Button from 'react-bootstrap/Button';\n\nimport useBlueprintStringSha from '../../hooks/useBlueprintStringSha';\nimport LoadingIcon from '../LoadingIcon';\n\nCopyBlueprintStringButton.propTypes = forbidExtraProps({\n\tblueprintStringSha: PropTypes.string,\n});\n\nfunction CopyBlueprintStringButton({blueprintStringSha})\n{\n\tconst [copyClicked, setCopyClicked] = React.useState(false);\n\tconst [copied, setCopied] = React.useState(false);\n\n\tfunction handleCopy()\n\t{\n\t\tsetCopyClicked(true);\n\t}\n\n\tconst result = useBlueprintStringSha(copyClicked && !copied ? blueprintStringSha : undefined);\n\n\tconst {isLoading, isError, isSuccess, data} = result;\n\n\tuseEffect(\n\t\t() =>\n\t\t{\n\t\t\tif (copyClicked && !copied && isSuccess)\n\t\t\t{\n\t\t\t\tconst blueprintString = data.data.blueprintString;\n\t\t\t\tcopy(blueprintString);\n\t\t\t\tsetCopied(true);\n\t\t\t\tsetTimeout(() =>\n\t\t\t\t{\n\t\t\t\t\tsetCopyClicked(false);\n\t\t\t\t\tsetCopied(false);\n\t\t\t\t}, 2000);\n\t\t\t}\n\t\t},\n\t\t[blueprintStringSha, copyClicked, copied, data, isSuccess])\n\n\tif (copied)\n\t{\n\t\treturn \n\t}\n\n\tif (isLoading && copyClicked && !copied)\n\t{\n\t\treturn (\n\t\t\t\n\t\t);\n\t}\n\n\tif (isError)\n\t{\n\t\tconsole.log({result});\n\t\treturn (\n\t\t\t\n\t\t);\n\t}\n\n\treturn (\n\t\t\n\t);\n}\n\nexport default CopyBlueprintStringButton;\n","import axios from 'axios';\nimport {useContext} from 'react';\nimport {useQuery} from '@tanstack/react-query';\nimport UserContext from '../context/userContext';\n\nimport getHeaders from '../helpers/getHeaders';\n\nfunction useIsFavorite(blueprintKey)\n{\n\tconst {user} = useContext(UserContext);\n\tconst queryEnabled = user !== undefined && user !== null;\n\tconst uid = queryEnabled ? user.uid : undefined;\n\tconst queryKey = ['api/my/favorite/', blueprintKey, uid];\n\n\treturn useQuery(\n\t\tqueryKey,\n\t\t() => getIsFavorite(blueprintKey, user),\n\t\t{\n\t\t\tenabled : queryEnabled,\n\t\t\tstaleTime: 1000 * 60 * 60, // 60 minutes\n\t\t},\n\t);\n}\n\nasync function getIsFavorite(blueprintKey, user)\n{\n\tconst idToken = user === undefined ? undefined : await user.getIdToken();\n\n\tconst headers = getHeaders(idToken);\n\tconst response = await axios.get(`${process.env.REACT_APP_REST_URL}/api/my/favorite/${blueprintKey}`, headers);\n\treturn response.data;\n}\n\nexport default useIsFavorite;\n","import {faHeart as regularHeart} from '@fortawesome/free-regular-svg-icons';\nimport {faHeart} from '@fortawesome/free-solid-svg-icons';\nimport {FontAwesomeIcon} from '@fortawesome/react-fontawesome';\nimport {forbidExtraProps} from 'airbnb-prop-types';\n\nimport PropTypes from 'prop-types';\nimport React from 'react';\n\nfunction FavoriteIcon({isFavorite})\n{\n\tif (isFavorite)\n\t{\n\t\treturn ;\n\t}\n\n\treturn ;\n}\n\nFavoriteIcon.propTypes = forbidExtraProps({\n\tisFavorite: PropTypes.bool,\n});\n\nexport default FavoriteIcon;\n","import {useMutation, useQueryClient} from '@tanstack/react-query';\nimport {forbidExtraProps} from 'airbnb-prop-types';\nimport axios from 'axios';\n\nimport {getDatabase, ref, update} from 'firebase/database';\n\nimport PropTypes from 'prop-types';\nimport React, {useContext} from 'react';\nimport Button from 'react-bootstrap/Button';\n\nimport {app} from '../../base';\n\nimport UserContext from '../../context/userContext';\nimport useIsFavorite from '../../hooks/useIsFavorite';\n\nimport FavoriteIcon from './FavoriteIcon';\n\nasync function postIsFavorite(blueprintKey, isFavorite, user)\n{\n\tconst url = `${process.env.REACT_APP_REST_URL}/api/my/favorite/${blueprintKey}`;\n\tconst body = null;\n\tconst idToken = user === undefined ? undefined : await user.getIdToken();\n\tconst config = {\n\t\theaders: {\n\t\t\tAuthorization: `Bearer ${idToken}`,\n\t\t\t'content-type': 'application/json',\n\t\t},\n\t\tparams : {\n\t\t\tisFavorite,\n\t\t},\n\t};\n\tlet put = axios.put(url, body, config);\n\n\tconst {uid} = user;\n\n\tconst wasFavorite = !isFavorite;\n\n\tconsole.log('postIsFavorite', {blueprintKey, isFavorite, user, uid, wasFavorite});\n\n\tconst updates = {\n\t\t[`/blueprints/${blueprintKey}/favorites/${uid}`] : wasFavorite ? null : true,\n\t\t[`/users/${uid}/favorites/${blueprintKey}`] : wasFavorite ? null : true,\n\t};\n\n\tconst database = getDatabase(app);\n\n\tupdate(ref(database), updates);\n\n\treturn put;\n}\n\nfunction FavoriteButton({blueprintKey})\n{\n\tconst queryClient = useQueryClient();\n\tconst {user} = useContext(UserContext);\n\tconst queryEnabled = user !== undefined;\n\n\t// TODO: Switch to the other favorites hook\n\tconst {isSuccess, data: isFavorite} = useIsFavorite(blueprintKey);\n\n\tconst toggleFavoriteMutation = useMutation(\n\t\t() => postIsFavorite(blueprintKey, !isFavorite, user),\n\t\t{\n\t\t\tenabled : queryEnabled,\n\t\t\tonSuccess: () =>\n\t\t\t{\n\t\t\t\tqueryClient.invalidateQueries(['api/my/favorites/', user.uid]);\n\t\t\t\tqueryClient.invalidateQueries(['api/my/favorite/', blueprintKey, user.uid]);\n\t\t\t\tqueryClient.invalidateQueries(['/api/my/favoriteBlueprints/page', user.email]);\n\t\t\t\tqueryClient.invalidateQueries(['blueprintDetails', blueprintKey]);\n\t\t\t},\n\t\t});\n\n\tconst buttonEnabled = queryEnabled && isSuccess;\n\n\treturn (\n\t\t\n\t\t\t{\n\t\t\t\ttoggleFavoriteMutation.mutate({\n\t\t\t\t\tblueprintKey,\n\t\t\t\t\tisFavorite: !isFavorite,\n\t\t\t\t});\n\t\t\t}}\n\t\t>\n\t\t\t\n\t\t\t{' Favorite'}\n\t\t\n\t);\n}\n\nFavoriteButton.propTypes = forbidExtraProps({\n\tblueprintKey: PropTypes.string.isRequired,\n});\n\nexport default FavoriteButton;\n","import {forbidExtraProps} from 'airbnb-prop-types';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport Image from 'react-bootstrap/Image';\n\nimport buildImageUrl from '../../helpers/buildImageUrl';\nimport useBlueprint from '../../hooks/useBlueprint';\n\nImgurThumbnail.propTypes = forbidExtraProps({\n\tblueprintKey: PropTypes.string.isRequired,\n});\n\nfunction ImgurThumbnail({blueprintKey})\n{\n\tconst result = useBlueprint(blueprintKey);\n\tconst {imgurImage} = result.data.data;\n\n\tif (!imgurImage)\n\t{\n\t\treturn (\n\t\t\t
\n\t\t\t\t{'Error loading imgur image.'}\n\t\t\t
\n\t\t);\n\t}\n\n\tconst thumbnail = buildImageUrl(imgurImage.imgurId, imgurImage.imgurType, 'l');\n\treturn (\n\t\t\n\t\t\t\n\t\t\n\t);\n}\n\nexport default ImgurThumbnail;\n","import {forbidExtraProps} from 'airbnb-prop-types';\n\nimport isEmpty from 'lodash/isEmpty';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport Card from 'react-bootstrap/Card';\nimport Table from 'react-bootstrap/Table';\nimport NewIcon from '../NewIcon';\n\nNewItemHistogram.propTypes = forbidExtraProps({\n\ttitle: PropTypes.string.isRequired,\n\titems: PropTypes.arrayOf(PropTypes.shape({\n\t\tname : PropTypes.string.isRequired,\n\t\tcount: PropTypes.number.isRequired,\n\t\tmod : PropTypes.string.isRequired,\n\t})).isRequired,\n\ttype: PropTypes.string.isRequired\n});\n\nfunction ItemHistogramRow(item)\n{\n\treturn \n\t\t\n\t\t\t{\n\t\t\t\t\n\t\t\t}\n\t\t\n\t\t\n\t\t\t{item.count}\n\t\t\n\t\t\n\t\t\t{item.name}\n\t\t\n\t\t\n\t\t\t{item.mod}\n\t\t\n\t\n}\n\nfunction NewItemHistogram(props)\n{\n\tif (isEmpty(props.items))\n\t{\n\t\treturn <>;\n\t}\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t{props.title}\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\t{props.items.map(item => )}\n\t\t\t\t\n\t\t\t
\n\t\t
\n\t);\n}\n\nexport default NewItemHistogram;\n","import {useQuery} from '@tanstack/react-query';\nimport {forbidExtraProps} from 'airbnb-prop-types';\n\nimport axios from 'axios';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport Card from 'react-bootstrap/Card';\nimport NewItemHistogram from './NewItemHistogram';\n\nNewRequirementsHistogram.propTypes = forbidExtraProps({\n\tblueprintStringSha: PropTypes.string,\n});\n\nfunction NewRequirementsHistogram({blueprintStringSha})\n{\n\tconst queryKey = ['blueprintTable', blueprintStringSha];\n\n\tconst result = useQuery(\n\t\tqueryKey,\n\t\t() => axios.get(`${process.env.REACT_APP_REST_URL}/api/blueprintTableBySha/${blueprintStringSha}`),\n\t\t{\n\t\t\tenabled : blueprintStringSha !== undefined,\n\t\t\tretry : false,\n\t\t\tcacheTime : 'Infinity',\n\t\t\tstaleTime : 'Infinity',\n\t\t\trefetchOnMount : false,\n\t\t\trefetchOnWindowFocus: false,\n\t\t\trefetchOnReconnect : false,\n\t\t},\n\t);\n\tconst {isError, isSuccess, data, error} = result;\n\n\tif (isError)\n\t{\n\t\tconsole.log({result})\n\t\treturn (\n\t\t\t\n\t\t\t\t{'Entities'}\n\t\t\t\t{`Error loading data: ${error}`}\n\t\t\t\n\t\t);\n\t}\n\n\tif (!isSuccess)\n\t{\n\t\treturn <>;\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t\n\t\t\t\n\t\t\t{/*{upgradePlanner && }*/}\n\t\t\n\t);\n}\n\nexport default NewRequirementsHistogram;\n","import {forbidExtraProps} from 'airbnb-prop-types';\n\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport Button from 'react-bootstrap/Button';\nimport Card from 'react-bootstrap/Card';\n\nimport {useNavigate} from 'react-router-dom';\n\nimport {ArrayParam, useQueryParam, withDefault} from 'use-query-params';\n\nimport useBlueprint from '../../hooks/useBlueprint';\n\nTagLink.propTypes = forbidExtraProps({\n\tcategory: PropTypes.string.isRequired,\n\tname : PropTypes.string.isRequired,\n});\n\nfunction TagLink({category, name})\n{\n\tconst tagString = `${category}/${name}`;\n\n\tconst [, setTags] = useQueryParam('tags', withDefault(ArrayParam, []));\n\n\tconst navigate = useNavigate();\n\n\tconst handleClick = () =>\n\t{\n\t\tsetTags([tagString]);\n\t\tnavigate(`/blueprints?tags=${tagString}`);\n\t};\n\n\treturn (\n\t\t\n\n\t);\n}\n\nTagsPanel.propTypes = forbidExtraProps({\n\tblueprintKey: PropTypes.string.isRequired,\n});\n\nfunction TagsPanel({blueprintKey})\n{\n\tconst result = useBlueprint(blueprintKey);\n\n\tconst {tags} = result.data.data;\n\n\treturn tags && tags.length > 0 && \n\t\t\n\t\t\tTags\n\t\t\n\t\t\n\t\t\t

\n\t\t\t\t{tags.map(({tagCategory, tagName}) => (\n\t\t\t\t\t))\n\t\t\t\t}\n\t\t\t

\n\t\t
\n\t
;\n}\n\nexport default TagsPanel;\n","import {faEdit, faExclamationTriangle} from '@fortawesome/free-solid-svg-icons';\nimport { DiscussionEmbed } from 'disqus-react';\n\nimport {FontAwesomeIcon} from '@fortawesome/react-fontawesome';\n\nimport React, {useContext} from 'react';\nimport Button from 'react-bootstrap/Button';\nimport Card from 'react-bootstrap/Card';\nimport Col from 'react-bootstrap/Col';\nimport Container from 'react-bootstrap/Container';\nimport Row from 'react-bootstrap/Row';\nimport {useParams} from 'react-router-dom';\n\nimport UserContext from '../../context/userContext';\nimport useBlueprint from '../../hooks/useBlueprint';\nimport useIsModerator from '../../hooks/useIsModerator';\n\nimport GoogleAd from '../GoogleAd';\nimport BlueprintInfoPanel from './BlueprintInfoPanel';\nimport BlueprintMarkdown from './BlueprintMarkdown';\nimport BlueprintTitle from './BlueprintTitle';\nimport BlueprintTitles from './BlueprintTitles';\nimport CopyBlueprintStringButton from './CopyBlueprintButton';\nimport FavoriteButton from './FavoriteButton';\nimport ImgurThumbnail from './ImgurThumbnail';\nimport NewRequirementsHistogram from './NewRequirementsHistogram';\nimport Spinner from './Spinner';\nimport TagsPanel from './TagsPanel';\n\n/*\nfunction renderEditButton(handleTransitionToEdit)\n{\n\treturn \n\t\t\n\t\t{' Edit'}\n\t;\n}\n*/\n\nfunction getFactorioprintsUrl(id) {\n\treturn `https://factorioprints.com/view/${id}`;\n}\n\nfunction EfficientSingleBlueprint()\n{\n\tconst {blueprintId} = useParams();\n\tconst blueprintKey = blueprintId;\n\n\tconst result = useBlueprint(blueprintKey);\n\n\tconst {isSuccess, data, isLoading, isError} = result;\n\n\tconst {user} = useContext(UserContext);\n\tconst userId = user?.uid;\n\n\tconst ownedByCurrentUser = isSuccess && userId !== undefined && userId === data.data.author.authorId;\n\tconst blueprintStringSha = isSuccess ? data.data.blueprintString.sha : undefined;\n\n\tconst isModerator = useIsModerator();\n\n\tconst adBlocked = !(window.adsbygoogle && window.adsbygoogle.loaded);\n\tconsole.log('Ad blocked:', adBlocked);\n\n\t/*\n\tconst navigate = useNavigate();\n\n\tfunction handleTransitionToEdit()\n\t{\n\t\tnavigate(`/edit/${blueprintKey}`);\n\t}\n\t*/\n\n\tfunction renderEditLink()\n\t{\n\t\tconst url = `https://factorioprints.com/edit/${blueprintKey}`;\n\t\treturn \n\t\t\t\n\t\t\t{' Edit'}\n\t\t;\n\n\t}\n\n\tif (isLoading)\n\t{\n\t\treturn \n\t}\n\n\tif (isError)\n\t{\n\t\tconsole.log('Error loading blueprint details.', {result});\n\t\treturn (\n\t\t\t
\n\t\t\t\t

\n\t\t\t\t\t\n\t\t\t\t\t{'Error loading blueprint details.'}\n\t\t\t\t

\n\t\t\t
\n\t\t);\n\t}\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t{/*{(ownedByCurrentUser || isModerator) && renderEditButton(handleTransitionToEdit)}*/}\n\t\t\t\t\t{(ownedByCurrentUser || isModerator) && renderEditLink()}\n\t\t\t\t\t{!ownedByCurrentUser && }\n\t\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tDetails\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tBlueprint Titles\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t
\n\t);\n}\n\nexport default EfficientSingleBlueprint;\n","import LoadingIcon from '../LoadingIcon';\n\nexport default function Spinner()\n{\n\treturn
\n\t\t

\n\t\t\t\n\t\t\t{' Loading...'}\n\t\t

\n\t
;\n}\n","const entitiesWithIcons = {\n\t'blank' : true,\n\t'accumulator' : true,\n\t'advanced-circuit' : true,\n\t'advanced-electronics' : true,\n\t'advanced-electronics-2' : true,\n\t'advanced-material-processing' : true,\n\t'advanced-material-processing-2' : true,\n\t'advanced-oil-processing' : true,\n\t'alien-artifact-goo' : true,\n\t'arithmetic-combinator' : true,\n\t'artillery' : true,\n\t'artillery-shell' : true,\n\t'artillery-shell-range-1' : true,\n\t'artillery-shell-speed-1' : true,\n\t'artillery-targeting-remote' : true,\n\t'artillery-turret' : true,\n\t'artillery-wagon' : true,\n\t'assembling-machine-1' : true,\n\t'assembling-machine-2' : true,\n\t'assembling-machine-3' : true,\n\t'atomic-bomb' : true,\n\t'automated-rail-transportation' : true,\n\t'automation' : true,\n\t'automation-2' : true,\n\t'automation-3' : true,\n\t'automation-science-pack' : true,\n\t'automobilism' : true,\n\t'barrel-empty' : true,\n\t'barrel-empty-side-mask' : true,\n\t'barrel-empty-top-mask' : true,\n\t'barrel-fill' : true,\n\t'barrel-fill-side-mask' : true,\n\t'barrel-fill-top-mask' : true,\n\t'barrel-hoop-top-mask' : true,\n\t'barrel-side-mask' : true,\n\t'basic-oil-processing' : true,\n\t'battery' : true,\n\t'battery-equipment' : true,\n\t'battery-mk2-equipment' : true,\n\t'beacon' : true,\n\t'behemoth-biter' : true,\n\t'behemoth-spitter' : true,\n\t'belt-immunity-equipment' : true,\n\t'big-biter' : true,\n\t'big-biter-corpse' : true,\n\t'big-electric-pole' : true,\n\t'big-ship-wreck-1' : true,\n\t'big-ship-wreck-2' : true,\n\t'big-ship-wreck-3' : true,\n\t'big-ship-wreck-grass' : true,\n\t'big-spitter' : true,\n\t'big-worm' : true,\n\t'big-worm-corpse' : true,\n\t'biter-spawner' : true,\n\t'biter-spawner-corpse' : true,\n\t'blueprint' : true,\n\t'blueprint-book' : true,\n\t'boiler' : true,\n\t'braking-force-1' : true,\n\t'brown-asterisk' : true,\n\t'brown-cane-cluster' : true,\n\t'brown-cane-single' : true,\n\t'brown-carpet-grass' : true,\n\t'brown-coral-mini' : true,\n\t'brown-fluff' : true,\n\t'brown-fluff-dry' : true,\n\t'brown-hairy-grass' : true,\n\t'burner-inserter' : true,\n\t'burner-mining-drill' : true,\n\t'cannon-shell' : true,\n\t'car' : true,\n\t'cargo-wagon' : true,\n\t'centrifuge' : true,\n\t'chemical-plant' : true,\n\t'chemical-science-pack' : true,\n\t'circuit-network' : true,\n\t'cliff-explosives' : true,\n\t'cliff-icon' : true,\n\t'cluster-grenade' : true,\n\t'coal' : true,\n\t'coal-dark-background' : true,\n\t'coal-liquefaction' : true,\n\t'coin' : true,\n\t'combat-shotgun' : true,\n\t'computer' : true,\n\t'concrete' : true,\n\t'constant-combinator' : true,\n\t'construction-robot' : true,\n\t'construction-robotics' : true,\n\t'copper-cable' : true,\n\t'copper-ore' : true,\n\t'copper-plate' : true,\n\t'creeper' : true,\n\t'crude-oil' : true,\n\t'crude-oil-barrel' : true,\n\t'curved-rail' : true,\n\t'curved-rail-remnants' : true,\n\t'dead-dry-hairy-tree' : true,\n\t'dead-grey-trunk' : true,\n\t'dead-tree' : true,\n\t'decider-combinator' : true,\n\t'deconstruction-planner' : true,\n\t'defender' : true,\n\t'defender-capsule' : true,\n\t'destroyer' : true,\n\t'destroyer-capsule' : true,\n\t'diesel-locomotive' : true,\n\t'dirt' : true,\n\t'discharge-defense-equipment' : true,\n\t'discharge-defense-remote' : true,\n\t'distractor' : true,\n\t'distractor-capsule' : true,\n\t'dry-hairy-tree' : true,\n\t'dry-tree' : true,\n\t'effect-transmission' : true,\n\t'effectivity-module' : true,\n\t'effectivity-module-2' : true,\n\t'effectivity-module-3' : true,\n\t'electric-energy-accumulators' : true,\n\t'electric-energy-distribution-1' : true,\n\t'electric-energy-distribution-2' : true,\n\t'electric-engine' : true,\n\t'electric-engine-unit' : true,\n\t'electric-furnace' : true,\n\t'electric-mining-drill' : true,\n\t'electronic-circuit' : true,\n\t'electronics' : true,\n\t'empty-barrel' : true,\n\t'empty-crude-oil-barrel' : true,\n\t'empty-heavy-oil-barrel' : true,\n\t'empty-light-oil-barrel' : true,\n\t'empty-lubricant-barrel' : true,\n\t'empty-petroleum-gas-barrel' : true,\n\t'empty-sulfuric-acid-barrel' : true,\n\t'empty-water-barrel' : true,\n\t'energy-shield-equipment' : true,\n\t'energy-shield-mk2-equipment' : true,\n\t'energy-weapons-damage-1' : true,\n\t'engine' : true,\n\t'engine-unit' : true,\n\t'exoskeleton-equipment' : true,\n\t'explosive-cannon-shell' : true,\n\t'explosive-rocket' : true,\n\t'explosive-rocketry' : true,\n\t'explosive-uranium-cannon-shell' : true,\n\t'explosives' : true,\n\t'express-loader' : true,\n\t'express-splitter' : true,\n\t'express-transport-belt' : true,\n\t'express-underground-belt' : true,\n\t'fast-inserter' : true,\n\t'fast-loader' : true,\n\t'fast-splitter' : true,\n\t'fast-transport-belt' : true,\n\t'fast-underground-belt' : true,\n\t'fill-crude-oil-barrel' : true,\n\t'fill-heavy-oil-barrel' : true,\n\t'fill-light-oil-barrel' : true,\n\t'fill-lubricant-barrel' : true,\n\t'fill-petroleum-gas-barrel' : true,\n\t'fill-sulfuric-acid-barrel' : true,\n\t'fill-water-barrel' : true,\n\t'filter-inserter' : true,\n\t'firearm-magazine' : true,\n\t'fish' : true,\n\t'flamethrower' : true,\n\t'flamethrower-ammo' : true,\n\t'flamethrower-turret' : true,\n\t'flammables' : true,\n\t'fluid-handling' : true,\n\t'fluid-wagon' : true,\n\t'flying-robot-frame' : true,\n\t'follower-robot-count-1' : true,\n\t'fusion-reactor-equipment' : true,\n\t'garballo' : true,\n\t'garballo-mini-dry' : true,\n\t'gate' : true,\n\t'grass' : true,\n\t'green-asterisk' : true,\n\t'green-bush-mini' : true,\n\t'green-carpet-grass' : true,\n\t'green-coral' : true,\n\t'green-coral-mini' : true,\n\t'green-hairy-grass' : true,\n\t'green-pita' : true,\n\t'green-pita-mini' : true,\n\t'green-small-grass' : true,\n\t'green-wire' : true,\n\t'grenade' : true,\n\t'gun-turret' : true,\n\t'hazard-concrete' : true,\n\t'hazard-concrete-left' : true,\n\t'hazard-concrete-right' : true,\n\t'heat-boiler' : true,\n\t'heat-exchanger' : true,\n\t'heat-pipe' : true,\n\t'heavy-armor' : true,\n\t'heavy-oil' : true,\n\t'heavy-oil-barrel' : true,\n\t'heavy-oil-cracking' : true,\n\t'high-tech-science-pack' : true,\n\t'infinity-chest' : true,\n\t'inserter' : true,\n\t'inserter-capacity-bonus-1' : true,\n\t'iron-axe' : true,\n\t'iron-chest' : true,\n\t'iron-gear-wheel' : true,\n\t'iron-ore' : true,\n\t'iron-plate' : true,\n\t'iron-stick' : true,\n\t'kovarex-enrichment-process' : true,\n\t'lab' : true,\n\t'land-mine' : true,\n\t'landfill' : true,\n\t'laser' : true,\n\t'laser-shooting-speed-1' : true,\n\t'laser-turret' : true,\n\t'light-armor' : true,\n\t'light-oil' : true,\n\t'light-oil-barrel' : true,\n\t'light-oil-cracking' : true,\n\t'linked-belt' : true,\n\t'loader' : true,\n\t'locomotive' : true,\n\t'logistic-chest-active-provider' : true,\n\t'logistic-chest-buffer' : true,\n\t'logistic-chest-passive-provider' : true,\n\t'logistic-chest-requester' : true,\n\t'logistic-chest-storage' : true,\n\t'logistic-robot' : true,\n\t'logistic-robotics' : true,\n\t'logistic-science-pack' : true,\n\t'logistic-system' : true,\n\t'logistics' : true,\n\t'logistics-2' : true,\n\t'logistics-3' : true,\n\t'long-handed-inserter' : true,\n\t'low-density-structure' : true,\n\t'lubricant' : true,\n\t'lubricant-barrel' : true,\n\t'market' : true,\n\t'medium-biter' : true,\n\t'medium-biter-corpse' : true,\n\t'medium-electric-pole' : true,\n\t'medium-ship-wreck' : true,\n\t'medium-spitter' : true,\n\t'medium-worm' : true,\n\t'medium-worm-corpse' : true,\n\t'military' : true,\n\t'military-2' : true,\n\t'military-3' : true,\n\t'military-4' : true,\n\t'military-science-pack' : true,\n\t'mining-productivity-1' : true,\n\t'modular-armor' : true,\n\t'modules' : true,\n\t'night-vision-equipment' : true,\n\t'nuclear-fuel' : true,\n\t'nuclear-fuel-reprocessing' : true,\n\t'nuclear-power' : true,\n\t'nuclear-reactor' : true,\n\t'offshore-pump' : true,\n\t'oil-processing' : true,\n\t'oil-refinery' : true,\n\t'optics' : true,\n\t'orange-coral-mini' : true,\n\t'personal-laser-defense-equipment': true,\n\t'personal-roboport-equipment' : true,\n\t'personal-roboport-mk2-equipment' : true,\n\t'petroleum-gas' : true,\n\t'petroleum-gas-barrel' : true,\n\t'physical-projectile-damage-1' : true,\n\t'piercing-rounds-magazine' : true,\n\t'piercing-shotgun-shell' : true,\n\t'pipe' : true,\n\t'pipe-to-ground' : true,\n\t'pistol' : true,\n\t'plastic-bar' : true,\n\t'plastics' : true,\n\t'player' : true,\n\t'player-port' : true,\n\t'poison-capsule' : true,\n\t'power-armor' : true,\n\t'power-armor-mk2' : true,\n\t'power-switch' : true,\n\t'processing-unit' : true,\n\t'production-science-pack' : true,\n\t'productivity-module' : true,\n\t'productivity-module-2' : true,\n\t'productivity-module-3' : true,\n\t'programmable-speaker' : true,\n\t'pump' : true,\n\t'pumpjack' : true,\n\t'radar' : true,\n\t'rail' : true,\n\t'rail-chain-signal' : true,\n\t'rail-signal' : true,\n\t'rail-signals' : true,\n\t'railgun' : true,\n\t'railgun-ammo' : true,\n\t'railway' : true,\n\t'raw-fish' : true,\n\t'raw-wood' : true,\n\t'red-asterisk' : true,\n\t'red-desert-rock-big-icon' : true,\n\t'red-desert-rock-huge-icon' : true,\n\t'red-desert-rock-medium-icon' : true,\n\t'red-wire' : true,\n\t'refined-concrete' : true,\n\t'refined-flammables-1' : true,\n\t'refined-hazard-concrete' : true,\n\t'refined-hazard-concrete-left' : true,\n\t'refined-hazard-concrete-right' : true,\n\t'remnants' : true,\n\t'repair-pack' : true,\n\t'research-speed-1' : true,\n\t'roboport' : true,\n\t'robotics' : true,\n\t'rock-big-icon' : true,\n\t'rock-huge-icon' : true,\n\t'rocket' : true,\n\t'rocket-control-unit' : true,\n\t'rocket-fuel' : true,\n\t'rocket-launcher' : true,\n\t'rocket-part' : true,\n\t'rocket-silo' : true,\n\t'rocket-structure' : true,\n\t'rocketry' : true,\n\t'root-a' : true,\n\t'root-b' : true,\n\t'root-tree' : true,\n\t'satellite' : true,\n\t'science-pack-1' : true,\n\t'science-pack-2' : true,\n\t'science-pack-3' : true,\n\t'shape_square' : true,\n\t'shotgun' : true,\n\t'shotgun-shell' : true,\n\t'signal-0' : true,\n\t'signal-1' : true,\n\t'signal-2' : true,\n\t'signal-3' : true,\n\t'signal-4' : true,\n\t'signal-5' : true,\n\t'signal-6' : true,\n\t'signal-7' : true,\n\t'signal-8' : true,\n\t'signal-9' : true,\n\t'signal-A' : true,\n\t'signal-anything' : true,\n\t'signal-B' : true,\n\t'signal-black' : true,\n\t'signal-blue' : true,\n\t'signal-C' : true,\n\t'signal-cyan' : true,\n\t'signal-D' : true,\n\t'signal-E' : true,\n\t'signal-each' : true,\n\t'signal-everything' : true,\n\t'signal-F' : true,\n\t'signal-G' : true,\n\t'signal-green' : true,\n\t'signal-grey' : true,\n\t'signal-H' : true,\n\t'signal-I' : true,\n\t'signal-J' : true,\n\t'signal-K' : true,\n\t'signal-L' : true,\n\t'signal-M' : true,\n\t'signal-N' : true,\n\t'signal-O' : true,\n\t'signal-P' : true,\n\t'signal-pink' : true,\n\t'signal-Q' : true,\n\t'signal-R' : true,\n\t'signal-red' : true,\n\t'signal-S' : true,\n\t'signal-T' : true,\n\t'signal-U' : true,\n\t'signal-V' : true,\n\t'signal-W' : true,\n\t'signal-white' : true,\n\t'signal-X' : true,\n\t'signal-Y' : true,\n\t'signal-yellow' : true,\n\t'signal-Z' : true,\n\t'signal_0' : true,\n\t'signal_1' : true,\n\t'signal_2' : true,\n\t'signal_3' : true,\n\t'signal_4' : true,\n\t'signal_5' : true,\n\t'signal_6' : true,\n\t'signal_7' : true,\n\t'signal_8' : true,\n\t'signal_9' : true,\n\t'signal_A' : true,\n\t'signal_anything' : true,\n\t'signal_B' : true,\n\t'signal_black' : true,\n\t'signal_blue' : true,\n\t'signal_C' : true,\n\t'signal_cyan' : true,\n\t'signal_D' : true,\n\t'signal_E' : true,\n\t'signal_each' : true,\n\t'signal_everything' : true,\n\t'signal_F' : true,\n\t'signal_G' : true,\n\t'signal_green' : true,\n\t'signal_grey' : true,\n\t'signal_H' : true,\n\t'signal_I' : true,\n\t'signal_J' : true,\n\t'signal_K' : true,\n\t'signal_L' : true,\n\t'signal_M' : true,\n\t'signal_N' : true,\n\t'signal_O' : true,\n\t'signal_P' : true,\n\t'signal_pink' : true,\n\t'signal_Q' : true,\n\t'signal_R' : true,\n\t'signal_red' : true,\n\t'signal_S' : true,\n\t'signal_T' : true,\n\t'signal_U' : true,\n\t'signal_V' : true,\n\t'signal_W' : true,\n\t'signal_white' : true,\n\t'signal_X' : true,\n\t'signal_Y' : true,\n\t'signal_yellow' : true,\n\t'signal_Z' : true,\n\t'slowdown-capsule' : true,\n\t'small-biter' : true,\n\t'small-biter-corpse' : true,\n\t'small-electric-pole' : true,\n\t'small-lamp' : true,\n\t'small-plane' : true,\n\t'small-scorchmark' : true,\n\t'small-ship-wreck' : true,\n\t'small-ship-wreck-grass' : true,\n\t'small-spitter' : true,\n\t'small-stone-rock' : true,\n\t'small-worm' : true,\n\t'small-worm-corpse' : true,\n\t'solar-energy' : true,\n\t'solar-panel' : true,\n\t'solar-panel-equipment' : true,\n\t'solid-fuel' : true,\n\t'solid-fuel-from-heavy-oil' : true,\n\t'solid-fuel-from-light-oil' : true,\n\t'solid-fuel-from-petroleum-gas' : true,\n\t'space-module-wreck' : true,\n\t'space-science-pack' : true,\n\t'speed-module' : true,\n\t'speed-module-2' : true,\n\t'speed-module-3' : true,\n\t'spidertron' : true,\n\t'spidertron-remote' : true,\n\t'splitter' : true,\n\t'stack-filter-inserter' : true,\n\t'stack-inserter' : true,\n\t'steam' : true,\n\t'steam-engine' : true,\n\t'steam-turbine' : true,\n\t'steel-axe' : true,\n\t'steel-chest' : true,\n\t'steel-furnace' : true,\n\t'steel-plate' : true,\n\t'steel-processing' : true,\n\t'stone' : true,\n\t'stone-brick' : true,\n\t'stone-furnace' : true,\n\t'stone-path' : true,\n\t'stone-rock' : true,\n\t'stone-wall' : true,\n\t'storage-tank' : true,\n\t'straight-rail' : true,\n\t'straight-rail-remnants' : true,\n\t'stronger-explosives-1' : true,\n\t'submachine-gun' : true,\n\t'substation' : true,\n\t'sulfur' : true,\n\t'sulfur-processing' : true,\n\t'sulfuric-acid' : true,\n\t'sulfuric-acid-barrel' : true,\n\t'tank' : true,\n\t'tank-cannon' : true,\n\t'toolbelt' : true,\n\t'train-stop' : true,\n\t'transport-belt' : true,\n\t'tree-01' : true,\n\t'tree-01-stump' : true,\n\t'tree-02' : true,\n\t'tree-02-stump' : true,\n\t'tree-03' : true,\n\t'tree-03-stump' : true,\n\t'tree-04' : true,\n\t'tree-04-stump' : true,\n\t'tree-05' : true,\n\t'tree-05-stump' : true,\n\t'tree-06' : true,\n\t'tree-06-stump' : true,\n\t'tree-07' : true,\n\t'tree-07-stump' : true,\n\t'tree-08' : true,\n\t'tree-08-stump' : true,\n\t'tree-09' : true,\n\t'tree-09-stump' : true,\n\t'underground-belt' : true,\n\t'upgrade-planner' : true,\n\t'uranium-235' : true,\n\t'uranium-238' : true,\n\t'uranium-ammo' : true,\n\t'uranium-cannon-shell' : true,\n\t'uranium-fuel-cell' : true,\n\t'uranium-ore' : true,\n\t'uranium-processing' : true,\n\t'uranium-rounds-magazine' : true,\n\t'used-up-uranium-fuel-cell' : true,\n\t'utility-science-pack' : true,\n\t'wall-remnants' : true,\n\t'water' : true,\n\t'water-barrel' : true,\n\t'weapon-shooting-speed-1' : true,\n\t'wood' : true,\n\t'wooden-chest' : true,\n\t'worker-robots-speed-1' : true,\n\t'worker-robots-storage-1' : true,\n};\n\nexport default entitiesWithIcons;\n","function buildImageUrl(imgurId: string, imgurType: string, suffix: string): string\n{\n\tconst typeParts: string[] = imgurType.split('/');\n\treturn `http://i.imgur.com/${imgurId}${suffix}.${typeParts[1]}`;\n}\n\nexport default buildImageUrl;\n","function getHeaders(idToken: string)\n{\n\treturn {\n\t\theaders: {\n\t\t\tAuthorization: `Bearer ${idToken}`,\n\t\t},\n\t};\n}\n\nexport default getHeaders;\n","import axios from 'axios';\nimport {useQuery} from '@tanstack/react-query';\n\nfunction useBlueprint(blueprintKey: string | undefined)\n{\n\tconst queryKey = ['blueprintDetails', blueprintKey];\n\tconst url: string = `${process.env.REACT_APP_REST_URL}/api/blueprintDetails/${blueprintKey}`;\n\tconst options = {\n\t\tenabled: blueprintKey !== undefined,\n\t};\n\treturn useQuery(queryKey, () => axios.get(url), options);\n}\n\nexport default useBlueprint;\n","import axios from 'axios';\nimport {useQuery} from '@tanstack/react-query';\n\nfunction useBlueprintStringSha(blueprintStringSha)\n{\n\tconst queryKey = ['blueprintStringSha', blueprintStringSha];\n\tconst url = `${process.env.REACT_APP_REST_URL}/api/blueprintStringBySha/${blueprintStringSha}`;\n\tconst options = {\n\t\tenabled : blueprintStringSha !== undefined,\n\t\tcacheTime: 'Infinity',\n\t\tstaleTime: 'Infinity',\n\t\trefetchOnMount: false,\n\t\trefetchOnWindowFocus: false,\n\t\trefetchOnReconnect: false,\n\t};\n\treturn useQuery(queryKey, () => axios.get(url), options);\n}\n\nexport default useBlueprintStringSha;\n","const moderators: string[] = ['H3QlaVpvadfVuTpGGxs7016oR2K3', 'k9zbSt8hH4W5IKR5UnaKrPhEAVw2'];\nexport default moderators;\n","import {useContext} from 'react';\nimport UserContext from '../context/userContext';\n\nimport moderators from '../helpers/moderators';\n\nfunction useIsModerator()\n{\n\tconst {user} = useContext(UserContext);\n\tif (user === undefined || user === null)\n\t{\n\t\treturn false;\n\t}\n\treturn moderators.includes(user.uid);\n}\n\nexport default useIsModerator;\n"],"names":["props","isLoading","icon","faCog","size","fixedWidth","spin","ReactQueryStatus","fetchStatus","status","faPause","style","className","faWifi","faBan","defaultProps","async","src","crossOrigin","display","getVersion","data","blueprint_book","getBlueprintVersion","blueprint","deconstruction_planner","upgrade_planner","Error","JSON","stringify","versionString","blueprintStringSha","queryKey","result","useQuery","axios","get","process","enabled","undefined","retry","cacheTime","staleTime","refetchOnMount","refetchOnWindowFocus","refetchOnReconnect","isSuccess","dayjs","relativeTime","blueprintKey","ownedByCurrentUser","useBlueprint","displayName","author","voteSummary","version","createdOn","systemFrom","authorId","createdBy","userId","numberOfUpvotes","queryClient","useQueryClient","console","log","clear","Card","Header","Table","bordered","hover","faUser","to","faCalendar","title","format","fromNow","faClock","faHeart","faCodeBranch","renderer","marked","Renderer","table","header","body","image","href","text","setOptions","gfm","tables","breaks","pedantic","sanitize","smartLists","smartypants","descriptionMarkdown","renderedMarkdown","dangerouslySetInnerHTML","__html","Helmet","faLink","item","hasIcon","entitiesWithIcons","iconClass","iconSrc","alt","height","width","iconName","iconType","getBlueprintBook","positionArray","firstRow","icons","labelHtml","Array","keys","map","index","getItemIconIfExists","getFirstRow","blueprints","active_index","ListGroup","variant","each","Item","active","BlueprintContentHeader","getFbeButton","length","join","caption","Button","type","target","getBlueprint","signal","name","isError","error","LoadingIcon","React","copyClicked","setCopyClicked","copied","setCopied","useBlueprintStringSha","useEffect","blueprintString","copy","setTimeout","disabled","faCheck","faClipboard","onClick","getIsFavorite","user","getIdToken","idToken","headers","getHeaders","response","useContext","UserContext","queryEnabled","uid","isFavorite","regularHeart","postIsFavorite","url","config","Authorization","params","put","wasFavorite","updates","database","getDatabase","app","update","ref","useIsFavorite","toggleFavoriteMutation","useMutation","onSuccess","invalidateQueries","email","buttonEnabled","mutate","imgurImage","thumbnail","buildImageUrl","imgurId","imgurType","rel","Image","referrerPolicy","ItemHistogramRow","count","mod","isEmpty","items","span","key","Body","entities","recipes","TagLink","category","tagString","useQueryParam","withDefault","ArrayParam","setTags","navigate","useNavigate","tags","tagCategory","tagName","id","useParams","blueprintId","sha","isModerator","useIsModerator","adBlocked","window","adsbygoogle","loaded","Spinner","faExclamationTriangle","Container","Row","Col","md","faEdit","renderEditLink","shortname","identifier","suffix","typeParts","split","options","moderators","includes"],"sourceRoot":""}