{"version":3,"file":"component---src-pages-index-tsx-e6e8fc2f8b3d17157b83.js","mappings":"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","sources":["webpack://garfield-lee-resume/./node_modules/@carbon/icon-helpers/es/index.js","webpack://garfield-lee-resume/./node_modules/@carbon/icons-react/es/Icon-9ecdf98c.js","webpack://garfield-lee-resume/./src/components/card/index.tsx","webpack://garfield-lee-resume/./src/components/educational-info/index.tsx","webpack://garfield-lee-resume/./src/components/rate/index.tsx","webpack://garfield-lee-resume/./src/components/experience-rate/index.tsx","webpack://garfield-lee-resume/./src/components/footer/index.tsx","webpack://garfield-lee-resume/./src/components/grid/index.tsx","webpack://garfield-lee-resume/./src/components/grid/row.tsx","webpack://garfield-lee-resume/./src/components/grid/column.tsx","webpack://garfield-lee-resume/./src/components/info/index.tsx","webpack://garfield-lee-resume/./src/components/work-info/index.tsx","webpack://garfield-lee-resume/./src/components/job-info/index.tsx","webpack://garfield-lee-resume/./src/components/project-info/index.tsx","webpack://garfield-lee-resume/./src/pages/index.tsx"],"sourcesContent":["function ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n return keys;\n}\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n return target;\n}\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\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 return target;\n}\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = _objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n}\nvar _excluded = [\"width\", \"height\", \"viewBox\"],\n _excluded2 = [\"tabindex\"];\n\n/**\n * Copyright IBM Corp. 2018, 2018\n *\n * This source code is licensed under the Apache-2.0 license found in the\n * LICENSE file in the root directory of this source tree.\n */\nvar defaultAttributes = {\n // Reference:\n // https://github.com/IBM/carbon-components-react/issues/1392\n // https://github.com/PolymerElements/iron-iconset-svg/pull/47\n // `focusable` is a string attribute which is why we do not use a boolean here\n focusable: 'false',\n preserveAspectRatio: 'xMidYMid meet'\n};\n/**\n * Get supplementary HTML attributes for a given element based on existing\n * attributes.\n */\n\nfunction getAttributes() {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n width = _ref.width,\n height = _ref.height,\n _ref$viewBox = _ref.viewBox,\n viewBox = _ref$viewBox === void 0 ? \"0 0 \".concat(width, \" \").concat(height) : _ref$viewBox,\n attributes = _objectWithoutProperties(_ref, _excluded);\n var tabindex = attributes.tabindex,\n rest = _objectWithoutProperties(attributes, _excluded2);\n var iconAttributes = _objectSpread2(_objectSpread2(_objectSpread2({}, defaultAttributes), rest), {}, {\n width: width,\n height: height,\n viewBox: viewBox\n }); // TODO: attributes.title assumes that the consumer will implement and\n // correctly set `aria-labelledby`.\n\n if (iconAttributes['aria-label'] || iconAttributes['aria-labelledby'] || iconAttributes.title) {\n iconAttributes.role = 'img'; // Reference:\n // https://allyjs.io/tutorials/focusing-in-svg.html\n\n if (tabindex !== undefined && tabindex !== null) {\n iconAttributes.focusable = 'true';\n iconAttributes.tabindex = tabindex;\n }\n } else {\n iconAttributes['aria-hidden'] = true;\n }\n return iconAttributes;\n}\n\n/**\n * Copyright IBM Corp. 2018, 2018\n *\n * This source code is licensed under the Apache-2.0 license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/**\n * Convert an icon descriptor to a String\n */\n\nfunction toString(descriptor) {\n var _descriptor$elem = descriptor.elem,\n elem = _descriptor$elem === void 0 ? 'svg' : _descriptor$elem,\n _descriptor$attrs = descriptor.attrs,\n attrs = _descriptor$attrs === void 0 ? {} : _descriptor$attrs,\n _descriptor$content = descriptor.content,\n content = _descriptor$content === void 0 ? [] : _descriptor$content;\n var children = content.map(toString).join('');\n if (elem !== 'svg') {\n return \"<\".concat(elem, \" \").concat(formatAttributes(attrs), \">\").concat(children, \"\");\n }\n return \"<\".concat(elem, \" \").concat(formatAttributes(getAttributes(attrs)), \">\").concat(children, \"\");\n}\nfunction formatAttributes(attrs) {\n return Object.keys(attrs).reduce(function (acc, key, index) {\n var attribute = \"\".concat(key, \"=\\\"\").concat(attrs[key], \"\\\"\");\n if (index === 0) {\n return attribute;\n }\n return acc + ' ' + attribute;\n }, '');\n}\n\n/**\n * Copyright IBM Corp. 2018, 2018\n *\n * This source code is licensed under the Apache-2.0 license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/**\n * Convert an icon descriptor to a DOM node.\n */\n\nfunction toSVG(descriptor) {\n var _descriptor$elem = descriptor.elem,\n elem = _descriptor$elem === void 0 ? 'svg' : _descriptor$elem,\n _descriptor$attrs = descriptor.attrs,\n attrs = _descriptor$attrs === void 0 ? {} : _descriptor$attrs,\n _descriptor$content = descriptor.content,\n content = _descriptor$content === void 0 ? [] : _descriptor$content;\n var node = document.createElementNS('http://www.w3.org/2000/svg', elem);\n var attributes = elem !== 'svg' ? attrs : getAttributes(attrs);\n Object.keys(attributes).forEach(function (key) {\n node.setAttribute(key, attrs[key]);\n });\n for (var i = 0; i < content.length; i++) {\n node.appendChild(toSVG(content[i]));\n }\n return node;\n}\nexport { defaultAttributes, formatAttributes, getAttributes, toSVG, toString };","/**\n * Copyright IBM Corp. 2019, 2020\n *\n * This source code is licensed under the Apache-2.0 license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * Code generated by @carbon/icon-build-helpers. DO NOT EDIT.\n */\nimport { getAttributes } from '@carbon/icon-helpers';\nimport React from 'react';\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n return keys;\n}\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n return target;\n}\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\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 return target;\n}\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = _objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n}\nvar _excluded = [\"className\", \"children\", \"tabIndex\"],\n _excluded2 = [\"tabindex\"];\nvar Icon = /*#__PURE__*/React.forwardRef(function Icon(_ref, ref) {\n var className = _ref.className,\n children = _ref.children,\n tabIndex = _ref.tabIndex,\n rest = _objectWithoutProperties(_ref, _excluded);\n var _getAttributes = getAttributes(_objectSpread2(_objectSpread2({}, rest), {}, {\n tabindex: tabIndex\n })),\n tabindex = _getAttributes.tabindex,\n props = _objectWithoutProperties(_getAttributes, _excluded2);\n if (className) {\n props.className = className;\n }\n if (tabindex !== undefined && tabindex !== null) {\n props.tabIndex = tabindex;\n }\n if (ref) {\n props.ref = ref;\n }\n return /*#__PURE__*/React.createElement('svg', props, children);\n});\nIcon.displayName = 'Icon';\nIcon.defaultProps = {\n xmlns: 'http://www.w3.org/2000/svg',\n preserveAspectRatio: 'xMidYMid meet'\n};\nexport { Icon as I, _objectWithoutProperties as _, _extends as a };","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\n\nimport '../../styles/card.scss';\n\ninterface CardProps {\n className?: string;\n children?: React.ReactNode;\n /** Card title */\n title: string;\n /** Card caption/subtitle */\n caption?: string;\n /**\n * Use small card\n * @default false\n */\n small?: boolean;\n}\n\nconst Card: React.FC = ({\n className,\n children,\n title,\n caption,\n small = false,\n}) => {\n const cardClass = classNames('re--card', className);\n const cardTitleClass = classNames('re--card-title--heading-clip', {\n 're--card-title--productive-heading': title && caption,\n 're--card-title--heading': title && !caption,\n });\n const cardTitleSmallClass = classNames('re--card-title--heading-clip', {\n 're--card-title--productive-heading-small': title,\n });\n const cardCaptionClass = classNames({\n 're--card-title--caption': caption && !small,\n 're--card-title--caption-small': caption && small,\n });\n return (\n
\n
\n {caption && !small &&

{caption}

}\n

\n {title}\n

\n {caption && small &&

{caption}

}\n
\n
{children}
\n
\n );\n};\n\nCard.defaultProps = {\n small: false,\n};\n\nCard.propTypes = {\n className: PropTypes.string,\n children: PropTypes.node,\n title: PropTypes.string.isRequired,\n caption: PropTypes.string,\n small: PropTypes.bool,\n};\n\nexport default Card;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\n\nimport '../../styles/educational-info.scss';\n\ninterface EducationalInfoProps {\n className?: string;\n name: string;\n grade: string;\n major: string;\n minor?: string;\n startTime: string;\n endTime?: string;\n desc?: string;\n}\n\nconst EducationalInfo: React.FC = ({\n className,\n name,\n grade,\n major,\n minor = '',\n startTime,\n endTime = '在读',\n desc = '',\n}) => {\n const rootClass = classNames('re--educational-info', className);\n return (\n
\n

{name}

\n

\n {grade}\n \n 主修:{major}\n {minor && `;辅修:${minor}`}\n \n \n {startTime}\n {endTime && ` – ${endTime}`}\n \n

\n {desc &&

{desc}

}\n
\n );\n};\n\nEducationalInfo.defaultProps = {\n minor: '',\n endTime: '在读',\n desc: '',\n};\n\nEducationalInfo.propTypes = {\n className: PropTypes.string,\n name: PropTypes.string.isRequired,\n grade: PropTypes.string.isRequired,\n major: PropTypes.string.isRequired,\n minor: PropTypes.string,\n startTime: PropTypes.string.isRequired,\n endTime: PropTypes.string,\n desc: PropTypes.string,\n};\n\nexport default EducationalInfo;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { Star16, StarFilled16 } from '@carbon/icons-react';\n\nimport '../../styles/rate.scss';\n\ninterface RateProps {\n className?: string;\n /**\n * Current rate\n * @default 0\n */\n rate?: number;\n /**\n * Max of rate\n * @default 5\n */\n max?: number;\n}\n\nconst Rate: React.FC = ({ className, rate = 0, max = 5 }) => {\n const makeArray = (value: number): number[] => {\n const array: number[] = [];\n for (let index = 0; index < value; index++) {\n array.push(index);\n }\n return array;\n };\n\n const rateArray = makeArray(rate);\n const unRateArray = makeArray(max - rate);\n\n const rootClass = classNames('re--rate', className);\n\n return (\n
\n {rateArray.length &&\n rateArray.map((key: number) => )}\n {unRateArray.length &&\n unRateArray.map((key: number) => )}\n
\n );\n};\n\nRate.defaultProps = {\n rate: 0,\n max: 5,\n};\n\nRate.propTypes = {\n className: PropTypes.string,\n rate: PropTypes.number,\n max: PropTypes.number,\n};\n\nexport default Rate;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\n\nimport Rate from '../rate';\n\nimport '../../styles/experience-rate.scss';\n\ninterface ExperienceRateProps {\n className?: string;\n /** Experience title */\n title: string;\n /**\n * Current rate\n * @default 1\n */\n rate?: number;\n /**\n * Max of rate\n * @default 5\n */\n max?: number;\n /**\n * Display experience rate description\n */\n desc?: boolean;\n}\n\nconst ExperienceRate: React.FC = ({\n className,\n title,\n rate = 1,\n max = 5,\n desc = true,\n}) => {\n const makeDescText = (level: number): string => {\n if (level > 2) return '熟悉';\n if (level > 4) return '熟练';\n return '了解';\n };\n const descText = makeDescText(rate);\n const rootClass = classNames('re--experience-rate', className);\n return (\n
\n

{title}:

\n
\n \n {desc && (\n ({descText})\n )}\n
\n
\n );\n};\n\nExperienceRate.defaultProps = {\n rate: 1,\n max: 5,\n desc: true,\n};\n\nExperienceRate.propTypes = {\n className: PropTypes.string,\n title: PropTypes.string.isRequired,\n rate: PropTypes.number,\n max: PropTypes.number,\n desc: PropTypes.bool,\n};\n\nexport default ExperienceRate;\n","import React from 'react';\nimport { useStaticQuery, graphql } from 'gatsby';\n\nimport '../../styles/footer.scss';\n\ninterface SiteMetaQueryData {\n site: {\n siteMetadata: {\n author: string;\n };\n };\n}\n\nconst Footer: React.FC = () => {\n const data: SiteMetaQueryData = useStaticQuery(\n graphql`\n query SiteMetaQuery {\n site {\n siteMetadata {\n author\n }\n }\n }\n `\n );\n\n const year = new Date().getFullYear();\n const author = data.site.siteMetadata.author;\n return (\n
\n © {year} {author}, Built with{' '}\n \n Carbon Design System\n {' '}\n and{' '}\n \n Gatsby\n \n , hosted on{' '}\n \n GitHub Pages\n \n .\n
\n );\n};\n\nexport default Footer;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\n\ninterface GridProps {\n className?: string;\n children?: React.ReactNode;\n /**\n * Enable condensed grid\n * @default false\n */\n condensed?: boolean;\n}\n\nconst Grid: React.FC = ({\n className,\n children,\n condensed = false,\n}) => {\n return (\n \n {children}\n \n );\n};\n\nGrid.defaultProps = {\n condensed: false,\n};\n\nGrid.propTypes = {\n className: PropTypes.string,\n children: PropTypes.node,\n condensed: PropTypes.bool,\n};\n\nexport default Grid;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\n\ninterface RowProps {\n className?: string;\n children?: React.ReactNode;\n /**\n * Enable condensed row\n * @default false\n */\n condensed?: boolean;\n /**\n * Specify a no-gutter class\n * @default false\n */\n noGutter?: boolean;\n /**\n * Specify a no-gutter-left class\n * @default false\n */\n noGutterLeft?: boolean;\n /**\n * Specify a no-gutter-right class\n * @default false\n */\n noGutterRight?: boolean;\n}\n\nconst Row: React.FC = ({\n className,\n children,\n condensed = false,\n noGutter = false,\n noGutterLeft = false,\n noGutterRight = false,\n}) => {\n return (\n \n {children}\n \n );\n};\n\nRow.defaultProps = {\n condensed: false,\n noGutter: false,\n noGutterLeft: false,\n noGutterRight: false,\n};\n\nRow.propTypes = {\n className: PropTypes.string,\n children: PropTypes.node,\n condensed: PropTypes.bool,\n noGutter: PropTypes.bool,\n noGutterLeft: PropTypes.bool,\n noGutterRight: PropTypes.bool,\n};\n\nexport default Row;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\n\ntype ColumnBreakpointKeys = {\n sm: 'sm';\n md: 'md';\n lg: 'lg';\n xl: 'xl';\n max: 'max';\n};\nexport type NoGutterClass = {\n [key in keyof ColumnBreakpointKeys]?: boolean;\n};\nexport type NoGutterLeftClass = {\n [key in keyof ColumnBreakpointKeys]?: boolean;\n};\nexport type OffsetClass = {\n [key in keyof ColumnBreakpointKeys]?: number | null;\n};\nexport type ColumnClass = {\n [key in keyof ColumnBreakpointKeys]?: number | null;\n};\n\ninterface ColumnProps {\n className?: string;\n children?: React.ReactNode;\n /** Specify the col offset */\n offset?: OffsetClass;\n /** Specify the col width */\n column?: ColumnClass;\n /**\n * Specify a no-gutter class\n * @default false\n */\n noGutter?: boolean;\n /**\n * Specify a no-gutter-left class\n * @default false\n */\n noGutterLeft?: boolean;\n /**\n * Specify a no-gutter-right class\n * @default false\n */\n noGutterRight?: boolean;\n}\n\nconst Column: React.FC = ({\n className,\n children,\n offset,\n column,\n noGutter = false,\n noGutterLeft = false,\n noGutterRight = false,\n}) => {\n const noGutterClass = {\n 'bx--no-gutter': noGutter,\n };\n const noGutterLeftClass = {\n 'bx--no-gutter--left': noGutterLeft,\n };\n const noGutterRightClass = {\n 'bx--no-gutter--right': noGutterRight,\n };\n const offsetClass = offset && {\n [`bx--offset-sm-${offset.sm}`]: offset.sm,\n [`bx--offset-md-${offset.md}`]: offset.md,\n [`bx--offset-lg-${offset.lg}`]: offset.lg,\n [`bx--offset-xl-${offset.xl}`]: offset.xl,\n [`bx--offset-max-${offset.max}`]: offset.max,\n };\n const defaultColumnClass = {\n 'bx--col': true,\n };\n const columnClass = column\n ? {\n [`bx--col-sm-${column.sm}`]: column.sm,\n [`bx--col-md-${column.md}`]: column.md,\n [`bx--col-lg-${column.lg}`]: column.lg,\n [`bx--col-xl-${column.xl}`]: column.xl,\n [`bx--col-lg-${column.max}`]: column.max,\n }\n : defaultColumnClass;\n const colClass = classNames(\n {\n ...columnClass,\n ...offsetClass,\n ...noGutterClass,\n ...noGutterLeftClass,\n ...noGutterRightClass,\n },\n className\n );\n\n return
{children}
;\n};\n\nColumn.defaultProps = {\n noGutter: false,\n noGutterLeft: false,\n noGutterRight: false,\n};\n\nColumn.propTypes = {\n className: PropTypes.string,\n children: PropTypes.node,\n offset: PropTypes.shape({\n sm: PropTypes.number,\n md: PropTypes.number,\n lg: PropTypes.number,\n xl: PropTypes.number,\n max: PropTypes.number,\n }),\n column: PropTypes.shape({\n sm: PropTypes.number,\n md: PropTypes.number,\n lg: PropTypes.number,\n xl: PropTypes.number,\n max: PropTypes.number,\n }),\n noGutter: PropTypes.bool,\n noGutterLeft: PropTypes.bool,\n noGutterRight: PropTypes.bool,\n};\n\nexport default Column;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\n\nimport '../../styles/info-bar.scss';\n\ninterface InfoProps {\n className?: string;\n children?: React.ReactNode;\n /** Info title */\n title: string;\n /** Info content */\n content?: string;\n /** Content link */\n href?: string;\n /**\n * Is external link\n * @default false\n */\n isExternal?: boolean;\n}\n\nconst Info: React.FC = ({\n className,\n children,\n title,\n content,\n href = '',\n isExternal = false,\n}) => {\n const rootClass = classNames('re--info-bar', className);\n const hasLink = content && !!href;\n return (\n
\n {children}\n

{title}:

\n {!hasLink && {content}}\n {hasLink && isExternal && (\n \n {content}\n \n )}\n {hasLink && !isExternal && (\n \n {content}\n \n )}\n
\n );\n};\n\nInfo.defaultProps = {\n href: '',\n isExternal: false,\n};\n\nInfo.propTypes = {\n className: PropTypes.string,\n children: PropTypes.node,\n title: PropTypes.string.isRequired,\n content: PropTypes.string,\n href: PropTypes.string,\n isExternal: PropTypes.bool,\n};\n\nexport default Info;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\n\nimport '../../styles/work-info.scss';\n\nexport interface WorkInfoProps {\n className?: string;\n name: string;\n desc?: string | null;\n}\n\nconst WorkInfo: React.FC = ({ className, name, desc = '' }) => {\n const rootClass = classNames('re--work-info', className);\n return (\n
\n

{name}

\n {desc &&

{desc}

}\n
\n );\n};\n\nWorkInfo.defaultProps = {\n desc: '',\n};\n\nWorkInfo.propTypes = {\n className: PropTypes.string,\n name: PropTypes.string.isRequired,\n desc: PropTypes.string,\n};\n\nexport default WorkInfo;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\n\nimport WorkInfo, { WorkInfoProps } from '../work-info';\n\nimport '../../styles/job-info.scss';\n\nexport interface JobInfoProps {\n className?: string;\n title: string;\n desc?: string;\n startTime?: string;\n endTime?: string;\n workInfo?: Array>;\n}\n\nconst JobInfo: React.FC = ({\n className,\n title,\n desc = '',\n startTime = '',\n endTime = '至今',\n workInfo = [],\n}) => {\n const rootClass = classNames('re--job-info', className);\n return (\n
\n
\n

{title}

\n

\n {desc}\n {startTime && (\n \n {startTime} – {endTime}\n \n )}\n

\n
\n {workInfo && (\n
\n {workInfo.map(\n (work: Omit, index: number) => {\n return (\n \n );\n }\n )}\n
\n )}\n
\n );\n};\n\nJobInfo.defaultProps = {\n desc: '',\n startTime: '',\n endTime: '至今',\n workInfo: [],\n};\n\nJobInfo.propTypes = {\n className: PropTypes.string,\n title: PropTypes.string.isRequired,\n desc: PropTypes.string,\n startTime: PropTypes.string,\n endTime: PropTypes.string,\n workInfo: PropTypes.arrayOf(\n PropTypes.shape({\n name: PropTypes.string.isRequired,\n desc: PropTypes.string,\n }).isRequired\n ),\n};\n\nexport default JobInfo;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\n\nimport '../../styles/project-info.scss';\n\ninterface ProjectInfoProps {\n className?: string;\n children?: React.ReactNode;\n name: string;\n href?: string;\n desc?: string;\n}\n\nconst ProjectInfo: React.FC = ({\n className,\n children,\n name,\n href = '',\n desc = '',\n}) => {\n const rootClass = classNames('re--project-info', className);\n return (\n
\n {href && (\n \n {name}\n \n )}\n {!href &&

{name}

}\n {(desc || children) && (\n

\n {desc}\n {children}\n

\n )}\n
\n );\n};\n\nProjectInfo.defaultProps = {\n href: '',\n desc: '',\n};\n\nProjectInfo.propTypes = {\n className: PropTypes.string,\n children: PropTypes.node,\n name: PropTypes.string.isRequired,\n href: PropTypes.string,\n desc: PropTypes.string,\n};\n\nexport default ProjectInfo;\n","import React from 'react';\n\nimport {\n Identification16,\n Education16,\n FaceCool16,\n Enterprise16,\n Location16,\n Email16,\n Chat16,\n LogoGithub16,\n LogoLinkedin16,\n} from '@carbon/icons-react';\n\nimport {\n Layout,\n SEO,\n Grid,\n Row,\n Column,\n Card,\n Info,\n ExperienceRate,\n Footer,\n JobInfo,\n ProjectInfo,\n EducationalInfo,\n} from '../components';\n\nimport { JobInfoProps } from '../components/job-info';\n\nexport default class IndexPage extends React.Component {\n public render(): JSX.Element {\n const jobInfo: JobInfoProps[] = [\n {\n title: '上海哈益信息科技有限公司',\n desc: '前端开发工程师',\n startTime: '2018 年 11 月',\n workInfo: [\n {\n name: '春晖博爱基金会官网(二期)',\n desc: `春晖博爱(全称春晖博爱儿童救助公益基金会)的官网。由于一期存在手机展示效果差,页面结构混乱和无用资源加载多等问题,对网站进行了重构。使用了 Bootstrap 4 + jQuery 3 作为基础框架,抛弃了对 IE 全版本的兼容,布局大量使用了 flex。由于 OctoberCMS 存在缺陷,使用 Webpack + SCSS + PostCSS + TypeScript 进行样式和脚本的开发,解决了脚本与样式的兼容问题和代码压缩。引入了 PDF.js,使手机浏览器可以在线查看 PDF 文件。`,\n },\n {\n name: '佳得乐俱乐部微信小程序',\n desc: `百事旗下品牌佳得乐运动饮料的会员微信小程序,核心功能包含个人中心,运动打卡,积分商城,积分抽奖,推广新闻等。抛弃了 WePY + Vue 语法,采用了 Taro + React 语法,使用 TypeScript 开发,样式预处理语言从 LESS 切换到 SCSS,使用 MobX 做状态管理,大部分的 API 调用使用了 async-await。`,\n },\n {\n name: '哈公益行动加(+)微信小程序',\n desc: `行动+是公司开发的自有小程序。在工作中负责打卡模块的开发,初次接触微信小程序开发,使用了 WePY 和 LESS,并对已有的答题和捐步两个模块进行了 async-await 优化。`,\n },\n {\n name: '普陀疾控中心艾滋检查活动结果查询页',\n desc: '艾滋检查活动的手机版查询页,使用了 React.js,Axios 和 SCSS。',\n },\n ],\n },\n {\n title: '福州市嘀哩科技有限公司',\n desc: '开发实习生',\n startTime: '2017 年 8 月',\n endTime: '2018 年 2 月',\n workInfo: [\n {\n name: '图片反向代理',\n desc: '使用 .NET Core 和 C# 开发,运行良好。',\n },\n ],\n },\n ];\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {jobInfo.map((job: JobInfoProps, index: number) => {\n return (\n \n );\n })}\n \n \n \n 在使用 Carbon-Components-React\n 时发现部分组件缺少类型定义,便向 DefinitelyTyped\n 提交了修补代码。\n \n \n Taro 是由京东凹凸实验室开发的多端统一开发框架。自使用 Taro\n 开发以来,多次为 Taro\n 项目修复问题,完善文档,并积极帮助他人解决问题。\n \n \n Taro UI 是一款基于 Taro 框架开发的多端 UI 组件库。由于在 Taro\n 社区积极贡献,被邀请加入 Taro UI 项目进行日常维护和功能更新。\n \n \n MvvmCross 是一款使用 C# 编写的跨平台 MVVM 框架,几乎横跨所有\n .Net 开发平台。2017\n 年接触该框架时,由于其文档站显示效果不佳,移动设备布局混乱,便主动为他们重构了\n \n 首页和文档站\n \n ,后续又为他们构建了{' '}\n \n Hackfest 2017 活动宣传页\n \n 。\n \n \n AOSC OS 是由一群国内年轻 Linux 开发者创造的 GNU/Linux\n 发行版,主打开发者友好和旧设备兼容。我为他们维护过一段时间的软件包更新。\n \n \n WeCase 是一款 Linux 下易用的微博客户端(2017\n 年已停止开发)。我为他们的官网贡献过代码。\n \n \n \n \n \n \n \n \n \n