-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcomponent---src-pages-index-tsx-ccbfdc4bcf0c7fa3d680.js.map
1 lines (1 loc) Β· 46.4 KB
/
component---src-pages-index-tsx-ccbfdc4bcf0c7fa3d680.js.map
1
{"version":3,"file":"component---src-pages-index-tsx-ccbfdc4bcf0c7fa3d680.js","mappings":"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","sources":["webpack://gatsby-starter-default/./src/assets/arrowDown.tsx","webpack://gatsby-starter-default/./src/assets/arrowUp.tsx","webpack://gatsby-starter-default/./src/components/main/categoryList.tsx","webpack://gatsby-starter-default/./src/components/main/postItem.tsx","webpack://gatsby-starter-default/./src/hooks/useInfiniteScroll.tsx","webpack://gatsby-starter-default/./src/components/main/postList.tsx","webpack://gatsby-starter-default/./node_modules/decode-uri-component/index.js","webpack://gatsby-starter-default/./node_modules/split-on-first/index.js","webpack://gatsby-starter-default/./node_modules/filter-obj/index.js","webpack://gatsby-starter-default/./node_modules/query-string/base.js","webpack://gatsby-starter-default/./node_modules/query-string/index.js","webpack://gatsby-starter-default/./src/pages/index.tsx"],"sourcesContent":["import React, { FunctionComponent } from 'react'\r\nimport { SVGProps } from 'customTypes'\r\n\r\nconst ArrowDownSVG: FunctionComponent<SVGProps> = function ({ customStyle }) {\r\n return (\r\n <svg version=\"1.1\" viewBox=\"0 0 512 512\" className={customStyle}>\r\n <polygon points=\"396.6,160 416,180.7 256,352 96,180.7 115.3,160 256,310.5 \" />\r\n </svg>\r\n )\r\n}\r\n\r\nexport default ArrowDownSVG\r\n","import React, { FunctionComponent } from 'react'\r\nimport { SVGProps } from 'customTypes'\r\n\r\nconst ArrowUpSVG: FunctionComponent<SVGProps> = function ({ customStyle }) {\r\n return (\r\n <svg className={customStyle} version=\"1.1\" viewBox=\"0 0 512 512\">\r\n <polygon points=\"396.6,352 416,331.3 256,160 96,331.3 115.3,352 256,201.5 \" />\r\n </svg>\r\n )\r\n}\r\n\r\nexport default ArrowUpSVG\r\n","import React, { FunctionComponent, ReactNode, useState } from 'react'\r\nimport styled from '@emotion/styled'\r\nimport { Link } from 'gatsby'\r\nimport ArrowDownSVG from '../../assets/arrowDown'\r\nimport ArrowUpSVG from '../../assets/arrowUp'\r\n\r\nexport type CategoryListProps = {\r\n selectedCategory: string\r\n categoryList: {\r\n [key: string]: number\r\n }\r\n}\r\n\r\ntype CategoryItemProps = {\r\n active: boolean\r\n}\r\n\r\ntype GatsbyLinkProps = {\r\n children: ReactNode\r\n className?: string\r\n to: string\r\n onClick: () => void\r\n} & CategoryItemProps\r\n\r\nconst CategoryContainer = styled.div`\r\n position: relative;\r\n`\r\n\r\nconst CategoryButtonWrapper = styled.div`\r\n border-bottom: 1px solid var(--color-gray);\r\n`\r\n\r\nconst CategoryButton = styled.button`\r\n width: 100%;\r\n background: transparent;\r\n border: 0;\r\n padding: 16px 0;\r\n`\r\n\r\nconst CategoryListWrapper = styled.ul`\r\n width: 100%;\r\n position: absolute;\r\n background: var(--bg-default);\r\n padding: 45px 0;\r\n`\r\n\r\nconst CategoryItem = styled.li`\r\n padding: 5px 0;\r\n\r\n &::after {\r\n content: '';\r\n display: inline-block;\r\n height: 18px;\r\n transform: rotate(20deg) translateY(2px);\r\n border-right: 1px solid var(--color-gray);\r\n margin: 0 12px;\r\n }\r\n\r\n &:last-of-type {\r\n &::after {\r\n border: 0;\r\n }\r\n }\r\n`\r\n\r\nconst CategoryItemLink = styled(({ active, ...props }: GatsbyLinkProps) => (\r\n <Link {...props} />\r\n))<CategoryItemProps>`\r\n font: ${({ active }) => (active ? 'italic' : 'normal')} var(--font-large)\r\n var(--font-serif);\r\n color: ${({ active }) => (active ? 'inherit' : 'var(--color-graytext)')};\r\n\r\n &:hover {\r\n color: inherit;\r\n }\r\n`\r\n\r\nconst PostCount = styled.sup`\r\n margin-left: 4px;\r\n color: rgba(0, 0, 0, 0.5);\r\n`\r\n\r\nconst CategoryList: FunctionComponent<CategoryListProps> = function ({\r\n selectedCategory,\r\n categoryList,\r\n}) {\r\n const [isCategories, setCategories] = useState(false)\r\n\r\n return (\r\n <CategoryContainer>\r\n <CategoryButtonWrapper>\r\n <CategoryButton\r\n type=\"button\"\r\n className=\"flex space items-center\"\r\n onClick={() => {\r\n setCategories(e => !e)\r\n }}\r\n >\r\n {selectedCategory}\r\n {isCategories ? (\r\n <ArrowUpSVG customStyle=\"fill-black size-s\" />\r\n ) : (\r\n <ArrowDownSVG customStyle=\"fill-black size-s\" />\r\n )}\r\n </CategoryButton>\r\n </CategoryButtonWrapper>\r\n {isCategories && (\r\n <CategoryListWrapper className=\"flex wrap\">\r\n {Object.entries(categoryList).map(([name, count]) => (\r\n <CategoryItem key={name}>\r\n <CategoryItemLink\r\n to={`/?category=${name}`}\r\n active={name === selectedCategory}\r\n key={name}\r\n onClick={() => {\r\n setCategories(e => !e)\r\n }}\r\n >\r\n {name}\r\n <PostCount>({count})</PostCount>\r\n </CategoryItemLink>\r\n </CategoryItem>\r\n ))}\r\n </CategoryListWrapper>\r\n )}\r\n </CategoryContainer>\r\n )\r\n}\r\n\r\nexport default CategoryList\r\n","import React, { FunctionComponent } from 'react'\r\nimport styled from '@emotion/styled'\r\nimport { Link } from 'gatsby'\r\nimport { PostFrontmatterType } from 'types/postItem.types'\r\nimport TagSVG from '../../assets/tag'\r\nimport ClockSVG from '../../assets/clock'\r\n\r\ntype PostItemProps = PostFrontmatterType & { link: string }\r\n\r\nconst PostItemWrapper = styled.article`\r\n & > hr {\r\n margin: 32px auto;\r\n }\r\n\r\n &:first-of-type {\r\n & > hr {\r\n display: none;\r\n }\r\n }\r\n`\r\n\r\nconst Title = styled.h2`\r\n font-size: var(--font-large);\r\n font-weight: normal;\r\n margin-top: 12px;\r\n margin-bottom: 8px;\r\n -webkit-line-clamp: 1;\r\n`\r\n\r\nconst Date = styled.p`\r\n font-size: var(--font-small);\r\n color: var(--color-graytext);\r\n`\r\n\r\nconst CategoryWrapper = styled.div`\r\n font-size: var(--font-small);\r\n color: var(--color-graytext);\r\n margin-top: 30px;\r\n column-gap: 8px;\r\n\r\n svg {\r\n margin-right: 4px;\r\n }\r\n\r\n & > p {\r\n padding: 2px 0;\r\n }\r\n`\r\n\r\nconst CategoryItem = styled.span`\r\n &::after {\r\n content: ',';\r\n margin-right: 4px;\r\n }\r\n\r\n &:last-of-type {\r\n margin-right: 0;\r\n\r\n &::after {\r\n content: none;\r\n }\r\n }\r\n`\r\n\r\nconst Summary = styled.p`\r\n color: var(--color-graytext);\r\n -webkit-line-clamp: 2;\r\n`\r\n\r\nconst PostItem: FunctionComponent<PostItemProps> = function ({\r\n title,\r\n date,\r\n update,\r\n categories,\r\n summary,\r\n link,\r\n}) {\r\n return (\r\n <PostItemWrapper>\r\n <hr />\r\n <Link to={link}>\r\n <Date>{date}</Date>\r\n <Title className=\"text-overflow\">{title}</Title>\r\n <Summary className=\"text-overflow\">{summary}</Summary>\r\n <CategoryWrapper className=\"flex items-center wrap\">\r\n <p className=\"flex items-center wrap\">\r\n <TagSVG customStyle=\"fill-gray stroke-gray size-s\" />\r\n {categories.map(item => (\r\n <CategoryItem key={item}>{item}</CategoryItem>\r\n ))}\r\n </p>\r\n {date !== update && (\r\n <p className=\"flex items-center\">\r\n <ClockSVG customStyle=\"fill-gray size-s\" />\r\n Last Updated {update}\r\n </p>\r\n )}\r\n </CategoryWrapper>\r\n </Link>\r\n </PostItemWrapper>\r\n )\r\n}\r\n\r\nexport default PostItem\r\n","import { MutableRefObject, useState, useEffect, useRef, useMemo } from 'react'\r\nimport { PostListItemType } from 'types/postItem.types'\r\n\r\nexport type useInfiniteScrollType = {\r\n containerRef: MutableRefObject<HTMLDivElement | null>\r\n postList: PostListItemType[]\r\n}\r\n\r\nconst NUMBER_OF_ITEMS_PER_PAGE = 10\r\n\r\nconst useInfiniteScroll = function (\r\n selectedCategory: string,\r\n posts: PostListItemType[],\r\n): useInfiniteScrollType {\r\n const containerRef: MutableRefObject<HTMLDivElement | null> =\r\n useRef<HTMLDivElement>(null)\r\n const observer: MutableRefObject<IntersectionObserver | null> =\r\n useRef<IntersectionObserver | null>(null)\r\n const [count, setCount] = useState<number>(1)\r\n\r\n const postListByCategory = useMemo<PostListItemType[]>(\r\n () =>\r\n posts.filter(\r\n ({\r\n node: {\r\n frontmatter: { categories },\r\n },\r\n }: PostListItemType) =>\r\n selectedCategory !== 'All'\r\n ? categories.includes(selectedCategory)\r\n : true,\r\n ),\r\n [selectedCategory],\r\n )\r\n\r\n useEffect(() => {\r\n observer.current = new IntersectionObserver((entries, observer) => {\r\n if (!entries[0].isIntersecting) return\r\n\r\n setCount(value => value + 1)\r\n observer.unobserve(entries[0].target)\r\n })\r\n }, [])\r\n\r\n useEffect(() => setCount(1), [selectedCategory])\r\n\r\n useEffect(() => {\r\n if (\r\n NUMBER_OF_ITEMS_PER_PAGE * count >= postListByCategory.length ||\r\n containerRef.current === null ||\r\n containerRef.current.children.length === 0 ||\r\n observer.current === null\r\n ) {\r\n return\r\n }\r\n\r\n if (observer && observer.current) {\r\n observer.current.observe(\r\n containerRef.current.children[containerRef.current.children.length - 1],\r\n )\r\n }\r\n }, [count, selectedCategory, observer])\r\n\r\n return {\r\n containerRef,\r\n postList: postListByCategory.slice(0, count * NUMBER_OF_ITEMS_PER_PAGE),\r\n }\r\n}\r\n\r\nexport default useInfiniteScroll\r\n","import React, { FunctionComponent } from 'react'\r\nimport styled from '@emotion/styled'\r\nimport PostItem from 'components/main/postItem'\r\nimport { PostListItemType } from 'types/postItem.types'\r\nimport useInfiniteScroll, {\r\n useInfiniteScrollType,\r\n} from 'hooks/useInfiniteScroll'\r\n\r\ntype PostListProps = {\r\n selectedCategory: string\r\n posts: PostListItemType[]\r\n}\r\n\r\nconst PostListWrapper = styled.div`\r\n padding-top: 50px;\r\n`\r\n\r\nconst PostList: FunctionComponent<PostListProps> = function ({\r\n selectedCategory,\r\n posts,\r\n}) {\r\n const { containerRef, postList }: useInfiniteScrollType = useInfiniteScroll(\r\n selectedCategory,\r\n posts,\r\n )\r\n\r\n return (\r\n <PostListWrapper ref={containerRef}>\r\n {postList.map(\r\n ({\r\n node: {\r\n id,\r\n fields: { slug },\r\n frontmatter,\r\n },\r\n }: PostListItemType) => (\r\n <PostItem {...frontmatter} link={slug} key={id} />\r\n ),\r\n )}\r\n </PostListWrapper>\r\n )\r\n}\r\n\r\nexport default PostList\r\n","const token = '%[a-f0-9]{2}';\nconst singleMatcher = new RegExp('(' + token + ')|([^%]+?)', 'gi');\nconst multiMatcher = new RegExp('(' + token + ')+', 'gi');\n\nfunction decodeComponents(components, split) {\n\ttry {\n\t\t// Try to decode the entire string first\n\t\treturn [decodeURIComponent(components.join(''))];\n\t} catch {\n\t\t// Do nothing\n\t}\n\n\tif (components.length === 1) {\n\t\treturn components;\n\t}\n\n\tsplit = split || 1;\n\n\t// Split the array in 2 parts\n\tconst left = components.slice(0, split);\n\tconst right = components.slice(split);\n\n\treturn Array.prototype.concat.call([], decodeComponents(left), decodeComponents(right));\n}\n\nfunction decode(input) {\n\ttry {\n\t\treturn decodeURIComponent(input);\n\t} catch {\n\t\tlet tokens = input.match(singleMatcher) || [];\n\n\t\tfor (let i = 1; i < tokens.length; i++) {\n\t\t\tinput = decodeComponents(tokens, i).join('');\n\n\t\t\ttokens = input.match(singleMatcher) || [];\n\t\t}\n\n\t\treturn input;\n\t}\n}\n\nfunction customDecodeURIComponent(input) {\n\t// Keep track of all the replacements and prefill the map with the `BOM`\n\tconst replaceMap = {\n\t\t'%FE%FF': '\\uFFFD\\uFFFD',\n\t\t'%FF%FE': '\\uFFFD\\uFFFD',\n\t};\n\n\tlet match = multiMatcher.exec(input);\n\twhile (match) {\n\t\ttry {\n\t\t\t// Decode as big chunks as possible\n\t\t\treplaceMap[match[0]] = decodeURIComponent(match[0]);\n\t\t} catch {\n\t\t\tconst result = decode(match[0]);\n\n\t\t\tif (result !== match[0]) {\n\t\t\t\treplaceMap[match[0]] = result;\n\t\t\t}\n\t\t}\n\n\t\tmatch = multiMatcher.exec(input);\n\t}\n\n\t// Add `%C2` at the end of the map to make sure it does not replace the combinator before everything else\n\treplaceMap['%C2'] = '\\uFFFD';\n\n\tconst entries = Object.keys(replaceMap);\n\n\tfor (const key of entries) {\n\t\t// Replace all decoded components\n\t\tinput = input.replace(new RegExp(key, 'g'), replaceMap[key]);\n\t}\n\n\treturn input;\n}\n\nexport default function decodeUriComponent(encodedURI) {\n\tif (typeof encodedURI !== 'string') {\n\t\tthrow new TypeError('Expected `encodedURI` to be of type `string`, got `' + typeof encodedURI + '`');\n\t}\n\n\ttry {\n\t\t// Try the built in decoder first\n\t\treturn decodeURIComponent(encodedURI);\n\t} catch {\n\t\t// Fallback to a more advanced decoder\n\t\treturn customDecodeURIComponent(encodedURI);\n\t}\n}\n","export default function splitOnFirst(string, separator) {\n\tif (!(typeof string === 'string' && typeof separator === 'string')) {\n\t\tthrow new TypeError('Expected the arguments to be of type `string`');\n\t}\n\n\tif (string === '' || separator === '') {\n\t\treturn [];\n\t}\n\n\tconst separatorIndex = string.indexOf(separator);\n\n\tif (separatorIndex === -1) {\n\t\treturn [];\n\t}\n\n\treturn [\n\t\tstring.slice(0, separatorIndex),\n\t\tstring.slice(separatorIndex + separator.length)\n\t];\n}\n","export function includeKeys(object, predicate) {\n\tconst result = {};\n\n\tif (Array.isArray(predicate)) {\n\t\tfor (const key of predicate) {\n\t\t\tconst descriptor = Object.getOwnPropertyDescriptor(object, key);\n\t\t\tif (descriptor?.enumerable) {\n\t\t\t\tObject.defineProperty(result, key, descriptor);\n\t\t\t}\n\t\t}\n\t} else {\n\t\t// `Reflect.ownKeys()` is required to retrieve symbol properties\n\t\tfor (const key of Reflect.ownKeys(object)) {\n\t\t\tconst descriptor = Object.getOwnPropertyDescriptor(object, key);\n\t\t\tif (descriptor.enumerable) {\n\t\t\t\tconst value = object[key];\n\t\t\t\tif (predicate(key, value, object)) {\n\t\t\t\t\tObject.defineProperty(result, key, descriptor);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn result;\n}\n\nexport function excludeKeys(object, predicate) {\n\tif (Array.isArray(predicate)) {\n\t\tconst set = new Set(predicate);\n\t\treturn includeKeys(object, key => !set.has(key));\n\t}\n\n\treturn includeKeys(object, (key, value, object) => !predicate(key, value, object));\n}\n","import decodeComponent from 'decode-uri-component';\nimport splitOnFirst from 'split-on-first';\nimport {includeKeys} from 'filter-obj';\n\nconst isNullOrUndefined = value => value === null || value === undefined;\n\n// eslint-disable-next-line unicorn/prefer-code-point\nconst strictUriEncode = string => encodeURIComponent(string).replace(/[!'()*]/g, x => `%${x.charCodeAt(0).toString(16).toUpperCase()}`);\n\nconst encodeFragmentIdentifier = Symbol('encodeFragmentIdentifier');\n\nfunction encoderForArrayFormat(options) {\n\tswitch (options.arrayFormat) {\n\t\tcase 'index': {\n\t\t\treturn key => (result, value) => {\n\t\t\t\tconst index = result.length;\n\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined\n\t\t\t\t\t|| (options.skipNull && value === null)\n\t\t\t\t\t|| (options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [\n\t\t\t\t\t\t...result, [encode(key, options), '[', index, ']'].join(''),\n\t\t\t\t\t];\n\t\t\t\t}\n\n\t\t\t\treturn [\n\t\t\t\t\t...result,\n\t\t\t\t\t[encode(key, options), '[', encode(index, options), ']=', encode(value, options)].join(''),\n\t\t\t\t];\n\t\t\t};\n\t\t}\n\n\t\tcase 'bracket': {\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined\n\t\t\t\t\t|| (options.skipNull && value === null)\n\t\t\t\t\t|| (options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [\n\t\t\t\t\t\t...result,\n\t\t\t\t\t\t[encode(key, options), '[]'].join(''),\n\t\t\t\t\t];\n\t\t\t\t}\n\n\t\t\t\treturn [\n\t\t\t\t\t...result,\n\t\t\t\t\t[encode(key, options), '[]=', encode(value, options)].join(''),\n\t\t\t\t];\n\t\t\t};\n\t\t}\n\n\t\tcase 'colon-list-separator': {\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined\n\t\t\t\t\t|| (options.skipNull && value === null)\n\t\t\t\t\t|| (options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [\n\t\t\t\t\t\t...result,\n\t\t\t\t\t\t[encode(key, options), ':list='].join(''),\n\t\t\t\t\t];\n\t\t\t\t}\n\n\t\t\t\treturn [\n\t\t\t\t\t...result,\n\t\t\t\t\t[encode(key, options), ':list=', encode(value, options)].join(''),\n\t\t\t\t];\n\t\t\t};\n\t\t}\n\n\t\tcase 'comma':\n\t\tcase 'separator':\n\t\tcase 'bracket-separator': {\n\t\t\tconst keyValueSep = options.arrayFormat === 'bracket-separator'\n\t\t\t\t? '[]='\n\t\t\t\t: '=';\n\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined\n\t\t\t\t\t|| (options.skipNull && value === null)\n\t\t\t\t\t|| (options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\t// Translate null to an empty string so that it doesn't serialize as 'null'\n\t\t\t\tvalue = value === null ? '' : value;\n\n\t\t\t\tif (result.length === 0) {\n\t\t\t\t\treturn [[encode(key, options), keyValueSep, encode(value, options)].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [[result, encode(value, options)].join(options.arrayFormatSeparator)];\n\t\t\t};\n\t\t}\n\n\t\tdefault: {\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined\n\t\t\t\t\t|| (options.skipNull && value === null)\n\t\t\t\t\t|| (options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [\n\t\t\t\t\t\t...result,\n\t\t\t\t\t\tencode(key, options),\n\t\t\t\t\t];\n\t\t\t\t}\n\n\t\t\t\treturn [\n\t\t\t\t\t...result,\n\t\t\t\t\t[encode(key, options), '=', encode(value, options)].join(''),\n\t\t\t\t];\n\t\t\t};\n\t\t}\n\t}\n}\n\nfunction parserForArrayFormat(options) {\n\tlet result;\n\n\tswitch (options.arrayFormat) {\n\t\tcase 'index': {\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /\\[(\\d*)]$/.exec(key);\n\n\t\t\t\tkey = key.replace(/\\[\\d*]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = {};\n\t\t\t\t}\n\n\t\t\t\taccumulator[key][result[1]] = value;\n\t\t\t};\n\t\t}\n\n\t\tcase 'bracket': {\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /(\\[])$/.exec(key);\n\t\t\t\tkey = key.replace(/\\[]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = [value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [...accumulator[key], value];\n\t\t\t};\n\t\t}\n\n\t\tcase 'colon-list-separator': {\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /(:list)$/.exec(key);\n\t\t\t\tkey = key.replace(/:list$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = [value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [...accumulator[key], value];\n\t\t\t};\n\t\t}\n\n\t\tcase 'comma':\n\t\tcase 'separator': {\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tconst isArray = typeof value === 'string' && value.includes(options.arrayFormatSeparator);\n\t\t\t\tconst isEncodedArray = (typeof value === 'string' && !isArray && decode(value, options).includes(options.arrayFormatSeparator));\n\t\t\t\tvalue = isEncodedArray ? decode(value, options) : value;\n\t\t\t\tconst newValue = isArray || isEncodedArray ? value.split(options.arrayFormatSeparator).map(item => decode(item, options)) : (value === null ? value : decode(value, options));\n\t\t\t\taccumulator[key] = newValue;\n\t\t\t};\n\t\t}\n\n\t\tcase 'bracket-separator': {\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tconst isArray = /(\\[])$/.test(key);\n\t\t\t\tkey = key.replace(/\\[]$/, '');\n\n\t\t\t\tif (!isArray) {\n\t\t\t\t\taccumulator[key] = value ? decode(value, options) : value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst arrayValue = value === null\n\t\t\t\t\t? []\n\t\t\t\t\t: value.split(options.arrayFormatSeparator).map(item => decode(item, options));\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = arrayValue;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [...accumulator[key], ...arrayValue];\n\t\t\t};\n\t\t}\n\n\t\tdefault: {\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [...[accumulator[key]].flat(), value];\n\t\t\t};\n\t\t}\n\t}\n}\n\nfunction validateArrayFormatSeparator(value) {\n\tif (typeof value !== 'string' || value.length !== 1) {\n\t\tthrow new TypeError('arrayFormatSeparator must be single character string');\n\t}\n}\n\nfunction encode(value, options) {\n\tif (options.encode) {\n\t\treturn options.strict ? strictUriEncode(value) : encodeURIComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction decode(value, options) {\n\tif (options.decode) {\n\t\treturn decodeComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction keysSorter(input) {\n\tif (Array.isArray(input)) {\n\t\treturn input.sort();\n\t}\n\n\tif (typeof input === 'object') {\n\t\treturn keysSorter(Object.keys(input))\n\t\t\t.sort((a, b) => Number(a) - Number(b))\n\t\t\t.map(key => input[key]);\n\t}\n\n\treturn input;\n}\n\nfunction removeHash(input) {\n\tconst hashStart = input.indexOf('#');\n\tif (hashStart !== -1) {\n\t\tinput = input.slice(0, hashStart);\n\t}\n\n\treturn input;\n}\n\nfunction getHash(url) {\n\tlet hash = '';\n\tconst hashStart = url.indexOf('#');\n\tif (hashStart !== -1) {\n\t\thash = url.slice(hashStart);\n\t}\n\n\treturn hash;\n}\n\nfunction parseValue(value, options) {\n\tif (options.parseNumbers && !Number.isNaN(Number(value)) && (typeof value === 'string' && value.trim() !== '')) {\n\t\tvalue = Number(value);\n\t} else if (options.parseBooleans && value !== null && (value.toLowerCase() === 'true' || value.toLowerCase() === 'false')) {\n\t\tvalue = value.toLowerCase() === 'true';\n\t}\n\n\treturn value;\n}\n\nexport function extract(input) {\n\tinput = removeHash(input);\n\tconst queryStart = input.indexOf('?');\n\tif (queryStart === -1) {\n\t\treturn '';\n\t}\n\n\treturn input.slice(queryStart + 1);\n}\n\nexport function parse(query, options) {\n\toptions = {\n\t\tdecode: true,\n\t\tsort: true,\n\t\tarrayFormat: 'none',\n\t\tarrayFormatSeparator: ',',\n\t\tparseNumbers: false,\n\t\tparseBooleans: false,\n\t\t...options,\n\t};\n\n\tvalidateArrayFormatSeparator(options.arrayFormatSeparator);\n\n\tconst formatter = parserForArrayFormat(options);\n\n\t// Create an object with no prototype\n\tconst returnValue = Object.create(null);\n\n\tif (typeof query !== 'string') {\n\t\treturn returnValue;\n\t}\n\n\tquery = query.trim().replace(/^[?#&]/, '');\n\n\tif (!query) {\n\t\treturn returnValue;\n\t}\n\n\tfor (const parameter of query.split('&')) {\n\t\tif (parameter === '') {\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst parameter_ = options.decode ? parameter.replace(/\\+/g, ' ') : parameter;\n\n\t\tlet [key, value] = splitOnFirst(parameter_, '=');\n\n\t\tif (key === undefined) {\n\t\t\tkey = parameter_;\n\t\t}\n\n\t\t// Missing `=` should be `null`:\n\t\t// http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters\n\t\tvalue = value === undefined ? null : (['comma', 'separator', 'bracket-separator'].includes(options.arrayFormat) ? value : decode(value, options));\n\t\tformatter(decode(key, options), value, returnValue);\n\t}\n\n\tfor (const [key, value] of Object.entries(returnValue)) {\n\t\tif (typeof value === 'object' && value !== null) {\n\t\t\tfor (const [key2, value2] of Object.entries(value)) {\n\t\t\t\tvalue[key2] = parseValue(value2, options);\n\t\t\t}\n\t\t} else {\n\t\t\treturnValue[key] = parseValue(value, options);\n\t\t}\n\t}\n\n\tif (options.sort === false) {\n\t\treturn returnValue;\n\t}\n\n\t// TODO: Remove the use of `reduce`.\n\t// eslint-disable-next-line unicorn/no-array-reduce\n\treturn (options.sort === true ? Object.keys(returnValue).sort() : Object.keys(returnValue).sort(options.sort)).reduce((result, key) => {\n\t\tconst value = returnValue[key];\n\t\tif (Boolean(value) && typeof value === 'object' && !Array.isArray(value)) {\n\t\t\t// Sort object keys, not values\n\t\t\tresult[key] = keysSorter(value);\n\t\t} else {\n\t\t\tresult[key] = value;\n\t\t}\n\n\t\treturn result;\n\t}, Object.create(null));\n}\n\nexport function stringify(object, options) {\n\tif (!object) {\n\t\treturn '';\n\t}\n\n\toptions = {encode: true,\n\t\tstrict: true,\n\t\tarrayFormat: 'none',\n\t\tarrayFormatSeparator: ',', ...options};\n\n\tvalidateArrayFormatSeparator(options.arrayFormatSeparator);\n\n\tconst shouldFilter = key => (\n\t\t(options.skipNull && isNullOrUndefined(object[key]))\n\t\t|| (options.skipEmptyString && object[key] === '')\n\t);\n\n\tconst formatter = encoderForArrayFormat(options);\n\n\tconst objectCopy = {};\n\n\tfor (const [key, value] of Object.entries(object)) {\n\t\tif (!shouldFilter(key)) {\n\t\t\tobjectCopy[key] = value;\n\t\t}\n\t}\n\n\tconst keys = Object.keys(objectCopy);\n\n\tif (options.sort !== false) {\n\t\tkeys.sort(options.sort);\n\t}\n\n\treturn keys.map(key => {\n\t\tconst value = object[key];\n\n\t\tif (value === undefined) {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (value === null) {\n\t\t\treturn encode(key, options);\n\t\t}\n\n\t\tif (Array.isArray(value)) {\n\t\t\tif (value.length === 0 && options.arrayFormat === 'bracket-separator') {\n\t\t\t\treturn encode(key, options) + '[]';\n\t\t\t}\n\n\t\t\treturn value\n\t\t\t\t.reduce(formatter(key), [])\n\t\t\t\t.join('&');\n\t\t}\n\n\t\treturn encode(key, options) + '=' + encode(value, options);\n\t}).filter(x => x.length > 0).join('&');\n}\n\nexport function parseUrl(url, options) {\n\toptions = {\n\t\tdecode: true,\n\t\t...options,\n\t};\n\n\tlet [url_, hash] = splitOnFirst(url, '#');\n\n\tif (url_ === undefined) {\n\t\turl_ = url;\n\t}\n\n\treturn {\n\t\turl: url_?.split('?')?.[0] ?? '',\n\t\tquery: parse(extract(url), options),\n\t\t...(options && options.parseFragmentIdentifier && hash ? {fragmentIdentifier: decode(hash, options)} : {}),\n\t};\n}\n\nexport function stringifyUrl(object, options) {\n\toptions = {\n\t\tencode: true,\n\t\tstrict: true,\n\t\t[encodeFragmentIdentifier]: true,\n\t\t...options,\n\t};\n\n\tconst url = removeHash(object.url).split('?')[0] || '';\n\tconst queryFromUrl = extract(object.url);\n\n\tconst query = {\n\t\t...parse(queryFromUrl, {sort: false}),\n\t\t...object.query,\n\t};\n\n\tlet queryString = stringify(query, options);\n\tif (queryString) {\n\t\tqueryString = `?${queryString}`;\n\t}\n\n\tlet hash = getHash(object.url);\n\tif (object.fragmentIdentifier) {\n\t\tconst urlObjectForFragmentEncode = new URL(url);\n\t\turlObjectForFragmentEncode.hash = object.fragmentIdentifier;\n\t\thash = options[encodeFragmentIdentifier] ? urlObjectForFragmentEncode.hash : `#${object.fragmentIdentifier}`;\n\t}\n\n\treturn `${url}${queryString}${hash}`;\n}\n\nexport function pick(input, filter, options) {\n\toptions = {\n\t\tparseFragmentIdentifier: true,\n\t\t[encodeFragmentIdentifier]: false,\n\t\t...options,\n\t};\n\n\tconst {url, query, fragmentIdentifier} = parseUrl(input, options);\n\n\treturn stringifyUrl({\n\t\turl,\n\t\tquery: includeKeys(query, filter),\n\t\tfragmentIdentifier,\n\t}, options);\n}\n\nexport function exclude(input, filter, options) {\n\tconst exclusionFilter = Array.isArray(filter) ? key => !filter.includes(key) : (key, value) => !filter(key, value);\n\n\treturn pick(input, exclusionFilter, options);\n}\n","import * as queryString from './base.js';\n\nexport default queryString;\n","import React, { FunctionComponent, useMemo } from 'react'\r\nimport styled from '@emotion/styled'\r\nimport CategoryList, { CategoryListProps } from 'components/main/categoryList'\r\nimport PostList from 'components/main/postList'\r\nimport { graphql } from 'gatsby'\r\nimport { IGatsbyImageData, StaticImage } from 'gatsby-plugin-image'\r\nimport { PostListItemType } from 'types/postItem.types'\r\nimport queryString, { ParsedQuery } from 'query-string'\r\nimport Template from 'components/common/template'\r\n\r\ntype IndexPageProps = {\r\n location: {\r\n search: string\r\n }\r\n data: {\r\n site: {\r\n siteMetadata: {\r\n title: string\r\n description: string\r\n siteUrl: string\r\n }\r\n }\r\n allMarkdownRemark: {\r\n edges: PostListItemType[]\r\n }\r\n file: {\r\n childImageSharp: {\r\n gatsbyImageData: IGatsbyImageData\r\n }\r\n publicURL: string\r\n }\r\n }\r\n}\r\n\r\nconst HeroImage = styled.div`\r\n margin-top: -45px;\r\n`\r\n\r\nconst IndexPage: FunctionComponent<IndexPageProps> = function ({\r\n location: { search },\r\n data: {\r\n site: {\r\n siteMetadata: { title, description, siteUrl },\r\n },\r\n allMarkdownRemark: { edges },\r\n },\r\n}) {\r\n const parsed: ParsedQuery<string> = queryString.parse(search)\r\n const selectedCategory: string =\r\n typeof parsed.category !== 'string' || !parsed.category\r\n ? 'All'\r\n : parsed.category\r\n const categoryList = useMemo(\r\n () =>\r\n edges.reduce(\r\n (\r\n list: CategoryListProps['categoryList'],\r\n {\r\n node: {\r\n frontmatter: { categories },\r\n },\r\n }: PostListItemType,\r\n ) => {\r\n categories.forEach((category: string | number) => {\r\n if (list[category] === undefined) list[category] = 1\r\n else list[category]++\r\n })\r\n\r\n list['All']++\r\n\r\n return list\r\n },\r\n { All: 0 },\r\n ),\r\n [],\r\n )\r\n\r\n return (\r\n <Template title={title} description={description} url={siteUrl}>\r\n <HeroImage>\r\n <StaticImage src=\"../../static/title.png\" alt=\"Today I Learned\" />\r\n </HeroImage>\r\n <CategoryList\r\n selectedCategory={selectedCategory}\r\n categoryList={categoryList}\r\n />\r\n <PostList selectedCategory={selectedCategory} posts={edges} />\r\n </Template>\r\n )\r\n}\r\n\r\nexport default IndexPage\r\n\r\nexport const getPostList = graphql`\r\n query getPostList {\r\n site {\r\n siteMetadata {\r\n title\r\n description\r\n siteUrl\r\n }\r\n }\r\n allMarkdownRemark(\r\n sort: { order: DESC, fields: [frontmatter___date, frontmatter___title] }\r\n ) {\r\n edges {\r\n node {\r\n id\r\n fields {\r\n slug\r\n }\r\n frontmatter {\r\n title\r\n summary\r\n date(formatString: \"MMM DD, YYYY\")\r\n update(formatString: \"MMM DD, YYYY\")\r\n categories\r\n }\r\n }\r\n }\r\n }\r\n }\r\n`\r\n"],"names":["customStyle","___EmotionJSX","version","viewBox","className","points","CategoryContainer","CategoryButtonWrapper","CategoryButton","CategoryListWrapper","CategoryItem","CategoryItemLink","_styled","_ref","active","props","Link","_ref2","_ref3","PostCount","selectedCategory","categoryList","isCategories","setCategories","useState","type","onClick","e","ArrowUpSVG","ArrowDownSVG","Object","entries","map","_ref5","name","count","key","to","PostItemWrapper","Title","Date","CategoryWrapper","Summary","title","date","update","categories","summary","link","TagSVG","item","ClockSVG","posts","containerRef","useRef","observer","setCount","postListByCategory","useMemo","filter","node","frontmatter","includes","useEffect","current","IntersectionObserver","isIntersecting","value","unobserve","target","length","children","observe","postList","slice","PostListWrapper","useInfiniteScroll","ref","id","fields","slug","PostItem","token","singleMatcher","RegExp","multiMatcher","decodeComponents","components","split","decodeURIComponent","join","left","right","Array","prototype","concat","call","decode","input","tokens","match","i","decodeUriComponent","encodedURI","TypeError","replaceMap","exec","result","keys","replace","customDecodeURIComponent","splitOnFirst","string","separator","separatorIndex","indexOf","includeKeys","object","predicate","isArray","descriptor","getOwnPropertyDescriptor","enumerable","defineProperty","Reflect","ownKeys","isNullOrUndefined","strictUriEncode","encodeURIComponent","x","charCodeAt","toString","toUpperCase","encodeFragmentIdentifier","Symbol","validateArrayFormatSeparator","encode","options","strict","keysSorter","sort","a","b","Number","removeHash","hashStart","parseValue","parseNumbers","isNaN","trim","parseBooleans","toLowerCase","extract","queryStart","parse","query","arrayFormat","arrayFormatSeparator","formatter","accumulator","undefined","isEncodedArray","newValue","test","arrayValue","flat","parserForArrayFormat","returnValue","create","parameter","parameter_","key2","value2","reduce","Boolean","stringify","shouldFilter","skipNull","skipEmptyString","index","keyValueSep","encoderForArrayFormat","objectCopy","parseUrl","url","url_","hash","parseFragmentIdentifier","fragmentIdentifier","stringifyUrl","queryString","getHash","urlObjectForFragmentEncode","URL","pick","exclude","HeroImage","styles","location","search","data","site","siteMetadata","description","siteUrl","allMarkdownRemark","edges","parsed","category","list","forEach","All","Template","StaticImage","src","alt","__imageData","CategoryList","PostList"],"sourceRoot":""}