{"version":3,"sources":["webpack://kimuson.dev/./node_modules/ramda/es/internal/_pipe.js","webpack://kimuson.dev/./node_modules/ramda/es/internal/_curry3.js","webpack://kimuson.dev/./node_modules/ramda/es/internal/_isArray.js","webpack://kimuson.dev/./node_modules/ramda/es/internal/_isArrayLike.js","webpack://kimuson.dev/./node_modules/ramda/es/internal/_isString.js","webpack://kimuson.dev/./node_modules/ramda/es/internal/_xwrap.js","webpack://kimuson.dev/./node_modules/ramda/es/bind.js","webpack://kimuson.dev/./node_modules/ramda/es/internal/_reduce.js","webpack://kimuson.dev/./node_modules/ramda/es/reduce.js","webpack://kimuson.dev/./node_modules/ramda/es/internal/_checkForMethod.js","webpack://kimuson.dev/./node_modules/ramda/es/slice.js","webpack://kimuson.dev/./node_modules/ramda/es/tail.js","webpack://kimuson.dev/./node_modules/ramda/es/pipe.js","webpack://kimuson.dev/./src/templates/blog-post.tsx"],"names":["_pipe","f","g","call","this","apply","arguments","_curry3","fn","f3","a","b","c","length","_isPlaceholder","_curry2","_b","_c","_a","_curry1","Array","isArray","val","Object","prototype","toString","x","_isArray","_isString","nodeType","hasOwnProperty","XWrap","Error","acc","thisObj","_arity","_iterableReduce","xf","iter","step","next","done","value","_methodReduce","obj","methodName","symIterator","Symbol","iterator","_reduce","list","_xwrap","idx","len","_arrayReduce","reduce","TypeError","_checkForMethod","methodname","slice","fromIndex","toIndex","Infinity","pipe","BlogPostListRow","loadable","data","mdx","postUrl","site","siteMetadata","siteUrl","toBlogPostLink","fields","slug","post","toDetailBlogPost","relatedArticle","toBlogPostList","filterDraftPostList","allMdx","edges","filter","e","className","bio","toc","headings","commonSidebar","blogPosts"],"mappings":"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","file":"component---src-templates-blog-post-tsx-8aee3fc234844a0b497c.js","sourcesContent":["export default function _pipe(f, g) {\n return function () {\n return g.call(this, f.apply(this, arguments));\n };\n}","import _curry1 from \"./_curry1.js\";\nimport _curry2 from \"./_curry2.js\";\nimport _isPlaceholder from \"./_isPlaceholder.js\";\n/**\n * Optimized internal three-arity curry function.\n *\n * @private\n * @category Function\n * @param {Function} fn The function to curry.\n * @return {Function} The curried function.\n */\n\nexport default function _curry3(fn) {\n return function f3(a, b, c) {\n switch (arguments.length) {\n case 0:\n return f3;\n\n case 1:\n return _isPlaceholder(a) ? f3 : _curry2(function (_b, _c) {\n return fn(a, _b, _c);\n });\n\n case 2:\n return _isPlaceholder(a) && _isPlaceholder(b) ? f3 : _isPlaceholder(a) ? _curry2(function (_a, _c) {\n return fn(_a, b, _c);\n }) : _isPlaceholder(b) ? _curry2(function (_b, _c) {\n return fn(a, _b, _c);\n }) : _curry1(function (_c) {\n return fn(a, b, _c);\n });\n\n default:\n return _isPlaceholder(a) && _isPlaceholder(b) && _isPlaceholder(c) ? f3 : _isPlaceholder(a) && _isPlaceholder(b) ? _curry2(function (_a, _b) {\n return fn(_a, _b, c);\n }) : _isPlaceholder(a) && _isPlaceholder(c) ? _curry2(function (_a, _c) {\n return fn(_a, b, _c);\n }) : _isPlaceholder(b) && _isPlaceholder(c) ? _curry2(function (_b, _c) {\n return fn(a, _b, _c);\n }) : _isPlaceholder(a) ? _curry1(function (_a) {\n return fn(_a, b, c);\n }) : _isPlaceholder(b) ? _curry1(function (_b) {\n return fn(a, _b, c);\n }) : _isPlaceholder(c) ? _curry1(function (_c) {\n return fn(a, b, _c);\n }) : fn(a, b, c);\n }\n };\n}","/**\n * Tests whether or not an object is an array.\n *\n * @private\n * @param {*} val The object to test.\n * @return {Boolean} `true` if `val` is an array, `false` otherwise.\n * @example\n *\n * _isArray([]); //=> true\n * _isArray(null); //=> false\n * _isArray({}); //=> false\n */\nexport default Array.isArray || function _isArray(val) {\n return val != null && val.length >= 0 && Object.prototype.toString.call(val) === '[object Array]';\n};","import _curry1 from \"./_curry1.js\";\nimport _isArray from \"./_isArray.js\";\nimport _isString from \"./_isString.js\";\n/**\n * Tests whether or not an object is similar to an array.\n *\n * @private\n * @category Type\n * @category List\n * @sig * -> Boolean\n * @param {*} x The object to test.\n * @return {Boolean} `true` if `x` has a numeric length property and extreme indices defined; `false` otherwise.\n * @example\n *\n * _isArrayLike([]); //=> true\n * _isArrayLike(true); //=> false\n * _isArrayLike({}); //=> false\n * _isArrayLike({length: 10}); //=> false\n * _isArrayLike({0: 'zero', 9: 'nine', length: 10}); //=> true\n */\n\nvar _isArrayLike = /*#__PURE__*/_curry1(function isArrayLike(x) {\n if (_isArray(x)) {\n return true;\n }\n\n if (!x) {\n return false;\n }\n\n if (typeof x !== 'object') {\n return false;\n }\n\n if (_isString(x)) {\n return false;\n }\n\n if (x.nodeType === 1) {\n return !!x.length;\n }\n\n if (x.length === 0) {\n return true;\n }\n\n if (x.length > 0) {\n return x.hasOwnProperty(0) && x.hasOwnProperty(x.length - 1);\n }\n\n return false;\n});\n\nexport default _isArrayLike;","export default function _isString(x) {\n return Object.prototype.toString.call(x) === '[object String]';\n}","var XWrap = /*#__PURE__*/function () {\n function XWrap(fn) {\n this.f = fn;\n }\n\n XWrap.prototype['@@transducer/init'] = function () {\n throw new Error('init not implemented on XWrap');\n };\n\n XWrap.prototype['@@transducer/result'] = function (acc) {\n return acc;\n };\n\n XWrap.prototype['@@transducer/step'] = function (acc, x) {\n return this.f(acc, x);\n };\n\n return XWrap;\n}();\n\nexport default function _xwrap(fn) {\n return new XWrap(fn);\n}","import _arity from \"./internal/_arity.js\";\nimport _curry2 from \"./internal/_curry2.js\";\n/**\n * Creates a function that is bound to a context.\n * Note: `R.bind` does not provide the additional argument-binding capabilities of\n * [Function.prototype.bind](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind).\n *\n * @func\n * @memberOf R\n * @since v0.6.0\n * @category Function\n * @category Object\n * @sig (* -> *) -> {*} -> (* -> *)\n * @param {Function} fn The function to bind to context\n * @param {Object} thisObj The context to bind `fn` to\n * @return {Function} A function that will execute in the context of `thisObj`.\n * @see R.partial\n * @example\n *\n * const log = R.bind(console.log, console);\n * R.pipe(R.assoc('a', 2), R.tap(log), R.assoc('a', 3))({a: 1}); //=> {a: 3}\n * // logs {a: 2}\n * @symb R.bind(f, o)(a, b) = f.call(o, a, b)\n */\n\nvar bind = /*#__PURE__*/_curry2(function bind(fn, thisObj) {\n return _arity(fn.length, function () {\n return fn.apply(thisObj, arguments);\n });\n});\n\nexport default bind;","import _isArrayLike from \"./_isArrayLike.js\";\nimport _xwrap from \"./_xwrap.js\";\nimport bind from \"../bind.js\";\n\nfunction _arrayReduce(xf, acc, list) {\n var idx = 0;\n var len = list.length;\n\n while (idx < len) {\n acc = xf['@@transducer/step'](acc, list[idx]);\n\n if (acc && acc['@@transducer/reduced']) {\n acc = acc['@@transducer/value'];\n break;\n }\n\n idx += 1;\n }\n\n return xf['@@transducer/result'](acc);\n}\n\nfunction _iterableReduce(xf, acc, iter) {\n var step = iter.next();\n\n while (!step.done) {\n acc = xf['@@transducer/step'](acc, step.value);\n\n if (acc && acc['@@transducer/reduced']) {\n acc = acc['@@transducer/value'];\n break;\n }\n\n step = iter.next();\n }\n\n return xf['@@transducer/result'](acc);\n}\n\nfunction _methodReduce(xf, acc, obj, methodName) {\n return xf['@@transducer/result'](obj[methodName](bind(xf['@@transducer/step'], xf), acc));\n}\n\nvar symIterator = typeof Symbol !== 'undefined' ? Symbol.iterator : '@@iterator';\nexport default function _reduce(fn, acc, list) {\n if (typeof fn === 'function') {\n fn = _xwrap(fn);\n }\n\n if (_isArrayLike(list)) {\n return _arrayReduce(fn, acc, list);\n }\n\n if (typeof list['fantasy-land/reduce'] === 'function') {\n return _methodReduce(fn, acc, list, 'fantasy-land/reduce');\n }\n\n if (list[symIterator] != null) {\n return _iterableReduce(fn, acc, list[symIterator]());\n }\n\n if (typeof list.next === 'function') {\n return _iterableReduce(fn, acc, list);\n }\n\n if (typeof list.reduce === 'function') {\n return _methodReduce(fn, acc, list, 'reduce');\n }\n\n throw new TypeError('reduce: list must be array or iterable');\n}","import _curry3 from \"./internal/_curry3.js\";\nimport _reduce from \"./internal/_reduce.js\";\n/**\n * Returns a single item by iterating through the list, successively calling\n * the iterator function and passing it an accumulator value and the current\n * value from the array, and then passing the result to the next call.\n *\n * The iterator function receives two values: *(acc, value)*. It may use\n * [`R.reduced`](#reduced) to shortcut the iteration.\n *\n * The arguments' order of [`reduceRight`](#reduceRight)'s iterator function\n * is *(value, acc)*.\n *\n * Note: `R.reduce` does not skip deleted or unassigned indices (sparse\n * arrays), unlike the native `Array.prototype.reduce` method. For more details\n * on this behavior, see:\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reduce#Description\n *\n * Dispatches to the `reduce` method of the third argument, if present. When\n * doing so, it is up to the user to handle the [`R.reduced`](#reduced)\n * shortcuting, as this is not implemented by `reduce`.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig ((a, b) -> a) -> a -> [b] -> a\n * @param {Function} fn The iterator function. Receives two values, the accumulator and the\n * current element from the array.\n * @param {*} acc The accumulator value.\n * @param {Array} list The list to iterate over.\n * @return {*} The final, accumulated value.\n * @see R.reduced, R.addIndex, R.reduceRight\n * @example\n *\n * R.reduce(R.subtract, 0, [1, 2, 3, 4]) // => ((((0 - 1) - 2) - 3) - 4) = -10\n * // - -10\n * // / \\ / \\\n * // - 4 -6 4\n * // / \\ / \\\n * // - 3 ==> -3 3\n * // / \\ / \\\n * // - 2 -1 2\n * // / \\ / \\\n * // 0 1 0 1\n *\n * @symb R.reduce(f, a, [b, c, d]) = f(f(f(a, b), c), d)\n */\n\nvar reduce = /*#__PURE__*/_curry3(_reduce);\n\nexport default reduce;","import _isArray from \"./_isArray.js\";\n/**\n * This checks whether a function has a [methodname] function. If it isn't an\n * array it will execute that function otherwise it will default to the ramda\n * implementation.\n *\n * @private\n * @param {Function} fn ramda implemtation\n * @param {String} methodname property to check for a custom implementation\n * @return {Object} Whatever the return value of the method is.\n */\n\nexport default function _checkForMethod(methodname, fn) {\n return function () {\n var length = arguments.length;\n\n if (length === 0) {\n return fn();\n }\n\n var obj = arguments[length - 1];\n return _isArray(obj) || typeof obj[methodname] !== 'function' ? fn.apply(this, arguments) : obj[methodname].apply(obj, Array.prototype.slice.call(arguments, 0, length - 1));\n };\n}","import _checkForMethod from \"./internal/_checkForMethod.js\";\nimport _curry3 from \"./internal/_curry3.js\";\n/**\n * Returns the elements of the given list or string (or object with a `slice`\n * method) from `fromIndex` (inclusive) to `toIndex` (exclusive).\n *\n * Dispatches to the `slice` method of the third argument, if present.\n *\n * @func\n * @memberOf R\n * @since v0.1.4\n * @category List\n * @sig Number -> Number -> [a] -> [a]\n * @sig Number -> Number -> String -> String\n * @param {Number} fromIndex The start index (inclusive).\n * @param {Number} toIndex The end index (exclusive).\n * @param {*} list\n * @return {*}\n * @example\n *\n * R.slice(1, 3, ['a', 'b', 'c', 'd']); //=> ['b', 'c']\n * R.slice(1, Infinity, ['a', 'b', 'c', 'd']); //=> ['b', 'c', 'd']\n * R.slice(0, -1, ['a', 'b', 'c', 'd']); //=> ['a', 'b', 'c']\n * R.slice(-3, -1, ['a', 'b', 'c', 'd']); //=> ['b', 'c']\n * R.slice(0, 3, 'ramda'); //=> 'ram'\n */\n\nvar slice = /*#__PURE__*/_curry3( /*#__PURE__*/_checkForMethod('slice', function slice(fromIndex, toIndex, list) {\n return Array.prototype.slice.call(list, fromIndex, toIndex);\n}));\n\nexport default slice;","import _checkForMethod from \"./internal/_checkForMethod.js\";\nimport _curry1 from \"./internal/_curry1.js\";\nimport slice from \"./slice.js\";\n/**\n * Returns all but the first element of the given list or string (or object\n * with a `tail` method).\n *\n * Dispatches to the `slice` method of the first argument, if present.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig [a] -> [a]\n * @sig String -> String\n * @param {*} list\n * @return {*}\n * @see R.head, R.init, R.last\n * @example\n *\n * R.tail([1, 2, 3]); //=> [2, 3]\n * R.tail([1, 2]); //=> [2]\n * R.tail([1]); //=> []\n * R.tail([]); //=> []\n *\n * R.tail('abc'); //=> 'bc'\n * R.tail('ab'); //=> 'b'\n * R.tail('a'); //=> ''\n * R.tail(''); //=> ''\n */\n\nvar tail = /*#__PURE__*/_curry1( /*#__PURE__*/_checkForMethod('tail', /*#__PURE__*/slice(1, Infinity)));\n\nexport default tail;","import _arity from \"./internal/_arity.js\";\nimport _pipe from \"./internal/_pipe.js\";\nimport reduce from \"./reduce.js\";\nimport tail from \"./tail.js\";\n/**\n * Performs left-to-right function composition. The first argument may have\n * any arity; the remaining arguments must be unary.\n *\n * In some libraries this function is named `sequence`.\n *\n * **Note:** The result of pipe is not automatically curried.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Function\n * @sig (((a, b, ..., n) -> o), (o -> p), ..., (x -> y), (y -> z)) -> ((a, b, ..., n) -> z)\n * @param {...Function} functions\n * @return {Function}\n * @see R.compose\n * @example\n *\n * const f = R.pipe(Math.pow, R.negate, R.inc);\n *\n * f(3, 4); // -(3^4) + 1\n * @symb R.pipe(f, g, h)(a, b) = h(g(f(a, b)))\n */\n\nexport default function pipe() {\n if (arguments.length === 0) {\n throw new Error('pipe requires at least one argument');\n }\n\n return _arity(arguments[0].length, reduce(_pipe, arguments[0], tail(arguments)));\n}","import React from \"react\"\nimport { graphql, PageProps } from \"gatsby\"\nimport loadable from \"loadable-components\"\nimport { pipe } from \"ramda\"\n\nimport type { BlogPostBySlugQuery } from \"@graphql-types\"\nimport type { PostMdxEdge, PostMdx } from \"types/external-graphql-types\"\nimport type { AroundNav } from \"types/external-graphql-types\"\nimport { toDetailBlogPost, toBlogPostList } from \"~/service/gateways/post\"\nimport { filterDraftPostList } from \"~/service/presenters/post\"\nimport { toBlogPostLink } from \"~/service/presenters/links\"\nimport { Post } from \"~/components/common/post\"\nimport { Layout } from \"~/components/layout\"\nimport { Sidebar } from \"~/components/sidebar\"\n\nconst BlogPostListRow = loadable(async () => {\n const { BlogPostListRow } = await import(\n `../components/common/blog-post-list-row`\n )\n return BlogPostListRow\n})\n\ninterface BlogPostTemplateProps extends PageProps {\n data: BlogPostBySlugQuery\n pageContext: {\n previous: AroundNav | null\n next: AroundNav | null\n }\n}\n\nconst BlogPostTemplate: React.VFC = ({\n data,\n}: BlogPostTemplateProps) => {\n const mdx = data.mdx\n if (!mdx) {\n throw Error\n }\n\n const siteUrl = data.site?.siteMetadata?.siteUrl || `http://127.0.0.1`\n const postUrl = siteUrl + toBlogPostLink(mdx?.fields?.slug || ``)\n\n const post = toDetailBlogPost(postUrl, mdx as PostMdx)\n\n const relatedArticle = pipe(\n toBlogPostList,\n filterDraftPostList\n )(data.allMdx.edges.filter((e): e is PostMdxEdge => typeof e !== `undefined`))\n\n return (\n \n
\n {typeof post !== `undefined` ? (\n <>\n \n\n \n \n ) : (\n
\n )}\n
\n\n {relatedArticle.length !== 0 ? (\n \n ) : null}\n \n )\n}\n\nexport default BlogPostTemplate\n\nexport const pageQuery = graphql`\n query BlogPostBySlug($slug: String!, $category: String!) {\n mdx(fields: { slug: { eq: $slug } }) {\n id\n body\n tableOfContents\n fields {\n slug\n }\n frontmatter {\n title\n date\n description\n category\n tags\n draft\n thumbnail {\n publicURL\n childImageSharp {\n gatsbyImageData(\n layout: FULL_WIDTH\n placeholder: TRACED_SVG\n formats: [AUTO, WEBP, AVIF]\n )\n }\n }\n }\n }\n site {\n siteMetadata {\n siteUrl\n }\n }\n allMdx(\n filter: {\n frontmatter: { category: { eq: $category } }\n fields: { slug: { ne: $slug } }\n }\n sort: { fields: [frontmatter___date], order: DESC }\n ) {\n edges {\n node {\n fields {\n slug\n }\n frontmatter {\n title\n description\n date\n draft\n category\n tags\n thumbnail {\n childImageSharp {\n gatsbyImageData(\n layout: FULL_WIDTH\n placeholder: TRACED_SVG\n formats: [AUTO, WEBP, AVIF]\n )\n }\n }\n }\n }\n }\n }\n }\n`\n"],"sourceRoot":""}