-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcomponent---src-pages-index-tsx-94856c581f12ab14c9ab.js.map
1 lines (1 loc) · 55.6 KB
/
component---src-pages-index-tsx-94856c581f12ab14c9ab.js.map
1
{"version":3,"sources":["webpack://gatsby-starter-default/./node_modules/@babel/runtime/helpers/arrayLikeToArray.js","webpack://gatsby-starter-default/./node_modules/@babel/runtime/helpers/arrayWithHoles.js","webpack://gatsby-starter-default/./node_modules/@babel/runtime/helpers/arrayWithoutHoles.js","webpack://gatsby-starter-default/./node_modules/@babel/runtime/helpers/iterableToArray.js","webpack://gatsby-starter-default/./node_modules/@babel/runtime/helpers/iterableToArrayLimit.js","webpack://gatsby-starter-default/./node_modules/@babel/runtime/helpers/nonIterableRest.js","webpack://gatsby-starter-default/./node_modules/@babel/runtime/helpers/nonIterableSpread.js","webpack://gatsby-starter-default/./node_modules/@babel/runtime/helpers/slicedToArray.js","webpack://gatsby-starter-default/./node_modules/@babel/runtime/helpers/toConsumableArray.js","webpack://gatsby-starter-default/./node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js","webpack://gatsby-starter-default/./node_modules/decode-uri-component/index.js","webpack://gatsby-starter-default/./node_modules/filter-obj/index.js","webpack://gatsby-starter-default/./node_modules/query-string/index.js","webpack://gatsby-starter-default/./node_modules/split-on-first/index.js","webpack://gatsby-starter-default/./node_modules/strict-uri-encode/index.js","webpack://gatsby-starter-default/./src/components/Main/ProfileImage.tsx","webpack://gatsby-starter-default/./src/components/Main/Introduction.tsx","webpack://gatsby-starter-default/./src/components/Main/CategoryList.tsx","webpack://gatsby-starter-default/./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","webpack://gatsby-starter-default/./src/hooks/useInfiniteScroll.tsx","webpack://gatsby-starter-default/./src/components/Main/PostItem.tsx","webpack://gatsby-starter-default/./src/components/Main/PostList.tsx","webpack://gatsby-starter-default/./src/pages/index.tsx"],"names":["module","exports","arr","len","length","i","arr2","Array","__esModule","isArray","arrayLikeToArray","iter","Symbol","iterator","from","_i","_s","_e","_arr","_n","_d","call","next","done","push","value","err","TypeError","arrayWithHoles","iterableToArrayLimit","unsupportedIterableToArray","nonIterableRest","arrayWithoutHoles","iterableToArray","nonIterableSpread","o","minLen","n","Object","prototype","toString","slice","constructor","name","test","token","singleMatcher","RegExp","multiMatcher","decodeComponents","components","split","decodeURIComponent","join","left","right","concat","decode","input","tokens","match","encodedURI","replace","replaceMap","exec","result","entries","keys","key","customDecodeURIComponent","obj","predicate","ret","isArr","val","indexOf","_slicedToArray","_toConsumableArray","_createForOfIteratorHelper","allowArrayLike","it","_arrayLikeToArray","_unsupportedIterableToArray","F","s","e","f","normalCompletion","didErr","step","_e2","return","strictUriEncode","decodeComponent","splitOnFirst","filterObject","validateArrayFormatSeparator","encode","options","strict","encodeURIComponent","keysSorter","sort","a","b","Number","map","removeHash","hashStart","extract","queryStart","parseValue","parseNumbers","isNaN","trim","parseBooleans","toLowerCase","parse","query","assign","arrayFormat","arrayFormatSeparator","formatter","accumulator","undefined","includes","isEncodedArray","newValue","item","arrayValue","parserForArrayFormat","create","_step","_iterator","param","_splitOnFirst","_splitOnFirst2","_key","_value","_Object$keys","_i2","_Object$keys2","k","reduce","Boolean","stringify","object","shouldFilter","skipNull","skipEmptyString","index","keyValueSep","encoderForArrayFormat","objectCopy","_i3","_Object$keys3","filter","x","parseUrl","url","_splitOnFirst3","_splitOnFirst4","url_","hash","parseFragmentIdentifier","fragmentIdentifier","stringifyUrl","queryFromUrl","parsedQueryFromUrl","queryString","getHash","pick","_exports$parseUrl","exclude","exclusionFilter","string","separator","separatorIndex","str","charCodeAt","toUpperCase","ProfileImageWrapper","Img","profileImage","fluid","alt","Background","IntroductionWrapper","Title","SubTitle","CategoryListWrapper","CategoryItem","active","to","props","source","excluded","target","sourceKeys","Link","selectedCategory","categoryList","count","NUMBER_OF_ITEMS_PER_PAGE","posts","containerRef","useRef","observer","useState","setCount","postListByCategory","useMemo","categories","node","frontmatter","useEffect","current","IntersectionObserver","isIntersecting","unobserve","children","observe","postList","PostItemWrapper","ThumbnailImage","PostItemContent","Date","Category","Summary","title","date","summary","thumbnail","childImageSharp","link","category","PostListWrapper","useInfiniteScroll","ref","id","slug","fields","search","location","data","site","siteMetadata","description","siteUrl","edges","allMarkdownRemark","file","publicURL","parsed","list","forEach","All","Template","image"],"mappings":"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","file":"component---src-pages-index-tsx-94856c581f12ab14c9ab.js","sourcesContent":["function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}\n\nmodule.exports = _arrayLikeToArray;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nmodule.exports = _arrayWithHoles;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}\n\nmodule.exports = _arrayWithoutHoles;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\n\nmodule.exports = _iterableToArray;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _iterableToArrayLimit(arr, i) {\n var _i = arr && (typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]);\n\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n\n var _s, _e;\n\n try {\n for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nmodule.exports = _iterableToArrayLimit;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nmodule.exports = _nonIterableRest;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nmodule.exports = _nonIterableSpread;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var arrayWithHoles = require(\"./arrayWithHoles.js\");\n\nvar iterableToArrayLimit = require(\"./iterableToArrayLimit.js\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\n\nvar nonIterableRest = require(\"./nonIterableRest.js\");\n\nfunction _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}\n\nmodule.exports = _slicedToArray;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var arrayWithoutHoles = require(\"./arrayWithoutHoles.js\");\n\nvar iterableToArray = require(\"./iterableToArray.js\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\n\nvar nonIterableSpread = require(\"./nonIterableSpread.js\");\n\nfunction _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}\n\nmodule.exports = _toConsumableArray;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}\n\nmodule.exports = _unsupportedIterableToArray;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","'use strict';\n\nvar token = '%[a-f0-9]{2}';\nvar singleMatcher = new RegExp(token, 'gi');\nvar multiMatcher = new RegExp('(' + token + ')+', 'gi');\n\nfunction decodeComponents(components, split) {\n try {\n // Try to decode the entire string first\n return decodeURIComponent(components.join(''));\n } catch (err) {// Do nothing\n }\n\n if (components.length === 1) {\n return components;\n }\n\n split = split || 1; // Split the array in 2 parts\n\n var left = components.slice(0, split);\n var right = components.slice(split);\n return Array.prototype.concat.call([], decodeComponents(left), decodeComponents(right));\n}\n\nfunction decode(input) {\n try {\n return decodeURIComponent(input);\n } catch (err) {\n var tokens = input.match(singleMatcher);\n\n for (var i = 1; i < tokens.length; i++) {\n input = decodeComponents(tokens, i).join('');\n tokens = input.match(singleMatcher);\n }\n\n return input;\n }\n}\n\nfunction customDecodeURIComponent(input) {\n // Keep track of all the replacements and prefill the map with the `BOM`\n var replaceMap = {\n '%FE%FF': \"\\uFFFD\\uFFFD\",\n '%FF%FE': \"\\uFFFD\\uFFFD\"\n };\n var match = multiMatcher.exec(input);\n\n while (match) {\n try {\n // Decode as big chunks as possible\n replaceMap[match[0]] = decodeURIComponent(match[0]);\n } catch (err) {\n var result = decode(match[0]);\n\n if (result !== match[0]) {\n replaceMap[match[0]] = result;\n }\n }\n\n match = multiMatcher.exec(input);\n } // Add `%C2` at the end of the map to make sure it does not replace the combinator before everything else\n\n\n replaceMap['%C2'] = \"\\uFFFD\";\n var entries = Object.keys(replaceMap);\n\n for (var i = 0; i < entries.length; i++) {\n // Replace all decoded components\n var key = entries[i];\n input = input.replace(new RegExp(key, 'g'), replaceMap[key]);\n }\n\n return input;\n}\n\nmodule.exports = function (encodedURI) {\n if (typeof encodedURI !== 'string') {\n throw new TypeError('Expected `encodedURI` to be of type `string`, got `' + typeof encodedURI + '`');\n }\n\n try {\n encodedURI = encodedURI.replace(/\\+/g, ' '); // Try the built in decoder first\n\n return decodeURIComponent(encodedURI);\n } catch (err) {\n // Fallback to a more advanced decoder\n return customDecodeURIComponent(encodedURI);\n }\n};","'use strict';\n\nmodule.exports = function (obj, predicate) {\n var ret = {};\n var keys = Object.keys(obj);\n var isArr = Array.isArray(predicate);\n\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n var val = obj[key];\n\n if (isArr ? predicate.indexOf(key) !== -1 : predicate(key, val, obj)) {\n ret[key] = val;\n }\n }\n\n return ret;\n};","'use strict';\n\nvar _slicedToArray = require(\"D:/web/superBlog/node_modules/@babel/runtime/helpers/slicedToArray\");\n\nvar _toConsumableArray = require(\"D:/web/superBlog/node_modules/@babel/runtime/helpers/toConsumableArray\");\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nvar strictUriEncode = require('strict-uri-encode');\n\nvar decodeComponent = require('decode-uri-component');\n\nvar splitOnFirst = require('split-on-first');\n\nvar filterObject = require('filter-obj');\n\nvar isNullOrUndefined = function isNullOrUndefined(value) {\n return value === null || value === undefined;\n};\n\nfunction encoderForArrayFormat(options) {\n switch (options.arrayFormat) {\n case 'index':\n return function (key) {\n return function (result, value) {\n var index = result.length;\n\n if (value === undefined || options.skipNull && value === null || options.skipEmptyString && value === '') {\n return result;\n }\n\n if (value === null) {\n return [].concat(_toConsumableArray(result), [[encode(key, options), '[', index, ']'].join('')]);\n }\n\n return [].concat(_toConsumableArray(result), [[encode(key, options), '[', encode(index, options), ']=', encode(value, options)].join('')]);\n };\n };\n\n case 'bracket':\n return function (key) {\n return function (result, value) {\n if (value === undefined || options.skipNull && value === null || options.skipEmptyString && value === '') {\n return result;\n }\n\n if (value === null) {\n return [].concat(_toConsumableArray(result), [[encode(key, options), '[]'].join('')]);\n }\n\n return [].concat(_toConsumableArray(result), [[encode(key, options), '[]=', encode(value, options)].join('')]);\n };\n };\n\n case 'comma':\n case 'separator':\n case 'bracket-separator':\n {\n var keyValueSep = options.arrayFormat === 'bracket-separator' ? '[]=' : '=';\n return function (key) {\n return function (result, value) {\n if (value === undefined || options.skipNull && value === null || options.skipEmptyString && value === '') {\n return result;\n } // Translate null to an empty string so that it doesn't serialize as 'null'\n\n\n value = value === null ? '' : value;\n\n if (result.length === 0) {\n return [[encode(key, options), keyValueSep, encode(value, options)].join('')];\n }\n\n return [[result, encode(value, options)].join(options.arrayFormatSeparator)];\n };\n };\n }\n\n default:\n return function (key) {\n return function (result, value) {\n if (value === undefined || options.skipNull && value === null || options.skipEmptyString && value === '') {\n return result;\n }\n\n if (value === null) {\n return [].concat(_toConsumableArray(result), [encode(key, options)]);\n }\n\n return [].concat(_toConsumableArray(result), [[encode(key, options), '=', encode(value, options)].join('')]);\n };\n };\n }\n}\n\nfunction parserForArrayFormat(options) {\n var result;\n\n switch (options.arrayFormat) {\n case 'index':\n return function (key, value, accumulator) {\n result = /\\[(\\d*)\\]$/.exec(key);\n key = key.replace(/\\[\\d*\\]$/, '');\n\n if (!result) {\n accumulator[key] = value;\n return;\n }\n\n if (accumulator[key] === undefined) {\n accumulator[key] = {};\n }\n\n accumulator[key][result[1]] = value;\n };\n\n case 'bracket':\n return function (key, value, accumulator) {\n result = /(\\[\\])$/.exec(key);\n key = key.replace(/\\[\\]$/, '');\n\n if (!result) {\n accumulator[key] = value;\n return;\n }\n\n if (accumulator[key] === undefined) {\n accumulator[key] = [value];\n return;\n }\n\n accumulator[key] = [].concat(accumulator[key], value);\n };\n\n case 'comma':\n case 'separator':\n return function (key, value, accumulator) {\n var isArray = typeof value === 'string' && value.includes(options.arrayFormatSeparator);\n var isEncodedArray = typeof value === 'string' && !isArray && decode(value, options).includes(options.arrayFormatSeparator);\n value = isEncodedArray ? decode(value, options) : value;\n var newValue = isArray || isEncodedArray ? value.split(options.arrayFormatSeparator).map(function (item) {\n return decode(item, options);\n }) : value === null ? value : decode(value, options);\n accumulator[key] = newValue;\n };\n\n case 'bracket-separator':\n return function (key, value, accumulator) {\n var isArray = /(\\[\\])$/.test(key);\n key = key.replace(/\\[\\]$/, '');\n\n if (!isArray) {\n accumulator[key] = value ? decode(value, options) : value;\n return;\n }\n\n var arrayValue = value === null ? [] : value.split(options.arrayFormatSeparator).map(function (item) {\n return decode(item, options);\n });\n\n if (accumulator[key] === undefined) {\n accumulator[key] = arrayValue;\n return;\n }\n\n accumulator[key] = [].concat(accumulator[key], arrayValue);\n };\n\n default:\n return function (key, value, accumulator) {\n if (accumulator[key] === undefined) {\n accumulator[key] = value;\n return;\n }\n\n accumulator[key] = [].concat(accumulator[key], value);\n };\n }\n}\n\nfunction validateArrayFormatSeparator(value) {\n if (typeof value !== 'string' || value.length !== 1) {\n throw new TypeError('arrayFormatSeparator must be single character string');\n }\n}\n\nfunction encode(value, options) {\n if (options.encode) {\n return options.strict ? strictUriEncode(value) : encodeURIComponent(value);\n }\n\n return value;\n}\n\nfunction decode(value, options) {\n if (options.decode) {\n return decodeComponent(value);\n }\n\n return value;\n}\n\nfunction keysSorter(input) {\n if (Array.isArray(input)) {\n return input.sort();\n }\n\n if (typeof input === 'object') {\n return keysSorter(Object.keys(input)).sort(function (a, b) {\n return Number(a) - Number(b);\n }).map(function (key) {\n return input[key];\n });\n }\n\n return input;\n}\n\nfunction removeHash(input) {\n var hashStart = input.indexOf('#');\n\n if (hashStart !== -1) {\n input = input.slice(0, hashStart);\n }\n\n return input;\n}\n\nfunction getHash(url) {\n var hash = '';\n var hashStart = url.indexOf('#');\n\n if (hashStart !== -1) {\n hash = url.slice(hashStart);\n }\n\n return hash;\n}\n\nfunction extract(input) {\n input = removeHash(input);\n var queryStart = input.indexOf('?');\n\n if (queryStart === -1) {\n return '';\n }\n\n return input.slice(queryStart + 1);\n}\n\nfunction parseValue(value, options) {\n if (options.parseNumbers && !Number.isNaN(Number(value)) && typeof value === 'string' && value.trim() !== '') {\n value = Number(value);\n } else if (options.parseBooleans && value !== null && (value.toLowerCase() === 'true' || value.toLowerCase() === 'false')) {\n value = value.toLowerCase() === 'true';\n }\n\n return value;\n}\n\nfunction parse(query, options) {\n options = Object.assign({\n decode: true,\n sort: true,\n arrayFormat: 'none',\n arrayFormatSeparator: ',',\n parseNumbers: false,\n parseBooleans: false\n }, options);\n validateArrayFormatSeparator(options.arrayFormatSeparator);\n var formatter = parserForArrayFormat(options); // Create an object with no prototype\n\n var ret = Object.create(null);\n\n if (typeof query !== 'string') {\n return ret;\n }\n\n query = query.trim().replace(/^[?#&]/, '');\n\n if (!query) {\n return ret;\n }\n\n var _iterator = _createForOfIteratorHelper(query.split('&')),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var param = _step.value;\n\n if (param === '') {\n continue;\n }\n\n var _splitOnFirst = splitOnFirst(options.decode ? param.replace(/\\+/g, ' ') : param, '='),\n _splitOnFirst2 = _slicedToArray(_splitOnFirst, 2),\n _key = _splitOnFirst2[0],\n _value = _splitOnFirst2[1]; // Missing `=` should be `null`:\n // http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters\n\n\n _value = _value === undefined ? null : ['comma', 'separator', 'bracket-separator'].includes(options.arrayFormat) ? _value : decode(_value, options);\n formatter(decode(_key, options), _value, ret);\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n\n for (var _i = 0, _Object$keys = Object.keys(ret); _i < _Object$keys.length; _i++) {\n var key = _Object$keys[_i];\n var value = ret[key];\n\n if (typeof value === 'object' && value !== null) {\n for (var _i2 = 0, _Object$keys2 = Object.keys(value); _i2 < _Object$keys2.length; _i2++) {\n var k = _Object$keys2[_i2];\n value[k] = parseValue(value[k], options);\n }\n } else {\n ret[key] = parseValue(value, options);\n }\n }\n\n if (options.sort === false) {\n return ret;\n }\n\n return (options.sort === true ? Object.keys(ret).sort() : Object.keys(ret).sort(options.sort)).reduce(function (result, key) {\n var value = ret[key];\n\n if (Boolean(value) && typeof value === 'object' && !Array.isArray(value)) {\n // Sort object keys, not values\n result[key] = keysSorter(value);\n } else {\n result[key] = value;\n }\n\n return result;\n }, Object.create(null));\n}\n\nexports.extract = extract;\nexports.parse = parse;\n\nexports.stringify = function (object, options) {\n if (!object) {\n return '';\n }\n\n options = Object.assign({\n encode: true,\n strict: true,\n arrayFormat: 'none',\n arrayFormatSeparator: ','\n }, options);\n validateArrayFormatSeparator(options.arrayFormatSeparator);\n\n var shouldFilter = function shouldFilter(key) {\n return options.skipNull && isNullOrUndefined(object[key]) || options.skipEmptyString && object[key] === '';\n };\n\n var formatter = encoderForArrayFormat(options);\n var objectCopy = {};\n\n for (var _i3 = 0, _Object$keys3 = Object.keys(object); _i3 < _Object$keys3.length; _i3++) {\n var key = _Object$keys3[_i3];\n\n if (!shouldFilter(key)) {\n objectCopy[key] = object[key];\n }\n }\n\n var keys = Object.keys(objectCopy);\n\n if (options.sort !== false) {\n keys.sort(options.sort);\n }\n\n return keys.map(function (key) {\n var value = object[key];\n\n if (value === undefined) {\n return '';\n }\n\n if (value === null) {\n return encode(key, options);\n }\n\n if (Array.isArray(value)) {\n if (value.length === 0 && options.arrayFormat === 'bracket-separator') {\n return encode(key, options) + '[]';\n }\n\n return value.reduce(formatter(key), []).join('&');\n }\n\n return encode(key, options) + '=' + encode(value, options);\n }).filter(function (x) {\n return x.length > 0;\n }).join('&');\n};\n\nexports.parseUrl = function (url, options) {\n options = Object.assign({\n decode: true\n }, options);\n\n var _splitOnFirst3 = splitOnFirst(url, '#'),\n _splitOnFirst4 = _slicedToArray(_splitOnFirst3, 2),\n url_ = _splitOnFirst4[0],\n hash = _splitOnFirst4[1];\n\n return Object.assign({\n url: url_.split('?')[0] || '',\n query: parse(extract(url), options)\n }, options && options.parseFragmentIdentifier && hash ? {\n fragmentIdentifier: decode(hash, options)\n } : {});\n};\n\nexports.stringifyUrl = function (object, options) {\n options = Object.assign({\n encode: true,\n strict: true\n }, options);\n var url = removeHash(object.url).split('?')[0] || '';\n var queryFromUrl = exports.extract(object.url);\n var parsedQueryFromUrl = exports.parse(queryFromUrl, {\n sort: false\n });\n var query = Object.assign(parsedQueryFromUrl, object.query);\n var queryString = exports.stringify(query, options);\n\n if (queryString) {\n queryString = \"?\".concat(queryString);\n }\n\n var hash = getHash(object.url);\n\n if (object.fragmentIdentifier) {\n hash = \"#\".concat(encode(object.fragmentIdentifier, options));\n }\n\n return \"\".concat(url).concat(queryString).concat(hash);\n};\n\nexports.pick = function (input, filter, options) {\n options = Object.assign({\n parseFragmentIdentifier: true\n }, options);\n\n var _exports$parseUrl = exports.parseUrl(input, options),\n url = _exports$parseUrl.url,\n query = _exports$parseUrl.query,\n fragmentIdentifier = _exports$parseUrl.fragmentIdentifier;\n\n return exports.stringifyUrl({\n url: url,\n query: filterObject(query, filter),\n fragmentIdentifier: fragmentIdentifier\n }, options);\n};\n\nexports.exclude = function (input, filter, options) {\n var exclusionFilter = Array.isArray(filter) ? function (key) {\n return !filter.includes(key);\n } : function (key, value) {\n return !filter(key, value);\n };\n return exports.pick(input, exclusionFilter, options);\n};","'use strict';\n\nmodule.exports = function (string, separator) {\n if (!(typeof string === 'string' && typeof separator === 'string')) {\n throw new TypeError('Expected the arguments to be of type `string`');\n }\n\n if (separator === '') {\n return [string];\n }\n\n var separatorIndex = string.indexOf(separator);\n\n if (separatorIndex === -1) {\n return [string];\n }\n\n return [string.slice(0, separatorIndex), string.slice(separatorIndex + separator.length)];\n};","'use strict';\n\nmodule.exports = function (str) {\n return encodeURIComponent(str).replace(/[!'()*]/g, function (x) {\n return \"%\".concat(x.charCodeAt(0).toString(16).toUpperCase());\n });\n};","import styled from '@emotion/styled';\nimport React from 'react';\nimport Img, { FluidObject } from 'gatsby-image';\nimport { ReactElement } from 'react';\n\nexport interface ProfileImageProps {\n profileImage: FluidObject;\n}\n\nfunction ProfileImage({ profileImage }: ProfileImageProps): ReactElement {\n return <ProfileImageWrapper fluid={profileImage} alt=\"Profile Image\" />;\n}\n\nconst ProfileImageWrapper = styled(Img)`\n width: 120px;\n height: 120px;\n margin-bottom: 30px;\n border-radius: 50%;\n\n @media (max-width: 768px) {\n width: 80px;\n height: 80px;\n }\n`;\n\nexport default ProfileImage;\n","import styled from '@emotion/styled';\nimport React, { ReactElement } from 'react';\nimport ProfileImage, {\n ProfileImageProps as IntroductionProps,\n} from './ProfileImage';\n\nfunction Introduction({ profileImage }: IntroductionProps): ReactElement {\n return (\n <Background>\n <IntroductionWrapper>\n <ProfileImage profileImage={profileImage} />\n <div>\n <Title>Super Awesome Blog</Title>\n <SubTitle>superLipbalm의 개발블로그!</SubTitle>\n </div>\n </IntroductionWrapper>\n </Background>\n );\n}\n\nconst Background = styled.div`\n width: 100%;\n background-image: linear-gradient(60deg, #29323c 0%, #485563 100%);\n color: #ffffff;\n`;\n\nconst IntroductionWrapper = styled.header`\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: flex-start;\n width: 768px;\n height: 400px;\n margin: 0 auto;\n padding: 0 20px;\n\n @media (max-width: 768px) {\n width: 100%;\n height: 300px;\n }\n`;\n\nconst Title = styled.div`\n margin-top: 5px;\n font-size: 35px;\n font-weight: 700;\n\n @media (max-width: 768px) {\n font-size: 25px;\n }\n`;\n\nconst SubTitle = styled.div`\n font-size: 20px;\n font-weight: 400;\n\n @media (max-width: 768px) {\n font-size: 15px;\n }\n`;\n\nexport default Introduction;\n","import styled from '@emotion/styled';\nimport { Link } from 'gatsby';\nimport React, { ReactElement, ReactNode } from 'react';\n\nexport interface CategoryListProps {\n selectedCategory: string;\n categoryList: {\n [key: string]: number;\n };\n}\n\ntype CategoryItemProps = {\n active: boolean;\n};\n\ntype GatsbyLinkProps = {\n children: ReactNode;\n className?: string;\n to: string;\n} & CategoryItemProps;\n\nfunction CategoryList({\n selectedCategory,\n categoryList,\n}: CategoryListProps): ReactElement {\n return (\n <CategoryListWrapper>\n {categoryList &&\n Object.entries(categoryList).map(([name, count]) => (\n <CategoryItem\n to={`/?category=${name}`}\n key={name}\n active={name === selectedCategory}\n >\n #{name}({count})\n </CategoryItem>\n ))}\n </CategoryListWrapper>\n );\n}\n\nconst CategoryListWrapper = styled.div`\n display: flex;\n flex-wrap: wrap;\n width: 768px;\n margin: 50px auto 10px;\n padding: 0 20px;\n\n @media (max-width: 768px) {\n width: 100%;\n margin-top: 25px;\n }\n`;\n\nconst CategoryItem = styled(({ active, to, ...props }: GatsbyLinkProps) => (\n <Link to={to} {...props} />\n))`\n margin-right: 25px;\n padding: 5px 0;\n font-size: 18px;\n font-weight: ${({ active }) => (active ? '800' : '600')};\n cursor: pointer;\n transform: ${({ active }) => (active ? 'scale(1.2)' : 'scale(1)')};\n transition: 0.3s transform, 0.3s font-weight;\n\n &:last-of-type {\n margin-right: 0;\n }\n`;\n\nexport default CategoryList;\n","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}","import { PostType } from 'components/Main/PostList';\nimport { MutableRefObject, useEffect, useMemo, useRef, useState } from 'react';\n\nexport type useInfiniteScrollType = {\n containerRef: MutableRefObject<HTMLDivElement | null>;\n postList: PostType[];\n};\n\nfunction useInfiniteScroll(\n selectedCategory: string,\n posts: PostType[],\n): useInfiniteScrollType {\n const containerRef: MutableRefObject<HTMLDivElement | null> =\n useRef<HTMLDivElement>(null);\n const observer: MutableRefObject<IntersectionObserver | null> =\n useRef<IntersectionObserver>(null);\n const [count, setCount] = useState<number>(1);\n\n const postListByCategory = useMemo<PostType[]>(\n () =>\n posts.filter(\n ({\n node: {\n frontmatter: { categories },\n },\n }: PostType) =>\n selectedCategory !== 'All'\n ? categories.includes(selectedCategory)\n : true,\n ),\n [selectedCategory],\n );\n\n useEffect(() => {\n observer.current = new IntersectionObserver((entries, observer) => {\n if (!entries[0].isIntersecting) return;\n\n setCount(count => count + 1);\n observer.unobserve(entries[0].target);\n });\n }, []);\n\n useEffect(() => setCount(1), [selectedCategory]);\n\n useEffect(() => {\n if (\n NUMBER_OF_ITEMS_PER_PAGE * count >= postListByCategory.length ||\n containerRef.current === null ||\n containerRef.current.children.length === 0 ||\n observer.current === null\n )\n return;\n\n observer.current.observe(\n containerRef.current.children[containerRef.current.children.length - 1],\n );\n }, [count, selectedCategory]);\n\n return {\n containerRef,\n postList: postListByCategory.slice(0, count * NUMBER_OF_ITEMS_PER_PAGE),\n };\n}\n\nconst NUMBER_OF_ITEMS_PER_PAGE = 10;\n\nexport default useInfiniteScroll;\n","import styled from '@emotion/styled';\nimport { Link } from 'gatsby';\nimport Img, { FluidObject } from 'gatsby-image';\nimport React from 'react';\nimport { ReactElement } from 'react';\n\ninterface PostItemProps {\n title: string;\n date: string;\n categories: string[];\n summary: string;\n thumbnail: {\n childImageSharp: {\n fluid: FluidObject;\n };\n };\n link: string;\n}\n\nfunction PostItem({\n title,\n date,\n categories,\n summary,\n thumbnail: {\n childImageSharp: { fluid },\n },\n link,\n}: PostItemProps): ReactElement {\n return (\n <PostItemWrapper to={link}>\n <ThumbnailImage fluid={fluid} alt=\"Post Item Image\" />\n <PostItemContent>\n <Title>{title}</Title>\n <Summary>{summary}</Summary>\n <Category>\n {categories.map(category => (\n <CategoryItem key={category}>{category}</CategoryItem>\n ))}\n </Category>\n <Date>{date}</Date>\n </PostItemContent>\n </PostItemWrapper>\n );\n}\n\nconst PostItemWrapper = styled(Link)`\n display: flex;\n flex-direction: column;\n border-radius: 10px;\n box-shadow: 0 0 5px rgba(0, 0, 0, 0.1);\n transition: 0.3s box-shadow;\n cursor: pointer;\n\n &:hover {\n box-shadow: 0 0 10px rgba(0, 0, 0, 0.3);\n }\n`;\n\nconst ThumbnailImage = styled(Img)`\n width: 100%;\n height: 200px;\n border-radius: 10px 10px 0 0;\n`;\n\nconst PostItemContent = styled.div`\n display: flex;\n flex: 1;\n flex-direction: column;\n padding: 15px;\n`;\n\nconst Title = styled.div`\n display: -webkit-box;\n overflow: hidden;\n margin-bottom: 5px;\n text-overflow: ellipsis;\n white-space: normal;\n overflow-wrap: break-word;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n font-size: 20px;\n font-weight: 700;\n`;\n\nconst Date = styled.div`\n font-size: 14px;\n font-weight: 400;\n opacity: 0.7;\n`;\n\nconst Category = styled.div`\n display: flex;\n flex-wrap: wrap;\n margin: 10px -5px;\n margin-bottom: 5px;\n`;\n\nconst CategoryItem = styled.div`\n margin: 2.5px 5px;\n padding: 3px 5px;\n border-radius: 5px;\n background: #29323c;\n font-size: 14px;\n font-weight: 700;\n color: white;\n`;\n\nconst Summary = styled.div`\n display: -webkit-box;\n margin-top: auto;\n overflow: hidden;\n overflow-wrap: break-word;\n text-overflow: ellipsis;\n white-space: normal;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n font-size: 16px;\n opacity: 0.8;\n`;\n\nexport default PostItem;\n","import styled from '@emotion/styled';\nimport { FluidObject } from 'gatsby-image';\nimport useInfiniteScroll, {\n useInfiniteScrollType,\n} from 'hooks/useInfiniteScroll';\nimport React, { ReactElement } from 'react';\nimport PostItem from './PostItem';\n\nexport type PostType = {\n node: {\n id: string;\n fields: {\n slug: string;\n };\n frontmatter: {\n title: string;\n summary: string;\n date: string;\n categories: string[];\n thumbnail: {\n childImageSharp: {\n fluid: FluidObject;\n };\n };\n };\n };\n};\n\ninterface PostListProps {\n selectedCategory: string;\n posts: PostType[];\n}\n\nfunction PostList({ selectedCategory, posts }: PostListProps): ReactElement {\n const { containerRef, postList }: useInfiniteScrollType = useInfiniteScroll(\n selectedCategory,\n posts,\n );\n\n return (\n <PostListWrapper ref={containerRef}>\n {postList.map(\n ({\n node: {\n id,\n fields: { slug },\n frontmatter,\n },\n }: PostType) => (\n <PostItem {...frontmatter} link={slug} key={id} />\n ),\n )}\n </PostListWrapper>\n );\n}\n\nconst PostListWrapper = styled.div`\n display: grid;\n grid-template-columns: 1fr 1fr;\n grid-gap: 20px;\n width: 768px;\n margin: 0 auto;\n padding: 10px 20px;\n\n @media (max-width: 768px) {\n grid-template-columns: 1fr;\n width: 100%;\n }\n`;\n\nexport default PostList;\n","import React, { ReactElement, useMemo } from 'react';\nimport Introduction from 'components/Main/Introduction';\nimport CategoryList, { CategoryListProps } from 'components/Main/CategoryList';\nimport PostList, { PostType } from 'components/Main/PostList';\nimport { graphql } from 'gatsby';\nimport { ProfileImageProps } from 'components/Main/ProfileImage';\nimport queryString, { ParsedQuery } from 'query-string';\nimport Template from 'components/Common/Template';\n\ninterface IndexPageProps {\n location: {\n search: string;\n };\n data: {\n site: {\n siteMetadata: {\n title: string;\n description: string;\n siteUrl: string;\n };\n };\n allMarkdownRemark: {\n edges: PostType[];\n };\n file: {\n publicURL: string;\n childImageSharp: {\n fluid: ProfileImageProps['profileImage'];\n };\n };\n };\n}\n\nfunction IndexPage({\n location: { search },\n data: {\n site: {\n siteMetadata: { title, description, siteUrl },\n },\n allMarkdownRemark: { edges },\n file: {\n publicURL,\n childImageSharp: { fluid },\n },\n },\n}: IndexPageProps): ReactElement {\n const parsed: ParsedQuery<string> = queryString.parse(search);\n const selectedCategory: string =\n typeof parsed.category !== 'string' || !parsed.category\n ? 'All'\n : parsed.category;\n\n const categoryList = useMemo(\n () =>\n edges.reduce(\n (\n list: CategoryListProps['categoryList'],\n {\n node: {\n frontmatter: { categories },\n },\n }: PostType,\n ) => {\n categories.forEach(category => {\n if (list[category] === undefined) list[category] = 1;\n else list[category]++;\n });\n\n list['All']++;\n\n return list;\n },\n { All: 0 },\n ),\n [],\n );\n\n return (\n <Template\n title={title}\n description={description}\n url={siteUrl}\n image={publicURL}\n >\n <Introduction profileImage={fluid} />\n <CategoryList\n selectedCategory={selectedCategory}\n categoryList={categoryList}\n />\n <PostList selectedCategory={selectedCategory} posts={edges} />\n </Template>\n );\n}\n\nexport default IndexPage;\n\nexport const queryPostList = graphql`\n query queryPostList {\n site {\n siteMetadata {\n title\n description\n siteUrl\n }\n }\n allMarkdownRemark(\n sort: { order: DESC, fields: [frontmatter___date, frontmatter___title] }\n ) {\n edges {\n node {\n id\n fields {\n slug\n }\n frontmatter {\n title\n summary\n date(formatString: \"YYYY.MM.DD.\")\n categories\n thumbnail {\n childImageSharp {\n fluid(\n maxWidth: 768\n maxHeight: 200\n fit: INSIDE\n quality: 100\n ) {\n ...GatsbyImageSharpFluid_withWebp\n }\n }\n }\n }\n }\n }\n }\n file(name: { eq: \"profile\" }) {\n publicURL\n childImageSharp {\n fluid(maxWidth: 120, maxHeight: 120, fit: INSIDE, quality: 100) {\n ...GatsbyImageSharpFluid_withWebp\n }\n }\n }\n }\n`;\n"],"sourceRoot":""}