diff --git a/.gitignore b/.gitignore deleted file mode 100644 index e86fe2555..000000000 --- a/.gitignore +++ /dev/null @@ -1,69 +0,0 @@ -# Logs -logs -*.log -npm-debug.log* -yarn-debug.log* -yarn-error.log* - -# Runtime data -pids -*.pid -*.seed -*.pid.lock - -# Directory for instrumented libs generated by jscoverage/JSCover -lib-cov - -# Coverage directory used by tools like istanbul -coverage - -# nyc test coverage -.nyc_output - -# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) -.grunt - -# Bower dependency directory (https://bower.io/) -bower_components - -# node-waf configuration -.lock-wscript - -# Compiled binary addons (http://nodejs.org/api/addons.html) -build/Release - -# Dependency directories -node_modules/ -jspm_packages/ - -# Typescript v1 declaration files -typings/ - -# Optional npm cache directory -.npm - -# Optional eslint cache -.eslintcache - -# Optional REPL history -.node_repl_history - -# Output of 'npm pack' -*.tgz - -# dotenv environment variables file -.env - -# gatsby files -.cache/ -public - -# Mac files -.DS_Store - -# Yarn -yarn-error.log -.pnp/ -.pnp.js -# Yarn Integrity file -.yarn-integrity diff --git a/.prettierrc b/.prettierrc deleted file mode 100644 index c3e03287b..000000000 --- a/.prettierrc +++ /dev/null @@ -1,5 +0,0 @@ -{ - "semi": true, - "singleQuote": true, - "trailingComma": "es5" -} diff --git a/0-27588bdd360c40424e29.js b/0-27588bdd360c40424e29.js new file mode 100644 index 000000000..35d159449 --- /dev/null +++ b/0-27588bdd360c40424e29.js @@ -0,0 +1,2 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[0],{148:function(e,t){e.exports=function(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}},150:function(e,t,n){"use strict";var r=n(8);t.__esModule=!0,t.withPrefix=T,t.navigateTo=t.replace=t.push=t.navigate=t.default=void 0;var o=r(n(148)),i=r(n(454)),a=r(n(6)),u=r(n(51)),c=r(n(52)),s=r(n(4)),l=r(n(0)),f=n(19),p=n(146);function T(e){return function(e){return e.replace(/\/+/g,"/")}("/"+e)}var d={activeClassName:s.default.string,activeStyle:s.default.object},E=function(e){function t(t){var n;n=e.call(this)||this,(0,c.default)((0,u.default)((0,u.default)(n)),"defaultGetProps",function(e){return e.isCurrent?{className:[n.props.className,n.props.activeClassName].filter(Boolean).join(" "),style:(0,i.default)({},n.props.style,n.props.activeStyle)}:null});var r=!1;return"undefined"!=typeof window&&window.IntersectionObserver&&(r=!0),n.state={IOSupported:r},n.handleRef=n.handleRef.bind((0,u.default)((0,u.default)(n))),n}(0,a.default)(t,e);var n=t.prototype;return n.componentDidUpdate=function(e,t){this.props.to===e.to||this.state.IOSupported||___loader.enqueue((0,p.parsePath)(this.props.to).pathname)},n.componentDidMount=function(){this.state.IOSupported||___loader.enqueue((0,p.parsePath)(this.props.to).pathname)},n.handleRef=function(e){var t,n,r,o=this;this.props.innerRef&&this.props.innerRef(e),this.state.IOSupported&&e&&(t=e,n=function(){___loader.enqueue((0,p.parsePath)(o.props.to).pathname)},(r=new window.IntersectionObserver(function(e){e.forEach(function(e){t===e.target&&(e.isIntersecting||e.intersectionRatio>0)&&(r.unobserve(t),r.disconnect(),n())})})).observe(t))},n.render=function(){var e=this,t=this.props,n=t.to,r=t.getProps,a=void 0===r?this.defaultGetProps:r,u=t.onClick,c=t.onMouseEnter,s=(t.activeClassName,t.activeStyle,t.ref,t.innerRef,t.state),d=t.replace,E=(0,o.default)(t,["to","getProps","onClick","onMouseEnter","activeClassName","activeStyle","ref","innerRef","state","replace"]),h=T(n);return l.default.createElement(f.Link,(0,i.default)({to:h,state:s,getProps:a,innerRef:this.handleRef,onMouseEnter:function(e){c&&c(e),___loader.hovering((0,p.parsePath)(n).pathname)},onClick:function(t){return u&&u(t),0!==t.button||e.props.target||t.defaultPrevented||t.metaKey||t.altKey||t.ctrlKey||t.shiftKey||(t.preventDefault(),A(n,{state:s,replace:d})),!0}},E))},t}(l.default.Component);E.propTypes=(0,i.default)({},d,{innerRef:s.default.func,onClick:s.default.func,to:s.default.string.isRequired,replace:s.default.bool});var h=E;t.default=h;var A=function(e,t){window.___navigate(T(e),t)};t.navigate=A;var y=function(e){console.warn('The "push" method is now deprecated and will be removed in Gatsby v3. Please use "navigate" instead.'),window.___push(T(e))};t.push=y;t.replace=function(e){console.warn('The "replace" method is now deprecated and will be removed in Gatsby v3. Please use "navigate" instead.'),window.___replace(T(e))};t.navigateTo=function(e){return console.warn('The "navigateTo" method is now deprecated and will be removed in Gatsby v3. Please use "navigate" instead.'),y(e)}},245:function(e,t,n){"use strict";n(294)("bold",function(e){return function(){return e(this,"b","","")}})},246:function(e,t,n){"use strict";n(294)("small",function(e){return function(){return e(this,"small","","")}})},292:function(e,t,n){(function(e){function n(e,t){for(var n=0,r=e.length-1;r>=0;r--){var o=e[r];"."===o?e.splice(r,1):".."===o?(e.splice(r,1),n++):n&&(e.splice(r,1),n--)}if(t)for(;n--;n)e.unshift("..");return e}var r=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/,o=function(e){return r.exec(e).slice(1)};function i(e,t){if(e.filter)return e.filter(t);for(var n=[],r=0;r=-1&&!r;o--){var a=o>=0?arguments[o]:e.cwd();if("string"!=typeof a)throw new TypeError("Arguments to path.resolve must be strings");a&&(t=a+"/"+t,r="/"===a.charAt(0))}return(r?"/":"")+(t=n(i(t.split("/"),function(e){return!!e}),!r).join("/"))||"."},t.normalize=function(e){var r=t.isAbsolute(e),o="/"===a(e,-1);return(e=n(i(e.split("/"),function(e){return!!e}),!r).join("/"))||r||(e="."),e&&o&&(e+="/"),(r?"/":"")+e},t.isAbsolute=function(e){return"/"===e.charAt(0)},t.join=function(){var e=Array.prototype.slice.call(arguments,0);return t.normalize(i(e,function(e,t){if("string"!=typeof e)throw new TypeError("Arguments to path.join must be strings");return e}).join("/"))},t.relative=function(e,n){function r(e){for(var t=0;t=0&&""===e[n];n--);return t>n?[]:e.slice(t,n-t+1)}e=t.resolve(e).substr(1),n=t.resolve(n).substr(1);for(var o=r(e.split("/")),i=r(n.split("/")),a=Math.min(o.length,i.length),u=a,c=0;c"+o+""};e.exports=function(e,t){var n={};n[e]=t(u),r(r.P+r.F*o(function(){var t=""[e]('"');return t!==t.toLowerCase()||t.split('"').length>3}),"String",n)}},322:function(e,t,n){t.__esModule=!0,t.Helmet=void 0;var r=Object.assign||function(e){for(var t=1;t=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}var T,d,E,h=(0,u.default)(s.reducePropsToState,s.handleClientStateChange,s.mapStateOnServer)(function(){return null}),A=(T=h,E=d=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.apply(this,arguments))}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),t.prototype.shouldComponentUpdate=function(e){return!(0,c.default)(this.props,e)},t.prototype.mapNestedChildrenToProps=function(e,t){if(!t)return null;switch(e.type){case l.TAG_NAMES.SCRIPT:case l.TAG_NAMES.NOSCRIPT:return{innerHTML:t};case l.TAG_NAMES.STYLE:return{cssText:t}}throw new Error("<"+e.type+" /> elements are self-closing and can not contain children. Refer to our API for more information.")},t.prototype.flattenArrayTypeChildren=function(e){var t,n=e.child,o=e.arrayTypeChildren,i=e.newChildProps,a=e.nestedChildren;return r({},o,((t={})[n.type]=[].concat(o[n.type]||[],[r({},i,this.mapNestedChildrenToProps(n,a))]),t))},t.prototype.mapObjectTypeChildren=function(e){var t,n,o=e.child,i=e.newProps,a=e.newChildProps,u=e.nestedChildren;switch(o.type){case l.TAG_NAMES.TITLE:return r({},i,((t={})[o.type]=u,t.titleAttributes=r({},a),t));case l.TAG_NAMES.BODY:return r({},i,{bodyAttributes:r({},a)});case l.TAG_NAMES.HTML:return r({},i,{htmlAttributes:r({},a)})}return r({},i,((n={})[o.type]=r({},a),n))},t.prototype.mapArrayTypeChildrenToProps=function(e,t){var n=r({},t);return Object.keys(e).forEach(function(t){var o;n=r({},n,((o={})[t]=e[t],o))}),n},t.prototype.warnOnInvalidChildren=function(e,t){return!0},t.prototype.mapChildrenToProps=function(e,t){var n=this,r={};return i.default.Children.forEach(e,function(e){if(e&&e.props){var o=e.props,i=o.children,a=p(o,["children"]),u=(0,s.convertReactPropstoHtmlAttributes)(a);switch(n.warnOnInvalidChildren(e,i),e.type){case l.TAG_NAMES.LINK:case l.TAG_NAMES.META:case l.TAG_NAMES.NOSCRIPT:case l.TAG_NAMES.SCRIPT:case l.TAG_NAMES.STYLE:r=n.flattenArrayTypeChildren({child:e,arrayTypeChildren:r,newChildProps:u,nestedChildren:i});break;default:t=n.mapObjectTypeChildren({child:e,newProps:t,newChildProps:u,nestedChildren:i})}}}),t=this.mapArrayTypeChildrenToProps(r,t)},t.prototype.render=function(){var e=this.props,t=e.children,n=p(e,["children"]),o=r({},n);return t&&(o=this.mapChildrenToProps(t,o)),i.default.createElement(T,o)},o(t,null,[{key:"canUseDOM",set:function(e){T.canUseDOM=e}}]),t}(i.default.Component),d.propTypes={base:a.default.object,bodyAttributes:a.default.object,children:a.default.oneOfType([a.default.arrayOf(a.default.node),a.default.node]),defaultTitle:a.default.string,defer:a.default.bool,encodeSpecialCharacters:a.default.bool,htmlAttributes:a.default.object,link:a.default.arrayOf(a.default.object),meta:a.default.arrayOf(a.default.object),noscript:a.default.arrayOf(a.default.object),onChangeClientState:a.default.func,script:a.default.arrayOf(a.default.object),style:a.default.arrayOf(a.default.object),title:a.default.string,titleAttributes:a.default.object,titleTemplate:a.default.string},d.defaultProps={defer:!0,encodeSpecialCharacters:!0},d.peek=T.peek,d.rewind=function(){var e=T.rewind();return e||(e=(0,s.mapStateOnServer)({baseTag:[],bodyAttributes:{},encodeSpecialCharacters:!0,htmlAttributes:{},linkTags:[],metaTags:[],noscriptTags:[],scriptTags:[],styleTags:[],title:"",titleAttributes:{}})),e},E);A.renderStatic=A.rewind,t.Helmet=A,t.default=A},441:function(e,t){t.__esModule=!0;t.ATTRIBUTE_NAMES={BODY:"bodyAttributes",HTML:"htmlAttributes",TITLE:"titleAttributes"};var n=t.TAG_NAMES={BASE:"base",BODY:"body",HEAD:"head",HTML:"html",LINK:"link",META:"meta",NOSCRIPT:"noscript",SCRIPT:"script",STYLE:"style",TITLE:"title"},r=(t.VALID_TAG_NAMES=Object.keys(n).map(function(e){return n[e]}),t.TAG_PROPERTIES={CHARSET:"charset",CSS_TEXT:"cssText",HREF:"href",HTTPEQUIV:"http-equiv",INNER_HTML:"innerHTML",ITEM_PROP:"itemprop",NAME:"name",PROPERTY:"property",REL:"rel",SRC:"src"},t.REACT_TAG_MAP={accesskey:"accessKey",charset:"charSet",class:"className",contenteditable:"contentEditable",contextmenu:"contextMenu","http-equiv":"httpEquiv",itemprop:"itemProp",tabindex:"tabIndex"});t.HELMET_PROPS={DEFAULT_TITLE:"defaultTitle",DEFER:"defer",ENCODE_SPECIAL_CHARACTERS:"encodeSpecialCharacters",ON_CHANGE_CLIENT_STATE:"onChangeClientState",TITLE_TEMPLATE:"titleTemplate"},t.HTML_TAG_MAP=Object.keys(r).reduce(function(e,t){return e[r[t]]=t,e},{}),t.SELF_CLOSING_TAGS=[n.NOSCRIPT,n.SCRIPT,n.STYLE],t.HELMET_ATTRIBUTE="data-react-helmet"},442:function(e,t){var n,r,o=e.exports={};function i(){throw new Error("setTimeout has not been defined")}function a(){throw new Error("clearTimeout has not been defined")}function u(e){if(n===setTimeout)return setTimeout(e,0);if((n===i||!n)&&setTimeout)return n=setTimeout,setTimeout(e,0);try{return n(e,0)}catch(t){try{return n.call(null,e,0)}catch(t){return n.call(this,e,0)}}}!function(){try{n="function"==typeof setTimeout?setTimeout:i}catch(e){n=i}try{r="function"==typeof clearTimeout?clearTimeout:a}catch(e){r=a}}();var c,s=[],l=!1,f=-1;function p(){l&&c&&(l=!1,c.length?s=c.concat(s):f=-1,s.length&&T())}function T(){if(!l){var e=u(p);l=!0;for(var t=s.length;t;){for(c=s,s=[];++f1)for(var n=1;n=0;s--)if(f[s]!=p[s])return!1;for(s=f.length-1;s>=0;s--)if(l=f[s],!a(e[l],t[l],n))return!1;return typeof e==typeof t}(e,t,n))};function u(e){return null==e}function c(e){return!(!e||"object"!=typeof e||"number"!=typeof e.length)&&("function"==typeof e.copy&&"function"==typeof e.slice&&!(e.length>0&&"number"!=typeof e[0]))}},599:function(e,t){function n(e){var t=[];for(var n in e)t.push(n);return t}(e.exports="function"==typeof Object.keys?Object.keys:n).shim=n},600:function(e,t){var n="[object Arguments]"==function(){return Object.prototype.toString.call(arguments)}();function r(e){return"[object Arguments]"==Object.prototype.toString.call(e)}function o(e){return e&&"object"==typeof e&&"number"==typeof e.length&&Object.prototype.hasOwnProperty.call(e,"callee")&&!Object.prototype.propertyIsEnumerable.call(e,"callee")||!1}(t=e.exports=n?r:o).supported=r,t.unsupported=o},601:function(e,t,n){(function(e){t.__esModule=!0,t.warn=t.requestAnimationFrame=t.reducePropsToState=t.mapStateOnServer=t.handleClientStateChange=t.convertReactPropstoHtmlAttributes=void 0;var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},o=Object.assign||function(e){for(var t=1;t1&&void 0!==arguments[1])||arguments[1])?String(e):String(e).replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")},f=function(e,t){return t.filter(function(t){return void 0!==t[e]}).map(function(t){return t[e]}).reduce(function(e,t){return o({},e,t)},{})},p=function(e,t,n){var o={};return n.filter(function(t){return!!Array.isArray(t[e])||(void 0!==t[e]&&y("Helmet: "+e+' should be of type "Array". Instead found type "'+r(t[e])+'"'),!1)}).map(function(t){return t[e]}).reverse().reduce(function(e,n){var r={};n.filter(function(e){for(var n=void 0,i=Object.keys(e),a=0;a=0;n--){var r=e[n];if(r.hasOwnProperty(t))return r[t]}return null},d=(s=Date.now(),function(e){var t=Date.now();t-s>16?(s=t,e(t)):setTimeout(function(){d(e)},0)}),E=function(e){return clearTimeout(e)},h="undefined"!=typeof window?window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||d:e.requestAnimationFrame||d,A="undefined"!=typeof window?window.cancelAnimationFrame||window.webkitCancelAnimationFrame||window.mozCancelAnimationFrame||E:e.cancelAnimationFrame||E,y=function(e){return console&&"function"==typeof console.warn&&console.warn(e)},v=null,b=function(e,t){var n=e.baseTag,r=e.bodyAttributes,o=e.htmlAttributes,i=e.linkTags,a=e.metaTags,c=e.noscriptTags,s=e.onChangeClientState,l=e.scriptTags,f=e.styleTags,p=e.title,T=e.titleAttributes;_(u.TAG_NAMES.BODY,r),_(u.TAG_NAMES.HTML,o),S(p,T);var d={baseTag:g(u.TAG_NAMES.BASE,n),linkTags:g(u.TAG_NAMES.LINK,i),metaTags:g(u.TAG_NAMES.META,a),noscriptTags:g(u.TAG_NAMES.NOSCRIPT,c),scriptTags:g(u.TAG_NAMES.SCRIPT,l),styleTags:g(u.TAG_NAMES.STYLE,f)},E={},h={};Object.keys(d).forEach(function(e){var t=d[e],n=t.newTags,r=t.oldTags;n.length&&(E[e]=n),r.length&&(h[e]=d[e].oldTags)}),t&&t(),s(e,E,h)},m=function(e){return Array.isArray(e)?e.join(""):e},S=function(e,t){void 0!==e&&document.title!==e&&(document.title=m(e)),_(u.TAG_NAMES.TITLE,t)},_=function(e,t){var n=document.getElementsByTagName(e)[0];if(n){for(var r=n.getAttribute(u.HELMET_ATTRIBUTE),o=r?r.split(","):[],i=[].concat(o),a=Object.keys(t),c=0;c=0;p--)n.removeAttribute(i[p]);o.length===i.length?n.removeAttribute(u.HELMET_ATTRIBUTE):n.getAttribute(u.HELMET_ATTRIBUTE)!==a.join(",")&&n.setAttribute(u.HELMET_ATTRIBUTE,a.join(","))}},g=function(e,t){var n=document.head||document.querySelector(u.TAG_NAMES.HEAD),r=n.querySelectorAll(e+"["+u.HELMET_ATTRIBUTE+"]"),o=Array.prototype.slice.call(r),i=[],a=void 0;return t&&t.length&&t.forEach(function(t){var n=document.createElement(e);for(var r in t)if(t.hasOwnProperty(r))if(r===u.TAG_PROPERTIES.INNER_HTML)n.innerHTML=t.innerHTML;else if(r===u.TAG_PROPERTIES.CSS_TEXT)n.styleSheet?n.styleSheet.cssText=t.cssText:n.appendChild(document.createTextNode(t.cssText));else{var c=void 0===t[r]?"":t[r];n.setAttribute(r,c)}n.setAttribute(u.HELMET_ATTRIBUTE,"true"),o.some(function(e,t){return a=t,n.isEqualNode(e)})?o.splice(a,1):i.push(n)}),o.forEach(function(e){return e.parentNode.removeChild(e)}),i.forEach(function(e){return n.appendChild(e)}),{oldTags:o,newTags:i}},P=function(e){return Object.keys(e).reduce(function(t,n){var r=void 0!==e[n]?n+'="'+e[n]+'"':""+n;return t?t+" "+r:r},"")},w=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return Object.keys(e).reduce(function(t,n){return t[u.REACT_TAG_MAP[n]||n]=e[n],t},t)},O=function(e,t,n){switch(e){case u.TAG_NAMES.TITLE:return{toComponent:function(){return e=t.title,n=t.titleAttributes,(r={key:e})[u.HELMET_ATTRIBUTE]=!0,o=w(n,r),[i.default.createElement(u.TAG_NAMES.TITLE,o,e)];var e,n,r,o},toString:function(){return function(e,t,n,r){var o=P(n),i=m(t);return o?"<"+e+" "+u.HELMET_ATTRIBUTE+'="true" '+o+">"+l(i,r)+"":"<"+e+" "+u.HELMET_ATTRIBUTE+'="true">'+l(i,r)+""}(e,t.title,t.titleAttributes,n)}};case u.ATTRIBUTE_NAMES.BODY:case u.ATTRIBUTE_NAMES.HTML:return{toComponent:function(){return w(t)},toString:function(){return P(t)}};default:return{toComponent:function(){return function(e,t){return t.map(function(t,n){var r,o=((r={key:n})[u.HELMET_ATTRIBUTE]=!0,r);return Object.keys(t).forEach(function(e){var n=u.REACT_TAG_MAP[e]||e;if(n===u.TAG_PROPERTIES.INNER_HTML||n===u.TAG_PROPERTIES.CSS_TEXT){var r=t.innerHTML||t.cssText;o.dangerouslySetInnerHTML={__html:r}}else o[n]=t[e]}),i.default.createElement(e,o)})}(e,t)},toString:function(){return function(e,t,n){return t.reduce(function(t,r){var o=Object.keys(r).filter(function(e){return!(e===u.TAG_PROPERTIES.INNER_HTML||e===u.TAG_PROPERTIES.CSS_TEXT)}).reduce(function(e,t){var o=void 0===r[t]?t:t+'="'+l(r[t],n)+'"';return e?e+" "+o:o},""),i=r.innerHTML||r.cssText||"",a=-1===u.SELF_CLOSING_TAGS.indexOf(e);return t+"<"+e+" "+u.HELMET_ATTRIBUTE+'="true" '+o+(a?"/>":">"+i+"")},"")}(e,t,n)}}}};t.convertReactPropstoHtmlAttributes=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return Object.keys(e).reduce(function(t,n){return t[u.HTML_TAG_MAP[n]||n]=e[n],t},t)},t.handleClientStateChange=function(e){v&&A(v),e.defer?v=h(function(){b(e,function(){v=null})}):(b(e),v=null)},t.mapStateOnServer=function(e){var t=e.baseTag,n=e.bodyAttributes,r=e.encode,o=e.htmlAttributes,i=e.linkTags,a=e.metaTags,c=e.noscriptTags,s=e.scriptTags,l=e.styleTags,f=e.title,p=void 0===f?"":f,T=e.titleAttributes;return{base:O(u.TAG_NAMES.BASE,t,r),bodyAttributes:O(u.ATTRIBUTE_NAMES.BODY,n,r),htmlAttributes:O(u.ATTRIBUTE_NAMES.HTML,o,r),link:O(u.TAG_NAMES.LINK,i,r),meta:O(u.TAG_NAMES.META,a,r),noscript:O(u.TAG_NAMES.NOSCRIPT,c,r),script:O(u.TAG_NAMES.SCRIPT,s,r),style:O(u.TAG_NAMES.STYLE,l,r),title:O(u.TAG_NAMES.TITLE,{title:p,titleAttributes:T},r)}},t.reducePropsToState=function(e){return{baseTag:function(e,t){return t.filter(function(e){return void 0!==e[u.TAG_NAMES.BASE]}).map(function(e){return e[u.TAG_NAMES.BASE]}).reverse().reduce(function(t,n){if(!t.length)for(var r=Object.keys(n),o=0;o= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nmodule.exports = _objectWithoutPropertiesLoose;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.withPrefix = withPrefix;\nexports.navigateTo = exports.replace = exports.push = exports.navigate = exports.default = void 0;\n\nvar _objectWithoutPropertiesLoose2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectWithoutPropertiesLoose\"));\n\nvar _extends2 = _interopRequireDefault(require(\"@babel/runtime/helpers/extends\"));\n\nvar _inheritsLoose2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inheritsLoose\"));\n\nvar _assertThisInitialized2 = _interopRequireDefault(require(\"@babel/runtime/helpers/assertThisInitialized\"));\n\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _router = require(\"@reach/router\");\n\nvar _gatsby = require(\"gatsby\");\n\n/*global __PATH_PREFIX__ */\nfunction withPrefix(path) {\n return normalizePath(__PATH_PREFIX__ + \"/\" + path);\n}\n\nfunction normalizePath(path) {\n return path.replace(/\\/+/g, \"/\");\n}\n\nvar NavLinkPropTypes = {\n activeClassName: _propTypes.default.string,\n activeStyle: _propTypes.default.object // Set up IntersectionObserver\n\n};\n\nvar handleIntersection = function handleIntersection(el, cb) {\n var io = new window.IntersectionObserver(function (entries) {\n entries.forEach(function (entry) {\n if (el === entry.target) {\n // Check if element is within viewport, remove listener, destroy observer, and run link callback.\n // MSEdge doesn't currently support isIntersecting, so also test for an intersectionRatio > 0\n if (entry.isIntersecting || entry.intersectionRatio > 0) {\n io.unobserve(el);\n io.disconnect();\n cb();\n }\n }\n });\n }); // Add element to the observer\n\n io.observe(el);\n};\n\nvar GatsbyLink =\n/*#__PURE__*/\nfunction (_React$Component) {\n (0, _inheritsLoose2.default)(GatsbyLink, _React$Component);\n\n function GatsbyLink(props) {\n var _this;\n\n _this = _React$Component.call(this) || this; // Default to no support for IntersectionObserver\n\n (0, _defineProperty2.default)((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)), \"defaultGetProps\", function (_ref) {\n var isCurrent = _ref.isCurrent;\n\n if (isCurrent) {\n return {\n className: [_this.props.className, _this.props.activeClassName].filter(Boolean).join(\" \"),\n style: (0, _extends2.default)({}, _this.props.style, _this.props.activeStyle)\n };\n }\n\n return null;\n });\n var IOSupported = false;\n\n if (typeof window !== \"undefined\" && window.IntersectionObserver) {\n IOSupported = true;\n }\n\n _this.state = {\n IOSupported: IOSupported\n };\n _this.handleRef = _this.handleRef.bind((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)));\n return _this;\n }\n\n var _proto = GatsbyLink.prototype;\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps, prevState) {\n // Preserve non IO functionality if no support\n if (this.props.to !== prevProps.to && !this.state.IOSupported) {\n ___loader.enqueue((0, _gatsby.parsePath)(this.props.to).pathname);\n }\n };\n\n _proto.componentDidMount = function componentDidMount() {\n // Preserve non IO functionality if no support\n if (!this.state.IOSupported) {\n ___loader.enqueue((0, _gatsby.parsePath)(this.props.to).pathname);\n }\n };\n\n _proto.handleRef = function handleRef(ref) {\n var _this2 = this;\n\n this.props.innerRef && this.props.innerRef(ref);\n\n if (this.state.IOSupported && ref) {\n // If IO supported and element reference found, setup Observer functionality\n handleIntersection(ref, function () {\n ___loader.enqueue((0, _gatsby.parsePath)(_this2.props.to).pathname);\n });\n }\n };\n\n _proto.render = function render() {\n var _this3 = this;\n\n var _this$props = this.props,\n to = _this$props.to,\n _this$props$getProps = _this$props.getProps,\n getProps = _this$props$getProps === void 0 ? this.defaultGetProps : _this$props$getProps,\n _onClick = _this$props.onClick,\n _onMouseEnter = _this$props.onMouseEnter,\n $activeClassName = _this$props.activeClassName,\n $activeStyle = _this$props.activeStyle,\n $ref = _this$props.ref,\n $innerRef = _this$props.innerRef,\n state = _this$props.state,\n replace = _this$props.replace,\n rest = (0, _objectWithoutPropertiesLoose2.default)(_this$props, [\"to\", \"getProps\", \"onClick\", \"onMouseEnter\", \"activeClassName\", \"activeStyle\", \"ref\", \"innerRef\", \"state\", \"replace\"]);\n var prefixedTo = withPrefix(to);\n return _react.default.createElement(_router.Link, (0, _extends2.default)({\n to: prefixedTo,\n state: state,\n getProps: getProps,\n innerRef: this.handleRef,\n onMouseEnter: function onMouseEnter(e) {\n // eslint-disable-line\n _onMouseEnter && _onMouseEnter(e);\n\n ___loader.hovering((0, _gatsby.parsePath)(to).pathname);\n },\n onClick: function onClick(e) {\n // eslint-disable-line\n _onClick && _onClick(e);\n\n if (e.button === 0 && // ignore right clicks\n !_this3.props.target && // let browser handle \"target=_blank\"\n !e.defaultPrevented && // onClick prevented default\n !e.metaKey && // ignore clicks with modifier keys...\n !e.altKey && !e.ctrlKey && !e.shiftKey) {\n e.preventDefault(); // Make sure the necessary scripts and data are\n // loaded before continuing.\n\n navigate(to, {\n state: state,\n replace: replace\n });\n }\n\n return true;\n }\n }, rest));\n };\n\n return GatsbyLink;\n}(_react.default.Component);\n\nGatsbyLink.propTypes = (0, _extends2.default)({}, NavLinkPropTypes, {\n innerRef: _propTypes.default.func,\n onClick: _propTypes.default.func,\n to: _propTypes.default.string.isRequired,\n replace: _propTypes.default.bool\n});\nvar _default = GatsbyLink;\nexports.default = _default;\n\nvar navigate = function navigate(to, options) {\n window.___navigate(withPrefix(to), options);\n};\n\nexports.navigate = navigate;\n\nvar push = function push(to) {\n console.warn(\"The \\\"push\\\" method is now deprecated and will be removed in Gatsby v3. Please use \\\"navigate\\\" instead.\");\n\n window.___push(withPrefix(to));\n};\n\nexports.push = push;\n\nvar replace = function replace(to) {\n console.warn(\"The \\\"replace\\\" method is now deprecated and will be removed in Gatsby v3. Please use \\\"navigate\\\" instead.\");\n\n window.___replace(withPrefix(to));\n}; // TODO: Remove navigateTo for Gatsby v3\n\n\nexports.replace = replace;\n\nvar navigateTo = function navigateTo(to) {\n console.warn(\"The \\\"navigateTo\\\" method is now deprecated and will be removed in Gatsby v3. Please use \\\"navigate\\\" instead.\");\n return push(to);\n};\n\nexports.navigateTo = navigateTo;","'use strict';\n// B.2.3.5 String.prototype.bold()\nrequire('./_string-html')('bold', function (createHTML) {\n return function bold() {\n return createHTML(this, 'b', '', '');\n };\n});\n","'use strict';\n// B.2.3.11 String.prototype.small()\nrequire('./_string-html')('small', function (createHTML) {\n return function small() {\n return createHTML(this, 'small', '', '');\n };\n});\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// resolves . and .. elements in a path array with directory names there\n// must be no slashes, empty elements, or device names (c:\\) in the array\n// (so also no leading and trailing slashes - it does not distinguish\n// relative and absolute paths)\nfunction normalizeArray(parts, allowAboveRoot) {\n // if the path tries to go above the root, `up` ends up > 0\n var up = 0;\n for (var i = parts.length - 1; i >= 0; i--) {\n var last = parts[i];\n if (last === '.') {\n parts.splice(i, 1);\n } else if (last === '..') {\n parts.splice(i, 1);\n up++;\n } else if (up) {\n parts.splice(i, 1);\n up--;\n }\n }\n\n // if the path is allowed to go above the root, restore leading ..s\n if (allowAboveRoot) {\n for (; up--; up) {\n parts.unshift('..');\n }\n }\n\n return parts;\n}\n\n// Split a filename into [root, dir, basename, ext], unix version\n// 'root' is just a slash, or nothing.\nvar splitPathRe =\n /^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;\nvar splitPath = function(filename) {\n return splitPathRe.exec(filename).slice(1);\n};\n\n// path.resolve([from ...], to)\n// posix version\nexports.resolve = function() {\n var resolvedPath = '',\n resolvedAbsolute = false;\n\n for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n var path = (i >= 0) ? arguments[i] : process.cwd();\n\n // Skip empty and invalid entries\n if (typeof path !== 'string') {\n throw new TypeError('Arguments to path.resolve must be strings');\n } else if (!path) {\n continue;\n }\n\n resolvedPath = path + '/' + resolvedPath;\n resolvedAbsolute = path.charAt(0) === '/';\n }\n\n // At this point the path should be resolved to a full absolute path, but\n // handle relative paths to be safe (might happen when process.cwd() fails)\n\n // Normalize the path\n resolvedPath = normalizeArray(filter(resolvedPath.split('/'), function(p) {\n return !!p;\n }), !resolvedAbsolute).join('/');\n\n return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.';\n};\n\n// path.normalize(path)\n// posix version\nexports.normalize = function(path) {\n var isAbsolute = exports.isAbsolute(path),\n trailingSlash = substr(path, -1) === '/';\n\n // Normalize the path\n path = normalizeArray(filter(path.split('/'), function(p) {\n return !!p;\n }), !isAbsolute).join('/');\n\n if (!path && !isAbsolute) {\n path = '.';\n }\n if (path && trailingSlash) {\n path += '/';\n }\n\n return (isAbsolute ? '/' : '') + path;\n};\n\n// posix version\nexports.isAbsolute = function(path) {\n return path.charAt(0) === '/';\n};\n\n// posix version\nexports.join = function() {\n var paths = Array.prototype.slice.call(arguments, 0);\n return exports.normalize(filter(paths, function(p, index) {\n if (typeof p !== 'string') {\n throw new TypeError('Arguments to path.join must be strings');\n }\n return p;\n }).join('/'));\n};\n\n\n// path.relative(from, to)\n// posix version\nexports.relative = function(from, to) {\n from = exports.resolve(from).substr(1);\n to = exports.resolve(to).substr(1);\n\n function trim(arr) {\n var start = 0;\n for (; start < arr.length; start++) {\n if (arr[start] !== '') break;\n }\n\n var end = arr.length - 1;\n for (; end >= 0; end--) {\n if (arr[end] !== '') break;\n }\n\n if (start > end) return [];\n return arr.slice(start, end - start + 1);\n }\n\n var fromParts = trim(from.split('/'));\n var toParts = trim(to.split('/'));\n\n var length = Math.min(fromParts.length, toParts.length);\n var samePartsLength = length;\n for (var i = 0; i < length; i++) {\n if (fromParts[i] !== toParts[i]) {\n samePartsLength = i;\n break;\n }\n }\n\n var outputParts = [];\n for (var i = samePartsLength; i < fromParts.length; i++) {\n outputParts.push('..');\n }\n\n outputParts = outputParts.concat(toParts.slice(samePartsLength));\n\n return outputParts.join('/');\n};\n\nexports.sep = '/';\nexports.delimiter = ':';\n\nexports.dirname = function(path) {\n var result = splitPath(path),\n root = result[0],\n dir = result[1];\n\n if (!root && !dir) {\n // No dirname whatsoever\n return '.';\n }\n\n if (dir) {\n // It has a dirname, strip trailing slash\n dir = dir.substr(0, dir.length - 1);\n }\n\n return root + dir;\n};\n\n\nexports.basename = function(path, ext) {\n var f = splitPath(path)[2];\n // TODO: make this comparison case-insensitive on windows?\n if (ext && f.substr(-1 * ext.length) === ext) {\n f = f.substr(0, f.length - ext.length);\n }\n return f;\n};\n\n\nexports.extname = function(path) {\n return splitPath(path)[3];\n};\n\nfunction filter (xs, f) {\n if (xs.filter) return xs.filter(f);\n var res = [];\n for (var i = 0; i < xs.length; i++) {\n if (f(xs[i], i, xs)) res.push(xs[i]);\n }\n return res;\n}\n\n// String.prototype.substr - negative index don't work in IE8\nvar substr = 'ab'.substr(-1) === 'b'\n ? function (str, start, len) { return str.substr(start, len) }\n : function (str, start, len) {\n if (start < 0) start = str.length + start;\n return str.substr(start, len);\n }\n;\n","var $export = require('./_export');\nvar fails = require('./_fails');\nvar defined = require('./_defined');\nvar quot = /\"/g;\n// B.2.3.2.1 CreateHTML(string, tag, attribute, value)\nvar createHTML = function (string, tag, attribute, value) {\n var S = String(defined(string));\n var p1 = '<' + tag;\n if (attribute !== '') p1 += ' ' + attribute + '=\"' + String(value).replace(quot, '"') + '\"';\n return p1 + '>' + S + '';\n};\nmodule.exports = function (NAME, exec) {\n var O = {};\n O[NAME] = exec(createHTML);\n $export($export.P + $export.F * fails(function () {\n var test = ''[NAME]('\"');\n return test !== test.toLowerCase() || test.split('\"').length > 3;\n }), 'String', O);\n};\n","exports.__esModule = true;\nexports.Helmet = undefined;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require(\"react\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require(\"prop-types\");\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _reactSideEffect = require(\"react-side-effect\");\n\nvar _reactSideEffect2 = _interopRequireDefault(_reactSideEffect);\n\nvar _deepEqual = require(\"deep-equal\");\n\nvar _deepEqual2 = _interopRequireDefault(_deepEqual);\n\nvar _HelmetUtils = require(\"./HelmetUtils.js\");\n\nvar _HelmetConstants = require(\"./HelmetConstants.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Helmet = function Helmet(Component) {\n var _class, _temp;\n\n return _temp = _class = function (_React$Component) {\n _inherits(HelmetWrapper, _React$Component);\n\n function HelmetWrapper() {\n _classCallCheck(this, HelmetWrapper);\n\n return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n }\n\n HelmetWrapper.prototype.shouldComponentUpdate = function shouldComponentUpdate(nextProps) {\n return !(0, _deepEqual2.default)(this.props, nextProps);\n };\n\n HelmetWrapper.prototype.mapNestedChildrenToProps = function mapNestedChildrenToProps(child, nestedChildren) {\n if (!nestedChildren) {\n return null;\n }\n\n switch (child.type) {\n case _HelmetConstants.TAG_NAMES.SCRIPT:\n case _HelmetConstants.TAG_NAMES.NOSCRIPT:\n return {\n innerHTML: nestedChildren\n };\n\n case _HelmetConstants.TAG_NAMES.STYLE:\n return {\n cssText: nestedChildren\n };\n }\n\n throw new Error(\"<\" + child.type + \" /> elements are self-closing and can not contain children. Refer to our API for more information.\");\n };\n\n HelmetWrapper.prototype.flattenArrayTypeChildren = function flattenArrayTypeChildren(_ref) {\n var _extends2;\n\n var child = _ref.child,\n arrayTypeChildren = _ref.arrayTypeChildren,\n newChildProps = _ref.newChildProps,\n nestedChildren = _ref.nestedChildren;\n\n return _extends({}, arrayTypeChildren, (_extends2 = {}, _extends2[child.type] = [].concat(arrayTypeChildren[child.type] || [], [_extends({}, newChildProps, this.mapNestedChildrenToProps(child, nestedChildren))]), _extends2));\n };\n\n HelmetWrapper.prototype.mapObjectTypeChildren = function mapObjectTypeChildren(_ref2) {\n var _extends3, _extends4;\n\n var child = _ref2.child,\n newProps = _ref2.newProps,\n newChildProps = _ref2.newChildProps,\n nestedChildren = _ref2.nestedChildren;\n\n switch (child.type) {\n case _HelmetConstants.TAG_NAMES.TITLE:\n return _extends({}, newProps, (_extends3 = {}, _extends3[child.type] = nestedChildren, _extends3.titleAttributes = _extends({}, newChildProps), _extends3));\n\n case _HelmetConstants.TAG_NAMES.BODY:\n return _extends({}, newProps, {\n bodyAttributes: _extends({}, newChildProps)\n });\n\n case _HelmetConstants.TAG_NAMES.HTML:\n return _extends({}, newProps, {\n htmlAttributes: _extends({}, newChildProps)\n });\n }\n\n return _extends({}, newProps, (_extends4 = {}, _extends4[child.type] = _extends({}, newChildProps), _extends4));\n };\n\n HelmetWrapper.prototype.mapArrayTypeChildrenToProps = function mapArrayTypeChildrenToProps(arrayTypeChildren, newProps) {\n var newFlattenedProps = _extends({}, newProps);\n\n Object.keys(arrayTypeChildren).forEach(function (arrayChildName) {\n var _extends5;\n\n newFlattenedProps = _extends({}, newFlattenedProps, (_extends5 = {}, _extends5[arrayChildName] = arrayTypeChildren[arrayChildName], _extends5));\n });\n\n return newFlattenedProps;\n };\n\n HelmetWrapper.prototype.warnOnInvalidChildren = function warnOnInvalidChildren(child, nestedChildren) {\n if (process.env.NODE_ENV !== \"production\") {\n if (!_HelmetConstants.VALID_TAG_NAMES.some(function (name) {\n return child.type === name;\n })) {\n if (typeof child.type === \"function\") {\n return (0, _HelmetUtils.warn)(\"You may be attempting to nest components within each other, which is not allowed. Refer to our API for more information.\");\n }\n\n return (0, _HelmetUtils.warn)(\"Only elements types \" + _HelmetConstants.VALID_TAG_NAMES.join(\", \") + \" are allowed. Helmet does not support rendering <\" + child.type + \"> elements. Refer to our API for more information.\");\n }\n\n if (nestedChildren && typeof nestedChildren !== \"string\" && (!Array.isArray(nestedChildren) || nestedChildren.some(function (nestedChild) {\n return typeof nestedChild !== \"string\";\n }))) {\n throw new Error(\"Helmet expects a string as a child of <\" + child.type + \">. Did you forget to wrap your children in braces? ( <\" + child.type + \">{``} ) Refer to our API for more information.\");\n }\n }\n\n return true;\n };\n\n HelmetWrapper.prototype.mapChildrenToProps = function mapChildrenToProps(children, newProps) {\n var _this2 = this;\n\n var arrayTypeChildren = {};\n\n _react2.default.Children.forEach(children, function (child) {\n if (!child || !child.props) {\n return;\n }\n\n var _child$props = child.props,\n nestedChildren = _child$props.children,\n childProps = _objectWithoutProperties(_child$props, [\"children\"]);\n\n var newChildProps = (0, _HelmetUtils.convertReactPropstoHtmlAttributes)(childProps);\n\n _this2.warnOnInvalidChildren(child, nestedChildren);\n\n switch (child.type) {\n case _HelmetConstants.TAG_NAMES.LINK:\n case _HelmetConstants.TAG_NAMES.META:\n case _HelmetConstants.TAG_NAMES.NOSCRIPT:\n case _HelmetConstants.TAG_NAMES.SCRIPT:\n case _HelmetConstants.TAG_NAMES.STYLE:\n arrayTypeChildren = _this2.flattenArrayTypeChildren({\n child: child,\n arrayTypeChildren: arrayTypeChildren,\n newChildProps: newChildProps,\n nestedChildren: nestedChildren\n });\n break;\n\n default:\n newProps = _this2.mapObjectTypeChildren({\n child: child,\n newProps: newProps,\n newChildProps: newChildProps,\n nestedChildren: nestedChildren\n });\n break;\n }\n });\n\n newProps = this.mapArrayTypeChildrenToProps(arrayTypeChildren, newProps);\n return newProps;\n };\n\n HelmetWrapper.prototype.render = function render() {\n var _props = this.props,\n children = _props.children,\n props = _objectWithoutProperties(_props, [\"children\"]);\n\n var newProps = _extends({}, props);\n\n if (children) {\n newProps = this.mapChildrenToProps(children, newProps);\n }\n\n return _react2.default.createElement(Component, newProps);\n };\n\n _createClass(HelmetWrapper, null, [{\n key: \"canUseDOM\",\n\n\n // Component.peek comes from react-side-effect:\n // For testing, you may use a static peek() method available on the returned component.\n // It lets you get the current state without resetting the mounted instance stack.\n // Don’t use it for anything other than testing.\n\n /**\n * @param {Object} base: {\"target\": \"_blank\", \"href\": \"http://mysite.com/\"}\n * @param {Object} bodyAttributes: {\"className\": \"root\"}\n * @param {String} defaultTitle: \"Default Title\"\n * @param {Boolean} defer: true\n * @param {Boolean} encodeSpecialCharacters: true\n * @param {Object} htmlAttributes: {\"lang\": \"en\", \"amp\": undefined}\n * @param {Array} link: [{\"rel\": \"canonical\", \"href\": \"http://mysite.com/example\"}]\n * @param {Array} meta: [{\"name\": \"description\", \"content\": \"Test description\"}]\n * @param {Array} noscript: [{\"innerHTML\": \" console.log(newState)\"\n * @param {Array} script: [{\"type\": \"text/javascript\", \"src\": \"http://mysite.com/js/test.js\"}]\n * @param {Array} style: [{\"type\": \"text/css\", \"cssText\": \"div { display: block; color: blue; }\"}]\n * @param {String} title: \"Title\"\n * @param {Object} titleAttributes: {\"itemprop\": \"name\"}\n * @param {String} titleTemplate: \"MySite.com - %s\"\n */\n set: function set(canUseDOM) {\n Component.canUseDOM = canUseDOM;\n }\n }]);\n\n return HelmetWrapper;\n }(_react2.default.Component), _class.propTypes = {\n base: _propTypes2.default.object,\n bodyAttributes: _propTypes2.default.object,\n children: _propTypes2.default.oneOfType([_propTypes2.default.arrayOf(_propTypes2.default.node), _propTypes2.default.node]),\n defaultTitle: _propTypes2.default.string,\n defer: _propTypes2.default.bool,\n encodeSpecialCharacters: _propTypes2.default.bool,\n htmlAttributes: _propTypes2.default.object,\n link: _propTypes2.default.arrayOf(_propTypes2.default.object),\n meta: _propTypes2.default.arrayOf(_propTypes2.default.object),\n noscript: _propTypes2.default.arrayOf(_propTypes2.default.object),\n onChangeClientState: _propTypes2.default.func,\n script: _propTypes2.default.arrayOf(_propTypes2.default.object),\n style: _propTypes2.default.arrayOf(_propTypes2.default.object),\n title: _propTypes2.default.string,\n titleAttributes: _propTypes2.default.object,\n titleTemplate: _propTypes2.default.string\n }, _class.defaultProps = {\n defer: true,\n encodeSpecialCharacters: true\n }, _class.peek = Component.peek, _class.rewind = function () {\n var mappedState = Component.rewind();\n if (!mappedState) {\n // provide fallback if mappedState is undefined\n mappedState = (0, _HelmetUtils.mapStateOnServer)({\n baseTag: [],\n bodyAttributes: {},\n encodeSpecialCharacters: true,\n htmlAttributes: {},\n linkTags: [],\n metaTags: [],\n noscriptTags: [],\n scriptTags: [],\n styleTags: [],\n title: \"\",\n titleAttributes: {}\n });\n }\n\n return mappedState;\n }, _temp;\n};\n\nvar NullComponent = function NullComponent() {\n return null;\n};\n\nvar HelmetSideEffects = (0, _reactSideEffect2.default)(_HelmetUtils.reducePropsToState, _HelmetUtils.handleClientStateChange, _HelmetUtils.mapStateOnServer)(NullComponent);\n\nvar HelmetExport = Helmet(HelmetSideEffects);\nHelmetExport.renderStatic = HelmetExport.rewind;\n\nexports.Helmet = HelmetExport;\nexports.default = HelmetExport;","exports.__esModule = true;\nvar ATTRIBUTE_NAMES = exports.ATTRIBUTE_NAMES = {\n BODY: \"bodyAttributes\",\n HTML: \"htmlAttributes\",\n TITLE: \"titleAttributes\"\n};\n\nvar TAG_NAMES = exports.TAG_NAMES = {\n BASE: \"base\",\n BODY: \"body\",\n HEAD: \"head\",\n HTML: \"html\",\n LINK: \"link\",\n META: \"meta\",\n NOSCRIPT: \"noscript\",\n SCRIPT: \"script\",\n STYLE: \"style\",\n TITLE: \"title\"\n};\n\nvar VALID_TAG_NAMES = exports.VALID_TAG_NAMES = Object.keys(TAG_NAMES).map(function (name) {\n return TAG_NAMES[name];\n});\n\nvar TAG_PROPERTIES = exports.TAG_PROPERTIES = {\n CHARSET: \"charset\",\n CSS_TEXT: \"cssText\",\n HREF: \"href\",\n HTTPEQUIV: \"http-equiv\",\n INNER_HTML: \"innerHTML\",\n ITEM_PROP: \"itemprop\",\n NAME: \"name\",\n PROPERTY: \"property\",\n REL: \"rel\",\n SRC: \"src\"\n};\n\nvar REACT_TAG_MAP = exports.REACT_TAG_MAP = {\n accesskey: \"accessKey\",\n charset: \"charSet\",\n class: \"className\",\n contenteditable: \"contentEditable\",\n contextmenu: \"contextMenu\",\n \"http-equiv\": \"httpEquiv\",\n itemprop: \"itemProp\",\n tabindex: \"tabIndex\"\n};\n\nvar HELMET_PROPS = exports.HELMET_PROPS = {\n DEFAULT_TITLE: \"defaultTitle\",\n DEFER: \"defer\",\n ENCODE_SPECIAL_CHARACTERS: \"encodeSpecialCharacters\",\n ON_CHANGE_CLIENT_STATE: \"onChangeClientState\",\n TITLE_TEMPLATE: \"titleTemplate\"\n};\n\nvar HTML_TAG_MAP = exports.HTML_TAG_MAP = Object.keys(REACT_TAG_MAP).reduce(function (obj, key) {\n obj[REACT_TAG_MAP[key]] = key;\n return obj;\n}, {});\n\nvar SELF_CLOSING_TAGS = exports.SELF_CLOSING_TAGS = [TAG_NAMES.NOSCRIPT, TAG_NAMES.SCRIPT, TAG_NAMES.STYLE];\n\nvar HELMET_ATTRIBUTE = exports.HELMET_ATTRIBUTE = \"data-react-helmet\";","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","function _extends() {\n module.exports = _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nmodule.exports = _extends;","'use strict';\n\nfunction _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }\n\nvar React = require('react');\nvar React__default = _interopDefault(React);\nvar ExecutionEnvironment = _interopDefault(require('exenv'));\nvar shallowEqual = _interopDefault(require('shallowequal'));\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nfunction withSideEffect(reducePropsToState, handleStateChangeOnClient, mapStateOnServer) {\n if (typeof reducePropsToState !== 'function') {\n throw new Error('Expected reducePropsToState to be a function.');\n }\n if (typeof handleStateChangeOnClient !== 'function') {\n throw new Error('Expected handleStateChangeOnClient to be a function.');\n }\n if (typeof mapStateOnServer !== 'undefined' && typeof mapStateOnServer !== 'function') {\n throw new Error('Expected mapStateOnServer to either be undefined or a function.');\n }\n\n function getDisplayName(WrappedComponent) {\n return WrappedComponent.displayName || WrappedComponent.name || 'Component';\n }\n\n return function wrap(WrappedComponent) {\n if (typeof WrappedComponent !== 'function') {\n throw new Error('Expected WrappedComponent to be a React component.');\n }\n\n var mountedInstances = [];\n var state = void 0;\n\n function emitChange() {\n state = reducePropsToState(mountedInstances.map(function (instance) {\n return instance.props;\n }));\n\n if (SideEffect.canUseDOM) {\n handleStateChangeOnClient(state);\n } else if (mapStateOnServer) {\n state = mapStateOnServer(state);\n }\n }\n\n var SideEffect = function (_Component) {\n _inherits(SideEffect, _Component);\n\n function SideEffect() {\n _classCallCheck(this, SideEffect);\n\n return _possibleConstructorReturn(this, _Component.apply(this, arguments));\n }\n\n // Try to use displayName of wrapped component\n SideEffect.peek = function peek() {\n return state;\n };\n\n // Expose canUseDOM so tests can monkeypatch it\n\n\n SideEffect.rewind = function rewind() {\n if (SideEffect.canUseDOM) {\n throw new Error('You may only call rewind() on the server. Call peek() to read the current state.');\n }\n\n var recordedState = state;\n state = undefined;\n mountedInstances = [];\n return recordedState;\n };\n\n SideEffect.prototype.shouldComponentUpdate = function shouldComponentUpdate(nextProps) {\n return !shallowEqual(nextProps, this.props);\n };\n\n SideEffect.prototype.componentWillMount = function componentWillMount() {\n mountedInstances.push(this);\n emitChange();\n };\n\n SideEffect.prototype.componentDidUpdate = function componentDidUpdate() {\n emitChange();\n };\n\n SideEffect.prototype.componentWillUnmount = function componentWillUnmount() {\n var index = mountedInstances.indexOf(this);\n mountedInstances.splice(index, 1);\n emitChange();\n };\n\n SideEffect.prototype.render = function render() {\n return React__default.createElement(WrappedComponent, this.props);\n };\n\n return SideEffect;\n }(React.Component);\n\n SideEffect.displayName = 'SideEffect(' + getDisplayName(WrappedComponent) + ')';\n SideEffect.canUseDOM = ExecutionEnvironment.canUseDOM;\n\n\n return SideEffect;\n };\n}\n\nmodule.exports = withSideEffect;\n","/*!\n Copyright (c) 2015 Jed Watson.\n Based on code that is Copyright 2013-2015, Facebook, Inc.\n All rights reserved.\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar canUseDOM = !!(\n\t\ttypeof window !== 'undefined' &&\n\t\twindow.document &&\n\t\twindow.document.createElement\n\t);\n\n\tvar ExecutionEnvironment = {\n\n\t\tcanUseDOM: canUseDOM,\n\n\t\tcanUseWorkers: typeof Worker !== 'undefined',\n\n\t\tcanUseEventListeners:\n\t\t\tcanUseDOM && !!(window.addEventListener || window.attachEvent),\n\n\t\tcanUseViewport: canUseDOM && !!window.screen\n\n\t};\n\n\tif (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\tdefine(function () {\n\t\t\treturn ExecutionEnvironment;\n\t\t});\n\t} else if (typeof module !== 'undefined' && module.exports) {\n\t\tmodule.exports = ExecutionEnvironment;\n\t} else {\n\t\twindow.ExecutionEnvironment = ExecutionEnvironment;\n\t}\n\n}());\n","//\n\nmodule.exports = function shallowEqual(objA, objB, compare, compareContext) {\n var ret = compare ? compare.call(compareContext, objA, objB) : void 0;\n\n if (ret !== void 0) {\n return !!ret;\n }\n\n if (objA === objB) {\n return true;\n }\n\n if (typeof objA !== \"object\" || !objA || typeof objB !== \"object\" || !objB) {\n return false;\n }\n\n var keysA = Object.keys(objA);\n var keysB = Object.keys(objB);\n\n if (keysA.length !== keysB.length) {\n return false;\n }\n\n var bHasOwnProperty = Object.prototype.hasOwnProperty.bind(objB);\n\n // Test for A's keys different from B.\n for (var idx = 0; idx < keysA.length; idx++) {\n var key = keysA[idx];\n\n if (!bHasOwnProperty(key)) {\n return false;\n }\n\n var valueA = objA[key];\n var valueB = objB[key];\n\n ret = compare ? compare.call(compareContext, valueA, valueB, key) : void 0;\n\n if (ret === false || (ret === void 0 && valueA !== valueB)) {\n return false;\n }\n }\n\n return true;\n};\n","var pSlice = Array.prototype.slice;\nvar objectKeys = require('./lib/keys.js');\nvar isArguments = require('./lib/is_arguments.js');\n\nvar deepEqual = module.exports = function (actual, expected, opts) {\n if (!opts) opts = {};\n // 7.1. All identical values are equivalent, as determined by ===.\n if (actual === expected) {\n return true;\n\n } else if (actual instanceof Date && expected instanceof Date) {\n return actual.getTime() === expected.getTime();\n\n // 7.3. Other pairs that do not both pass typeof value == 'object',\n // equivalence is determined by ==.\n } else if (!actual || !expected || typeof actual != 'object' && typeof expected != 'object') {\n return opts.strict ? actual === expected : actual == expected;\n\n // 7.4. For all other Object pairs, including Array objects, equivalence is\n // determined by having the same number of owned properties (as verified\n // with Object.prototype.hasOwnProperty.call), the same set of keys\n // (although not necessarily the same order), equivalent values for every\n // corresponding key, and an identical 'prototype' property. Note: this\n // accounts for both named and indexed properties on Arrays.\n } else {\n return objEquiv(actual, expected, opts);\n }\n}\n\nfunction isUndefinedOrNull(value) {\n return value === null || value === undefined;\n}\n\nfunction isBuffer (x) {\n if (!x || typeof x !== 'object' || typeof x.length !== 'number') return false;\n if (typeof x.copy !== 'function' || typeof x.slice !== 'function') {\n return false;\n }\n if (x.length > 0 && typeof x[0] !== 'number') return false;\n return true;\n}\n\nfunction objEquiv(a, b, opts) {\n var i, key;\n if (isUndefinedOrNull(a) || isUndefinedOrNull(b))\n return false;\n // an identical 'prototype' property.\n if (a.prototype !== b.prototype) return false;\n //~~~I've managed to break Object.keys through screwy arguments passing.\n // Converting to array solves the problem.\n if (isArguments(a)) {\n if (!isArguments(b)) {\n return false;\n }\n a = pSlice.call(a);\n b = pSlice.call(b);\n return deepEqual(a, b, opts);\n }\n if (isBuffer(a)) {\n if (!isBuffer(b)) {\n return false;\n }\n if (a.length !== b.length) return false;\n for (i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) return false;\n }\n return true;\n }\n try {\n var ka = objectKeys(a),\n kb = objectKeys(b);\n } catch (e) {//happens when one is a string literal and the other isn't\n return false;\n }\n // having the same number of owned properties (keys incorporates\n // hasOwnProperty)\n if (ka.length != kb.length)\n return false;\n //the same set of keys (although not necessarily the same order),\n ka.sort();\n kb.sort();\n //~~~cheap key test\n for (i = ka.length - 1; i >= 0; i--) {\n if (ka[i] != kb[i])\n return false;\n }\n //equivalent values for every corresponding key, and\n //~~~possibly expensive deep test\n for (i = ka.length - 1; i >= 0; i--) {\n key = ka[i];\n if (!deepEqual(a[key], b[key], opts)) return false;\n }\n return typeof a === typeof b;\n}\n","exports = module.exports = typeof Object.keys === 'function'\n ? Object.keys : shim;\n\nexports.shim = shim;\nfunction shim (obj) {\n var keys = [];\n for (var key in obj) keys.push(key);\n return keys;\n}\n","var supportsArgumentsClass = (function(){\n return Object.prototype.toString.call(arguments)\n})() == '[object Arguments]';\n\nexports = module.exports = supportsArgumentsClass ? supported : unsupported;\n\nexports.supported = supported;\nfunction supported(object) {\n return Object.prototype.toString.call(object) == '[object Arguments]';\n};\n\nexports.unsupported = unsupported;\nfunction unsupported(object){\n return object &&\n typeof object == 'object' &&\n typeof object.length == 'number' &&\n Object.prototype.hasOwnProperty.call(object, 'callee') &&\n !Object.prototype.propertyIsEnumerable.call(object, 'callee') ||\n false;\n};\n","exports.__esModule = true;\nexports.warn = exports.requestAnimationFrame = exports.reducePropsToState = exports.mapStateOnServer = exports.handleClientStateChange = exports.convertReactPropstoHtmlAttributes = undefined;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _react = require(\"react\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _objectAssign = require(\"object-assign\");\n\nvar _objectAssign2 = _interopRequireDefault(_objectAssign);\n\nvar _HelmetConstants = require(\"./HelmetConstants.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar encodeSpecialCharacters = function encodeSpecialCharacters(str) {\n var encode = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n if (encode === false) {\n return String(str);\n }\n\n return String(str).replace(/&/g, \"&\").replace(//g, \">\").replace(/\"/g, \""\").replace(/'/g, \"'\");\n};\n\nvar getTitleFromPropsList = function getTitleFromPropsList(propsList) {\n var innermostTitle = getInnermostProperty(propsList, _HelmetConstants.TAG_NAMES.TITLE);\n var innermostTemplate = getInnermostProperty(propsList, _HelmetConstants.HELMET_PROPS.TITLE_TEMPLATE);\n\n if (innermostTemplate && innermostTitle) {\n // use function arg to avoid need to escape $ characters\n return innermostTemplate.replace(/%s/g, function () {\n return innermostTitle;\n });\n }\n\n var innermostDefaultTitle = getInnermostProperty(propsList, _HelmetConstants.HELMET_PROPS.DEFAULT_TITLE);\n\n return innermostTitle || innermostDefaultTitle || undefined;\n};\n\nvar getOnChangeClientState = function getOnChangeClientState(propsList) {\n return getInnermostProperty(propsList, _HelmetConstants.HELMET_PROPS.ON_CHANGE_CLIENT_STATE) || function () {};\n};\n\nvar getAttributesFromPropsList = function getAttributesFromPropsList(tagType, propsList) {\n return propsList.filter(function (props) {\n return typeof props[tagType] !== \"undefined\";\n }).map(function (props) {\n return props[tagType];\n }).reduce(function (tagAttrs, current) {\n return _extends({}, tagAttrs, current);\n }, {});\n};\n\nvar getBaseTagFromPropsList = function getBaseTagFromPropsList(primaryAttributes, propsList) {\n return propsList.filter(function (props) {\n return typeof props[_HelmetConstants.TAG_NAMES.BASE] !== \"undefined\";\n }).map(function (props) {\n return props[_HelmetConstants.TAG_NAMES.BASE];\n }).reverse().reduce(function (innermostBaseTag, tag) {\n if (!innermostBaseTag.length) {\n var keys = Object.keys(tag);\n\n for (var i = 0; i < keys.length; i++) {\n var attributeKey = keys[i];\n var lowerCaseAttributeKey = attributeKey.toLowerCase();\n\n if (primaryAttributes.indexOf(lowerCaseAttributeKey) !== -1 && tag[lowerCaseAttributeKey]) {\n return innermostBaseTag.concat(tag);\n }\n }\n }\n\n return innermostBaseTag;\n }, []);\n};\n\nvar getTagsFromPropsList = function getTagsFromPropsList(tagName, primaryAttributes, propsList) {\n // Calculate list of tags, giving priority innermost component (end of the propslist)\n var approvedSeenTags = {};\n\n return propsList.filter(function (props) {\n if (Array.isArray(props[tagName])) {\n return true;\n }\n if (typeof props[tagName] !== \"undefined\") {\n warn(\"Helmet: \" + tagName + \" should be of type \\\"Array\\\". Instead found type \\\"\" + _typeof(props[tagName]) + \"\\\"\");\n }\n return false;\n }).map(function (props) {\n return props[tagName];\n }).reverse().reduce(function (approvedTags, instanceTags) {\n var instanceSeenTags = {};\n\n instanceTags.filter(function (tag) {\n var primaryAttributeKey = void 0;\n var keys = Object.keys(tag);\n for (var i = 0; i < keys.length; i++) {\n var attributeKey = keys[i];\n var lowerCaseAttributeKey = attributeKey.toLowerCase();\n\n // Special rule with link tags, since rel and href are both primary tags, rel takes priority\n if (primaryAttributes.indexOf(lowerCaseAttributeKey) !== -1 && !(primaryAttributeKey === _HelmetConstants.TAG_PROPERTIES.REL && tag[primaryAttributeKey].toLowerCase() === \"canonical\") && !(lowerCaseAttributeKey === _HelmetConstants.TAG_PROPERTIES.REL && tag[lowerCaseAttributeKey].toLowerCase() === \"stylesheet\")) {\n primaryAttributeKey = lowerCaseAttributeKey;\n }\n // Special case for innerHTML which doesn't work lowercased\n if (primaryAttributes.indexOf(attributeKey) !== -1 && (attributeKey === _HelmetConstants.TAG_PROPERTIES.INNER_HTML || attributeKey === _HelmetConstants.TAG_PROPERTIES.CSS_TEXT || attributeKey === _HelmetConstants.TAG_PROPERTIES.ITEM_PROP)) {\n primaryAttributeKey = attributeKey;\n }\n }\n\n if (!primaryAttributeKey || !tag[primaryAttributeKey]) {\n return false;\n }\n\n var value = tag[primaryAttributeKey].toLowerCase();\n\n if (!approvedSeenTags[primaryAttributeKey]) {\n approvedSeenTags[primaryAttributeKey] = {};\n }\n\n if (!instanceSeenTags[primaryAttributeKey]) {\n instanceSeenTags[primaryAttributeKey] = {};\n }\n\n if (!approvedSeenTags[primaryAttributeKey][value]) {\n instanceSeenTags[primaryAttributeKey][value] = true;\n return true;\n }\n\n return false;\n }).reverse().forEach(function (tag) {\n return approvedTags.push(tag);\n });\n\n // Update seen tags with tags from this instance\n var keys = Object.keys(instanceSeenTags);\n for (var i = 0; i < keys.length; i++) {\n var attributeKey = keys[i];\n var tagUnion = (0, _objectAssign2.default)({}, approvedSeenTags[attributeKey], instanceSeenTags[attributeKey]);\n\n approvedSeenTags[attributeKey] = tagUnion;\n }\n\n return approvedTags;\n }, []).reverse();\n};\n\nvar getInnermostProperty = function getInnermostProperty(propsList, property) {\n for (var i = propsList.length - 1; i >= 0; i--) {\n var props = propsList[i];\n\n if (props.hasOwnProperty(property)) {\n return props[property];\n }\n }\n\n return null;\n};\n\nvar reducePropsToState = function reducePropsToState(propsList) {\n return {\n baseTag: getBaseTagFromPropsList([_HelmetConstants.TAG_PROPERTIES.HREF], propsList),\n bodyAttributes: getAttributesFromPropsList(_HelmetConstants.ATTRIBUTE_NAMES.BODY, propsList),\n defer: getInnermostProperty(propsList, _HelmetConstants.HELMET_PROPS.DEFER),\n encode: getInnermostProperty(propsList, _HelmetConstants.HELMET_PROPS.ENCODE_SPECIAL_CHARACTERS),\n htmlAttributes: getAttributesFromPropsList(_HelmetConstants.ATTRIBUTE_NAMES.HTML, propsList),\n linkTags: getTagsFromPropsList(_HelmetConstants.TAG_NAMES.LINK, [_HelmetConstants.TAG_PROPERTIES.REL, _HelmetConstants.TAG_PROPERTIES.HREF], propsList),\n metaTags: getTagsFromPropsList(_HelmetConstants.TAG_NAMES.META, [_HelmetConstants.TAG_PROPERTIES.NAME, _HelmetConstants.TAG_PROPERTIES.CHARSET, _HelmetConstants.TAG_PROPERTIES.HTTPEQUIV, _HelmetConstants.TAG_PROPERTIES.PROPERTY, _HelmetConstants.TAG_PROPERTIES.ITEM_PROP], propsList),\n noscriptTags: getTagsFromPropsList(_HelmetConstants.TAG_NAMES.NOSCRIPT, [_HelmetConstants.TAG_PROPERTIES.INNER_HTML], propsList),\n onChangeClientState: getOnChangeClientState(propsList),\n scriptTags: getTagsFromPropsList(_HelmetConstants.TAG_NAMES.SCRIPT, [_HelmetConstants.TAG_PROPERTIES.SRC, _HelmetConstants.TAG_PROPERTIES.INNER_HTML], propsList),\n styleTags: getTagsFromPropsList(_HelmetConstants.TAG_NAMES.STYLE, [_HelmetConstants.TAG_PROPERTIES.CSS_TEXT], propsList),\n title: getTitleFromPropsList(propsList),\n titleAttributes: getAttributesFromPropsList(_HelmetConstants.ATTRIBUTE_NAMES.TITLE, propsList)\n };\n};\n\nvar rafPolyfill = function () {\n var clock = Date.now();\n\n return function (callback) {\n var currentTime = Date.now();\n\n if (currentTime - clock > 16) {\n clock = currentTime;\n callback(currentTime);\n } else {\n setTimeout(function () {\n rafPolyfill(callback);\n }, 0);\n }\n };\n}();\n\nvar cafPolyfill = function cafPolyfill(id) {\n return clearTimeout(id);\n};\n\nvar requestAnimationFrame = typeof window !== \"undefined\" ? window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || rafPolyfill : global.requestAnimationFrame || rafPolyfill;\n\nvar cancelAnimationFrame = typeof window !== \"undefined\" ? window.cancelAnimationFrame || window.webkitCancelAnimationFrame || window.mozCancelAnimationFrame || cafPolyfill : global.cancelAnimationFrame || cafPolyfill;\n\nvar warn = function warn(msg) {\n return console && typeof console.warn === \"function\" && console.warn(msg);\n};\n\nvar _helmetCallback = null;\n\nvar handleClientStateChange = function handleClientStateChange(newState) {\n if (_helmetCallback) {\n cancelAnimationFrame(_helmetCallback);\n }\n\n if (newState.defer) {\n _helmetCallback = requestAnimationFrame(function () {\n commitTagChanges(newState, function () {\n _helmetCallback = null;\n });\n });\n } else {\n commitTagChanges(newState);\n _helmetCallback = null;\n }\n};\n\nvar commitTagChanges = function commitTagChanges(newState, cb) {\n var baseTag = newState.baseTag,\n bodyAttributes = newState.bodyAttributes,\n htmlAttributes = newState.htmlAttributes,\n linkTags = newState.linkTags,\n metaTags = newState.metaTags,\n noscriptTags = newState.noscriptTags,\n onChangeClientState = newState.onChangeClientState,\n scriptTags = newState.scriptTags,\n styleTags = newState.styleTags,\n title = newState.title,\n titleAttributes = newState.titleAttributes;\n\n updateAttributes(_HelmetConstants.TAG_NAMES.BODY, bodyAttributes);\n updateAttributes(_HelmetConstants.TAG_NAMES.HTML, htmlAttributes);\n\n updateTitle(title, titleAttributes);\n\n var tagUpdates = {\n baseTag: updateTags(_HelmetConstants.TAG_NAMES.BASE, baseTag),\n linkTags: updateTags(_HelmetConstants.TAG_NAMES.LINK, linkTags),\n metaTags: updateTags(_HelmetConstants.TAG_NAMES.META, metaTags),\n noscriptTags: updateTags(_HelmetConstants.TAG_NAMES.NOSCRIPT, noscriptTags),\n scriptTags: updateTags(_HelmetConstants.TAG_NAMES.SCRIPT, scriptTags),\n styleTags: updateTags(_HelmetConstants.TAG_NAMES.STYLE, styleTags)\n };\n\n var addedTags = {};\n var removedTags = {};\n\n Object.keys(tagUpdates).forEach(function (tagType) {\n var _tagUpdates$tagType = tagUpdates[tagType],\n newTags = _tagUpdates$tagType.newTags,\n oldTags = _tagUpdates$tagType.oldTags;\n\n\n if (newTags.length) {\n addedTags[tagType] = newTags;\n }\n if (oldTags.length) {\n removedTags[tagType] = tagUpdates[tagType].oldTags;\n }\n });\n\n cb && cb();\n\n onChangeClientState(newState, addedTags, removedTags);\n};\n\nvar flattenArray = function flattenArray(possibleArray) {\n return Array.isArray(possibleArray) ? possibleArray.join(\"\") : possibleArray;\n};\n\nvar updateTitle = function updateTitle(title, attributes) {\n if (typeof title !== \"undefined\" && document.title !== title) {\n document.title = flattenArray(title);\n }\n\n updateAttributes(_HelmetConstants.TAG_NAMES.TITLE, attributes);\n};\n\nvar updateAttributes = function updateAttributes(tagName, attributes) {\n var elementTag = document.getElementsByTagName(tagName)[0];\n\n if (!elementTag) {\n return;\n }\n\n var helmetAttributeString = elementTag.getAttribute(_HelmetConstants.HELMET_ATTRIBUTE);\n var helmetAttributes = helmetAttributeString ? helmetAttributeString.split(\",\") : [];\n var attributesToRemove = [].concat(helmetAttributes);\n var attributeKeys = Object.keys(attributes);\n\n for (var i = 0; i < attributeKeys.length; i++) {\n var attribute = attributeKeys[i];\n var value = attributes[attribute] || \"\";\n\n if (elementTag.getAttribute(attribute) !== value) {\n elementTag.setAttribute(attribute, value);\n }\n\n if (helmetAttributes.indexOf(attribute) === -1) {\n helmetAttributes.push(attribute);\n }\n\n var indexToSave = attributesToRemove.indexOf(attribute);\n if (indexToSave !== -1) {\n attributesToRemove.splice(indexToSave, 1);\n }\n }\n\n for (var _i = attributesToRemove.length - 1; _i >= 0; _i--) {\n elementTag.removeAttribute(attributesToRemove[_i]);\n }\n\n if (helmetAttributes.length === attributesToRemove.length) {\n elementTag.removeAttribute(_HelmetConstants.HELMET_ATTRIBUTE);\n } else if (elementTag.getAttribute(_HelmetConstants.HELMET_ATTRIBUTE) !== attributeKeys.join(\",\")) {\n elementTag.setAttribute(_HelmetConstants.HELMET_ATTRIBUTE, attributeKeys.join(\",\"));\n }\n};\n\nvar updateTags = function updateTags(type, tags) {\n var headElement = document.head || document.querySelector(_HelmetConstants.TAG_NAMES.HEAD);\n var tagNodes = headElement.querySelectorAll(type + \"[\" + _HelmetConstants.HELMET_ATTRIBUTE + \"]\");\n var oldTags = Array.prototype.slice.call(tagNodes);\n var newTags = [];\n var indexToDelete = void 0;\n\n if (tags && tags.length) {\n tags.forEach(function (tag) {\n var newElement = document.createElement(type);\n\n for (var attribute in tag) {\n if (tag.hasOwnProperty(attribute)) {\n if (attribute === _HelmetConstants.TAG_PROPERTIES.INNER_HTML) {\n newElement.innerHTML = tag.innerHTML;\n } else if (attribute === _HelmetConstants.TAG_PROPERTIES.CSS_TEXT) {\n if (newElement.styleSheet) {\n newElement.styleSheet.cssText = tag.cssText;\n } else {\n newElement.appendChild(document.createTextNode(tag.cssText));\n }\n } else {\n var value = typeof tag[attribute] === \"undefined\" ? \"\" : tag[attribute];\n newElement.setAttribute(attribute, value);\n }\n }\n }\n\n newElement.setAttribute(_HelmetConstants.HELMET_ATTRIBUTE, \"true\");\n\n // Remove a duplicate tag from domTagstoRemove, so it isn't cleared.\n if (oldTags.some(function (existingTag, index) {\n indexToDelete = index;\n return newElement.isEqualNode(existingTag);\n })) {\n oldTags.splice(indexToDelete, 1);\n } else {\n newTags.push(newElement);\n }\n });\n }\n\n oldTags.forEach(function (tag) {\n return tag.parentNode.removeChild(tag);\n });\n newTags.forEach(function (tag) {\n return headElement.appendChild(tag);\n });\n\n return {\n oldTags: oldTags,\n newTags: newTags\n };\n};\n\nvar generateElementAttributesAsString = function generateElementAttributesAsString(attributes) {\n return Object.keys(attributes).reduce(function (str, key) {\n var attr = typeof attributes[key] !== \"undefined\" ? key + \"=\\\"\" + attributes[key] + \"\\\"\" : \"\" + key;\n return str ? str + \" \" + attr : attr;\n }, \"\");\n};\n\nvar generateTitleAsString = function generateTitleAsString(type, title, attributes, encode) {\n var attributeString = generateElementAttributesAsString(attributes);\n var flattenedTitle = flattenArray(title);\n return attributeString ? \"<\" + type + \" \" + _HelmetConstants.HELMET_ATTRIBUTE + \"=\\\"true\\\" \" + attributeString + \">\" + encodeSpecialCharacters(flattenedTitle, encode) + \"\" : \"<\" + type + \" \" + _HelmetConstants.HELMET_ATTRIBUTE + \"=\\\"true\\\">\" + encodeSpecialCharacters(flattenedTitle, encode) + \"\";\n};\n\nvar generateTagsAsString = function generateTagsAsString(type, tags, encode) {\n return tags.reduce(function (str, tag) {\n var attributeHtml = Object.keys(tag).filter(function (attribute) {\n return !(attribute === _HelmetConstants.TAG_PROPERTIES.INNER_HTML || attribute === _HelmetConstants.TAG_PROPERTIES.CSS_TEXT);\n }).reduce(function (string, attribute) {\n var attr = typeof tag[attribute] === \"undefined\" ? attribute : attribute + \"=\\\"\" + encodeSpecialCharacters(tag[attribute], encode) + \"\\\"\";\n return string ? string + \" \" + attr : attr;\n }, \"\");\n\n var tagContent = tag.innerHTML || tag.cssText || \"\";\n\n var isSelfClosing = _HelmetConstants.SELF_CLOSING_TAGS.indexOf(type) === -1;\n\n return str + \"<\" + type + \" \" + _HelmetConstants.HELMET_ATTRIBUTE + \"=\\\"true\\\" \" + attributeHtml + (isSelfClosing ? \"/>\" : \">\" + tagContent + \"\");\n }, \"\");\n};\n\nvar convertElementAttributestoReactProps = function convertElementAttributestoReactProps(attributes) {\n var initProps = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n return Object.keys(attributes).reduce(function (obj, key) {\n obj[_HelmetConstants.REACT_TAG_MAP[key] || key] = attributes[key];\n return obj;\n }, initProps);\n};\n\nvar convertReactPropstoHtmlAttributes = function convertReactPropstoHtmlAttributes(props) {\n var initAttributes = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n return Object.keys(props).reduce(function (obj, key) {\n obj[_HelmetConstants.HTML_TAG_MAP[key] || key] = props[key];\n return obj;\n }, initAttributes);\n};\n\nvar generateTitleAsReactComponent = function generateTitleAsReactComponent(type, title, attributes) {\n var _initProps;\n\n // assigning into an array to define toString function on it\n var initProps = (_initProps = {\n key: title\n }, _initProps[_HelmetConstants.HELMET_ATTRIBUTE] = true, _initProps);\n var props = convertElementAttributestoReactProps(attributes, initProps);\n\n return [_react2.default.createElement(_HelmetConstants.TAG_NAMES.TITLE, props, title)];\n};\n\nvar generateTagsAsReactComponent = function generateTagsAsReactComponent(type, tags) {\n return tags.map(function (tag, i) {\n var _mappedTag;\n\n var mappedTag = (_mappedTag = {\n key: i\n }, _mappedTag[_HelmetConstants.HELMET_ATTRIBUTE] = true, _mappedTag);\n\n Object.keys(tag).forEach(function (attribute) {\n var mappedAttribute = _HelmetConstants.REACT_TAG_MAP[attribute] || attribute;\n\n if (mappedAttribute === _HelmetConstants.TAG_PROPERTIES.INNER_HTML || mappedAttribute === _HelmetConstants.TAG_PROPERTIES.CSS_TEXT) {\n var content = tag.innerHTML || tag.cssText;\n mappedTag.dangerouslySetInnerHTML = { __html: content };\n } else {\n mappedTag[mappedAttribute] = tag[attribute];\n }\n });\n\n return _react2.default.createElement(type, mappedTag);\n });\n};\n\nvar getMethodsForTag = function getMethodsForTag(type, tags, encode) {\n switch (type) {\n case _HelmetConstants.TAG_NAMES.TITLE:\n return {\n toComponent: function toComponent() {\n return generateTitleAsReactComponent(type, tags.title, tags.titleAttributes, encode);\n },\n toString: function toString() {\n return generateTitleAsString(type, tags.title, tags.titleAttributes, encode);\n }\n };\n case _HelmetConstants.ATTRIBUTE_NAMES.BODY:\n case _HelmetConstants.ATTRIBUTE_NAMES.HTML:\n return {\n toComponent: function toComponent() {\n return convertElementAttributestoReactProps(tags);\n },\n toString: function toString() {\n return generateElementAttributesAsString(tags);\n }\n };\n default:\n return {\n toComponent: function toComponent() {\n return generateTagsAsReactComponent(type, tags);\n },\n toString: function toString() {\n return generateTagsAsString(type, tags, encode);\n }\n };\n }\n};\n\nvar mapStateOnServer = function mapStateOnServer(_ref) {\n var baseTag = _ref.baseTag,\n bodyAttributes = _ref.bodyAttributes,\n encode = _ref.encode,\n htmlAttributes = _ref.htmlAttributes,\n linkTags = _ref.linkTags,\n metaTags = _ref.metaTags,\n noscriptTags = _ref.noscriptTags,\n scriptTags = _ref.scriptTags,\n styleTags = _ref.styleTags,\n _ref$title = _ref.title,\n title = _ref$title === undefined ? \"\" : _ref$title,\n titleAttributes = _ref.titleAttributes;\n return {\n base: getMethodsForTag(_HelmetConstants.TAG_NAMES.BASE, baseTag, encode),\n bodyAttributes: getMethodsForTag(_HelmetConstants.ATTRIBUTE_NAMES.BODY, bodyAttributes, encode),\n htmlAttributes: getMethodsForTag(_HelmetConstants.ATTRIBUTE_NAMES.HTML, htmlAttributes, encode),\n link: getMethodsForTag(_HelmetConstants.TAG_NAMES.LINK, linkTags, encode),\n meta: getMethodsForTag(_HelmetConstants.TAG_NAMES.META, metaTags, encode),\n noscript: getMethodsForTag(_HelmetConstants.TAG_NAMES.NOSCRIPT, noscriptTags, encode),\n script: getMethodsForTag(_HelmetConstants.TAG_NAMES.SCRIPT, scriptTags, encode),\n style: getMethodsForTag(_HelmetConstants.TAG_NAMES.STYLE, styleTags, encode),\n title: getMethodsForTag(_HelmetConstants.TAG_NAMES.TITLE, { title: title, titleAttributes: titleAttributes }, encode)\n };\n};\n\nexports.convertReactPropstoHtmlAttributes = convertReactPropstoHtmlAttributes;\nexports.handleClientStateChange = handleClientStateChange;\nexports.mapStateOnServer = mapStateOnServer;\nexports.reducePropsToState = reducePropsToState;\nexports.requestAnimationFrame = requestAnimationFrame;\nexports.warn = warn;"],"sourceRoot":""} \ No newline at end of file diff --git a/0-67f20c16a45cbf9263cf.js b/0-67f20c16a45cbf9263cf.js new file mode 100644 index 000000000..01f79407b --- /dev/null +++ b/0-67f20c16a45cbf9263cf.js @@ -0,0 +1,2 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[0],{148:function(e,t){e.exports=function(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}},150:function(e,t,n){"use strict";var r=n(8);t.__esModule=!0,t.withPrefix=T,t.navigateTo=t.replace=t.push=t.navigate=t.default=void 0;var o=r(n(148)),i=r(n(456)),a=r(n(6)),u=r(n(51)),c=r(n(52)),s=r(n(4)),l=r(n(0)),f=n(19),p=n(146);function T(e){return function(e){return e.replace(/\/+/g,"/")}("/"+e)}var d={activeClassName:s.default.string,activeStyle:s.default.object},E=function(e){function t(t){var n;n=e.call(this)||this,(0,c.default)((0,u.default)((0,u.default)(n)),"defaultGetProps",function(e){return e.isCurrent?{className:[n.props.className,n.props.activeClassName].filter(Boolean).join(" "),style:(0,i.default)({},n.props.style,n.props.activeStyle)}:null});var r=!1;return"undefined"!=typeof window&&window.IntersectionObserver&&(r=!0),n.state={IOSupported:r},n.handleRef=n.handleRef.bind((0,u.default)((0,u.default)(n))),n}(0,a.default)(t,e);var n=t.prototype;return n.componentDidUpdate=function(e,t){this.props.to===e.to||this.state.IOSupported||___loader.enqueue((0,p.parsePath)(this.props.to).pathname)},n.componentDidMount=function(){this.state.IOSupported||___loader.enqueue((0,p.parsePath)(this.props.to).pathname)},n.handleRef=function(e){var t,n,r,o=this;this.props.innerRef&&this.props.innerRef(e),this.state.IOSupported&&e&&(t=e,n=function(){___loader.enqueue((0,p.parsePath)(o.props.to).pathname)},(r=new window.IntersectionObserver(function(e){e.forEach(function(e){t===e.target&&(e.isIntersecting||e.intersectionRatio>0)&&(r.unobserve(t),r.disconnect(),n())})})).observe(t))},n.render=function(){var e=this,t=this.props,n=t.to,r=t.getProps,a=void 0===r?this.defaultGetProps:r,u=t.onClick,c=t.onMouseEnter,s=(t.activeClassName,t.activeStyle,t.ref,t.innerRef,t.state),d=t.replace,E=(0,o.default)(t,["to","getProps","onClick","onMouseEnter","activeClassName","activeStyle","ref","innerRef","state","replace"]),h=T(n);return l.default.createElement(f.Link,(0,i.default)({to:h,state:s,getProps:a,innerRef:this.handleRef,onMouseEnter:function(e){c&&c(e),___loader.hovering((0,p.parsePath)(n).pathname)},onClick:function(t){return u&&u(t),0!==t.button||e.props.target||t.defaultPrevented||t.metaKey||t.altKey||t.ctrlKey||t.shiftKey||(t.preventDefault(),A(n,{state:s,replace:d})),!0}},E))},t}(l.default.Component);E.propTypes=(0,i.default)({},d,{innerRef:s.default.func,onClick:s.default.func,to:s.default.string.isRequired,replace:s.default.bool});var h=E;t.default=h;var A=function(e,t){window.___navigate(T(e),t)};t.navigate=A;var y=function(e){console.warn('The "push" method is now deprecated and will be removed in Gatsby v3. Please use "navigate" instead.'),window.___push(T(e))};t.push=y;t.replace=function(e){console.warn('The "replace" method is now deprecated and will be removed in Gatsby v3. Please use "navigate" instead.'),window.___replace(T(e))};t.navigateTo=function(e){return console.warn('The "navigateTo" method is now deprecated and will be removed in Gatsby v3. Please use "navigate" instead.'),y(e)}},245:function(e,t,n){"use strict";n(294)("bold",function(e){return function(){return e(this,"b","","")}})},246:function(e,t,n){"use strict";n(294)("small",function(e){return function(){return e(this,"small","","")}})},292:function(e,t,n){(function(e){function n(e,t){for(var n=0,r=e.length-1;r>=0;r--){var o=e[r];"."===o?e.splice(r,1):".."===o?(e.splice(r,1),n++):n&&(e.splice(r,1),n--)}if(t)for(;n--;n)e.unshift("..");return e}var r=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/,o=function(e){return r.exec(e).slice(1)};function i(e,t){if(e.filter)return e.filter(t);for(var n=[],r=0;r=-1&&!r;o--){var a=o>=0?arguments[o]:e.cwd();if("string"!=typeof a)throw new TypeError("Arguments to path.resolve must be strings");a&&(t=a+"/"+t,r="/"===a.charAt(0))}return(r?"/":"")+(t=n(i(t.split("/"),function(e){return!!e}),!r).join("/"))||"."},t.normalize=function(e){var r=t.isAbsolute(e),o="/"===a(e,-1);return(e=n(i(e.split("/"),function(e){return!!e}),!r).join("/"))||r||(e="."),e&&o&&(e+="/"),(r?"/":"")+e},t.isAbsolute=function(e){return"/"===e.charAt(0)},t.join=function(){var e=Array.prototype.slice.call(arguments,0);return t.normalize(i(e,function(e,t){if("string"!=typeof e)throw new TypeError("Arguments to path.join must be strings");return e}).join("/"))},t.relative=function(e,n){function r(e){for(var t=0;t=0&&""===e[n];n--);return t>n?[]:e.slice(t,n-t+1)}e=t.resolve(e).substr(1),n=t.resolve(n).substr(1);for(var o=r(e.split("/")),i=r(n.split("/")),a=Math.min(o.length,i.length),u=a,c=0;c"+o+""};e.exports=function(e,t){var n={};n[e]=t(u),r(r.P+r.F*o(function(){var t=""[e]('"');return t!==t.toLowerCase()||t.split('"').length>3}),"String",n)}},323:function(e,t,n){t.__esModule=!0,t.Helmet=void 0;var r=Object.assign||function(e){for(var t=1;t=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}var T,d,E,h=(0,u.default)(s.reducePropsToState,s.handleClientStateChange,s.mapStateOnServer)(function(){return null}),A=(T=h,E=d=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.apply(this,arguments))}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),t.prototype.shouldComponentUpdate=function(e){return!(0,c.default)(this.props,e)},t.prototype.mapNestedChildrenToProps=function(e,t){if(!t)return null;switch(e.type){case l.TAG_NAMES.SCRIPT:case l.TAG_NAMES.NOSCRIPT:return{innerHTML:t};case l.TAG_NAMES.STYLE:return{cssText:t}}throw new Error("<"+e.type+" /> elements are self-closing and can not contain children. Refer to our API for more information.")},t.prototype.flattenArrayTypeChildren=function(e){var t,n=e.child,o=e.arrayTypeChildren,i=e.newChildProps,a=e.nestedChildren;return r({},o,((t={})[n.type]=[].concat(o[n.type]||[],[r({},i,this.mapNestedChildrenToProps(n,a))]),t))},t.prototype.mapObjectTypeChildren=function(e){var t,n,o=e.child,i=e.newProps,a=e.newChildProps,u=e.nestedChildren;switch(o.type){case l.TAG_NAMES.TITLE:return r({},i,((t={})[o.type]=u,t.titleAttributes=r({},a),t));case l.TAG_NAMES.BODY:return r({},i,{bodyAttributes:r({},a)});case l.TAG_NAMES.HTML:return r({},i,{htmlAttributes:r({},a)})}return r({},i,((n={})[o.type]=r({},a),n))},t.prototype.mapArrayTypeChildrenToProps=function(e,t){var n=r({},t);return Object.keys(e).forEach(function(t){var o;n=r({},n,((o={})[t]=e[t],o))}),n},t.prototype.warnOnInvalidChildren=function(e,t){return!0},t.prototype.mapChildrenToProps=function(e,t){var n=this,r={};return i.default.Children.forEach(e,function(e){if(e&&e.props){var o=e.props,i=o.children,a=p(o,["children"]),u=(0,s.convertReactPropstoHtmlAttributes)(a);switch(n.warnOnInvalidChildren(e,i),e.type){case l.TAG_NAMES.LINK:case l.TAG_NAMES.META:case l.TAG_NAMES.NOSCRIPT:case l.TAG_NAMES.SCRIPT:case l.TAG_NAMES.STYLE:r=n.flattenArrayTypeChildren({child:e,arrayTypeChildren:r,newChildProps:u,nestedChildren:i});break;default:t=n.mapObjectTypeChildren({child:e,newProps:t,newChildProps:u,nestedChildren:i})}}}),t=this.mapArrayTypeChildrenToProps(r,t)},t.prototype.render=function(){var e=this.props,t=e.children,n=p(e,["children"]),o=r({},n);return t&&(o=this.mapChildrenToProps(t,o)),i.default.createElement(T,o)},o(t,null,[{key:"canUseDOM",set:function(e){T.canUseDOM=e}}]),t}(i.default.Component),d.propTypes={base:a.default.object,bodyAttributes:a.default.object,children:a.default.oneOfType([a.default.arrayOf(a.default.node),a.default.node]),defaultTitle:a.default.string,defer:a.default.bool,encodeSpecialCharacters:a.default.bool,htmlAttributes:a.default.object,link:a.default.arrayOf(a.default.object),meta:a.default.arrayOf(a.default.object),noscript:a.default.arrayOf(a.default.object),onChangeClientState:a.default.func,script:a.default.arrayOf(a.default.object),style:a.default.arrayOf(a.default.object),title:a.default.string,titleAttributes:a.default.object,titleTemplate:a.default.string},d.defaultProps={defer:!0,encodeSpecialCharacters:!0},d.peek=T.peek,d.rewind=function(){var e=T.rewind();return e||(e=(0,s.mapStateOnServer)({baseTag:[],bodyAttributes:{},encodeSpecialCharacters:!0,htmlAttributes:{},linkTags:[],metaTags:[],noscriptTags:[],scriptTags:[],styleTags:[],title:"",titleAttributes:{}})),e},E);A.renderStatic=A.rewind,t.Helmet=A,t.default=A},443:function(e,t){t.__esModule=!0;t.ATTRIBUTE_NAMES={BODY:"bodyAttributes",HTML:"htmlAttributes",TITLE:"titleAttributes"};var n=t.TAG_NAMES={BASE:"base",BODY:"body",HEAD:"head",HTML:"html",LINK:"link",META:"meta",NOSCRIPT:"noscript",SCRIPT:"script",STYLE:"style",TITLE:"title"},r=(t.VALID_TAG_NAMES=Object.keys(n).map(function(e){return n[e]}),t.TAG_PROPERTIES={CHARSET:"charset",CSS_TEXT:"cssText",HREF:"href",HTTPEQUIV:"http-equiv",INNER_HTML:"innerHTML",ITEM_PROP:"itemprop",NAME:"name",PROPERTY:"property",REL:"rel",SRC:"src"},t.REACT_TAG_MAP={accesskey:"accessKey",charset:"charSet",class:"className",contenteditable:"contentEditable",contextmenu:"contextMenu","http-equiv":"httpEquiv",itemprop:"itemProp",tabindex:"tabIndex"});t.HELMET_PROPS={DEFAULT_TITLE:"defaultTitle",DEFER:"defer",ENCODE_SPECIAL_CHARACTERS:"encodeSpecialCharacters",ON_CHANGE_CLIENT_STATE:"onChangeClientState",TITLE_TEMPLATE:"titleTemplate"},t.HTML_TAG_MAP=Object.keys(r).reduce(function(e,t){return e[r[t]]=t,e},{}),t.SELF_CLOSING_TAGS=[n.NOSCRIPT,n.SCRIPT,n.STYLE],t.HELMET_ATTRIBUTE="data-react-helmet"},444:function(e,t){var n,r,o=e.exports={};function i(){throw new Error("setTimeout has not been defined")}function a(){throw new Error("clearTimeout has not been defined")}function u(e){if(n===setTimeout)return setTimeout(e,0);if((n===i||!n)&&setTimeout)return n=setTimeout,setTimeout(e,0);try{return n(e,0)}catch(t){try{return n.call(null,e,0)}catch(t){return n.call(this,e,0)}}}!function(){try{n="function"==typeof setTimeout?setTimeout:i}catch(e){n=i}try{r="function"==typeof clearTimeout?clearTimeout:a}catch(e){r=a}}();var c,s=[],l=!1,f=-1;function p(){l&&c&&(l=!1,c.length?s=c.concat(s):f=-1,s.length&&T())}function T(){if(!l){var e=u(p);l=!0;for(var t=s.length;t;){for(c=s,s=[];++f1)for(var n=1;n=0;s--)if(f[s]!=p[s])return!1;for(s=f.length-1;s>=0;s--)if(l=f[s],!a(e[l],t[l],n))return!1;return typeof e==typeof t}(e,t,n))};function u(e){return null==e}function c(e){return!(!e||"object"!=typeof e||"number"!=typeof e.length)&&("function"==typeof e.copy&&"function"==typeof e.slice&&!(e.length>0&&"number"!=typeof e[0]))}},601:function(e,t){function n(e){var t=[];for(var n in e)t.push(n);return t}(e.exports="function"==typeof Object.keys?Object.keys:n).shim=n},602:function(e,t){var n="[object Arguments]"==function(){return Object.prototype.toString.call(arguments)}();function r(e){return"[object Arguments]"==Object.prototype.toString.call(e)}function o(e){return e&&"object"==typeof e&&"number"==typeof e.length&&Object.prototype.hasOwnProperty.call(e,"callee")&&!Object.prototype.propertyIsEnumerable.call(e,"callee")||!1}(t=e.exports=n?r:o).supported=r,t.unsupported=o},603:function(e,t,n){(function(e){t.__esModule=!0,t.warn=t.requestAnimationFrame=t.reducePropsToState=t.mapStateOnServer=t.handleClientStateChange=t.convertReactPropstoHtmlAttributes=void 0;var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},o=Object.assign||function(e){for(var t=1;t1&&void 0!==arguments[1])||arguments[1])?String(e):String(e).replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")},f=function(e,t){return t.filter(function(t){return void 0!==t[e]}).map(function(t){return t[e]}).reduce(function(e,t){return o({},e,t)},{})},p=function(e,t,n){var o={};return n.filter(function(t){return!!Array.isArray(t[e])||(void 0!==t[e]&&y("Helmet: "+e+' should be of type "Array". Instead found type "'+r(t[e])+'"'),!1)}).map(function(t){return t[e]}).reverse().reduce(function(e,n){var r={};n.filter(function(e){for(var n=void 0,i=Object.keys(e),a=0;a=0;n--){var r=e[n];if(r.hasOwnProperty(t))return r[t]}return null},d=(s=Date.now(),function(e){var t=Date.now();t-s>16?(s=t,e(t)):setTimeout(function(){d(e)},0)}),E=function(e){return clearTimeout(e)},h="undefined"!=typeof window?window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||d:e.requestAnimationFrame||d,A="undefined"!=typeof window?window.cancelAnimationFrame||window.webkitCancelAnimationFrame||window.mozCancelAnimationFrame||E:e.cancelAnimationFrame||E,y=function(e){return console&&"function"==typeof console.warn&&console.warn(e)},v=null,b=function(e,t){var n=e.baseTag,r=e.bodyAttributes,o=e.htmlAttributes,i=e.linkTags,a=e.metaTags,c=e.noscriptTags,s=e.onChangeClientState,l=e.scriptTags,f=e.styleTags,p=e.title,T=e.titleAttributes;_(u.TAG_NAMES.BODY,r),_(u.TAG_NAMES.HTML,o),S(p,T);var d={baseTag:g(u.TAG_NAMES.BASE,n),linkTags:g(u.TAG_NAMES.LINK,i),metaTags:g(u.TAG_NAMES.META,a),noscriptTags:g(u.TAG_NAMES.NOSCRIPT,c),scriptTags:g(u.TAG_NAMES.SCRIPT,l),styleTags:g(u.TAG_NAMES.STYLE,f)},E={},h={};Object.keys(d).forEach(function(e){var t=d[e],n=t.newTags,r=t.oldTags;n.length&&(E[e]=n),r.length&&(h[e]=d[e].oldTags)}),t&&t(),s(e,E,h)},m=function(e){return Array.isArray(e)?e.join(""):e},S=function(e,t){void 0!==e&&document.title!==e&&(document.title=m(e)),_(u.TAG_NAMES.TITLE,t)},_=function(e,t){var n=document.getElementsByTagName(e)[0];if(n){for(var r=n.getAttribute(u.HELMET_ATTRIBUTE),o=r?r.split(","):[],i=[].concat(o),a=Object.keys(t),c=0;c=0;p--)n.removeAttribute(i[p]);o.length===i.length?n.removeAttribute(u.HELMET_ATTRIBUTE):n.getAttribute(u.HELMET_ATTRIBUTE)!==a.join(",")&&n.setAttribute(u.HELMET_ATTRIBUTE,a.join(","))}},g=function(e,t){var n=document.head||document.querySelector(u.TAG_NAMES.HEAD),r=n.querySelectorAll(e+"["+u.HELMET_ATTRIBUTE+"]"),o=Array.prototype.slice.call(r),i=[],a=void 0;return t&&t.length&&t.forEach(function(t){var n=document.createElement(e);for(var r in t)if(t.hasOwnProperty(r))if(r===u.TAG_PROPERTIES.INNER_HTML)n.innerHTML=t.innerHTML;else if(r===u.TAG_PROPERTIES.CSS_TEXT)n.styleSheet?n.styleSheet.cssText=t.cssText:n.appendChild(document.createTextNode(t.cssText));else{var c=void 0===t[r]?"":t[r];n.setAttribute(r,c)}n.setAttribute(u.HELMET_ATTRIBUTE,"true"),o.some(function(e,t){return a=t,n.isEqualNode(e)})?o.splice(a,1):i.push(n)}),o.forEach(function(e){return e.parentNode.removeChild(e)}),i.forEach(function(e){return n.appendChild(e)}),{oldTags:o,newTags:i}},P=function(e){return Object.keys(e).reduce(function(t,n){var r=void 0!==e[n]?n+'="'+e[n]+'"':""+n;return t?t+" "+r:r},"")},w=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return Object.keys(e).reduce(function(t,n){return t[u.REACT_TAG_MAP[n]||n]=e[n],t},t)},O=function(e,t,n){switch(e){case u.TAG_NAMES.TITLE:return{toComponent:function(){return e=t.title,n=t.titleAttributes,(r={key:e})[u.HELMET_ATTRIBUTE]=!0,o=w(n,r),[i.default.createElement(u.TAG_NAMES.TITLE,o,e)];var e,n,r,o},toString:function(){return function(e,t,n,r){var o=P(n),i=m(t);return o?"<"+e+" "+u.HELMET_ATTRIBUTE+'="true" '+o+">"+l(i,r)+"":"<"+e+" "+u.HELMET_ATTRIBUTE+'="true">'+l(i,r)+""}(e,t.title,t.titleAttributes,n)}};case u.ATTRIBUTE_NAMES.BODY:case u.ATTRIBUTE_NAMES.HTML:return{toComponent:function(){return w(t)},toString:function(){return P(t)}};default:return{toComponent:function(){return function(e,t){return t.map(function(t,n){var r,o=((r={key:n})[u.HELMET_ATTRIBUTE]=!0,r);return Object.keys(t).forEach(function(e){var n=u.REACT_TAG_MAP[e]||e;if(n===u.TAG_PROPERTIES.INNER_HTML||n===u.TAG_PROPERTIES.CSS_TEXT){var r=t.innerHTML||t.cssText;o.dangerouslySetInnerHTML={__html:r}}else o[n]=t[e]}),i.default.createElement(e,o)})}(e,t)},toString:function(){return function(e,t,n){return t.reduce(function(t,r){var o=Object.keys(r).filter(function(e){return!(e===u.TAG_PROPERTIES.INNER_HTML||e===u.TAG_PROPERTIES.CSS_TEXT)}).reduce(function(e,t){var o=void 0===r[t]?t:t+'="'+l(r[t],n)+'"';return e?e+" "+o:o},""),i=r.innerHTML||r.cssText||"",a=-1===u.SELF_CLOSING_TAGS.indexOf(e);return t+"<"+e+" "+u.HELMET_ATTRIBUTE+'="true" '+o+(a?"/>":">"+i+"")},"")}(e,t,n)}}}};t.convertReactPropstoHtmlAttributes=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return Object.keys(e).reduce(function(t,n){return t[u.HTML_TAG_MAP[n]||n]=e[n],t},t)},t.handleClientStateChange=function(e){v&&A(v),e.defer?v=h(function(){b(e,function(){v=null})}):(b(e),v=null)},t.mapStateOnServer=function(e){var t=e.baseTag,n=e.bodyAttributes,r=e.encode,o=e.htmlAttributes,i=e.linkTags,a=e.metaTags,c=e.noscriptTags,s=e.scriptTags,l=e.styleTags,f=e.title,p=void 0===f?"":f,T=e.titleAttributes;return{base:O(u.TAG_NAMES.BASE,t,r),bodyAttributes:O(u.ATTRIBUTE_NAMES.BODY,n,r),htmlAttributes:O(u.ATTRIBUTE_NAMES.HTML,o,r),link:O(u.TAG_NAMES.LINK,i,r),meta:O(u.TAG_NAMES.META,a,r),noscript:O(u.TAG_NAMES.NOSCRIPT,c,r),script:O(u.TAG_NAMES.SCRIPT,s,r),style:O(u.TAG_NAMES.STYLE,l,r),title:O(u.TAG_NAMES.TITLE,{title:p,titleAttributes:T},r)}},t.reducePropsToState=function(e){return{baseTag:function(e,t){return t.filter(function(e){return void 0!==e[u.TAG_NAMES.BASE]}).map(function(e){return e[u.TAG_NAMES.BASE]}).reverse().reduce(function(t,n){if(!t.length)for(var r=Object.keys(n),o=0;o= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nmodule.exports = _objectWithoutPropertiesLoose;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.withPrefix = withPrefix;\nexports.navigateTo = exports.replace = exports.push = exports.navigate = exports.default = void 0;\n\nvar _objectWithoutPropertiesLoose2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectWithoutPropertiesLoose\"));\n\nvar _extends2 = _interopRequireDefault(require(\"@babel/runtime/helpers/extends\"));\n\nvar _inheritsLoose2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inheritsLoose\"));\n\nvar _assertThisInitialized2 = _interopRequireDefault(require(\"@babel/runtime/helpers/assertThisInitialized\"));\n\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _router = require(\"@reach/router\");\n\nvar _gatsby = require(\"gatsby\");\n\n/*global __PATH_PREFIX__ */\nfunction withPrefix(path) {\n return normalizePath(__PATH_PREFIX__ + \"/\" + path);\n}\n\nfunction normalizePath(path) {\n return path.replace(/\\/+/g, \"/\");\n}\n\nvar NavLinkPropTypes = {\n activeClassName: _propTypes.default.string,\n activeStyle: _propTypes.default.object // Set up IntersectionObserver\n\n};\n\nvar handleIntersection = function handleIntersection(el, cb) {\n var io = new window.IntersectionObserver(function (entries) {\n entries.forEach(function (entry) {\n if (el === entry.target) {\n // Check if element is within viewport, remove listener, destroy observer, and run link callback.\n // MSEdge doesn't currently support isIntersecting, so also test for an intersectionRatio > 0\n if (entry.isIntersecting || entry.intersectionRatio > 0) {\n io.unobserve(el);\n io.disconnect();\n cb();\n }\n }\n });\n }); // Add element to the observer\n\n io.observe(el);\n};\n\nvar GatsbyLink =\n/*#__PURE__*/\nfunction (_React$Component) {\n (0, _inheritsLoose2.default)(GatsbyLink, _React$Component);\n\n function GatsbyLink(props) {\n var _this;\n\n _this = _React$Component.call(this) || this; // Default to no support for IntersectionObserver\n\n (0, _defineProperty2.default)((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)), \"defaultGetProps\", function (_ref) {\n var isCurrent = _ref.isCurrent;\n\n if (isCurrent) {\n return {\n className: [_this.props.className, _this.props.activeClassName].filter(Boolean).join(\" \"),\n style: (0, _extends2.default)({}, _this.props.style, _this.props.activeStyle)\n };\n }\n\n return null;\n });\n var IOSupported = false;\n\n if (typeof window !== \"undefined\" && window.IntersectionObserver) {\n IOSupported = true;\n }\n\n _this.state = {\n IOSupported: IOSupported\n };\n _this.handleRef = _this.handleRef.bind((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)));\n return _this;\n }\n\n var _proto = GatsbyLink.prototype;\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps, prevState) {\n // Preserve non IO functionality if no support\n if (this.props.to !== prevProps.to && !this.state.IOSupported) {\n ___loader.enqueue((0, _gatsby.parsePath)(this.props.to).pathname);\n }\n };\n\n _proto.componentDidMount = function componentDidMount() {\n // Preserve non IO functionality if no support\n if (!this.state.IOSupported) {\n ___loader.enqueue((0, _gatsby.parsePath)(this.props.to).pathname);\n }\n };\n\n _proto.handleRef = function handleRef(ref) {\n var _this2 = this;\n\n this.props.innerRef && this.props.innerRef(ref);\n\n if (this.state.IOSupported && ref) {\n // If IO supported and element reference found, setup Observer functionality\n handleIntersection(ref, function () {\n ___loader.enqueue((0, _gatsby.parsePath)(_this2.props.to).pathname);\n });\n }\n };\n\n _proto.render = function render() {\n var _this3 = this;\n\n var _this$props = this.props,\n to = _this$props.to,\n _this$props$getProps = _this$props.getProps,\n getProps = _this$props$getProps === void 0 ? this.defaultGetProps : _this$props$getProps,\n _onClick = _this$props.onClick,\n _onMouseEnter = _this$props.onMouseEnter,\n $activeClassName = _this$props.activeClassName,\n $activeStyle = _this$props.activeStyle,\n $ref = _this$props.ref,\n $innerRef = _this$props.innerRef,\n state = _this$props.state,\n replace = _this$props.replace,\n rest = (0, _objectWithoutPropertiesLoose2.default)(_this$props, [\"to\", \"getProps\", \"onClick\", \"onMouseEnter\", \"activeClassName\", \"activeStyle\", \"ref\", \"innerRef\", \"state\", \"replace\"]);\n var prefixedTo = withPrefix(to);\n return _react.default.createElement(_router.Link, (0, _extends2.default)({\n to: prefixedTo,\n state: state,\n getProps: getProps,\n innerRef: this.handleRef,\n onMouseEnter: function onMouseEnter(e) {\n // eslint-disable-line\n _onMouseEnter && _onMouseEnter(e);\n\n ___loader.hovering((0, _gatsby.parsePath)(to).pathname);\n },\n onClick: function onClick(e) {\n // eslint-disable-line\n _onClick && _onClick(e);\n\n if (e.button === 0 && // ignore right clicks\n !_this3.props.target && // let browser handle \"target=_blank\"\n !e.defaultPrevented && // onClick prevented default\n !e.metaKey && // ignore clicks with modifier keys...\n !e.altKey && !e.ctrlKey && !e.shiftKey) {\n e.preventDefault(); // Make sure the necessary scripts and data are\n // loaded before continuing.\n\n navigate(to, {\n state: state,\n replace: replace\n });\n }\n\n return true;\n }\n }, rest));\n };\n\n return GatsbyLink;\n}(_react.default.Component);\n\nGatsbyLink.propTypes = (0, _extends2.default)({}, NavLinkPropTypes, {\n innerRef: _propTypes.default.func,\n onClick: _propTypes.default.func,\n to: _propTypes.default.string.isRequired,\n replace: _propTypes.default.bool\n});\nvar _default = GatsbyLink;\nexports.default = _default;\n\nvar navigate = function navigate(to, options) {\n window.___navigate(withPrefix(to), options);\n};\n\nexports.navigate = navigate;\n\nvar push = function push(to) {\n console.warn(\"The \\\"push\\\" method is now deprecated and will be removed in Gatsby v3. Please use \\\"navigate\\\" instead.\");\n\n window.___push(withPrefix(to));\n};\n\nexports.push = push;\n\nvar replace = function replace(to) {\n console.warn(\"The \\\"replace\\\" method is now deprecated and will be removed in Gatsby v3. Please use \\\"navigate\\\" instead.\");\n\n window.___replace(withPrefix(to));\n}; // TODO: Remove navigateTo for Gatsby v3\n\n\nexports.replace = replace;\n\nvar navigateTo = function navigateTo(to) {\n console.warn(\"The \\\"navigateTo\\\" method is now deprecated and will be removed in Gatsby v3. Please use \\\"navigate\\\" instead.\");\n return push(to);\n};\n\nexports.navigateTo = navigateTo;","'use strict';\n// B.2.3.5 String.prototype.bold()\nrequire('./_string-html')('bold', function (createHTML) {\n return function bold() {\n return createHTML(this, 'b', '', '');\n };\n});\n","'use strict';\n// B.2.3.11 String.prototype.small()\nrequire('./_string-html')('small', function (createHTML) {\n return function small() {\n return createHTML(this, 'small', '', '');\n };\n});\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// resolves . and .. elements in a path array with directory names there\n// must be no slashes, empty elements, or device names (c:\\) in the array\n// (so also no leading and trailing slashes - it does not distinguish\n// relative and absolute paths)\nfunction normalizeArray(parts, allowAboveRoot) {\n // if the path tries to go above the root, `up` ends up > 0\n var up = 0;\n for (var i = parts.length - 1; i >= 0; i--) {\n var last = parts[i];\n if (last === '.') {\n parts.splice(i, 1);\n } else if (last === '..') {\n parts.splice(i, 1);\n up++;\n } else if (up) {\n parts.splice(i, 1);\n up--;\n }\n }\n\n // if the path is allowed to go above the root, restore leading ..s\n if (allowAboveRoot) {\n for (; up--; up) {\n parts.unshift('..');\n }\n }\n\n return parts;\n}\n\n// Split a filename into [root, dir, basename, ext], unix version\n// 'root' is just a slash, or nothing.\nvar splitPathRe =\n /^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;\nvar splitPath = function(filename) {\n return splitPathRe.exec(filename).slice(1);\n};\n\n// path.resolve([from ...], to)\n// posix version\nexports.resolve = function() {\n var resolvedPath = '',\n resolvedAbsolute = false;\n\n for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n var path = (i >= 0) ? arguments[i] : process.cwd();\n\n // Skip empty and invalid entries\n if (typeof path !== 'string') {\n throw new TypeError('Arguments to path.resolve must be strings');\n } else if (!path) {\n continue;\n }\n\n resolvedPath = path + '/' + resolvedPath;\n resolvedAbsolute = path.charAt(0) === '/';\n }\n\n // At this point the path should be resolved to a full absolute path, but\n // handle relative paths to be safe (might happen when process.cwd() fails)\n\n // Normalize the path\n resolvedPath = normalizeArray(filter(resolvedPath.split('/'), function(p) {\n return !!p;\n }), !resolvedAbsolute).join('/');\n\n return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.';\n};\n\n// path.normalize(path)\n// posix version\nexports.normalize = function(path) {\n var isAbsolute = exports.isAbsolute(path),\n trailingSlash = substr(path, -1) === '/';\n\n // Normalize the path\n path = normalizeArray(filter(path.split('/'), function(p) {\n return !!p;\n }), !isAbsolute).join('/');\n\n if (!path && !isAbsolute) {\n path = '.';\n }\n if (path && trailingSlash) {\n path += '/';\n }\n\n return (isAbsolute ? '/' : '') + path;\n};\n\n// posix version\nexports.isAbsolute = function(path) {\n return path.charAt(0) === '/';\n};\n\n// posix version\nexports.join = function() {\n var paths = Array.prototype.slice.call(arguments, 0);\n return exports.normalize(filter(paths, function(p, index) {\n if (typeof p !== 'string') {\n throw new TypeError('Arguments to path.join must be strings');\n }\n return p;\n }).join('/'));\n};\n\n\n// path.relative(from, to)\n// posix version\nexports.relative = function(from, to) {\n from = exports.resolve(from).substr(1);\n to = exports.resolve(to).substr(1);\n\n function trim(arr) {\n var start = 0;\n for (; start < arr.length; start++) {\n if (arr[start] !== '') break;\n }\n\n var end = arr.length - 1;\n for (; end >= 0; end--) {\n if (arr[end] !== '') break;\n }\n\n if (start > end) return [];\n return arr.slice(start, end - start + 1);\n }\n\n var fromParts = trim(from.split('/'));\n var toParts = trim(to.split('/'));\n\n var length = Math.min(fromParts.length, toParts.length);\n var samePartsLength = length;\n for (var i = 0; i < length; i++) {\n if (fromParts[i] !== toParts[i]) {\n samePartsLength = i;\n break;\n }\n }\n\n var outputParts = [];\n for (var i = samePartsLength; i < fromParts.length; i++) {\n outputParts.push('..');\n }\n\n outputParts = outputParts.concat(toParts.slice(samePartsLength));\n\n return outputParts.join('/');\n};\n\nexports.sep = '/';\nexports.delimiter = ':';\n\nexports.dirname = function(path) {\n var result = splitPath(path),\n root = result[0],\n dir = result[1];\n\n if (!root && !dir) {\n // No dirname whatsoever\n return '.';\n }\n\n if (dir) {\n // It has a dirname, strip trailing slash\n dir = dir.substr(0, dir.length - 1);\n }\n\n return root + dir;\n};\n\n\nexports.basename = function(path, ext) {\n var f = splitPath(path)[2];\n // TODO: make this comparison case-insensitive on windows?\n if (ext && f.substr(-1 * ext.length) === ext) {\n f = f.substr(0, f.length - ext.length);\n }\n return f;\n};\n\n\nexports.extname = function(path) {\n return splitPath(path)[3];\n};\n\nfunction filter (xs, f) {\n if (xs.filter) return xs.filter(f);\n var res = [];\n for (var i = 0; i < xs.length; i++) {\n if (f(xs[i], i, xs)) res.push(xs[i]);\n }\n return res;\n}\n\n// String.prototype.substr - negative index don't work in IE8\nvar substr = 'ab'.substr(-1) === 'b'\n ? function (str, start, len) { return str.substr(start, len) }\n : function (str, start, len) {\n if (start < 0) start = str.length + start;\n return str.substr(start, len);\n }\n;\n","var $export = require('./_export');\nvar fails = require('./_fails');\nvar defined = require('./_defined');\nvar quot = /\"/g;\n// B.2.3.2.1 CreateHTML(string, tag, attribute, value)\nvar createHTML = function (string, tag, attribute, value) {\n var S = String(defined(string));\n var p1 = '<' + tag;\n if (attribute !== '') p1 += ' ' + attribute + '=\"' + String(value).replace(quot, '"') + '\"';\n return p1 + '>' + S + '';\n};\nmodule.exports = function (NAME, exec) {\n var O = {};\n O[NAME] = exec(createHTML);\n $export($export.P + $export.F * fails(function () {\n var test = ''[NAME]('\"');\n return test !== test.toLowerCase() || test.split('\"').length > 3;\n }), 'String', O);\n};\n","exports.__esModule = true;\nexports.Helmet = undefined;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require(\"react\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require(\"prop-types\");\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _reactSideEffect = require(\"react-side-effect\");\n\nvar _reactSideEffect2 = _interopRequireDefault(_reactSideEffect);\n\nvar _deepEqual = require(\"deep-equal\");\n\nvar _deepEqual2 = _interopRequireDefault(_deepEqual);\n\nvar _HelmetUtils = require(\"./HelmetUtils.js\");\n\nvar _HelmetConstants = require(\"./HelmetConstants.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Helmet = function Helmet(Component) {\n var _class, _temp;\n\n return _temp = _class = function (_React$Component) {\n _inherits(HelmetWrapper, _React$Component);\n\n function HelmetWrapper() {\n _classCallCheck(this, HelmetWrapper);\n\n return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n }\n\n HelmetWrapper.prototype.shouldComponentUpdate = function shouldComponentUpdate(nextProps) {\n return !(0, _deepEqual2.default)(this.props, nextProps);\n };\n\n HelmetWrapper.prototype.mapNestedChildrenToProps = function mapNestedChildrenToProps(child, nestedChildren) {\n if (!nestedChildren) {\n return null;\n }\n\n switch (child.type) {\n case _HelmetConstants.TAG_NAMES.SCRIPT:\n case _HelmetConstants.TAG_NAMES.NOSCRIPT:\n return {\n innerHTML: nestedChildren\n };\n\n case _HelmetConstants.TAG_NAMES.STYLE:\n return {\n cssText: nestedChildren\n };\n }\n\n throw new Error(\"<\" + child.type + \" /> elements are self-closing and can not contain children. Refer to our API for more information.\");\n };\n\n HelmetWrapper.prototype.flattenArrayTypeChildren = function flattenArrayTypeChildren(_ref) {\n var _extends2;\n\n var child = _ref.child,\n arrayTypeChildren = _ref.arrayTypeChildren,\n newChildProps = _ref.newChildProps,\n nestedChildren = _ref.nestedChildren;\n\n return _extends({}, arrayTypeChildren, (_extends2 = {}, _extends2[child.type] = [].concat(arrayTypeChildren[child.type] || [], [_extends({}, newChildProps, this.mapNestedChildrenToProps(child, nestedChildren))]), _extends2));\n };\n\n HelmetWrapper.prototype.mapObjectTypeChildren = function mapObjectTypeChildren(_ref2) {\n var _extends3, _extends4;\n\n var child = _ref2.child,\n newProps = _ref2.newProps,\n newChildProps = _ref2.newChildProps,\n nestedChildren = _ref2.nestedChildren;\n\n switch (child.type) {\n case _HelmetConstants.TAG_NAMES.TITLE:\n return _extends({}, newProps, (_extends3 = {}, _extends3[child.type] = nestedChildren, _extends3.titleAttributes = _extends({}, newChildProps), _extends3));\n\n case _HelmetConstants.TAG_NAMES.BODY:\n return _extends({}, newProps, {\n bodyAttributes: _extends({}, newChildProps)\n });\n\n case _HelmetConstants.TAG_NAMES.HTML:\n return _extends({}, newProps, {\n htmlAttributes: _extends({}, newChildProps)\n });\n }\n\n return _extends({}, newProps, (_extends4 = {}, _extends4[child.type] = _extends({}, newChildProps), _extends4));\n };\n\n HelmetWrapper.prototype.mapArrayTypeChildrenToProps = function mapArrayTypeChildrenToProps(arrayTypeChildren, newProps) {\n var newFlattenedProps = _extends({}, newProps);\n\n Object.keys(arrayTypeChildren).forEach(function (arrayChildName) {\n var _extends5;\n\n newFlattenedProps = _extends({}, newFlattenedProps, (_extends5 = {}, _extends5[arrayChildName] = arrayTypeChildren[arrayChildName], _extends5));\n });\n\n return newFlattenedProps;\n };\n\n HelmetWrapper.prototype.warnOnInvalidChildren = function warnOnInvalidChildren(child, nestedChildren) {\n if (process.env.NODE_ENV !== \"production\") {\n if (!_HelmetConstants.VALID_TAG_NAMES.some(function (name) {\n return child.type === name;\n })) {\n if (typeof child.type === \"function\") {\n return (0, _HelmetUtils.warn)(\"You may be attempting to nest components within each other, which is not allowed. Refer to our API for more information.\");\n }\n\n return (0, _HelmetUtils.warn)(\"Only elements types \" + _HelmetConstants.VALID_TAG_NAMES.join(\", \") + \" are allowed. Helmet does not support rendering <\" + child.type + \"> elements. Refer to our API for more information.\");\n }\n\n if (nestedChildren && typeof nestedChildren !== \"string\" && (!Array.isArray(nestedChildren) || nestedChildren.some(function (nestedChild) {\n return typeof nestedChild !== \"string\";\n }))) {\n throw new Error(\"Helmet expects a string as a child of <\" + child.type + \">. Did you forget to wrap your children in braces? ( <\" + child.type + \">{``} ) Refer to our API for more information.\");\n }\n }\n\n return true;\n };\n\n HelmetWrapper.prototype.mapChildrenToProps = function mapChildrenToProps(children, newProps) {\n var _this2 = this;\n\n var arrayTypeChildren = {};\n\n _react2.default.Children.forEach(children, function (child) {\n if (!child || !child.props) {\n return;\n }\n\n var _child$props = child.props,\n nestedChildren = _child$props.children,\n childProps = _objectWithoutProperties(_child$props, [\"children\"]);\n\n var newChildProps = (0, _HelmetUtils.convertReactPropstoHtmlAttributes)(childProps);\n\n _this2.warnOnInvalidChildren(child, nestedChildren);\n\n switch (child.type) {\n case _HelmetConstants.TAG_NAMES.LINK:\n case _HelmetConstants.TAG_NAMES.META:\n case _HelmetConstants.TAG_NAMES.NOSCRIPT:\n case _HelmetConstants.TAG_NAMES.SCRIPT:\n case _HelmetConstants.TAG_NAMES.STYLE:\n arrayTypeChildren = _this2.flattenArrayTypeChildren({\n child: child,\n arrayTypeChildren: arrayTypeChildren,\n newChildProps: newChildProps,\n nestedChildren: nestedChildren\n });\n break;\n\n default:\n newProps = _this2.mapObjectTypeChildren({\n child: child,\n newProps: newProps,\n newChildProps: newChildProps,\n nestedChildren: nestedChildren\n });\n break;\n }\n });\n\n newProps = this.mapArrayTypeChildrenToProps(arrayTypeChildren, newProps);\n return newProps;\n };\n\n HelmetWrapper.prototype.render = function render() {\n var _props = this.props,\n children = _props.children,\n props = _objectWithoutProperties(_props, [\"children\"]);\n\n var newProps = _extends({}, props);\n\n if (children) {\n newProps = this.mapChildrenToProps(children, newProps);\n }\n\n return _react2.default.createElement(Component, newProps);\n };\n\n _createClass(HelmetWrapper, null, [{\n key: \"canUseDOM\",\n\n\n // Component.peek comes from react-side-effect:\n // For testing, you may use a static peek() method available on the returned component.\n // It lets you get the current state without resetting the mounted instance stack.\n // Don’t use it for anything other than testing.\n\n /**\n * @param {Object} base: {\"target\": \"_blank\", \"href\": \"http://mysite.com/\"}\n * @param {Object} bodyAttributes: {\"className\": \"root\"}\n * @param {String} defaultTitle: \"Default Title\"\n * @param {Boolean} defer: true\n * @param {Boolean} encodeSpecialCharacters: true\n * @param {Object} htmlAttributes: {\"lang\": \"en\", \"amp\": undefined}\n * @param {Array} link: [{\"rel\": \"canonical\", \"href\": \"http://mysite.com/example\"}]\n * @param {Array} meta: [{\"name\": \"description\", \"content\": \"Test description\"}]\n * @param {Array} noscript: [{\"innerHTML\": \" console.log(newState)\"\n * @param {Array} script: [{\"type\": \"text/javascript\", \"src\": \"http://mysite.com/js/test.js\"}]\n * @param {Array} style: [{\"type\": \"text/css\", \"cssText\": \"div { display: block; color: blue; }\"}]\n * @param {String} title: \"Title\"\n * @param {Object} titleAttributes: {\"itemprop\": \"name\"}\n * @param {String} titleTemplate: \"MySite.com - %s\"\n */\n set: function set(canUseDOM) {\n Component.canUseDOM = canUseDOM;\n }\n }]);\n\n return HelmetWrapper;\n }(_react2.default.Component), _class.propTypes = {\n base: _propTypes2.default.object,\n bodyAttributes: _propTypes2.default.object,\n children: _propTypes2.default.oneOfType([_propTypes2.default.arrayOf(_propTypes2.default.node), _propTypes2.default.node]),\n defaultTitle: _propTypes2.default.string,\n defer: _propTypes2.default.bool,\n encodeSpecialCharacters: _propTypes2.default.bool,\n htmlAttributes: _propTypes2.default.object,\n link: _propTypes2.default.arrayOf(_propTypes2.default.object),\n meta: _propTypes2.default.arrayOf(_propTypes2.default.object),\n noscript: _propTypes2.default.arrayOf(_propTypes2.default.object),\n onChangeClientState: _propTypes2.default.func,\n script: _propTypes2.default.arrayOf(_propTypes2.default.object),\n style: _propTypes2.default.arrayOf(_propTypes2.default.object),\n title: _propTypes2.default.string,\n titleAttributes: _propTypes2.default.object,\n titleTemplate: _propTypes2.default.string\n }, _class.defaultProps = {\n defer: true,\n encodeSpecialCharacters: true\n }, _class.peek = Component.peek, _class.rewind = function () {\n var mappedState = Component.rewind();\n if (!mappedState) {\n // provide fallback if mappedState is undefined\n mappedState = (0, _HelmetUtils.mapStateOnServer)({\n baseTag: [],\n bodyAttributes: {},\n encodeSpecialCharacters: true,\n htmlAttributes: {},\n linkTags: [],\n metaTags: [],\n noscriptTags: [],\n scriptTags: [],\n styleTags: [],\n title: \"\",\n titleAttributes: {}\n });\n }\n\n return mappedState;\n }, _temp;\n};\n\nvar NullComponent = function NullComponent() {\n return null;\n};\n\nvar HelmetSideEffects = (0, _reactSideEffect2.default)(_HelmetUtils.reducePropsToState, _HelmetUtils.handleClientStateChange, _HelmetUtils.mapStateOnServer)(NullComponent);\n\nvar HelmetExport = Helmet(HelmetSideEffects);\nHelmetExport.renderStatic = HelmetExport.rewind;\n\nexports.Helmet = HelmetExport;\nexports.default = HelmetExport;","exports.__esModule = true;\nvar ATTRIBUTE_NAMES = exports.ATTRIBUTE_NAMES = {\n BODY: \"bodyAttributes\",\n HTML: \"htmlAttributes\",\n TITLE: \"titleAttributes\"\n};\n\nvar TAG_NAMES = exports.TAG_NAMES = {\n BASE: \"base\",\n BODY: \"body\",\n HEAD: \"head\",\n HTML: \"html\",\n LINK: \"link\",\n META: \"meta\",\n NOSCRIPT: \"noscript\",\n SCRIPT: \"script\",\n STYLE: \"style\",\n TITLE: \"title\"\n};\n\nvar VALID_TAG_NAMES = exports.VALID_TAG_NAMES = Object.keys(TAG_NAMES).map(function (name) {\n return TAG_NAMES[name];\n});\n\nvar TAG_PROPERTIES = exports.TAG_PROPERTIES = {\n CHARSET: \"charset\",\n CSS_TEXT: \"cssText\",\n HREF: \"href\",\n HTTPEQUIV: \"http-equiv\",\n INNER_HTML: \"innerHTML\",\n ITEM_PROP: \"itemprop\",\n NAME: \"name\",\n PROPERTY: \"property\",\n REL: \"rel\",\n SRC: \"src\"\n};\n\nvar REACT_TAG_MAP = exports.REACT_TAG_MAP = {\n accesskey: \"accessKey\",\n charset: \"charSet\",\n class: \"className\",\n contenteditable: \"contentEditable\",\n contextmenu: \"contextMenu\",\n \"http-equiv\": \"httpEquiv\",\n itemprop: \"itemProp\",\n tabindex: \"tabIndex\"\n};\n\nvar HELMET_PROPS = exports.HELMET_PROPS = {\n DEFAULT_TITLE: \"defaultTitle\",\n DEFER: \"defer\",\n ENCODE_SPECIAL_CHARACTERS: \"encodeSpecialCharacters\",\n ON_CHANGE_CLIENT_STATE: \"onChangeClientState\",\n TITLE_TEMPLATE: \"titleTemplate\"\n};\n\nvar HTML_TAG_MAP = exports.HTML_TAG_MAP = Object.keys(REACT_TAG_MAP).reduce(function (obj, key) {\n obj[REACT_TAG_MAP[key]] = key;\n return obj;\n}, {});\n\nvar SELF_CLOSING_TAGS = exports.SELF_CLOSING_TAGS = [TAG_NAMES.NOSCRIPT, TAG_NAMES.SCRIPT, TAG_NAMES.STYLE];\n\nvar HELMET_ATTRIBUTE = exports.HELMET_ATTRIBUTE = \"data-react-helmet\";","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","function _extends() {\n module.exports = _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nmodule.exports = _extends;","'use strict';\n\nfunction _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }\n\nvar React = require('react');\nvar React__default = _interopDefault(React);\nvar ExecutionEnvironment = _interopDefault(require('exenv'));\nvar shallowEqual = _interopDefault(require('shallowequal'));\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nfunction withSideEffect(reducePropsToState, handleStateChangeOnClient, mapStateOnServer) {\n if (typeof reducePropsToState !== 'function') {\n throw new Error('Expected reducePropsToState to be a function.');\n }\n if (typeof handleStateChangeOnClient !== 'function') {\n throw new Error('Expected handleStateChangeOnClient to be a function.');\n }\n if (typeof mapStateOnServer !== 'undefined' && typeof mapStateOnServer !== 'function') {\n throw new Error('Expected mapStateOnServer to either be undefined or a function.');\n }\n\n function getDisplayName(WrappedComponent) {\n return WrappedComponent.displayName || WrappedComponent.name || 'Component';\n }\n\n return function wrap(WrappedComponent) {\n if (typeof WrappedComponent !== 'function') {\n throw new Error('Expected WrappedComponent to be a React component.');\n }\n\n var mountedInstances = [];\n var state = void 0;\n\n function emitChange() {\n state = reducePropsToState(mountedInstances.map(function (instance) {\n return instance.props;\n }));\n\n if (SideEffect.canUseDOM) {\n handleStateChangeOnClient(state);\n } else if (mapStateOnServer) {\n state = mapStateOnServer(state);\n }\n }\n\n var SideEffect = function (_Component) {\n _inherits(SideEffect, _Component);\n\n function SideEffect() {\n _classCallCheck(this, SideEffect);\n\n return _possibleConstructorReturn(this, _Component.apply(this, arguments));\n }\n\n // Try to use displayName of wrapped component\n SideEffect.peek = function peek() {\n return state;\n };\n\n // Expose canUseDOM so tests can monkeypatch it\n\n\n SideEffect.rewind = function rewind() {\n if (SideEffect.canUseDOM) {\n throw new Error('You may only call rewind() on the server. Call peek() to read the current state.');\n }\n\n var recordedState = state;\n state = undefined;\n mountedInstances = [];\n return recordedState;\n };\n\n SideEffect.prototype.shouldComponentUpdate = function shouldComponentUpdate(nextProps) {\n return !shallowEqual(nextProps, this.props);\n };\n\n SideEffect.prototype.componentWillMount = function componentWillMount() {\n mountedInstances.push(this);\n emitChange();\n };\n\n SideEffect.prototype.componentDidUpdate = function componentDidUpdate() {\n emitChange();\n };\n\n SideEffect.prototype.componentWillUnmount = function componentWillUnmount() {\n var index = mountedInstances.indexOf(this);\n mountedInstances.splice(index, 1);\n emitChange();\n };\n\n SideEffect.prototype.render = function render() {\n return React__default.createElement(WrappedComponent, this.props);\n };\n\n return SideEffect;\n }(React.Component);\n\n SideEffect.displayName = 'SideEffect(' + getDisplayName(WrappedComponent) + ')';\n SideEffect.canUseDOM = ExecutionEnvironment.canUseDOM;\n\n\n return SideEffect;\n };\n}\n\nmodule.exports = withSideEffect;\n","/*!\n Copyright (c) 2015 Jed Watson.\n Based on code that is Copyright 2013-2015, Facebook, Inc.\n All rights reserved.\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar canUseDOM = !!(\n\t\ttypeof window !== 'undefined' &&\n\t\twindow.document &&\n\t\twindow.document.createElement\n\t);\n\n\tvar ExecutionEnvironment = {\n\n\t\tcanUseDOM: canUseDOM,\n\n\t\tcanUseWorkers: typeof Worker !== 'undefined',\n\n\t\tcanUseEventListeners:\n\t\t\tcanUseDOM && !!(window.addEventListener || window.attachEvent),\n\n\t\tcanUseViewport: canUseDOM && !!window.screen\n\n\t};\n\n\tif (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\tdefine(function () {\n\t\t\treturn ExecutionEnvironment;\n\t\t});\n\t} else if (typeof module !== 'undefined' && module.exports) {\n\t\tmodule.exports = ExecutionEnvironment;\n\t} else {\n\t\twindow.ExecutionEnvironment = ExecutionEnvironment;\n\t}\n\n}());\n","//\n\nmodule.exports = function shallowEqual(objA, objB, compare, compareContext) {\n var ret = compare ? compare.call(compareContext, objA, objB) : void 0;\n\n if (ret !== void 0) {\n return !!ret;\n }\n\n if (objA === objB) {\n return true;\n }\n\n if (typeof objA !== \"object\" || !objA || typeof objB !== \"object\" || !objB) {\n return false;\n }\n\n var keysA = Object.keys(objA);\n var keysB = Object.keys(objB);\n\n if (keysA.length !== keysB.length) {\n return false;\n }\n\n var bHasOwnProperty = Object.prototype.hasOwnProperty.bind(objB);\n\n // Test for A's keys different from B.\n for (var idx = 0; idx < keysA.length; idx++) {\n var key = keysA[idx];\n\n if (!bHasOwnProperty(key)) {\n return false;\n }\n\n var valueA = objA[key];\n var valueB = objB[key];\n\n ret = compare ? compare.call(compareContext, valueA, valueB, key) : void 0;\n\n if (ret === false || (ret === void 0 && valueA !== valueB)) {\n return false;\n }\n }\n\n return true;\n};\n","var pSlice = Array.prototype.slice;\nvar objectKeys = require('./lib/keys.js');\nvar isArguments = require('./lib/is_arguments.js');\n\nvar deepEqual = module.exports = function (actual, expected, opts) {\n if (!opts) opts = {};\n // 7.1. All identical values are equivalent, as determined by ===.\n if (actual === expected) {\n return true;\n\n } else if (actual instanceof Date && expected instanceof Date) {\n return actual.getTime() === expected.getTime();\n\n // 7.3. Other pairs that do not both pass typeof value == 'object',\n // equivalence is determined by ==.\n } else if (!actual || !expected || typeof actual != 'object' && typeof expected != 'object') {\n return opts.strict ? actual === expected : actual == expected;\n\n // 7.4. For all other Object pairs, including Array objects, equivalence is\n // determined by having the same number of owned properties (as verified\n // with Object.prototype.hasOwnProperty.call), the same set of keys\n // (although not necessarily the same order), equivalent values for every\n // corresponding key, and an identical 'prototype' property. Note: this\n // accounts for both named and indexed properties on Arrays.\n } else {\n return objEquiv(actual, expected, opts);\n }\n}\n\nfunction isUndefinedOrNull(value) {\n return value === null || value === undefined;\n}\n\nfunction isBuffer (x) {\n if (!x || typeof x !== 'object' || typeof x.length !== 'number') return false;\n if (typeof x.copy !== 'function' || typeof x.slice !== 'function') {\n return false;\n }\n if (x.length > 0 && typeof x[0] !== 'number') return false;\n return true;\n}\n\nfunction objEquiv(a, b, opts) {\n var i, key;\n if (isUndefinedOrNull(a) || isUndefinedOrNull(b))\n return false;\n // an identical 'prototype' property.\n if (a.prototype !== b.prototype) return false;\n //~~~I've managed to break Object.keys through screwy arguments passing.\n // Converting to array solves the problem.\n if (isArguments(a)) {\n if (!isArguments(b)) {\n return false;\n }\n a = pSlice.call(a);\n b = pSlice.call(b);\n return deepEqual(a, b, opts);\n }\n if (isBuffer(a)) {\n if (!isBuffer(b)) {\n return false;\n }\n if (a.length !== b.length) return false;\n for (i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) return false;\n }\n return true;\n }\n try {\n var ka = objectKeys(a),\n kb = objectKeys(b);\n } catch (e) {//happens when one is a string literal and the other isn't\n return false;\n }\n // having the same number of owned properties (keys incorporates\n // hasOwnProperty)\n if (ka.length != kb.length)\n return false;\n //the same set of keys (although not necessarily the same order),\n ka.sort();\n kb.sort();\n //~~~cheap key test\n for (i = ka.length - 1; i >= 0; i--) {\n if (ka[i] != kb[i])\n return false;\n }\n //equivalent values for every corresponding key, and\n //~~~possibly expensive deep test\n for (i = ka.length - 1; i >= 0; i--) {\n key = ka[i];\n if (!deepEqual(a[key], b[key], opts)) return false;\n }\n return typeof a === typeof b;\n}\n","exports = module.exports = typeof Object.keys === 'function'\n ? Object.keys : shim;\n\nexports.shim = shim;\nfunction shim (obj) {\n var keys = [];\n for (var key in obj) keys.push(key);\n return keys;\n}\n","var supportsArgumentsClass = (function(){\n return Object.prototype.toString.call(arguments)\n})() == '[object Arguments]';\n\nexports = module.exports = supportsArgumentsClass ? supported : unsupported;\n\nexports.supported = supported;\nfunction supported(object) {\n return Object.prototype.toString.call(object) == '[object Arguments]';\n};\n\nexports.unsupported = unsupported;\nfunction unsupported(object){\n return object &&\n typeof object == 'object' &&\n typeof object.length == 'number' &&\n Object.prototype.hasOwnProperty.call(object, 'callee') &&\n !Object.prototype.propertyIsEnumerable.call(object, 'callee') ||\n false;\n};\n","exports.__esModule = true;\nexports.warn = exports.requestAnimationFrame = exports.reducePropsToState = exports.mapStateOnServer = exports.handleClientStateChange = exports.convertReactPropstoHtmlAttributes = undefined;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _react = require(\"react\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _objectAssign = require(\"object-assign\");\n\nvar _objectAssign2 = _interopRequireDefault(_objectAssign);\n\nvar _HelmetConstants = require(\"./HelmetConstants.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar encodeSpecialCharacters = function encodeSpecialCharacters(str) {\n var encode = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n if (encode === false) {\n return String(str);\n }\n\n return String(str).replace(/&/g, \"&\").replace(//g, \">\").replace(/\"/g, \""\").replace(/'/g, \"'\");\n};\n\nvar getTitleFromPropsList = function getTitleFromPropsList(propsList) {\n var innermostTitle = getInnermostProperty(propsList, _HelmetConstants.TAG_NAMES.TITLE);\n var innermostTemplate = getInnermostProperty(propsList, _HelmetConstants.HELMET_PROPS.TITLE_TEMPLATE);\n\n if (innermostTemplate && innermostTitle) {\n // use function arg to avoid need to escape $ characters\n return innermostTemplate.replace(/%s/g, function () {\n return innermostTitle;\n });\n }\n\n var innermostDefaultTitle = getInnermostProperty(propsList, _HelmetConstants.HELMET_PROPS.DEFAULT_TITLE);\n\n return innermostTitle || innermostDefaultTitle || undefined;\n};\n\nvar getOnChangeClientState = function getOnChangeClientState(propsList) {\n return getInnermostProperty(propsList, _HelmetConstants.HELMET_PROPS.ON_CHANGE_CLIENT_STATE) || function () {};\n};\n\nvar getAttributesFromPropsList = function getAttributesFromPropsList(tagType, propsList) {\n return propsList.filter(function (props) {\n return typeof props[tagType] !== \"undefined\";\n }).map(function (props) {\n return props[tagType];\n }).reduce(function (tagAttrs, current) {\n return _extends({}, tagAttrs, current);\n }, {});\n};\n\nvar getBaseTagFromPropsList = function getBaseTagFromPropsList(primaryAttributes, propsList) {\n return propsList.filter(function (props) {\n return typeof props[_HelmetConstants.TAG_NAMES.BASE] !== \"undefined\";\n }).map(function (props) {\n return props[_HelmetConstants.TAG_NAMES.BASE];\n }).reverse().reduce(function (innermostBaseTag, tag) {\n if (!innermostBaseTag.length) {\n var keys = Object.keys(tag);\n\n for (var i = 0; i < keys.length; i++) {\n var attributeKey = keys[i];\n var lowerCaseAttributeKey = attributeKey.toLowerCase();\n\n if (primaryAttributes.indexOf(lowerCaseAttributeKey) !== -1 && tag[lowerCaseAttributeKey]) {\n return innermostBaseTag.concat(tag);\n }\n }\n }\n\n return innermostBaseTag;\n }, []);\n};\n\nvar getTagsFromPropsList = function getTagsFromPropsList(tagName, primaryAttributes, propsList) {\n // Calculate list of tags, giving priority innermost component (end of the propslist)\n var approvedSeenTags = {};\n\n return propsList.filter(function (props) {\n if (Array.isArray(props[tagName])) {\n return true;\n }\n if (typeof props[tagName] !== \"undefined\") {\n warn(\"Helmet: \" + tagName + \" should be of type \\\"Array\\\". Instead found type \\\"\" + _typeof(props[tagName]) + \"\\\"\");\n }\n return false;\n }).map(function (props) {\n return props[tagName];\n }).reverse().reduce(function (approvedTags, instanceTags) {\n var instanceSeenTags = {};\n\n instanceTags.filter(function (tag) {\n var primaryAttributeKey = void 0;\n var keys = Object.keys(tag);\n for (var i = 0; i < keys.length; i++) {\n var attributeKey = keys[i];\n var lowerCaseAttributeKey = attributeKey.toLowerCase();\n\n // Special rule with link tags, since rel and href are both primary tags, rel takes priority\n if (primaryAttributes.indexOf(lowerCaseAttributeKey) !== -1 && !(primaryAttributeKey === _HelmetConstants.TAG_PROPERTIES.REL && tag[primaryAttributeKey].toLowerCase() === \"canonical\") && !(lowerCaseAttributeKey === _HelmetConstants.TAG_PROPERTIES.REL && tag[lowerCaseAttributeKey].toLowerCase() === \"stylesheet\")) {\n primaryAttributeKey = lowerCaseAttributeKey;\n }\n // Special case for innerHTML which doesn't work lowercased\n if (primaryAttributes.indexOf(attributeKey) !== -1 && (attributeKey === _HelmetConstants.TAG_PROPERTIES.INNER_HTML || attributeKey === _HelmetConstants.TAG_PROPERTIES.CSS_TEXT || attributeKey === _HelmetConstants.TAG_PROPERTIES.ITEM_PROP)) {\n primaryAttributeKey = attributeKey;\n }\n }\n\n if (!primaryAttributeKey || !tag[primaryAttributeKey]) {\n return false;\n }\n\n var value = tag[primaryAttributeKey].toLowerCase();\n\n if (!approvedSeenTags[primaryAttributeKey]) {\n approvedSeenTags[primaryAttributeKey] = {};\n }\n\n if (!instanceSeenTags[primaryAttributeKey]) {\n instanceSeenTags[primaryAttributeKey] = {};\n }\n\n if (!approvedSeenTags[primaryAttributeKey][value]) {\n instanceSeenTags[primaryAttributeKey][value] = true;\n return true;\n }\n\n return false;\n }).reverse().forEach(function (tag) {\n return approvedTags.push(tag);\n });\n\n // Update seen tags with tags from this instance\n var keys = Object.keys(instanceSeenTags);\n for (var i = 0; i < keys.length; i++) {\n var attributeKey = keys[i];\n var tagUnion = (0, _objectAssign2.default)({}, approvedSeenTags[attributeKey], instanceSeenTags[attributeKey]);\n\n approvedSeenTags[attributeKey] = tagUnion;\n }\n\n return approvedTags;\n }, []).reverse();\n};\n\nvar getInnermostProperty = function getInnermostProperty(propsList, property) {\n for (var i = propsList.length - 1; i >= 0; i--) {\n var props = propsList[i];\n\n if (props.hasOwnProperty(property)) {\n return props[property];\n }\n }\n\n return null;\n};\n\nvar reducePropsToState = function reducePropsToState(propsList) {\n return {\n baseTag: getBaseTagFromPropsList([_HelmetConstants.TAG_PROPERTIES.HREF], propsList),\n bodyAttributes: getAttributesFromPropsList(_HelmetConstants.ATTRIBUTE_NAMES.BODY, propsList),\n defer: getInnermostProperty(propsList, _HelmetConstants.HELMET_PROPS.DEFER),\n encode: getInnermostProperty(propsList, _HelmetConstants.HELMET_PROPS.ENCODE_SPECIAL_CHARACTERS),\n htmlAttributes: getAttributesFromPropsList(_HelmetConstants.ATTRIBUTE_NAMES.HTML, propsList),\n linkTags: getTagsFromPropsList(_HelmetConstants.TAG_NAMES.LINK, [_HelmetConstants.TAG_PROPERTIES.REL, _HelmetConstants.TAG_PROPERTIES.HREF], propsList),\n metaTags: getTagsFromPropsList(_HelmetConstants.TAG_NAMES.META, [_HelmetConstants.TAG_PROPERTIES.NAME, _HelmetConstants.TAG_PROPERTIES.CHARSET, _HelmetConstants.TAG_PROPERTIES.HTTPEQUIV, _HelmetConstants.TAG_PROPERTIES.PROPERTY, _HelmetConstants.TAG_PROPERTIES.ITEM_PROP], propsList),\n noscriptTags: getTagsFromPropsList(_HelmetConstants.TAG_NAMES.NOSCRIPT, [_HelmetConstants.TAG_PROPERTIES.INNER_HTML], propsList),\n onChangeClientState: getOnChangeClientState(propsList),\n scriptTags: getTagsFromPropsList(_HelmetConstants.TAG_NAMES.SCRIPT, [_HelmetConstants.TAG_PROPERTIES.SRC, _HelmetConstants.TAG_PROPERTIES.INNER_HTML], propsList),\n styleTags: getTagsFromPropsList(_HelmetConstants.TAG_NAMES.STYLE, [_HelmetConstants.TAG_PROPERTIES.CSS_TEXT], propsList),\n title: getTitleFromPropsList(propsList),\n titleAttributes: getAttributesFromPropsList(_HelmetConstants.ATTRIBUTE_NAMES.TITLE, propsList)\n };\n};\n\nvar rafPolyfill = function () {\n var clock = Date.now();\n\n return function (callback) {\n var currentTime = Date.now();\n\n if (currentTime - clock > 16) {\n clock = currentTime;\n callback(currentTime);\n } else {\n setTimeout(function () {\n rafPolyfill(callback);\n }, 0);\n }\n };\n}();\n\nvar cafPolyfill = function cafPolyfill(id) {\n return clearTimeout(id);\n};\n\nvar requestAnimationFrame = typeof window !== \"undefined\" ? window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || rafPolyfill : global.requestAnimationFrame || rafPolyfill;\n\nvar cancelAnimationFrame = typeof window !== \"undefined\" ? window.cancelAnimationFrame || window.webkitCancelAnimationFrame || window.mozCancelAnimationFrame || cafPolyfill : global.cancelAnimationFrame || cafPolyfill;\n\nvar warn = function warn(msg) {\n return console && typeof console.warn === \"function\" && console.warn(msg);\n};\n\nvar _helmetCallback = null;\n\nvar handleClientStateChange = function handleClientStateChange(newState) {\n if (_helmetCallback) {\n cancelAnimationFrame(_helmetCallback);\n }\n\n if (newState.defer) {\n _helmetCallback = requestAnimationFrame(function () {\n commitTagChanges(newState, function () {\n _helmetCallback = null;\n });\n });\n } else {\n commitTagChanges(newState);\n _helmetCallback = null;\n }\n};\n\nvar commitTagChanges = function commitTagChanges(newState, cb) {\n var baseTag = newState.baseTag,\n bodyAttributes = newState.bodyAttributes,\n htmlAttributes = newState.htmlAttributes,\n linkTags = newState.linkTags,\n metaTags = newState.metaTags,\n noscriptTags = newState.noscriptTags,\n onChangeClientState = newState.onChangeClientState,\n scriptTags = newState.scriptTags,\n styleTags = newState.styleTags,\n title = newState.title,\n titleAttributes = newState.titleAttributes;\n\n updateAttributes(_HelmetConstants.TAG_NAMES.BODY, bodyAttributes);\n updateAttributes(_HelmetConstants.TAG_NAMES.HTML, htmlAttributes);\n\n updateTitle(title, titleAttributes);\n\n var tagUpdates = {\n baseTag: updateTags(_HelmetConstants.TAG_NAMES.BASE, baseTag),\n linkTags: updateTags(_HelmetConstants.TAG_NAMES.LINK, linkTags),\n metaTags: updateTags(_HelmetConstants.TAG_NAMES.META, metaTags),\n noscriptTags: updateTags(_HelmetConstants.TAG_NAMES.NOSCRIPT, noscriptTags),\n scriptTags: updateTags(_HelmetConstants.TAG_NAMES.SCRIPT, scriptTags),\n styleTags: updateTags(_HelmetConstants.TAG_NAMES.STYLE, styleTags)\n };\n\n var addedTags = {};\n var removedTags = {};\n\n Object.keys(tagUpdates).forEach(function (tagType) {\n var _tagUpdates$tagType = tagUpdates[tagType],\n newTags = _tagUpdates$tagType.newTags,\n oldTags = _tagUpdates$tagType.oldTags;\n\n\n if (newTags.length) {\n addedTags[tagType] = newTags;\n }\n if (oldTags.length) {\n removedTags[tagType] = tagUpdates[tagType].oldTags;\n }\n });\n\n cb && cb();\n\n onChangeClientState(newState, addedTags, removedTags);\n};\n\nvar flattenArray = function flattenArray(possibleArray) {\n return Array.isArray(possibleArray) ? possibleArray.join(\"\") : possibleArray;\n};\n\nvar updateTitle = function updateTitle(title, attributes) {\n if (typeof title !== \"undefined\" && document.title !== title) {\n document.title = flattenArray(title);\n }\n\n updateAttributes(_HelmetConstants.TAG_NAMES.TITLE, attributes);\n};\n\nvar updateAttributes = function updateAttributes(tagName, attributes) {\n var elementTag = document.getElementsByTagName(tagName)[0];\n\n if (!elementTag) {\n return;\n }\n\n var helmetAttributeString = elementTag.getAttribute(_HelmetConstants.HELMET_ATTRIBUTE);\n var helmetAttributes = helmetAttributeString ? helmetAttributeString.split(\",\") : [];\n var attributesToRemove = [].concat(helmetAttributes);\n var attributeKeys = Object.keys(attributes);\n\n for (var i = 0; i < attributeKeys.length; i++) {\n var attribute = attributeKeys[i];\n var value = attributes[attribute] || \"\";\n\n if (elementTag.getAttribute(attribute) !== value) {\n elementTag.setAttribute(attribute, value);\n }\n\n if (helmetAttributes.indexOf(attribute) === -1) {\n helmetAttributes.push(attribute);\n }\n\n var indexToSave = attributesToRemove.indexOf(attribute);\n if (indexToSave !== -1) {\n attributesToRemove.splice(indexToSave, 1);\n }\n }\n\n for (var _i = attributesToRemove.length - 1; _i >= 0; _i--) {\n elementTag.removeAttribute(attributesToRemove[_i]);\n }\n\n if (helmetAttributes.length === attributesToRemove.length) {\n elementTag.removeAttribute(_HelmetConstants.HELMET_ATTRIBUTE);\n } else if (elementTag.getAttribute(_HelmetConstants.HELMET_ATTRIBUTE) !== attributeKeys.join(\",\")) {\n elementTag.setAttribute(_HelmetConstants.HELMET_ATTRIBUTE, attributeKeys.join(\",\"));\n }\n};\n\nvar updateTags = function updateTags(type, tags) {\n var headElement = document.head || document.querySelector(_HelmetConstants.TAG_NAMES.HEAD);\n var tagNodes = headElement.querySelectorAll(type + \"[\" + _HelmetConstants.HELMET_ATTRIBUTE + \"]\");\n var oldTags = Array.prototype.slice.call(tagNodes);\n var newTags = [];\n var indexToDelete = void 0;\n\n if (tags && tags.length) {\n tags.forEach(function (tag) {\n var newElement = document.createElement(type);\n\n for (var attribute in tag) {\n if (tag.hasOwnProperty(attribute)) {\n if (attribute === _HelmetConstants.TAG_PROPERTIES.INNER_HTML) {\n newElement.innerHTML = tag.innerHTML;\n } else if (attribute === _HelmetConstants.TAG_PROPERTIES.CSS_TEXT) {\n if (newElement.styleSheet) {\n newElement.styleSheet.cssText = tag.cssText;\n } else {\n newElement.appendChild(document.createTextNode(tag.cssText));\n }\n } else {\n var value = typeof tag[attribute] === \"undefined\" ? \"\" : tag[attribute];\n newElement.setAttribute(attribute, value);\n }\n }\n }\n\n newElement.setAttribute(_HelmetConstants.HELMET_ATTRIBUTE, \"true\");\n\n // Remove a duplicate tag from domTagstoRemove, so it isn't cleared.\n if (oldTags.some(function (existingTag, index) {\n indexToDelete = index;\n return newElement.isEqualNode(existingTag);\n })) {\n oldTags.splice(indexToDelete, 1);\n } else {\n newTags.push(newElement);\n }\n });\n }\n\n oldTags.forEach(function (tag) {\n return tag.parentNode.removeChild(tag);\n });\n newTags.forEach(function (tag) {\n return headElement.appendChild(tag);\n });\n\n return {\n oldTags: oldTags,\n newTags: newTags\n };\n};\n\nvar generateElementAttributesAsString = function generateElementAttributesAsString(attributes) {\n return Object.keys(attributes).reduce(function (str, key) {\n var attr = typeof attributes[key] !== \"undefined\" ? key + \"=\\\"\" + attributes[key] + \"\\\"\" : \"\" + key;\n return str ? str + \" \" + attr : attr;\n }, \"\");\n};\n\nvar generateTitleAsString = function generateTitleAsString(type, title, attributes, encode) {\n var attributeString = generateElementAttributesAsString(attributes);\n var flattenedTitle = flattenArray(title);\n return attributeString ? \"<\" + type + \" \" + _HelmetConstants.HELMET_ATTRIBUTE + \"=\\\"true\\\" \" + attributeString + \">\" + encodeSpecialCharacters(flattenedTitle, encode) + \"\" : \"<\" + type + \" \" + _HelmetConstants.HELMET_ATTRIBUTE + \"=\\\"true\\\">\" + encodeSpecialCharacters(flattenedTitle, encode) + \"\";\n};\n\nvar generateTagsAsString = function generateTagsAsString(type, tags, encode) {\n return tags.reduce(function (str, tag) {\n var attributeHtml = Object.keys(tag).filter(function (attribute) {\n return !(attribute === _HelmetConstants.TAG_PROPERTIES.INNER_HTML || attribute === _HelmetConstants.TAG_PROPERTIES.CSS_TEXT);\n }).reduce(function (string, attribute) {\n var attr = typeof tag[attribute] === \"undefined\" ? attribute : attribute + \"=\\\"\" + encodeSpecialCharacters(tag[attribute], encode) + \"\\\"\";\n return string ? string + \" \" + attr : attr;\n }, \"\");\n\n var tagContent = tag.innerHTML || tag.cssText || \"\";\n\n var isSelfClosing = _HelmetConstants.SELF_CLOSING_TAGS.indexOf(type) === -1;\n\n return str + \"<\" + type + \" \" + _HelmetConstants.HELMET_ATTRIBUTE + \"=\\\"true\\\" \" + attributeHtml + (isSelfClosing ? \"/>\" : \">\" + tagContent + \"\");\n }, \"\");\n};\n\nvar convertElementAttributestoReactProps = function convertElementAttributestoReactProps(attributes) {\n var initProps = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n return Object.keys(attributes).reduce(function (obj, key) {\n obj[_HelmetConstants.REACT_TAG_MAP[key] || key] = attributes[key];\n return obj;\n }, initProps);\n};\n\nvar convertReactPropstoHtmlAttributes = function convertReactPropstoHtmlAttributes(props) {\n var initAttributes = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n return Object.keys(props).reduce(function (obj, key) {\n obj[_HelmetConstants.HTML_TAG_MAP[key] || key] = props[key];\n return obj;\n }, initAttributes);\n};\n\nvar generateTitleAsReactComponent = function generateTitleAsReactComponent(type, title, attributes) {\n var _initProps;\n\n // assigning into an array to define toString function on it\n var initProps = (_initProps = {\n key: title\n }, _initProps[_HelmetConstants.HELMET_ATTRIBUTE] = true, _initProps);\n var props = convertElementAttributestoReactProps(attributes, initProps);\n\n return [_react2.default.createElement(_HelmetConstants.TAG_NAMES.TITLE, props, title)];\n};\n\nvar generateTagsAsReactComponent = function generateTagsAsReactComponent(type, tags) {\n return tags.map(function (tag, i) {\n var _mappedTag;\n\n var mappedTag = (_mappedTag = {\n key: i\n }, _mappedTag[_HelmetConstants.HELMET_ATTRIBUTE] = true, _mappedTag);\n\n Object.keys(tag).forEach(function (attribute) {\n var mappedAttribute = _HelmetConstants.REACT_TAG_MAP[attribute] || attribute;\n\n if (mappedAttribute === _HelmetConstants.TAG_PROPERTIES.INNER_HTML || mappedAttribute === _HelmetConstants.TAG_PROPERTIES.CSS_TEXT) {\n var content = tag.innerHTML || tag.cssText;\n mappedTag.dangerouslySetInnerHTML = { __html: content };\n } else {\n mappedTag[mappedAttribute] = tag[attribute];\n }\n });\n\n return _react2.default.createElement(type, mappedTag);\n });\n};\n\nvar getMethodsForTag = function getMethodsForTag(type, tags, encode) {\n switch (type) {\n case _HelmetConstants.TAG_NAMES.TITLE:\n return {\n toComponent: function toComponent() {\n return generateTitleAsReactComponent(type, tags.title, tags.titleAttributes, encode);\n },\n toString: function toString() {\n return generateTitleAsString(type, tags.title, tags.titleAttributes, encode);\n }\n };\n case _HelmetConstants.ATTRIBUTE_NAMES.BODY:\n case _HelmetConstants.ATTRIBUTE_NAMES.HTML:\n return {\n toComponent: function toComponent() {\n return convertElementAttributestoReactProps(tags);\n },\n toString: function toString() {\n return generateElementAttributesAsString(tags);\n }\n };\n default:\n return {\n toComponent: function toComponent() {\n return generateTagsAsReactComponent(type, tags);\n },\n toString: function toString() {\n return generateTagsAsString(type, tags, encode);\n }\n };\n }\n};\n\nvar mapStateOnServer = function mapStateOnServer(_ref) {\n var baseTag = _ref.baseTag,\n bodyAttributes = _ref.bodyAttributes,\n encode = _ref.encode,\n htmlAttributes = _ref.htmlAttributes,\n linkTags = _ref.linkTags,\n metaTags = _ref.metaTags,\n noscriptTags = _ref.noscriptTags,\n scriptTags = _ref.scriptTags,\n styleTags = _ref.styleTags,\n _ref$title = _ref.title,\n title = _ref$title === undefined ? \"\" : _ref$title,\n titleAttributes = _ref.titleAttributes;\n return {\n base: getMethodsForTag(_HelmetConstants.TAG_NAMES.BASE, baseTag, encode),\n bodyAttributes: getMethodsForTag(_HelmetConstants.ATTRIBUTE_NAMES.BODY, bodyAttributes, encode),\n htmlAttributes: getMethodsForTag(_HelmetConstants.ATTRIBUTE_NAMES.HTML, htmlAttributes, encode),\n link: getMethodsForTag(_HelmetConstants.TAG_NAMES.LINK, linkTags, encode),\n meta: getMethodsForTag(_HelmetConstants.TAG_NAMES.META, metaTags, encode),\n noscript: getMethodsForTag(_HelmetConstants.TAG_NAMES.NOSCRIPT, noscriptTags, encode),\n script: getMethodsForTag(_HelmetConstants.TAG_NAMES.SCRIPT, scriptTags, encode),\n style: getMethodsForTag(_HelmetConstants.TAG_NAMES.STYLE, styleTags, encode),\n title: getMethodsForTag(_HelmetConstants.TAG_NAMES.TITLE, { title: title, titleAttributes: titleAttributes }, encode)\n };\n};\n\nexports.convertReactPropstoHtmlAttributes = convertReactPropstoHtmlAttributes;\nexports.handleClientStateChange = handleClientStateChange;\nexports.mapStateOnServer = mapStateOnServer;\nexports.reducePropsToState = reducePropsToState;\nexports.requestAnimationFrame = requestAnimationFrame;\nexports.warn = warn;"],"sourceRoot":""} \ No newline at end of file diff --git a/1-ca88f18cee4890b06c82.js b/1-ca88f18cee4890b06c82.js new file mode 100644 index 000000000..b047e5fe6 --- /dev/null +++ b/1-ca88f18cee4890b06c82.js @@ -0,0 +1,2 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[1],{247:function(e,t,r){var n=r(324),i=r(463),a={decodeEntities:!0,lowerCaseAttributeNames:!1};e.exports=function(e,t){if("string"!=typeof e)throw new TypeError("First argument must be a string");return n(i(e,a),t)}},324:function(e,t,r){var n=r(0),i=r(455),a=r(325);function o(e){return a.PRESERVE_CUSTOM_ATTRIBUTES&&"tag"===e.type&&a.isCustomComponent(e.name,e.attribs)}e.exports=function e(t,r){for(var a,s,l,c,u=[],p="function"==typeof(r=r||{}).replace,f=0,m=t.length;f1&&(s=n.cloneElement(s,{key:f})),u.push(s);else if("text"!==a.type){if(l=a.attribs,o(a)||(l=i(a.attribs)),c=null,"script"===a.type||"style"===a.type)a.children[0]&&(l.dangerouslySetInnerHTML={__html:a.children[0].data});else{if("tag"!==a.type)continue;"textarea"===a.name&&a.children[0]?l.defaultValue=a.children[0].data:a.children&&a.children.length&&(c=e(a.children,r))}m>1&&(l.key=f),u.push(n.createElement(a.name,l,c))}else u.push(a.data);return 1===u.length?u[0]:u}},325:function(e,t,r){var n=r(0),i=/-([a-z])/g,a=/^--[a-zA-Z-]+$|^[^-]+$/;var o=n.version.split(".")[0]>=16;e.exports={PRESERVE_CUSTOM_ATTRIBUTES:o,camelCase:function(e){if("string"!=typeof e)throw new TypeError("First argument must be a string");return a.test(e)?e:e.toLowerCase().replace(i,function(e,t){return t.toUpperCase()})},invertObject:function(e,t){if(!e||"object"!=typeof e)throw new TypeError("First argument must be an object");var r,n,i="function"==typeof t,a={},o={};for(r in e)n=e[r],i&&(a=t(r,n))&&2===a.length?o[a[0]]=a[1]:"string"==typeof n&&(o[n]=r);return o},isCustomComponent:function(e,t){if(-1===e.indexOf("-"))return t&&"string"==typeof t.is;switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}}},400:function(e,t,r){"use strict";var n=r(456);r(457);function i(e,t){return(e&t)===t}var a={MUST_USE_PROPERTY:1,HAS_BOOLEAN_VALUE:4,HAS_NUMERIC_VALUE:8,HAS_POSITIVE_NUMERIC_VALUE:24,HAS_OVERLOADED_BOOLEAN_VALUE:32,injectDOMPropertyConfig:function(e){var t=a,r=e.Properties||{},o=e.DOMAttributeNamespaces||{},l=e.DOMAttributeNames||{},c=e.DOMPropertyNames||{},u=e.DOMMutationMethods||{};for(var p in e.isCustomAttribute&&s._isCustomAttributeFunctions.push(e.isCustomAttribute),r){s.properties.hasOwnProperty(p)&&n("48",p);var f=p.toLowerCase(),m=r[p],d={attributeName:f,attributeNamespace:null,propertyName:p,mutationMethod:null,mustUseProperty:i(m,t.MUST_USE_PROPERTY),hasBooleanValue:i(m,t.HAS_BOOLEAN_VALUE),hasNumericValue:i(m,t.HAS_NUMERIC_VALUE),hasPositiveNumericValue:i(m,t.HAS_POSITIVE_NUMERIC_VALUE),hasOverloadedBooleanValue:i(m,t.HAS_OVERLOADED_BOOLEAN_VALUE)};if(d.hasBooleanValue+d.hasNumericValue+d.hasOverloadedBooleanValue<=1||n("50",p),l.hasOwnProperty(p)){var h=l[p];d.attributeName=h}o.hasOwnProperty(p)&&(d.attributeNamespace=o[p]),c.hasOwnProperty(p)&&(d.propertyName=c[p]),u.hasOwnProperty(p)&&(d.mutationMethod=u[p]),s.properties[p]=d}}},o=":A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD",s={ID_ATTRIBUTE_NAME:"data-reactid",ROOT_ATTRIBUTE_NAME:"data-reactroot",ATTRIBUTE_NAME_START_CHAR:o,ATTRIBUTE_NAME_CHAR:o+"\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040",properties:{},getPossibleStandardName:null,_isCustomAttributeFunctions:[],isCustomAttribute:function(e){for(var t=0;t/;e.exports=function(e){if("string"!=typeof e)throw new TypeError("First argument must be a string.");if(!e)return[];var t,r=e.match(s);return r&&r[1]&&(t=r[1],o&&(e=e.replace(r[0],""))),a(n(e),null,t)}},464:function(e,t,r){"use strict";var n,i,a,o=r(401).isIE,s=/<([a-zA-Z]+[0-9]?)/,l=/<\/head>/i,c=/<\/body>/i,u=/<(area|base|br|col|embed|hr|img|input|keygen|link|menuitem|meta|param|source|track|wbr)(.*?)\/?>/gi,p=o(),f=o(9);if("function"==typeof window.DOMParser){var m=new window.DOMParser,d=f?"text/xml":"text/html";n=function(e,t){return t&&(e=["<",t,">",e,""].join("")),f&&(e=e.replace(u,"<$1$2$3/>")),m.parseFromString(e,d)}}if("object"==typeof document.implementation){var h=document.implementation.createHTMLDocument(p?"HTML_DOM_PARSER_TITLE":void 0);i=function(e,t){if(t)return h.documentElement.getElementsByTagName(t)[0].innerHTML=e,h;try{return h.documentElement.innerHTML=e,h}catch(t){if(n)return n(e)}}}var g=document.createElement("template");g.content&&(a=function(e){return g.innerHTML=e,g.content.childNodes});var y=i||n;e.exports=function(e){var t,r,i,o,u=e.match(s);switch(u&&u[1]&&(t=u[1].toLowerCase()),t){case"html":if(n)return r=n(e),l.test(e)||(i=r.getElementsByTagName("head")[0])&&i.parentNode.removeChild(i),c.test(e)||(i=r.getElementsByTagName("body")[0])&&i.parentNode.removeChild(i),r.getElementsByTagName("html");break;case"head":if(y)return o=y(e).getElementsByTagName("head"),c.test(e)?o[0].parentNode.childNodes:o;break;case"body":if(y)return o=y(e).getElementsByTagName("body"),l.test(e)?o[0].parentNode.childNodes:o;break;default:if(a)return a(e);if(y)return y(e,"body").getElementsByTagName("body")[0].childNodes}return[]}}}]); +//# sourceMappingURL=1-ca88f18cee4890b06c82.js.map \ No newline at end of file diff --git a/1-ca88f18cee4890b06c82.js.map b/1-ca88f18cee4890b06c82.js.map new file mode 100644 index 000000000..60031620d --- /dev/null +++ b/1-ca88f18cee4890b06c82.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///./node_modules/html-react-parser/index.js","webpack:///./node_modules/html-react-parser/lib/dom-to-react.js","webpack:///./node_modules/html-react-parser/lib/utilities.js","webpack:///./node_modules/react-dom-core/lib/DOMProperty.js","webpack:///./node_modules/html-dom-parser/lib/utilities.js","webpack:///./node_modules/html-react-parser/lib/attributes-to-props.js","webpack:///./node_modules/react-dom-core/lib/reactProdInvariant.js","webpack:///./node_modules/fbjs/lib/invariant.js","webpack:///./node_modules/html-react-parser/lib/property-config.js","webpack:///./node_modules/react-dom-core/lib/HTMLDOMPropertyConfig.js","webpack:///./node_modules/react-dom-core/lib/SVGDOMPropertyConfig.js","webpack:///./node_modules/style-to-object/index.js","webpack:///./node_modules/css/lib/parse/index.js","webpack:///./node_modules/html-dom-parser/lib/html-to-dom-client.js","webpack:///./node_modules/html-dom-parser/lib/domparser.js"],"names":["domToReact","__webpack_require__","htmlToDOM","domParserOptions","decodeEntities","lowerCaseAttributeNames","module","exports","html","options","TypeError","React","attributesToProps","utilities","shouldPassAttributesUnaltered","node","PRESERVE_CUSTOM_ATTRIBUTES","type","isCustomComponent","name","attribs","nodes","replacement","props","children","result","isReplacePresent","replace","i","len","length","isValidElement","cloneElement","key","push","dangerouslySetInnerHTML","__html","data","defaultValue","createElement","hyphenPatternRegex","CUSTOM_PROPERTY_OR_NO_HYPHEN_REGEX","version","split","camelCase","string","test","toLowerCase","_","character","toUpperCase","invertObject","obj","override","value","isOverridePresent","overrides","tagName","indexOf","is","_prodInvariant","checkMask","bitmask","DOMPropertyInjection","MUST_USE_PROPERTY","HAS_BOOLEAN_VALUE","HAS_NUMERIC_VALUE","HAS_POSITIVE_NUMERIC_VALUE","HAS_OVERLOADED_BOOLEAN_VALUE","injectDOMPropertyConfig","domPropertyConfig","Injection","Properties","DOMAttributeNamespaces","DOMAttributeNames","DOMPropertyNames","DOMMutationMethods","propName","isCustomAttribute","DOMProperty","_isCustomAttributeFunctions","properties","hasOwnProperty","lowerCased","propConfig","propertyInfo","attributeName","attributeNamespace","propertyName","mutationMethod","mustUseProperty","hasBooleanValue","hasNumericValue","hasPositiveNumericValue","hasOverloadedBooleanValue","ATTRIBUTE_NAME_START_CHAR","ID_ATTRIBUTE_NAME","ROOT_ATTRIBUTE_NAME","ATTRIBUTE_NAME_CHAR","getPossibleStandardName","isCustomAttributeFn","injection","formatAttributes","attributes","attribute","formatDOM","parentObj","directive","prevNode","nodeObj","next","prev","parent","nodeName","nodeType","childNodes","nodeValue","unshift","substring","isIE","document","documentMode","navigator","userAgent","propertyConfig","styleToObject","config","HTMLDOMPropertyConfig","propertyValue","reactProperty","svg","style","styleObj","propValue","cssToJs","code","argCount","arguments","message","argIdx","encodeURIComponent","error","Error","framesToPop","validateFormat","format","condition","a","b","c","d","e","f","undefined","args","argIndex","SVGDOMPropertyConfig","RegExp","prototype","bind","accept","acceptCharset","accessKey","action","allowFullScreen","allowTransparency","alt","as","async","autoComplete","autoPlay","capture","cellPadding","cellSpacing","charSet","challenge","checked","cite","classID","className","cols","colSpan","content","contentEditable","contextMenu","controls","controlsList","coords","crossOrigin","dateTime","default","defer","dir","disabled","download","draggable","encType","form","formAction","formEncType","formMethod","formNoValidate","formTarget","frameBorder","headers","height","hidden","high","href","hrefLang","htmlFor","httpEquiv","icon","id","inputMode","integrity","keyParams","keyType","kind","label","lang","list","loop","low","manifest","marginHeight","marginWidth","max","maxLength","media","mediaGroup","method","min","minLength","multiple","muted","nonce","noValidate","open","optimum","pattern","placeholder","playsInline","poster","preload","profile","radioGroup","readOnly","referrerPolicy","rel","required","reversed","role","rows","rowSpan","sandbox","scope","scoped","scrolling","seamless","selected","shape","size","sizes","span","spellCheck","src","srcDoc","srcLang","srcSet","start","step","summary","tabIndex","target","title","useMap","width","wmode","wrap","about","datatype","inlist","prefix","property","resource","typeof","vocab","autoCapitalize","autoCorrect","autoSave","color","itemProp","itemScope","itemType","itemID","itemRef","results","security","unselectable","removeAttribute","hasAttribute","setAttribute","validity","badInput","ownerDocument","activeElement","NS","ATTRS","accentHeight","accumulate","additive","alignmentBaseline","allowReorder","alphabetic","amplitude","arabicForm","ascent","attributeType","autoReverse","azimuth","baseFrequency","baseProfile","baselineShift","bbox","begin","bias","by","calcMode","capHeight","clip","clipPath","clipRule","clipPathUnits","colorInterpolation","colorInterpolationFilters","colorProfile","colorRendering","contentScriptType","contentStyleType","cursor","cx","cy","decelerate","descent","diffuseConstant","direction","display","divisor","dominantBaseline","dur","dx","dy","edgeMode","elevation","enableBackground","end","exponent","externalResourcesRequired","fill","fillOpacity","fillRule","filter","filterRes","filterUnits","floodColor","floodOpacity","focusable","fontFamily","fontSize","fontSizeAdjust","fontStretch","fontStyle","fontVariant","fontWeight","from","fx","fy","g1","g2","glyphName","glyphOrientationHorizontal","glyphOrientationVertical","glyphRef","gradientTransform","gradientUnits","hanging","horizAdvX","horizOriginX","ideographic","imageRendering","in","in2","intercept","k","k1","k2","k3","k4","kernelMatrix","kernelUnitLength","kerning","keyPoints","keySplines","keyTimes","lengthAdjust","letterSpacing","lightingColor","limitingConeAngle","local","markerEnd","markerMid","markerStart","markerHeight","markerUnits","markerWidth","mask","maskContentUnits","maskUnits","mathematical","mode","numOctaves","offset","opacity","operator","order","orient","orientation","origin","overflow","overlinePosition","overlineThickness","paintOrder","panose1","pathLength","patternContentUnits","patternTransform","patternUnits","pointerEvents","points","pointsAtX","pointsAtY","pointsAtZ","preserveAlpha","preserveAspectRatio","primitiveUnits","r","radius","refX","refY","renderingIntent","repeatCount","repeatDur","requiredExtensions","requiredFeatures","restart","rotate","rx","ry","scale","seed","shapeRendering","slope","spacing","specularConstant","specularExponent","speed","spreadMethod","startOffset","stdDeviation","stemh","stemv","stitchTiles","stopColor","stopOpacity","strikethroughPosition","strikethroughThickness","stroke","strokeDasharray","strokeDashoffset","strokeLinecap","strokeLinejoin","strokeMiterlimit","strokeOpacity","strokeWidth","surfaceScale","systemLanguage","tableValues","targetX","targetY","textAnchor","textDecoration","textRendering","textLength","to","transform","u1","u2","underlinePosition","underlineThickness","unicode","unicodeBidi","unicodeRange","unitsPerEm","vAlphabetic","vHanging","vIdeographic","vMathematical","values","vectorEffect","vertAdvY","vertOriginX","vertOriginY","viewBox","viewTarget","visibility","widths","wordSpacing","writingMode","x","xHeight","x1","x2","xChannelSelector","xlinkActuate","xlinkArcrole","xlinkHref","xlinkRole","xlinkShow","xlinkTitle","xlinkType","xmlBase","xmlns","xmlnsXlink","xmlLang","xmlSpace","y","y1","y2","yChannelSelector","z","zoomAndPan","Object","keys","forEach","parse","iterator","declaration","declarations","stylesheet","rules","output","hasIterator","commentre","trim","str","css","lineno","column","updatePosition","lines","match","lastIndexOf","position","line","Position","whitespace","this","source","errorsList","msg","err","reason","filename","silent","close","comments","charAt","atrule","rule","re","m","exec","slice","comment","pos","selector","map","s","prop","val","ret","decl","decls","keyframe","vals","rulesList","atimport","_compileAtrule","atcharset","atnamespace","vendor","frame","frames","concat","keyframes","atkeyframes","atmedia","atcustommedia","supports","atsupports","doc","atdocument","sel","selectors","atpage","athost","atfontface","addParent","isNode","childParent","Array","isArray","v","defineProperty","configurable","writable","enumerable","parsingErrors","domparser","isIE9","DIRECTIVE_REGEX","parseFromString","parseFromDocument","parseFromTemplate","detectIE","FIRST_TAG_REGEX","HEAD_REGEX","BODY_REGEX","VOID_ELEMENTS_REGEX","window","DOMParser","domParser","MIME_TYPE","join","implementation","createHTMLDocument","documentElement","getElementsByTagName","innerHTML","template","parseWithFallback","element","elements","parentNode","removeChild"],"mappings":"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","file":"1-ca88f18cee4890b06c82.js","sourcesContent":["var domToReact = require('./lib/dom-to-react');\nvar htmlToDOM = require('html-dom-parser');\n\n// decode HTML entities by default for `htmlparser2`\nvar domParserOptions = { decodeEntities: true, lowerCaseAttributeNames: false };\n\n/**\n * Convert HTML string to React elements.\n *\n * @param {String} html - The HTML string.\n * @param {Object} [options] - The additional options.\n * @param {Function} [options.replace] - The replace method.\n * @return {ReactElement|Array}\n */\nfunction HTMLReactParser(html, options) {\n if (typeof html !== 'string') {\n throw new TypeError('First argument must be a string');\n }\n return domToReact(htmlToDOM(html, domParserOptions), options);\n}\n\n/**\n * Export HTML to React parser.\n */\nmodule.exports = HTMLReactParser;\n","var React = require('react');\nvar attributesToProps = require('./attributes-to-props');\nvar utilities = require('./utilities');\n\n/**\n * Converts DOM nodes to React elements.\n *\n * @param {Array} nodes - The DOM nodes.\n * @param {Object} [options] - The additional options.\n * @param {Function} [options.replace] - The replace method.\n * @return {ReactElement|Array}\n */\nfunction domToReact(nodes, options) {\n options = options || {};\n var result = [];\n var node;\n var isReplacePresent = typeof options.replace === 'function';\n var replacement;\n var props;\n var children;\n\n for (var i = 0, len = nodes.length; i < len; i++) {\n node = nodes[i];\n\n // replace with custom React element (if applicable)\n if (isReplacePresent) {\n replacement = options.replace(node);\n\n if (React.isValidElement(replacement)) {\n // specify a \"key\" prop if element has siblings\n // https://fb.me/react-warning-keys\n if (len > 1) {\n replacement = React.cloneElement(replacement, { key: i });\n }\n result.push(replacement);\n continue;\n }\n }\n\n if (node.type === 'text') {\n result.push(node.data);\n continue;\n }\n\n props = node.attribs;\n if (!shouldPassAttributesUnaltered(node)) {\n // update values\n props = attributesToProps(node.attribs);\n }\n\n children = null;\n\n // node type for \ No newline at end of file diff --git a/404/index.html b/404/index.html new file mode 100644 index 000000000..32027eb1f --- /dev/null +++ b/404/index.html @@ -0,0 +1,16 @@ +Sivua ei löytynyt | Full Stack Open 2019 \ No newline at end of file diff --git a/5-c00f567db34c8225e69d.js b/5-c00f567db34c8225e69d.js new file mode 100644 index 000000000..c252268ed --- /dev/null +++ b/5-c00f567db34c8225e69d.js @@ -0,0 +1,2 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[5],{156:function(e,t,n){var r=n(23).f,o=Function.prototype,i=/^\s*function ([^ (]*)/;"name"in o||n(14)&&r(o,"name",{configurable:!0,get:function(){try{return(""+this).match(i)[1]}catch(e){return""}}})},237:function(e,t,n){"use strict";var r=n(447),o=n(613),i=Object.prototype.toString;function s(e){return"[object Array]"===i.call(e)}function a(e){return null!==e&&"object"==typeof e}function u(e){return"[object Function]"===i.call(e)}function c(e,t){if(null!=e)if("object"!=typeof e&&(e=[e]),s(e))for(var n=0,r=e.length;n=200&&e<300}};u.headers={common:{Accept:"application/json, text/plain, */*"}},r.forEach(["delete","get","head"],function(e){u.headers[e]={}}),r.forEach(["post","put","patch"],function(e){u.headers[e]=r.merge(i)}),e.exports=u}).call(this,n(444))},446:function(e,t,n){e.exports=n(612)},447:function(e,t,n){"use strict";e.exports=function(e,t){return function(){for(var n=new Array(arguments.length),r=0;r=0)return;s[t]="set-cookie"===t?(s[t]?s[t]:[]).concat([n]):s[t]?s[t]+", "+n:n}}),s):s}},620:function(e,t,n){"use strict";var r=n(237);e.exports=r.isStandardBrowserEnv()?function(){var e,t=/(msie|trident)/i.test(navigator.userAgent),n=document.createElement("a");function o(e){var r=e;return t&&(n.setAttribute("href",r),r=n.href),n.setAttribute("href",r),{href:n.href,protocol:n.protocol?n.protocol.replace(/:$/,""):"",host:n.host,search:n.search?n.search.replace(/^\?/,""):"",hash:n.hash?n.hash.replace(/^#/,""):"",hostname:n.hostname,port:n.port,pathname:"/"===n.pathname.charAt(0)?n.pathname:"/"+n.pathname}}return e=o(window.location.href),function(t){var n=r.isString(t)?o(t):t;return n.protocol===e.protocol&&n.host===e.host}}():function(){return!0}},621:function(e,t,n){"use strict";var r="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";function o(){this.message="String contains an invalid character"}o.prototype=new Error,o.prototype.code=5,o.prototype.name="InvalidCharacterError",e.exports=function(e){for(var t,n,i=String(e),s="",a=0,u=r;i.charAt(0|a)||(u="=",a%1);s+=u.charAt(63&t>>8-a%1*8)){if((n=i.charCodeAt(a+=.75))>255)throw new o;t=t<<8|n}return s}},622:function(e,t,n){"use strict";var r=n(237);e.exports=r.isStandardBrowserEnv()?{write:function(e,t,n,o,i,s){var a=[];a.push(e+"="+encodeURIComponent(t)),r.isNumber(n)&&a.push("expires="+new Date(n).toGMTString()),r.isString(o)&&a.push("path="+o),r.isString(i)&&a.push("domain="+i),!0===s&&a.push("secure"),document.cookie=a.join("; ")},read:function(e){var t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove:function(e){this.write(e,"",Date.now()-864e5)}}:{write:function(){},read:function(){return null},remove:function(){}}},623:function(e,t,n){"use strict";var r=n(237);function o(){this.handlers=[]}o.prototype.use=function(e,t){return this.handlers.push({fulfilled:e,rejected:t}),this.handlers.length-1},o.prototype.eject=function(e){this.handlers[e]&&(this.handlers[e]=null)},o.prototype.forEach=function(e){r.forEach(this.handlers,function(t){null!==t&&e(t)})},e.exports=o},624:function(e,t,n){"use strict";var r=n(237),o=n(625),i=n(450),s=n(367),a=n(626),u=n(627);function c(e){e.cancelToken&&e.cancelToken.throwIfRequested()}e.exports=function(e){return c(e),e.baseURL&&!a(e.url)&&(e.url=u(e.baseURL,e.url)),e.headers=e.headers||{},e.data=o(e.data,e.headers,e.transformRequest),e.headers=r.merge(e.headers.common||{},e.headers[e.method]||{},e.headers||{}),r.forEach(["delete","get","head","post","put","patch","common"],function(t){delete e.headers[t]}),(e.adapter||s.adapter)(e).then(function(t){return c(e),t.data=o(t.data,t.headers,e.transformResponse),t},function(t){return i(t)||(c(e),t&&t.response&&(t.response.data=o(t.response.data,t.response.headers,e.transformResponse))),Promise.reject(t)})}},625:function(e,t,n){"use strict";var r=n(237);e.exports=function(e,t,n){return r.forEach(n,function(n){e=n(e,t)}),e}},626:function(e,t,n){"use strict";e.exports=function(e){return/^([a-z][a-z\d\+\-\.]*:)?\/\//i.test(e)}},627:function(e,t,n){"use strict";e.exports=function(e,t){return t?e.replace(/\/+$/,"")+"/"+t.replace(/^\/+/,""):e}},628:function(e,t,n){"use strict";var r=n(451);function o(e){if("function"!=typeof e)throw new TypeError("executor must be a function.");var t;this.promise=new Promise(function(e){t=e});var n=this;e(function(e){n.reason||(n.reason=new r(e),t(n.reason))})}o.prototype.throwIfRequested=function(){if(this.reason)throw this.reason},o.source=function(){var e;return{token:new o(function(t){e=t}),cancel:e}},e.exports=o},629:function(e,t,n){"use strict";e.exports=function(e){return function(t){return e.apply(null,t)}}}}]); +//# sourceMappingURL=5-c00f567db34c8225e69d.js.map \ No newline at end of file diff --git a/5-c00f567db34c8225e69d.js.map b/5-c00f567db34c8225e69d.js.map new file mode 100644 index 000000000..380f3c69b --- /dev/null +++ b/5-c00f567db34c8225e69d.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///./node_modules/core-js/modules/es6.function.name.js","webpack:///./node_modules/axios/lib/utils.js","webpack:///./node_modules/axios/lib/defaults.js","webpack:///./node_modules/axios/index.js","webpack:///./node_modules/axios/lib/helpers/bind.js","webpack:///./node_modules/axios/lib/adapters/xhr.js","webpack:///./node_modules/axios/lib/core/createError.js","webpack:///./node_modules/axios/lib/cancel/isCancel.js","webpack:///./node_modules/axios/lib/cancel/Cancel.js","webpack:///./node_modules/axios/lib/axios.js","webpack:///./node_modules/is-buffer/index.js","webpack:///./node_modules/axios/lib/core/Axios.js","webpack:///./node_modules/axios/lib/helpers/normalizeHeaderName.js","webpack:///./node_modules/axios/lib/core/settle.js","webpack:///./node_modules/axios/lib/core/enhanceError.js","webpack:///./node_modules/axios/lib/helpers/buildURL.js","webpack:///./node_modules/axios/lib/helpers/parseHeaders.js","webpack:///./node_modules/axios/lib/helpers/isURLSameOrigin.js","webpack:///./node_modules/axios/lib/helpers/btoa.js","webpack:///./node_modules/axios/lib/helpers/cookies.js","webpack:///./node_modules/axios/lib/core/InterceptorManager.js","webpack:///./node_modules/axios/lib/core/dispatchRequest.js","webpack:///./node_modules/axios/lib/core/transformData.js","webpack:///./node_modules/axios/lib/helpers/isAbsoluteURL.js","webpack:///./node_modules/axios/lib/helpers/combineURLs.js","webpack:///./node_modules/axios/lib/cancel/CancelToken.js","webpack:///./node_modules/axios/lib/helpers/spread.js"],"names":["dP","__webpack_require__","f","FProto","Function","prototype","nameRE","configurable","get","this","match","e","bind","isBuffer","toString","Object","isArray","val","call","isObject","isFunction","forEach","obj","fn","i","l","length","key","hasOwnProperty","module","exports","isArrayBuffer","isFormData","FormData","isArrayBufferView","ArrayBuffer","isView","buffer","isString","isNumber","isUndefined","isDate","isFile","isBlob","isStream","pipe","isURLSearchParams","URLSearchParams","isStandardBrowserEnv","navigator","product","window","document","merge","result","assignValue","arguments","extend","a","b","thisArg","trim","str","replace","process","utils","normalizeHeaderName","DEFAULT_CONTENT_TYPE","Content-Type","setContentTypeIfUnset","headers","value","adapter","defaults","XMLHttpRequest","transformRequest","data","JSON","stringify","transformResponse","parse","timeout","xsrfCookieName","xsrfHeaderName","maxContentLength","validateStatus","status","common","Accept","method","args","Array","apply","settle","buildURL","parseHeaders","isURLSameOrigin","createError","btoa","config","Promise","resolve","reject","requestData","requestHeaders","request","loadEvent","xDomain","XDomainRequest","url","onprogress","ontimeout","auth","username","password","Authorization","open","toUpperCase","params","paramsSerializer","readyState","responseURL","indexOf","responseHeaders","getAllResponseHeaders","response","responseType","responseText","statusText","onerror","cookies","xsrfValue","withCredentials","read","undefined","toLowerCase","setRequestHeader","onDownloadProgress","addEventListener","onUploadProgress","upload","cancelToken","promise","then","cancel","abort","send","enhanceError","message","code","error","Error","__CANCEL__","Cancel","Axios","createInstance","defaultConfig","context","instance","axios","create","instanceConfig","CancelToken","isCancel","all","promises","spread","default","constructor","readFloatLE","slice","isSlowBuffer","_isBuffer","InterceptorManager","dispatchRequest","interceptors","chain","interceptor","unshift","fulfilled","rejected","push","shift","normalizedName","name","encode","encodeURIComponent","serializedParams","parts","v","toISOString","join","ignoreDuplicateOf","parsed","split","line","substr","concat","originURL","msie","test","userAgent","urlParsingNode","createElement","resolveURL","href","setAttribute","protocol","host","search","hash","hostname","port","pathname","charAt","location","requestURL","chars","E","input","block","charCode","String","output","idx","map","charCodeAt","write","expires","path","domain","secure","cookie","Date","toGMTString","RegExp","decodeURIComponent","remove","now","handlers","use","eject","id","h","transformData","isAbsoluteURL","combineURLs","throwIfCancellationRequested","throwIfRequested","baseURL","reason","fns","relativeURL","executor","TypeError","resolvePromise","token","source","c","callback","arr"],"mappings":"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","file":"5-c00f567db34c8225e69d.js","sourcesContent":["var dP = require('./_object-dp').f;\nvar FProto = Function.prototype;\nvar nameRE = /^\\s*function ([^ (]*)/;\nvar NAME = 'name';\n\n// 19.2.4.2 name\nNAME in FProto || require('./_descriptors') && dP(FProto, NAME, {\n configurable: true,\n get: function () {\n try {\n return ('' + this).match(nameRE)[1];\n } catch (e) {\n return '';\n }\n }\n});\n","'use strict';\n\nvar bind = require('./helpers/bind');\nvar isBuffer = require('is-buffer');\n\n/*global toString:true*/\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n return toString.call(val) === '[object Array]';\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nfunction isArrayBuffer(val) {\n return toString.call(val) === '[object ArrayBuffer]';\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(val) {\n return (typeof FormData !== 'undefined') && (val instanceof FormData);\n}\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n var result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer);\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n return typeof val === 'number';\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nfunction isDate(val) {\n return toString.call(val) === '[object Date]';\n}\n\n/**\n * Determine if a value is a File\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nfunction isFile(val) {\n return toString.call(val) === '[object File]';\n}\n\n/**\n * Determine if a value is a Blob\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nfunction isBlob(val) {\n return toString.call(val) === '[object Blob]';\n}\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nfunction isURLSearchParams(val) {\n return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams;\n}\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n return str.replace(/^\\s*/, '').replace(/\\s*$/, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n */\nfunction isStandardBrowserEnv() {\n if (typeof navigator !== 'undefined' && navigator.product === 'ReactNative') {\n return false;\n }\n return (\n typeof window !== 'undefined' &&\n typeof document !== 'undefined'\n );\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (var i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (typeof result[key] === 'object' && typeof val === 'object') {\n result[key] = merge(result[key], val);\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n forEach(b, function assignValue(val, key) {\n if (thisArg && typeof val === 'function') {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n });\n return a;\n}\n\nmodule.exports = {\n isArray: isArray,\n isArrayBuffer: isArrayBuffer,\n isBuffer: isBuffer,\n isFormData: isFormData,\n isArrayBufferView: isArrayBufferView,\n isString: isString,\n isNumber: isNumber,\n isObject: isObject,\n isUndefined: isUndefined,\n isDate: isDate,\n isFile: isFile,\n isBlob: isBlob,\n isFunction: isFunction,\n isStream: isStream,\n isURLSearchParams: isURLSearchParams,\n isStandardBrowserEnv: isStandardBrowserEnv,\n forEach: forEach,\n merge: merge,\n extend: extend,\n trim: trim\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar normalizeHeaderName = require('./helpers/normalizeHeaderName');\n\nvar DEFAULT_CONTENT_TYPE = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n headers['Content-Type'] = value;\n }\n}\n\nfunction getDefaultAdapter() {\n var adapter;\n if (typeof XMLHttpRequest !== 'undefined') {\n // For browsers use XHR adapter\n adapter = require('./adapters/xhr');\n } else if (typeof process !== 'undefined') {\n // For node use HTTP adapter\n adapter = require('./adapters/http');\n }\n return adapter;\n}\n\nvar defaults = {\n adapter: getDefaultAdapter(),\n\n transformRequest: [function transformRequest(data, headers) {\n normalizeHeaderName(headers, 'Content-Type');\n if (utils.isFormData(data) ||\n utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n return data.toString();\n }\n if (utils.isObject(data)) {\n setContentTypeIfUnset(headers, 'application/json;charset=utf-8');\n return JSON.stringify(data);\n }\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n /*eslint no-param-reassign:0*/\n if (typeof data === 'string') {\n try {\n data = JSON.parse(data);\n } catch (e) { /* Ignore */ }\n }\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n }\n};\n\ndefaults.headers = {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nmodule.exports = defaults;\n","module.exports = require('./lib/axios');","'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n return fn.apply(thisArg, args);\n };\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar settle = require('./../core/settle');\nvar buildURL = require('./../helpers/buildURL');\nvar parseHeaders = require('./../helpers/parseHeaders');\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\nvar createError = require('../core/createError');\nvar btoa = (typeof window !== 'undefined' && window.btoa && window.btoa.bind(window)) || require('./../helpers/btoa');\n\nmodule.exports = function xhrAdapter(config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n var requestData = config.data;\n var requestHeaders = config.headers;\n\n if (utils.isFormData(requestData)) {\n delete requestHeaders['Content-Type']; // Let the browser set it\n }\n\n var request = new XMLHttpRequest();\n var loadEvent = 'onreadystatechange';\n var xDomain = false;\n\n // For IE 8/9 CORS support\n // Only supports POST and GET calls and doesn't returns the response headers.\n // DON'T do this for testing b/c XMLHttpRequest is mocked, not XDomainRequest.\n if (process.env.NODE_ENV !== 'test' &&\n typeof window !== 'undefined' &&\n window.XDomainRequest && !('withCredentials' in request) &&\n !isURLSameOrigin(config.url)) {\n request = new window.XDomainRequest();\n loadEvent = 'onload';\n xDomain = true;\n request.onprogress = function handleProgress() {};\n request.ontimeout = function handleTimeout() {};\n }\n\n // HTTP basic authentication\n if (config.auth) {\n var username = config.auth.username || '';\n var password = config.auth.password || '';\n requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n }\n\n request.open(config.method.toUpperCase(), buildURL(config.url, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n // Listen for ready state\n request[loadEvent] = function handleLoad() {\n if (!request || (request.readyState !== 4 && !xDomain)) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n\n // Prepare the response\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = !config.responseType || config.responseType === 'text' ? request.responseText : request.response;\n var response = {\n data: responseData,\n // IE sends 1223 instead of 204 (https://github.com/axios/axios/issues/201)\n status: request.status === 1223 ? 204 : request.status,\n statusText: request.status === 1223 ? 'No Content' : request.statusText,\n headers: responseHeaders,\n config: config,\n request: request\n };\n\n settle(resolve, reject, response);\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(createError('Network Error', config, null, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n reject(createError('timeout of ' + config.timeout + 'ms exceeded', config, 'ECONNABORTED',\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if (utils.isStandardBrowserEnv()) {\n var cookies = require('./../helpers/cookies');\n\n // Add xsrf header\n var xsrfValue = (config.withCredentials || isURLSameOrigin(config.url)) && config.xsrfCookieName ?\n cookies.read(config.xsrfCookieName) :\n undefined;\n\n if (xsrfValue) {\n requestHeaders[config.xsrfHeaderName] = xsrfValue;\n }\n }\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n // Remove Content-Type if data is undefined\n delete requestHeaders[key];\n } else {\n // Otherwise add header to the request\n request.setRequestHeader(key, val);\n }\n });\n }\n\n // Add withCredentials to request if needed\n if (config.withCredentials) {\n request.withCredentials = true;\n }\n\n // Add responseType to request if needed\n if (config.responseType) {\n try {\n request.responseType = config.responseType;\n } catch (e) {\n // Expected DOMException thrown by browsers not compatible XMLHttpRequest Level 2.\n // But, this can be suppressed for 'json' type as it can be parsed by default 'transformResponse' function.\n if (config.responseType !== 'json') {\n throw e;\n }\n }\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', config.onDownloadProgress);\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', config.onUploadProgress);\n }\n\n if (config.cancelToken) {\n // Handle cancellation\n config.cancelToken.promise.then(function onCanceled(cancel) {\n if (!request) {\n return;\n }\n\n request.abort();\n reject(cancel);\n // Clean up request\n request = null;\n });\n }\n\n if (requestData === undefined) {\n requestData = null;\n }\n\n // Send the request\n request.send(requestData);\n });\n};\n","'use strict';\n\nvar enhanceError = require('./enhanceError');\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\nmodule.exports = function createError(message, config, code, request, response) {\n var error = new Error(message);\n return enhanceError(error, config, code, request, response);\n};\n","'use strict';\n\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};\n","'use strict';\n\n/**\n * A `Cancel` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\nfunction Cancel(message) {\n this.message = message;\n}\n\nCancel.prototype.toString = function toString() {\n return 'Cancel' + (this.message ? ': ' + this.message : '');\n};\n\nCancel.prototype.__CANCEL__ = true;\n\nmodule.exports = Cancel;\n","'use strict';\n\nvar utils = require('./utils');\nvar bind = require('./helpers/bind');\nvar Axios = require('./core/Axios');\nvar defaults = require('./defaults');\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n var context = new Axios(defaultConfig);\n var instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context);\n\n // Copy context to instance\n utils.extend(instance, context);\n\n return instance;\n}\n\n// Create the default instance to be exported\nvar axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Factory for creating new instances\naxios.create = function create(instanceConfig) {\n return createInstance(utils.merge(defaults, instanceConfig));\n};\n\n// Expose Cancel & CancelToken\naxios.Cancel = require('./cancel/Cancel');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel');\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;\n","/*!\n * Determine if an object is a Buffer\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n\n// The _isBuffer check is for Safari 5-7 support, because it's missing\n// Object.prototype.constructor. Remove this eventually\nmodule.exports = function (obj) {\n return obj != null && (isBuffer(obj) || isSlowBuffer(obj) || !!obj._isBuffer)\n}\n\nfunction isBuffer (obj) {\n return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)\n}\n\n// For Node v0.10 support. Remove this eventually.\nfunction isSlowBuffer (obj) {\n return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isBuffer(obj.slice(0, 0))\n}\n","'use strict';\n\nvar defaults = require('./../defaults');\nvar utils = require('./../utils');\nvar InterceptorManager = require('./InterceptorManager');\nvar dispatchRequest = require('./dispatchRequest');\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n}\n\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\nAxios.prototype.request = function request(config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof config === 'string') {\n config = utils.merge({\n url: arguments[0]\n }, arguments[1]);\n }\n\n config = utils.merge(defaults, {method: 'get'}, this.defaults, config);\n config.method = config.method.toLowerCase();\n\n // Hook up interceptors middleware\n var chain = [dispatchRequest, undefined];\n var promise = Promise.resolve(config);\n\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n chain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n chain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n\n return promise;\n};\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(utils.merge(config || {}, {\n method: method,\n url: url\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, data, config) {\n return this.request(utils.merge(config || {}, {\n method: method,\n url: url,\n data: data\n }));\n };\n});\n\nmodule.exports = Axios;\n","'use strict';\n\nvar utils = require('../utils');\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n utils.forEach(headers, function processHeader(value, name) {\n if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n headers[normalizedName] = value;\n delete headers[name];\n }\n });\n};\n","'use strict';\n\nvar createError = require('./createError');\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\nmodule.exports = function settle(resolve, reject, response) {\n var validateStatus = response.config.validateStatus;\n // Note: status is not exposed by XDomainRequest\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(createError(\n 'Request failed with status code ' + response.status,\n response.config,\n null,\n response.request,\n response\n ));\n }\n};\n","'use strict';\n\n/**\n * Update an Error with the specified config, error code, and response.\n *\n * @param {Error} error The error to update.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The error.\n */\nmodule.exports = function enhanceError(error, config, code, request, response) {\n error.config = config;\n if (code) {\n error.code = code;\n }\n error.request = request;\n error.response = response;\n return error;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%40/gi, '@').\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n\n var serializedParams;\n if (paramsSerializer) {\n serializedParams = paramsSerializer(params);\n } else if (utils.isURLSearchParams(params)) {\n serializedParams = params.toString();\n } else {\n var parts = [];\n\n utils.forEach(params, function serialize(val, key) {\n if (val === null || typeof val === 'undefined') {\n return;\n }\n\n if (utils.isArray(val)) {\n key = key + '[]';\n } else {\n val = [val];\n }\n\n utils.forEach(val, function parseValue(v) {\n if (utils.isDate(v)) {\n v = v.toISOString();\n } else if (utils.isObject(v)) {\n v = JSON.stringify(v);\n }\n parts.push(encode(key) + '=' + encode(v));\n });\n });\n\n serializedParams = parts.join('&');\n }\n\n if (serializedParams) {\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n// Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nvar ignoreDuplicateOf = [\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n];\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n var parsed = {};\n var key;\n var val;\n var i;\n\n if (!headers) { return parsed; }\n\n utils.forEach(headers.split('\\n'), function parser(line) {\n i = line.indexOf(':');\n key = utils.trim(line.substr(0, i)).toLowerCase();\n val = utils.trim(line.substr(i + 1));\n\n if (key) {\n if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n return;\n }\n if (key === 'set-cookie') {\n parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs have full support of the APIs needed to test\n // whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n var msie = /(msie|trident)/i.test(navigator.userAgent);\n var urlParsingNode = document.createElement('a');\n var originURL;\n\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n var href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })()\n);\n","'use strict';\n\n// btoa polyfill for IE<10 courtesy https://github.com/davidchambers/Base64.js\n\nvar chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n\nfunction E() {\n this.message = 'String contains an invalid character';\n}\nE.prototype = new Error;\nE.prototype.code = 5;\nE.prototype.name = 'InvalidCharacterError';\n\nfunction btoa(input) {\n var str = String(input);\n var output = '';\n for (\n // initialize result and counter\n var block, charCode, idx = 0, map = chars;\n // if the next str index does not exist:\n // change the mapping table to \"=\"\n // check if d has no fractional digits\n str.charAt(idx | 0) || (map = '=', idx % 1);\n // \"8 - idx % 1 * 8\" generates the sequence 2, 4, 6, 8\n output += map.charAt(63 & block >> 8 - idx % 1 * 8)\n ) {\n charCode = str.charCodeAt(idx += 3 / 4);\n if (charCode > 0xFF) {\n throw new E();\n }\n block = block << 8 | charCode;\n }\n return output;\n}\n\nmodule.exports = btoa;\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs support document.cookie\n (function standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n var cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n\n if (secure === true) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read: function read(name) {\n var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n })() :\n\n // Non standard browser env (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() { return null; },\n remove: function remove() {}\n };\n })()\n);\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\n this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected\n });\n return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n};\n\nmodule.exports = InterceptorManager;\n","'use strict';\n\nvar utils = require('./../utils');\nvar transformData = require('./transformData');\nvar isCancel = require('../cancel/isCancel');\nvar defaults = require('../defaults');\nvar isAbsoluteURL = require('./../helpers/isAbsoluteURL');\nvar combineURLs = require('./../helpers/combineURLs');\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n // Support baseURL config\n if (config.baseURL && !isAbsoluteURL(config.url)) {\n config.url = combineURLs(config.baseURL, config.url);\n }\n\n // Ensure headers exist\n config.headers = config.headers || {};\n\n // Transform request data\n config.data = transformData(\n config.data,\n config.headers,\n config.transformRequest\n );\n\n // Flatten headers\n config.headers = utils.merge(\n config.headers.common || {},\n config.headers[config.method] || {},\n config.headers || {}\n );\n\n utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n function cleanHeaderConfig(method) {\n delete config.headers[method];\n }\n );\n\n var adapter = config.adapter || defaults.adapter;\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData(\n response.data,\n response.headers,\n config.transformResponse\n );\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData(\n reason.response.data,\n reason.response.headers,\n config.transformResponse\n );\n }\n }\n\n return Promise.reject(reason);\n });\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, fns) {\n /*eslint no-param-reassign:0*/\n utils.forEach(fns, function transform(fn) {\n data = fn(data, headers);\n });\n\n return data;\n};\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d\\+\\-\\.]*:)?\\/\\//i.test(url);\n};\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n};\n","'use strict';\n\nvar Cancel = require('./Cancel');\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\nfunction CancelToken(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n var resolvePromise;\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n var token = this;\n executor(function cancel(message) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new Cancel(message);\n resolvePromise(token.reason);\n });\n}\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n};\n\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\nCancelToken.source = function source() {\n var cancel;\n var token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token: token,\n cancel: cancel\n };\n};\n\nmodule.exports = CancelToken;\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};\n"],"sourceRoot":""} \ No newline at end of file diff --git a/5-fba7ead123902b147665.js b/5-fba7ead123902b147665.js new file mode 100644 index 000000000..f4c27cc24 --- /dev/null +++ b/5-fba7ead123902b147665.js @@ -0,0 +1,2 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[5],{156:function(e,t,n){var r=n(23).f,o=Function.prototype,i=/^\s*function ([^ (]*)/;"name"in o||n(14)&&r(o,"name",{configurable:!0,get:function(){try{return(""+this).match(i)[1]}catch(e){return""}}})},237:function(e,t,n){"use strict";var r=n(445),o=n(611),i=Object.prototype.toString;function s(e){return"[object Array]"===i.call(e)}function a(e){return null!==e&&"object"==typeof e}function u(e){return"[object Function]"===i.call(e)}function c(e,t){if(null!=e)if("object"!=typeof e&&(e=[e]),s(e))for(var n=0,r=e.length;n=200&&e<300}};u.headers={common:{Accept:"application/json, text/plain, */*"}},r.forEach(["delete","get","head"],function(e){u.headers[e]={}}),r.forEach(["post","put","patch"],function(e){u.headers[e]=r.merge(i)}),e.exports=u}).call(this,n(442))},444:function(e,t,n){e.exports=n(610)},445:function(e,t,n){"use strict";e.exports=function(e,t){return function(){for(var n=new Array(arguments.length),r=0;r=0)return;s[t]="set-cookie"===t?(s[t]?s[t]:[]).concat([n]):s[t]?s[t]+", "+n:n}}),s):s}},618:function(e,t,n){"use strict";var r=n(237);e.exports=r.isStandardBrowserEnv()?function(){var e,t=/(msie|trident)/i.test(navigator.userAgent),n=document.createElement("a");function o(e){var r=e;return t&&(n.setAttribute("href",r),r=n.href),n.setAttribute("href",r),{href:n.href,protocol:n.protocol?n.protocol.replace(/:$/,""):"",host:n.host,search:n.search?n.search.replace(/^\?/,""):"",hash:n.hash?n.hash.replace(/^#/,""):"",hostname:n.hostname,port:n.port,pathname:"/"===n.pathname.charAt(0)?n.pathname:"/"+n.pathname}}return e=o(window.location.href),function(t){var n=r.isString(t)?o(t):t;return n.protocol===e.protocol&&n.host===e.host}}():function(){return!0}},619:function(e,t,n){"use strict";var r="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";function o(){this.message="String contains an invalid character"}o.prototype=new Error,o.prototype.code=5,o.prototype.name="InvalidCharacterError",e.exports=function(e){for(var t,n,i=String(e),s="",a=0,u=r;i.charAt(0|a)||(u="=",a%1);s+=u.charAt(63&t>>8-a%1*8)){if((n=i.charCodeAt(a+=.75))>255)throw new o;t=t<<8|n}return s}},620:function(e,t,n){"use strict";var r=n(237);e.exports=r.isStandardBrowserEnv()?{write:function(e,t,n,o,i,s){var a=[];a.push(e+"="+encodeURIComponent(t)),r.isNumber(n)&&a.push("expires="+new Date(n).toGMTString()),r.isString(o)&&a.push("path="+o),r.isString(i)&&a.push("domain="+i),!0===s&&a.push("secure"),document.cookie=a.join("; ")},read:function(e){var t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove:function(e){this.write(e,"",Date.now()-864e5)}}:{write:function(){},read:function(){return null},remove:function(){}}},621:function(e,t,n){"use strict";var r=n(237);function o(){this.handlers=[]}o.prototype.use=function(e,t){return this.handlers.push({fulfilled:e,rejected:t}),this.handlers.length-1},o.prototype.eject=function(e){this.handlers[e]&&(this.handlers[e]=null)},o.prototype.forEach=function(e){r.forEach(this.handlers,function(t){null!==t&&e(t)})},e.exports=o},622:function(e,t,n){"use strict";var r=n(237),o=n(623),i=n(448),s=n(366),a=n(624),u=n(625);function c(e){e.cancelToken&&e.cancelToken.throwIfRequested()}e.exports=function(e){return c(e),e.baseURL&&!a(e.url)&&(e.url=u(e.baseURL,e.url)),e.headers=e.headers||{},e.data=o(e.data,e.headers,e.transformRequest),e.headers=r.merge(e.headers.common||{},e.headers[e.method]||{},e.headers||{}),r.forEach(["delete","get","head","post","put","patch","common"],function(t){delete e.headers[t]}),(e.adapter||s.adapter)(e).then(function(t){return c(e),t.data=o(t.data,t.headers,e.transformResponse),t},function(t){return i(t)||(c(e),t&&t.response&&(t.response.data=o(t.response.data,t.response.headers,e.transformResponse))),Promise.reject(t)})}},623:function(e,t,n){"use strict";var r=n(237);e.exports=function(e,t,n){return r.forEach(n,function(n){e=n(e,t)}),e}},624:function(e,t,n){"use strict";e.exports=function(e){return/^([a-z][a-z\d\+\-\.]*:)?\/\//i.test(e)}},625:function(e,t,n){"use strict";e.exports=function(e,t){return t?e.replace(/\/+$/,"")+"/"+t.replace(/^\/+/,""):e}},626:function(e,t,n){"use strict";var r=n(449);function o(e){if("function"!=typeof e)throw new TypeError("executor must be a function.");var t;this.promise=new Promise(function(e){t=e});var n=this;e(function(e){n.reason||(n.reason=new r(e),t(n.reason))})}o.prototype.throwIfRequested=function(){if(this.reason)throw this.reason},o.source=function(){var e;return{token:new o(function(t){e=t}),cancel:e}},e.exports=o},627:function(e,t,n){"use strict";e.exports=function(e){return function(t){return e.apply(null,t)}}}}]); +//# sourceMappingURL=5-fba7ead123902b147665.js.map \ No newline at end of file diff --git a/5-fba7ead123902b147665.js.map b/5-fba7ead123902b147665.js.map new file mode 100644 index 000000000..29512a886 --- /dev/null +++ b/5-fba7ead123902b147665.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///./node_modules/core-js/modules/es6.function.name.js","webpack:///./node_modules/axios/lib/utils.js","webpack:///./node_modules/axios/lib/defaults.js","webpack:///./node_modules/axios/index.js","webpack:///./node_modules/axios/lib/helpers/bind.js","webpack:///./node_modules/axios/lib/adapters/xhr.js","webpack:///./node_modules/axios/lib/core/createError.js","webpack:///./node_modules/axios/lib/cancel/isCancel.js","webpack:///./node_modules/axios/lib/cancel/Cancel.js","webpack:///./node_modules/axios/lib/axios.js","webpack:///./node_modules/is-buffer/index.js","webpack:///./node_modules/axios/lib/core/Axios.js","webpack:///./node_modules/axios/lib/helpers/normalizeHeaderName.js","webpack:///./node_modules/axios/lib/core/settle.js","webpack:///./node_modules/axios/lib/core/enhanceError.js","webpack:///./node_modules/axios/lib/helpers/buildURL.js","webpack:///./node_modules/axios/lib/helpers/parseHeaders.js","webpack:///./node_modules/axios/lib/helpers/isURLSameOrigin.js","webpack:///./node_modules/axios/lib/helpers/btoa.js","webpack:///./node_modules/axios/lib/helpers/cookies.js","webpack:///./node_modules/axios/lib/core/InterceptorManager.js","webpack:///./node_modules/axios/lib/core/dispatchRequest.js","webpack:///./node_modules/axios/lib/core/transformData.js","webpack:///./node_modules/axios/lib/helpers/isAbsoluteURL.js","webpack:///./node_modules/axios/lib/helpers/combineURLs.js","webpack:///./node_modules/axios/lib/cancel/CancelToken.js","webpack:///./node_modules/axios/lib/helpers/spread.js"],"names":["dP","__webpack_require__","f","FProto","Function","prototype","nameRE","configurable","get","this","match","e","bind","isBuffer","toString","Object","isArray","val","call","isObject","isFunction","forEach","obj","fn","i","l","length","key","hasOwnProperty","module","exports","isArrayBuffer","isFormData","FormData","isArrayBufferView","ArrayBuffer","isView","buffer","isString","isNumber","isUndefined","isDate","isFile","isBlob","isStream","pipe","isURLSearchParams","URLSearchParams","isStandardBrowserEnv","navigator","product","window","document","merge","result","assignValue","arguments","extend","a","b","thisArg","trim","str","replace","process","utils","normalizeHeaderName","DEFAULT_CONTENT_TYPE","Content-Type","setContentTypeIfUnset","headers","value","adapter","defaults","XMLHttpRequest","transformRequest","data","JSON","stringify","transformResponse","parse","timeout","xsrfCookieName","xsrfHeaderName","maxContentLength","validateStatus","status","common","Accept","method","args","Array","apply","settle","buildURL","parseHeaders","isURLSameOrigin","createError","btoa","config","Promise","resolve","reject","requestData","requestHeaders","request","loadEvent","xDomain","XDomainRequest","url","onprogress","ontimeout","auth","username","password","Authorization","open","toUpperCase","params","paramsSerializer","readyState","responseURL","indexOf","responseHeaders","getAllResponseHeaders","response","responseType","responseText","statusText","onerror","cookies","xsrfValue","withCredentials","read","undefined","toLowerCase","setRequestHeader","onDownloadProgress","addEventListener","onUploadProgress","upload","cancelToken","promise","then","cancel","abort","send","enhanceError","message","code","error","Error","__CANCEL__","Cancel","Axios","createInstance","defaultConfig","context","instance","axios","create","instanceConfig","CancelToken","isCancel","all","promises","spread","default","constructor","readFloatLE","slice","isSlowBuffer","_isBuffer","InterceptorManager","dispatchRequest","interceptors","chain","interceptor","unshift","fulfilled","rejected","push","shift","normalizedName","name","encode","encodeURIComponent","serializedParams","parts","v","toISOString","join","ignoreDuplicateOf","parsed","split","line","substr","concat","originURL","msie","test","userAgent","urlParsingNode","createElement","resolveURL","href","setAttribute","protocol","host","search","hash","hostname","port","pathname","charAt","location","requestURL","chars","E","input","block","charCode","String","output","idx","map","charCodeAt","write","expires","path","domain","secure","cookie","Date","toGMTString","RegExp","decodeURIComponent","remove","now","handlers","use","eject","id","h","transformData","isAbsoluteURL","combineURLs","throwIfCancellationRequested","throwIfRequested","baseURL","reason","fns","relativeURL","executor","TypeError","resolvePromise","token","source","c","callback","arr"],"mappings":"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","file":"5-fba7ead123902b147665.js","sourcesContent":["var dP = require('./_object-dp').f;\nvar FProto = Function.prototype;\nvar nameRE = /^\\s*function ([^ (]*)/;\nvar NAME = 'name';\n\n// 19.2.4.2 name\nNAME in FProto || require('./_descriptors') && dP(FProto, NAME, {\n configurable: true,\n get: function () {\n try {\n return ('' + this).match(nameRE)[1];\n } catch (e) {\n return '';\n }\n }\n});\n","'use strict';\n\nvar bind = require('./helpers/bind');\nvar isBuffer = require('is-buffer');\n\n/*global toString:true*/\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n return toString.call(val) === '[object Array]';\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nfunction isArrayBuffer(val) {\n return toString.call(val) === '[object ArrayBuffer]';\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(val) {\n return (typeof FormData !== 'undefined') && (val instanceof FormData);\n}\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n var result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer);\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n return typeof val === 'number';\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nfunction isDate(val) {\n return toString.call(val) === '[object Date]';\n}\n\n/**\n * Determine if a value is a File\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nfunction isFile(val) {\n return toString.call(val) === '[object File]';\n}\n\n/**\n * Determine if a value is a Blob\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nfunction isBlob(val) {\n return toString.call(val) === '[object Blob]';\n}\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nfunction isURLSearchParams(val) {\n return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams;\n}\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n return str.replace(/^\\s*/, '').replace(/\\s*$/, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n */\nfunction isStandardBrowserEnv() {\n if (typeof navigator !== 'undefined' && navigator.product === 'ReactNative') {\n return false;\n }\n return (\n typeof window !== 'undefined' &&\n typeof document !== 'undefined'\n );\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (var i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (typeof result[key] === 'object' && typeof val === 'object') {\n result[key] = merge(result[key], val);\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n forEach(b, function assignValue(val, key) {\n if (thisArg && typeof val === 'function') {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n });\n return a;\n}\n\nmodule.exports = {\n isArray: isArray,\n isArrayBuffer: isArrayBuffer,\n isBuffer: isBuffer,\n isFormData: isFormData,\n isArrayBufferView: isArrayBufferView,\n isString: isString,\n isNumber: isNumber,\n isObject: isObject,\n isUndefined: isUndefined,\n isDate: isDate,\n isFile: isFile,\n isBlob: isBlob,\n isFunction: isFunction,\n isStream: isStream,\n isURLSearchParams: isURLSearchParams,\n isStandardBrowserEnv: isStandardBrowserEnv,\n forEach: forEach,\n merge: merge,\n extend: extend,\n trim: trim\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar normalizeHeaderName = require('./helpers/normalizeHeaderName');\n\nvar DEFAULT_CONTENT_TYPE = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n headers['Content-Type'] = value;\n }\n}\n\nfunction getDefaultAdapter() {\n var adapter;\n if (typeof XMLHttpRequest !== 'undefined') {\n // For browsers use XHR adapter\n adapter = require('./adapters/xhr');\n } else if (typeof process !== 'undefined') {\n // For node use HTTP adapter\n adapter = require('./adapters/http');\n }\n return adapter;\n}\n\nvar defaults = {\n adapter: getDefaultAdapter(),\n\n transformRequest: [function transformRequest(data, headers) {\n normalizeHeaderName(headers, 'Content-Type');\n if (utils.isFormData(data) ||\n utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n return data.toString();\n }\n if (utils.isObject(data)) {\n setContentTypeIfUnset(headers, 'application/json;charset=utf-8');\n return JSON.stringify(data);\n }\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n /*eslint no-param-reassign:0*/\n if (typeof data === 'string') {\n try {\n data = JSON.parse(data);\n } catch (e) { /* Ignore */ }\n }\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n }\n};\n\ndefaults.headers = {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nmodule.exports = defaults;\n","module.exports = require('./lib/axios');","'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n return fn.apply(thisArg, args);\n };\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar settle = require('./../core/settle');\nvar buildURL = require('./../helpers/buildURL');\nvar parseHeaders = require('./../helpers/parseHeaders');\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\nvar createError = require('../core/createError');\nvar btoa = (typeof window !== 'undefined' && window.btoa && window.btoa.bind(window)) || require('./../helpers/btoa');\n\nmodule.exports = function xhrAdapter(config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n var requestData = config.data;\n var requestHeaders = config.headers;\n\n if (utils.isFormData(requestData)) {\n delete requestHeaders['Content-Type']; // Let the browser set it\n }\n\n var request = new XMLHttpRequest();\n var loadEvent = 'onreadystatechange';\n var xDomain = false;\n\n // For IE 8/9 CORS support\n // Only supports POST and GET calls and doesn't returns the response headers.\n // DON'T do this for testing b/c XMLHttpRequest is mocked, not XDomainRequest.\n if (process.env.NODE_ENV !== 'test' &&\n typeof window !== 'undefined' &&\n window.XDomainRequest && !('withCredentials' in request) &&\n !isURLSameOrigin(config.url)) {\n request = new window.XDomainRequest();\n loadEvent = 'onload';\n xDomain = true;\n request.onprogress = function handleProgress() {};\n request.ontimeout = function handleTimeout() {};\n }\n\n // HTTP basic authentication\n if (config.auth) {\n var username = config.auth.username || '';\n var password = config.auth.password || '';\n requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n }\n\n request.open(config.method.toUpperCase(), buildURL(config.url, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n // Listen for ready state\n request[loadEvent] = function handleLoad() {\n if (!request || (request.readyState !== 4 && !xDomain)) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n\n // Prepare the response\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = !config.responseType || config.responseType === 'text' ? request.responseText : request.response;\n var response = {\n data: responseData,\n // IE sends 1223 instead of 204 (https://github.com/axios/axios/issues/201)\n status: request.status === 1223 ? 204 : request.status,\n statusText: request.status === 1223 ? 'No Content' : request.statusText,\n headers: responseHeaders,\n config: config,\n request: request\n };\n\n settle(resolve, reject, response);\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(createError('Network Error', config, null, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n reject(createError('timeout of ' + config.timeout + 'ms exceeded', config, 'ECONNABORTED',\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if (utils.isStandardBrowserEnv()) {\n var cookies = require('./../helpers/cookies');\n\n // Add xsrf header\n var xsrfValue = (config.withCredentials || isURLSameOrigin(config.url)) && config.xsrfCookieName ?\n cookies.read(config.xsrfCookieName) :\n undefined;\n\n if (xsrfValue) {\n requestHeaders[config.xsrfHeaderName] = xsrfValue;\n }\n }\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n // Remove Content-Type if data is undefined\n delete requestHeaders[key];\n } else {\n // Otherwise add header to the request\n request.setRequestHeader(key, val);\n }\n });\n }\n\n // Add withCredentials to request if needed\n if (config.withCredentials) {\n request.withCredentials = true;\n }\n\n // Add responseType to request if needed\n if (config.responseType) {\n try {\n request.responseType = config.responseType;\n } catch (e) {\n // Expected DOMException thrown by browsers not compatible XMLHttpRequest Level 2.\n // But, this can be suppressed for 'json' type as it can be parsed by default 'transformResponse' function.\n if (config.responseType !== 'json') {\n throw e;\n }\n }\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', config.onDownloadProgress);\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', config.onUploadProgress);\n }\n\n if (config.cancelToken) {\n // Handle cancellation\n config.cancelToken.promise.then(function onCanceled(cancel) {\n if (!request) {\n return;\n }\n\n request.abort();\n reject(cancel);\n // Clean up request\n request = null;\n });\n }\n\n if (requestData === undefined) {\n requestData = null;\n }\n\n // Send the request\n request.send(requestData);\n });\n};\n","'use strict';\n\nvar enhanceError = require('./enhanceError');\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\nmodule.exports = function createError(message, config, code, request, response) {\n var error = new Error(message);\n return enhanceError(error, config, code, request, response);\n};\n","'use strict';\n\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};\n","'use strict';\n\n/**\n * A `Cancel` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\nfunction Cancel(message) {\n this.message = message;\n}\n\nCancel.prototype.toString = function toString() {\n return 'Cancel' + (this.message ? ': ' + this.message : '');\n};\n\nCancel.prototype.__CANCEL__ = true;\n\nmodule.exports = Cancel;\n","'use strict';\n\nvar utils = require('./utils');\nvar bind = require('./helpers/bind');\nvar Axios = require('./core/Axios');\nvar defaults = require('./defaults');\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n var context = new Axios(defaultConfig);\n var instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context);\n\n // Copy context to instance\n utils.extend(instance, context);\n\n return instance;\n}\n\n// Create the default instance to be exported\nvar axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Factory for creating new instances\naxios.create = function create(instanceConfig) {\n return createInstance(utils.merge(defaults, instanceConfig));\n};\n\n// Expose Cancel & CancelToken\naxios.Cancel = require('./cancel/Cancel');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel');\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;\n","/*!\n * Determine if an object is a Buffer\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n\n// The _isBuffer check is for Safari 5-7 support, because it's missing\n// Object.prototype.constructor. Remove this eventually\nmodule.exports = function (obj) {\n return obj != null && (isBuffer(obj) || isSlowBuffer(obj) || !!obj._isBuffer)\n}\n\nfunction isBuffer (obj) {\n return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)\n}\n\n// For Node v0.10 support. Remove this eventually.\nfunction isSlowBuffer (obj) {\n return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isBuffer(obj.slice(0, 0))\n}\n","'use strict';\n\nvar defaults = require('./../defaults');\nvar utils = require('./../utils');\nvar InterceptorManager = require('./InterceptorManager');\nvar dispatchRequest = require('./dispatchRequest');\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n}\n\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\nAxios.prototype.request = function request(config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof config === 'string') {\n config = utils.merge({\n url: arguments[0]\n }, arguments[1]);\n }\n\n config = utils.merge(defaults, {method: 'get'}, this.defaults, config);\n config.method = config.method.toLowerCase();\n\n // Hook up interceptors middleware\n var chain = [dispatchRequest, undefined];\n var promise = Promise.resolve(config);\n\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n chain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n chain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n\n return promise;\n};\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(utils.merge(config || {}, {\n method: method,\n url: url\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, data, config) {\n return this.request(utils.merge(config || {}, {\n method: method,\n url: url,\n data: data\n }));\n };\n});\n\nmodule.exports = Axios;\n","'use strict';\n\nvar utils = require('../utils');\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n utils.forEach(headers, function processHeader(value, name) {\n if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n headers[normalizedName] = value;\n delete headers[name];\n }\n });\n};\n","'use strict';\n\nvar createError = require('./createError');\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\nmodule.exports = function settle(resolve, reject, response) {\n var validateStatus = response.config.validateStatus;\n // Note: status is not exposed by XDomainRequest\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(createError(\n 'Request failed with status code ' + response.status,\n response.config,\n null,\n response.request,\n response\n ));\n }\n};\n","'use strict';\n\n/**\n * Update an Error with the specified config, error code, and response.\n *\n * @param {Error} error The error to update.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The error.\n */\nmodule.exports = function enhanceError(error, config, code, request, response) {\n error.config = config;\n if (code) {\n error.code = code;\n }\n error.request = request;\n error.response = response;\n return error;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%40/gi, '@').\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n\n var serializedParams;\n if (paramsSerializer) {\n serializedParams = paramsSerializer(params);\n } else if (utils.isURLSearchParams(params)) {\n serializedParams = params.toString();\n } else {\n var parts = [];\n\n utils.forEach(params, function serialize(val, key) {\n if (val === null || typeof val === 'undefined') {\n return;\n }\n\n if (utils.isArray(val)) {\n key = key + '[]';\n } else {\n val = [val];\n }\n\n utils.forEach(val, function parseValue(v) {\n if (utils.isDate(v)) {\n v = v.toISOString();\n } else if (utils.isObject(v)) {\n v = JSON.stringify(v);\n }\n parts.push(encode(key) + '=' + encode(v));\n });\n });\n\n serializedParams = parts.join('&');\n }\n\n if (serializedParams) {\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n// Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nvar ignoreDuplicateOf = [\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n];\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n var parsed = {};\n var key;\n var val;\n var i;\n\n if (!headers) { return parsed; }\n\n utils.forEach(headers.split('\\n'), function parser(line) {\n i = line.indexOf(':');\n key = utils.trim(line.substr(0, i)).toLowerCase();\n val = utils.trim(line.substr(i + 1));\n\n if (key) {\n if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n return;\n }\n if (key === 'set-cookie') {\n parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs have full support of the APIs needed to test\n // whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n var msie = /(msie|trident)/i.test(navigator.userAgent);\n var urlParsingNode = document.createElement('a');\n var originURL;\n\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n var href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })()\n);\n","'use strict';\n\n// btoa polyfill for IE<10 courtesy https://github.com/davidchambers/Base64.js\n\nvar chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n\nfunction E() {\n this.message = 'String contains an invalid character';\n}\nE.prototype = new Error;\nE.prototype.code = 5;\nE.prototype.name = 'InvalidCharacterError';\n\nfunction btoa(input) {\n var str = String(input);\n var output = '';\n for (\n // initialize result and counter\n var block, charCode, idx = 0, map = chars;\n // if the next str index does not exist:\n // change the mapping table to \"=\"\n // check if d has no fractional digits\n str.charAt(idx | 0) || (map = '=', idx % 1);\n // \"8 - idx % 1 * 8\" generates the sequence 2, 4, 6, 8\n output += map.charAt(63 & block >> 8 - idx % 1 * 8)\n ) {\n charCode = str.charCodeAt(idx += 3 / 4);\n if (charCode > 0xFF) {\n throw new E();\n }\n block = block << 8 | charCode;\n }\n return output;\n}\n\nmodule.exports = btoa;\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs support document.cookie\n (function standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n var cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n\n if (secure === true) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read: function read(name) {\n var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n })() :\n\n // Non standard browser env (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() { return null; },\n remove: function remove() {}\n };\n })()\n);\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\n this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected\n });\n return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n};\n\nmodule.exports = InterceptorManager;\n","'use strict';\n\nvar utils = require('./../utils');\nvar transformData = require('./transformData');\nvar isCancel = require('../cancel/isCancel');\nvar defaults = require('../defaults');\nvar isAbsoluteURL = require('./../helpers/isAbsoluteURL');\nvar combineURLs = require('./../helpers/combineURLs');\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n // Support baseURL config\n if (config.baseURL && !isAbsoluteURL(config.url)) {\n config.url = combineURLs(config.baseURL, config.url);\n }\n\n // Ensure headers exist\n config.headers = config.headers || {};\n\n // Transform request data\n config.data = transformData(\n config.data,\n config.headers,\n config.transformRequest\n );\n\n // Flatten headers\n config.headers = utils.merge(\n config.headers.common || {},\n config.headers[config.method] || {},\n config.headers || {}\n );\n\n utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n function cleanHeaderConfig(method) {\n delete config.headers[method];\n }\n );\n\n var adapter = config.adapter || defaults.adapter;\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData(\n response.data,\n response.headers,\n config.transformResponse\n );\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData(\n reason.response.data,\n reason.response.headers,\n config.transformResponse\n );\n }\n }\n\n return Promise.reject(reason);\n });\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, fns) {\n /*eslint no-param-reassign:0*/\n utils.forEach(fns, function transform(fn) {\n data = fn(data, headers);\n });\n\n return data;\n};\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d\\+\\-\\.]*:)?\\/\\//i.test(url);\n};\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n};\n","'use strict';\n\nvar Cancel = require('./Cancel');\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\nfunction CancelToken(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n var resolvePromise;\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n var token = this;\n executor(function cancel(message) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new Cancel(message);\n resolvePromise(token.reason);\n });\n}\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n};\n\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\nCancelToken.source = function source() {\n var cancel;\n var token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token: token,\n cancel: cancel\n };\n};\n\nmodule.exports = CancelToken;\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};\n"],"sourceRoot":""} \ No newline at end of file diff --git a/6-53a815fc9de9758cd6d9.js b/6-53a815fc9de9758cd6d9.js new file mode 100644 index 000000000..f983c5501 --- /dev/null +++ b/6-53a815fc9de9758cd6d9.js @@ -0,0 +1,2 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[6],{151:function(e,t,n){"use strict";n.d(t,"a",function(){return f});n(28),n(245);var a=n(148),i=n.n(a),o=(n(224),n(247)),r=n.n(o),s=n(4),l=n.n(s),c=n(0),u=n.n(c),f=function(e){var t=e.text,n=e.className,a=e.heading,o=e.headingFontSize,s=e.bold,l=e.centered,c=e.noPadding,f=e.headingFont,p=i()(e,["text","className","heading","headingFontSize","bold","centered","noPadding","headingFont"]),h=[];l&&h.push("centered"),s&&h.push("bold"),c&&h.push("body-text--no-padding"),f&&h.push("heading-font");return u.a.createElement("div",Object.assign({className:"body-text "+n},p),a.title&&function(){if(a){var e=a.level;return u.a.createElement(e,{className:"body-text__title",style:o?{fontSize:o}:{}},a.title)}return null}(),t&&"string"==typeof t?u.a.createElement("p",{className:"body-text__content "+h.join(" ")},t):t&&t.map(function(e){return u.a.createElement("div",{key:e,className:"body-text__content "+h.join(" ")},r()(e))}))};f.defaultProps={heading:{title:"",level:"h2"},text:"",className:"",centered:!1,bold:!1,noPadding:!1},f.propTypes={heading:l.a.shape({text:l.a.string,level:l.a.string}),headingFontSize:l.a.string,text:l.a.oneOfType([l.a.string,l.a.array]),className:l.a.string,centered:l.a.bool,bold:l.a.bool,noPadding:l.a.bool}},157:function(e,t){e.exports=["fullstack","full stack open 2019","course","helsingin yliopisto","tietojenkäsittelytieteen osasto","mooc","mooc.fi","full stack","full stack open","web-sovelluskehitys","web","houston","houston inc","websovelluskehitys","web-sovellus","React","Redux","Node.js","Node","MongoDB","GraphQL","REST","REST api","single page -sovellus","ohjelmointi","university of helsinki","department of computer science","web development","software development","web","web application","single page app","programming"]},159:function(e,t,n){"use strict";n(163);var a=n(147),i=n(149),o=n(146),r=n(0),s=n.n(r),l=n(155),c=n.n(l),u=n(220),f=n(152),p=[{src:n.n(f).a,alt:"Helsingin yliopiston logo",href:"https://www.helsinki.fi/"},{src:c.a,alt:"Houston inc. logo",href:"https://www.houston-inc.com/"}];t.a=function(e){var t=e.lang;return s.a.createElement(a.a,{id:"footer",className:"container spacing--after-small spacing--mobile",flex:!0},s.a.createElement(a.a,{className:"col-5 push-right-3 col-10--mobile order-2--mobile order-2--tablet footer__links",flex:!0,spaceBetween:!0},p.map(function(e){return s.a.createElement("a",{key:e.alt,href:e.href,className:"col-5 col-4--mobile spacing--mobile"},s.a.createElement(i.a,{contain:!0,src:e.src,alt:e.alt,className:"col-6"}))})),s.a.createElement(a.a,{flex:!0,className:"col-5 col-5--mobile order-1--mobile order-1--tablet footer__navigation"},s.a.createElement("div",{className:"footer__navigation-link-container"},u.b[t].map(function(e){return s.a.createElement(o.Link,{key:e.path,to:e.path,className:"footer__navigation-link nav-item-hover",style:{marginLeft:"4.5rem"}},e.text)}))))}},163:function(e,t,n){},224:function(e,t,n){},227:function(e,t,n){"use strict";n.d(t,"a",function(){return c});n(28);var a=n(148),i=n.n(a),o=(n(242),n(4)),r=n.n(o),s=n(0),l=n.n(s),c=function(e){var t=e.className,n=e.headingLevel,a=void 0===n?"h2":n,o=e.headingFontSize,r=e.text,s=i()(e,["className","headingLevel","headingFontSize","text"]),c=a;return l.a.createElement(c,Object.assign({className:"sub-header "+t,style:o?{fontSize:o}:{}},s),r)};c.propTypes={className:r.a.string,headingLevel:r.a.string,text:r.a.string.isRequired,headingFontSize:r.a.string},c.defaultProps={className:""}},242:function(e,t,n){},323:function(e,t,n){"use strict";var a=n(6),i=n.n(a),o=(n(362),n(0)),r=n.n(o),s=n(151),l=n(146),c=n(4),u=n.n(c),f=n(399);f.a.initialize("UA-135975842-1");var p=function(e){function t(t){var n;return(n=e.call(this,t)||this).state={isOpened:!1},n}i()(t,e);var n=t.prototype;return n.componentDidMount=function(){this.props.initiallyOpened&&this.setState({isOpened:!0})},n.handleClick=function(){var e=this.state.isOpened,t=this.props,n=t.title,a=t.track;this.setState({isOpened:!e},function(){a&&f.a.event({category:"FAQ",action:n+" "+(e?"closed":"expanded")})})},n.render=function(){var e=this,t=this.props,n=t.title,a=t.content,i=t.className,o=t.containerClassName,c=t.list,u=t.titleStyle,f=this.state.isOpened;return r.a.createElement("div",{className:"accordion__container col-8 push-right-1 "+o},r.a.createElement("button",{className:"accordion accordion__title "+(f?"active":"")+" "+i,style:u,onClick:function(){return e.handleClick()}},n),r.a.createElement("div",{className:"panel",style:{padding:f?"2rem 18px":"",maxHeight:""+(f?"unset":0),transition:"max-height 0.2s ease-out"}},a&&r.a.createElement(s.a,{className:"col-8 push-right-1",text:a}),c&&r.a.createElement("ul",null,c.map(function(e){return r.a.createElement("li",{key:e.text},r.a.createElement(l.Link,{to:e.href},e.text))}))))},t}(o.Component);p.propTypes={title:u.a.string.isRequired,track:u.a.bool,content:u.a.oneOfType([u.a.string,u.a.array]),list:u.a.array,className:u.a.string,containerClassName:u.a.string,initiallyOpened:u.a.bool,titleStyle:u.a.object},p.defaultProps={className:"",track:!1,containerClassName:"",initiallyOpened:!1,titleStyle:{}},t.a=p},362:function(e,t,n){},399:function(e,t,n){"use strict";function a(e){return e.replace(/^\s+|\s+$/g,"")}var i=/^(a|an|and|as|at|but|by|en|for|if|in|nor|of|on|or|per|the|to|vs?\.?|via)$/i;function o(e){console.warn("[react-ga]",e)}var r="REDACTED (Potential Email Address)";function s(e,t){return function(e){return/[^@]+@[^@]+/.test(e)}(e)?(o("This arg looks like an email address, redacting."),r):t?a(e).replace(/[A-Za-z0-9\u00C0-\u00FF]+[^\s-]*/g,function(e,t,n){return t>0&&t+e.length!==n.length&&e.search(i)>-1&&":"!==n.charAt(t-2)&&("-"!==n.charAt(t+e.length)||"-"===n.charAt(t-1))&&n.charAt(t-1).search(/[^\s-]/)<0?e.toLowerCase():e.substr(1).search(/[A-Z]|\../)>-1?e:e.charAt(0).toUpperCase()+e.substr(1)}):e}var l=function(e){var t,n,a,i,o,r,s,l="https://www.google-analytics.com/analytics.js";e&&e.gaAddress?l=e.gaAddress:e&&e.debug&&(l="https://www.google-analytics.com/analytics_debug.js"),t=window,n=document,a="script",i=l,o="ga",t.GoogleAnalyticsObject=o,t.ga=t.ga||function(){(t.ga.q=t.ga.q||[]).push(arguments)},t.ga.l=1*new Date,r=n.createElement(a),s=n.getElementsByTagName(a)[0],r.async=1,r.src=i,s.parentNode.insertBefore(r,s)};function c(e){console.info("[react-ga]",e)}var u=[],f={calls:u,ga:function(){for(var e=arguments.length,t=new Array(e),n=0;n=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}function b(e,t){for(var n=0;n=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}function N(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function T(e){return(T="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function _(e){return function(e){if(Array.isArray(e)){for(var t=0,n=new Array(e.length);t1?t-1:0),a=1;a0&&(L.apply(void 0,t),A&&(c("called ga('arguments');"),c("with arguments: ".concat(JSON.stringify(t))))),window.ga}function J(e,t){q(t,"send",e),A&&(c("called ga('send', fieldObject);"),c("with fieldObject: ".concat(JSON.stringify(e))),c("with trackers: ".concat(JSON.stringify(t))))}var R={require:function(e,t){if(e){var n=a(e);if(""!==n)if(t){if("object"!==T(t))return void o("Expected `options` arg to be an Object");0===Object.keys(t).length&&o("Empty `options` given to .require()"),z("require",n,t),A&&c("called ga('require', '".concat(n,"', ").concat(JSON.stringify(t)))}else z("require",n),A&&c("called ga('require', '".concat(n,"');"));else o("`name` cannot be an empty string in .require()")}else o("`name` is required in .require()")},execute:function(e,t){var n,a;if(1==(arguments.length<=2?0:arguments.length-2)?n=arguments.length<=2?void 0:arguments[2]:(a=arguments.length<=2?void 0:arguments[2],n=arguments.length<=3?void 0:arguments[3]),"string"!=typeof e)o("Expected `pluginName` arg to be a String.");else if("string"!=typeof t)o("Expected `action` arg to be a String.");else{var i="".concat(e,":").concat(t);n=n||null,a&&n?(z(i,a,n),A&&(c("called ga('".concat(i,"');")),c('actionType: "'.concat(a,'" with payload: ').concat(JSON.stringify(n))))):n?(z(i,n),A&&(c("called ga('".concat(i,"');")),c("with payload: ".concat(JSON.stringify(n))))):(z(i),A&&c("called ga('".concat(i,"');")))}}};function K(e,t,n){if("function"==typeof t)if(e&&e.label){var a={hitType:"event",eventCategory:"Outbound",eventAction:"Click",eventLabel:I(e.label)},i=!1,r=setTimeout(function(){i=!0,t()},250);a.hitCallback=function(){clearTimeout(r),i||t()},J(a,n)}else o("args.label is required in outboundLink()");else o("hitCallback function is required")}S.origTrackLink=S.trackLink,S.trackLink=K;var M=S;t.a={initialize:function(e,t){if(t&&!0===t.testMode)P=!0;else{if("undefined"==typeof window)return!1;t&&!0===t.standardImplementation||l(t)}return F=!t||"boolean"!=typeof t.alwaysSendToDefaultTracker||t.alwaysSendToDefaultTracker,Array.isArray(e)?e.forEach(function(e){"object"===T(e)?D(e.trackingId,e):o("All configs must be an object")}):D(e,t),!0},ga:z,set:function(e,t){e?"object"===T(e)?(0===Object.keys(e).length&&o("empty `fieldsObject` given to .set()"),q(t,"set",e),A&&(c("called ga('set', fieldsObject);"),c("with fieldsObject: ".concat(JSON.stringify(e))))):o("Expected `fieldsObject` arg to be an Object"):o("`fieldsObject` is required in .set()")},send:J,pageview:function(e,t,n){if(e){var i=a(e);if(""!==i){var r={};if(n&&(r.title=n),q(t,"send",function(e){for(var t=1;t0&&void 0!==arguments[0]?arguments[0]:{},t=e.category,n=e.variable,a=e.value,i=e.label,r=arguments.length>1?arguments[1]:void 0;if(t&&n&&a&&"number"==typeof a){var s={hitType:"timing",timingCategory:I(t),timingVar:I(n),timingValue:a};i&&(s.timingLabel=I(i)),J(s,r)}else o("args.category, args.variable AND args.value are required in timing() AND args.value has to be a number")},event:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.category,n=e.action,a=e.label,i=e.value,r=e.nonInteraction,s=e.transport,l=E(e,["category","action","label","value","nonInteraction","transport"]),c=arguments.length>1?arguments[1]:void 0;if(t&&n){var u={hitType:"event",eventCategory:I(t),eventAction:I(n)};a&&(u.eventLabel=I(a)),void 0!==i&&("number"!=typeof i?o("Expected `args.value` arg to be a Number."):u.eventValue=i),void 0!==r&&("boolean"!=typeof r?o("`args.nonInteraction` must be a boolean."):u.nonInteraction=r),void 0!==s&&("string"!=typeof s?o("`args.transport` must be a string."):(-1===["beacon","xhr","image"].indexOf(s)&&o("`args.transport` must be either one of these values: `beacon`, `xhr` or `image`"),u.transport=s)),Object.keys(l).filter(function(e){return"dimension"===e.substr(0,"dimension".length)}).forEach(function(e){u[e]=l[e]}),Object.keys(l).filter(function(e){return"metric"===e.substr(0,"metric".length)}).forEach(function(e){u[e]=l[e]}),J(u,c)}else o("args.category AND args.action are required in event()")},exception:function(e,t){var n=e.description,a=e.fatal,i={hitType:"exception"};n&&(i.exDescription=I(n)),void 0!==a&&("boolean"!=typeof a?o("`args.fatal` must be a boolean."):i.exFatal=a),J(i,t)},plugin:R,outboundLink:K,OutboundLink:M,testModeAPI:f}},450:function(e){e.exports={fi:[{title:"Ilmestyykö kurssista uusi versio 2020?",text:["Kyllä, uusi versio ilmestyy 15.3.2020.

Uusi versio ei tule poikkeamaan radikaalisti nykyisestä. Suurin ero tulee osaan 5, integraatiotestaus poistuu ja korjaantuu Cypres.io:lla tapahtuvalla E2E-testauksella.

Kurssin on myös tulossa uusi Typescriptiä käsittelevä osa.

Vuoden 2019 versiota voi laajentaa 2020 versiossa tämän ohjeen mukaisesti."]},{title:"Miten kurssille ilmoittaudutaan?",text:["Kurssille ei tarvitse varsinaisesti ilmoittautua ennen kuin haluat tehdä kurssin kokeen. Koe tehdään Avoimen yliopiston Moodle-järjestelmään. Katso lisää täältä."]},{title:"Mikä on kurssin laajuus?",text:["Kurssin laajuus on riippuen tekemiesi tehtävien määrästä 3-8 opintopistettä. Suoritettuasi kurssin voit jatkaa aihepiiriin syventymistä 1-10 opintopisteen laajuisen Full stack -harjoitustyön parissa."]},{title:"Milloin on tehtävien ja kokeen deadline?",text:["Etenemisnopeus on vapaa, kurssilla on ainoastaan yksi deadline sekä tehtäville että kokeelle, 10.1.2020 klo 23.59.59. Kannattaa kuitenkin huomata, että kurssille on ilmoittauduttava viimeistään deadlinea edeltävänä päivänä 9.1.2020."]},{title:"Miten tehtävät palautetaan?",text:["Tehtävät palautetaan GitHubin kautta ja merkitsemällä tehdyt tehtävät palautussovellukseen, lue lisää täältä."]},{title:"Pitääkö jokainen osa palauttaa omaan repositorioon?",text:["Ei. Voit käyttää yhtä tai useampaa repositoriota, tärkeintä on, että asiat repositorion sisällä ovat selkeästi nimettyjä."]},{title:"Voinko muokata tekemääni palautusta?",text:["Et. Kaikki osan tehtävät on palautettava kerralla. Jos merkkasit tehtäviä vahingossa väärin tai typotit repositorion nimen, lähetä mailia osoitteeseen matti.luukkainen@helsinki.fi"]},{title:"Milloin ja miten saan kurssilta suoritusmerkinnän?",text:["Saat suoritusmerkinnän sen jälkeen kun olet tehnyt hyväksyttävään suoritukseen oikeuttavan määrän tehtäviä, suorittanut kokeen hyväksytysti ja ilmoittanut palautussovelluksessa olevasi valmis kurssin suorituksen kanssa. Viimeinen mahdollinen suorituspäivä on 10.1.2020. Lue lisää täältä."]},{title:"Voinko laajentaa aiempaa kurssisuoritustani?",text:["Voit, lue lisää täältä"]},{title:"Suoritin kurssin viime vuonna. Miten opin käyttämään React hookeja?",text:["State hookia, eli tapaa määritellä tila funktionaalisille komponenteille käsitellään osassa 1. Lifecycle-metodien roolia hoitavia effect hookeja käsitellään osassa 2. Custom hookeista puhutaan osassa 5"]},{title:"Kuulin että suorittamalla kurssin on mahdollista päästä työhaastatteluun",text:["Pitää paikkansa, jos suoritat täydellä laajuudella kurssin ja siihen liittyvän 10 op:n laajuisen harjoitustyön, pääset yhteistyökumppaniemme työhaastatteluun, lue lisää täältä."]}],en:[{title:"Will there be a new course 2020?",text:["Yes, the new version of the course will start 15.3.2020.

There won't be major changes in the course content. The gereatest change shall be in part 5, where integration testing of frontend will be replaced by E2E testing using Cypres.io.

There will also be an entirely new part about Typescript.

The 2019 version can be expanded in the 2020 version, see more here. "]},{title:"How do I sign up for the course?",text:["You don't have to sign up until you want to do the course exam. The exam is done to the Moodle-system of the Open University. You can find more information here. Please note that only persons with Finnish social security number can get take part to exam and get official ECTS credits. For the course certificate signup or Finnish social security number are not needed."]},{title:"How many credits is the course?",text:["The course is 3-8 ECTS credits depending on the amount of returned exercises. After completing the course you can continue to deepen your knowledge on the subject matter by doing the 1-10 ETCS credit Full Stack project. Please note that only persons with Finnish social security number can get official ECTS credits. For the course certificate signup or Finnish social security number are not needed."]},{title:"When is the deadline for the exercises and the exam?",text:["You can complete the course at your own pace. The course has only one deadline for the exercises and the exams 10th January 2020 at 23.59.59. Do keep in mind that you have to sign up for the exam no later than the day before the deadline 9.1.2020."]},{title:"How do I submit the exercises?",text:["The exercises are submitted to GitHub, and by marking the exercises as done in the exercise submission system. You can read more from here. "]},{title:"Do I have to submit each part to a separate repository?",text:["No. You can use one or more repositories, most important is to name everything in a repository clearly. "]},{title:"Can I edit a submission?",text:["No. All exercises for a part must be submitted at the same time. If you marked exercises wrong by accident, or wrote the repository name wrong, send an e-mail to matti.luukkainen@helsinki.fi."]},{title:"When and how can I get my credits?",text:["You can get your credits after submitting enough exercises for passing the course, passing the course exam and letting us know through the exercise submission system that you are ready with the course. The deadline is 10th January 2020. Read more here. Please note that only persons with Finnish social security number can get official ECTS credits. For the course certificate signup or Finnish social security number are not needed."]},{title:"Do I get a certificate after completing the course?",text:["Yes, certificate is available to all who pass the course by 10th January 2020. You can download the certificate after completing the course from the exercise submission system. For the course certificate signup to Open university and Finnish social security number are not needed."]},{title:"Do I need a Finnish social security number to get the course certificate?",text:["For the course certificate Finnish social security number is not needed. You can download the certificate after completing the course from the exercise submission system."]},{title:"Should I signup to Open University to get the course certificate?",text:["For the course certificate signup to Open University is not needed. You can download the certificate after completing the course from the exercise submission system."]},{title:"I heard that I could get a job interview by completing the course.",text:["That's right. If you complete the course with full credits, and complete the practical work with 10 credits, you get a job interview with our partners. Read more here. Please note that only persons with Finnish social security number can get take part to exam and get official ECTS credits."]}]}}}]); +//# sourceMappingURL=6-53a815fc9de9758cd6d9.js.map \ No newline at end of file diff --git a/6-53a815fc9de9758cd6d9.js.map b/6-53a815fc9de9758cd6d9.js.map new file mode 100644 index 000000000..1aae2ed30 --- /dev/null +++ b/6-53a815fc9de9758cd6d9.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///./src/components/BodyText/BodyText.js","webpack:///./src/content/seo/mainSEOtags.js","webpack:///./src/components/Footer/Footer.js","webpack:///./src/components/SubHeader/SubHeader.js","webpack:///./src/components/Accordion/Accordion.js","webpack:///./node_modules/react-ga/dist/esm/utils/trim.js","webpack:///./node_modules/react-ga/dist/esm/utils/toTitleCase.js","webpack:///./node_modules/react-ga/dist/esm/utils/console/warn.js","webpack:///./node_modules/react-ga/dist/esm/utils/format.js","webpack:///./node_modules/react-ga/dist/esm/utils/mightBeEmail.js","webpack:///./node_modules/react-ga/dist/esm/utils/loadGA.js","webpack:///./node_modules/react-ga/dist/esm/utils/console/log.js","webpack:///./node_modules/react-ga/dist/esm/utils/testModeAPI.js","webpack:///./node_modules/react-ga/dist/esm/components/OutboundLink.js","webpack:///./node_modules/react-ga/dist/esm/index.js","webpack:///./node_modules/react-ga/dist/esm/utils/removeLeadingSlash.js"],"names":["BodyText","_ref","text","className","heading","headingFontSize","bold","centered","noPadding","headingFont","props","_babel_runtime_helpers_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_2___default","classes","push","react__WEBPACK_IMPORTED_MODULE_6___default","a","createElement","Object","assign","title","Heading","level","style","fontSize","getHeading","join","map","p","key","Parser","defaultProps","propTypes","PropTypes","shape","string","oneOfType","array","bool","module","exports","__webpack_require__","_Element_Element__WEBPACK_IMPORTED_MODULE_1__","_Image_Image__WEBPACK_IMPORTED_MODULE_2__","gatsby__WEBPACK_IMPORTED_MODULE_3__","react__WEBPACK_IMPORTED_MODULE_4__","react__WEBPACK_IMPORTED_MODULE_4___default","n","_images_company_logos_houston_svg__WEBPACK_IMPORTED_MODULE_5__","_images_company_logos_houston_svg__WEBPACK_IMPORTED_MODULE_5___default","_Navigation_Navigation__WEBPACK_IMPORTED_MODULE_6__","_images_company_logos_uoh_centre_svg__WEBPACK_IMPORTED_MODULE_7__","images","src","yliopisto","alt","href","houston","Footer","lang","id","flex","spaceBetween","image","contain","navigation","item","path","to","marginLeft","SubHeader","_ref$headingLevel","headingLevel","_babel_runtime_helpers_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_1___default","isRequired","ReactGA","initialize","Accordion","_this","_Component","call","this","state","isOpened","componentDidMount","initiallyOpened","setState","handleClick","_this$props","track","event","category","action","render","_this2","_this$props2","content","containerClassName","list","titleStyle","react__WEBPACK_IMPORTED_MODULE_2___default","onClick","padding","maxHeight","transition","_BodyText_BodyText__WEBPACK_IMPORTED_MODULE_3__","l","gatsby__WEBPACK_IMPORTED_MODULE_4__","Component","object","trim","s","replace","smallWords","warn","console","redacted","format","titleCase","test","mightBeEmail","match","index","length","search","charAt","toLowerCase","substr","toUpperCase","loadGA","options","i","o","g","r","m","gaAddress","debug","window","document","q","arguments","Date","getElementsByTagName","async","parentNode","insertBefore","log","info","gaCalls","testModeAPI","calls","ga","_len","args","Array","_key","concat","resetCalls","_typeof","obj","Symbol","iterator","constructor","prototype","_objectWithoutProperties","source","excluded","target","sourceKeys","keys","indexOf","_objectWithoutPropertiesLoose","getOwnPropertySymbols","sourceSymbolKeys","propertyIsEnumerable","_defineProperties","descriptor","enumerable","configurable","writable","defineProperty","_getPrototypeOf","setPrototypeOf","getPrototypeOf","__proto__","_setPrototypeOf","_assertThisInitialized","self","ReferenceError","_defineProperty","value","NEWTAB","MIDDLECLICK","OutboundLink_OutboundLink","OutboundLink","_getPrototypeOf2","instance","Constructor","TypeError","_classCallCheck","apply","eventLabel","eventMeta","label","sameTarget","normalClick","ctrlKey","shiftKey","metaKey","button","preventDefault","trackLink","location","protoProps","staticProps","subClass","superClass","create","_inherits","react","ownKeys","filter","sym","getOwnPropertyDescriptor","forEach","_objectSpread","rel","react_default","esm_objectWithoutProperties","esm_objectWithoutPropertiesLoose","esm_defineProperty","esm_typeof","_toConsumableArray","arr","isArray","arr2","_arrayWithoutHoles","iter","toString","from","_iterableToArray","_nonIterableSpread","prop_types_default","func","_debug","_titleCase","_testMode","_alwaysSendToDefaultTracker","esm_internalGa","_window","_format","_gaCommand","trackerNames","command","name","slice","_initialize","gaTrackingID","gaOptions","_len2","_key2","JSON","stringify","send","fieldObject","esm_plugin","require","rawName","execute","pluginName","payload","actionType","undefined","outboundLink","hitCallback","hitType","eventCategory","eventAction","safetyCallbackCalled","t","setTimeout","clearTimeout","origTrackLink","esm_OutboundLink","__webpack_exports__","configsOrTrackingId","testMode","standardImplementation","alwaysSendToDefaultTracker","config","trackingId","set","fieldsObject","pageview","rawPath","extraFields","esm_objectSpread","page","extraLog","modalview","rawModalName","modalName","substring","timing","variable","timingCategory","timingVar","timingValue","timingLabel","_ref2","nonInteraction","transport","eventValue","exception","_ref3","description","fatal","exDescription","exFatal","plugin"],"mappings":"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","file":"6-53a815fc9de9758cd6d9.js","sourcesContent":["import './BodyText.scss';\n\nimport Parser from 'html-react-parser';\nimport PropTypes from 'prop-types';\nimport React from 'react';\n\nexport const BodyText = ({\n text,\n className,\n heading,\n headingFontSize,\n bold,\n centered,\n noPadding,\n headingFont,\n ...props\n}) => {\n const classes = [];\n\n centered && classes.push('centered');\n bold && classes.push('bold');\n noPadding && classes.push('body-text--no-padding');\n headingFont && classes.push('heading-font');\n\n const getHeading = () => {\n if (heading) {\n const Heading = heading.level;\n return (\n \n {heading.title}\n \n );\n } else {\n return null;\n }\n };\n\n return (\n
\n {heading.title && getHeading()}\n {text && typeof text === 'string' ? (\n

{text}

\n ) : (\n text &&\n text.map(p => (\n
\n {Parser(p)}\n
\n ))\n )}\n
\n );\n};\n\nBodyText.defaultProps = {\n heading: { title: '', level: 'h2' },\n text: '',\n className: '',\n centered: false,\n bold: false,\n noPadding: false,\n};\n\nBodyText.propTypes = {\n heading: PropTypes.shape({\n text: PropTypes.string,\n level: PropTypes.string,\n }),\n headingFontSize: PropTypes.string,\n text: PropTypes.oneOfType([PropTypes.string, PropTypes.array]),\n className: PropTypes.string,\n centered: PropTypes.bool,\n bold: PropTypes.bool,\n noPadding: PropTypes.bool,\n};\n","module.exports = [\n 'fullstack',\n 'full stack open 2019',\n 'course',\n 'helsingin yliopisto',\n 'tietojenkäsittelytieteen osasto',\n 'mooc',\n 'mooc.fi',\n 'full stack',\n 'full stack open',\n 'web-sovelluskehitys',\n 'web',\n 'houston',\n 'houston inc',\n 'websovelluskehitys',\n 'web-sovellus',\n 'React',\n 'Redux',\n 'Node.js',\n 'Node',\n 'MongoDB',\n 'GraphQL',\n 'REST',\n 'REST api',\n 'single page -sovellus',\n 'ohjelmointi',\n 'university of helsinki',\n 'department of computer science',\n 'web development',\n 'software development',\n 'web',\n 'web application',\n 'single page app',\n 'programming'\n];\n","import './Footer.scss';\n\nimport Element from '../Element/Element';\nimport { Image } from '../Image/Image';\nimport { Link } from 'gatsby';\nimport React from 'react';\nimport houston from '../../images/company_logos/houston.svg';\nimport { navigation } from '../Navigation/Navigation';\nimport yliopisto from '../../images/company_logos/uoh_centre.svg';\n\nconst images = [\n {\n src: yliopisto,\n alt: 'Helsingin yliopiston logo',\n href: 'https://www.helsinki.fi/',\n },\n {\n src: houston,\n alt: 'Houston inc. logo',\n href: 'https://www.houston-inc.com/',\n },\n];\n\nconst Footer = ({ lang }) => (\n \n \n {images.map(image => (\n \n {image.alt}\n \n ))}\n \n\n \n
\n {navigation[lang].map(item => (\n \n {item.text}\n \n ))}\n
\n \n \n);\n\nexport default Footer;\n","import './SubHeader.scss';\n\nimport PropTypes from 'prop-types';\nimport React from 'react';\n\nexport const SubHeader = ({\n className,\n headingLevel = 'h2',\n headingFontSize,\n text,\n ...props\n}) => {\n const Heading = headingLevel;\n\n return (\n \n {text}\n \n );\n};\n\nSubHeader.propTypes = {\n className: PropTypes.string,\n headingLevel: PropTypes.string,\n text: PropTypes.string.isRequired,\n headingFontSize: PropTypes.string,\n};\n\nSubHeader.defaultProps = {\n className: '',\n};\n","import './Accordion.scss';\n\nimport React, { Component } from 'react';\n\nimport { BodyText } from '../BodyText/BodyText';\nimport { Link } from 'gatsby';\nimport PropTypes from 'prop-types';\nimport ReactGA from 'react-ga';\n\nReactGA.initialize('UA-135975842-1');\n\nclass Accordion extends Component {\n constructor(props) {\n super(props);\n\n this.state = {\n isOpened: false,\n };\n }\n\n componentDidMount() {\n this.props.initiallyOpened && this.setState({ isOpened: true });\n }\n\n handleClick() {\n const { isOpened } = this.state;\n const { title, track } = this.props;\n\n this.setState({ isOpened: !isOpened }, () => {\n track &&\n ReactGA.event({\n category: 'FAQ',\n action: `${title} ${!isOpened ? 'expanded' : 'closed'}`,\n });\n });\n }\n\n render() {\n const {\n title,\n content,\n className,\n containerClassName,\n list,\n titleStyle,\n } = this.props;\n const { isOpened } = this.state;\n\n return (\n \n this.handleClick()}\n >\n {title}\n \n \n {content && (\n \n )}\n {list && (\n
    \n {list.map(l => (\n
  • \n {l.text}\n
  • \n ))}\n
\n )}\n \n \n );\n }\n}\n\nAccordion.propTypes = {\n title: PropTypes.string.isRequired,\n track: PropTypes.bool,\n content: PropTypes.oneOfType([PropTypes.string, PropTypes.array]),\n list: PropTypes.array,\n className: PropTypes.string,\n containerClassName: PropTypes.string,\n initiallyOpened: PropTypes.bool,\n titleStyle: PropTypes.object,\n};\n\nAccordion.defaultProps = {\n className: '',\n track: false,\n containerClassName: '',\n initiallyOpened: false,\n titleStyle: {},\n};\n\nexport default Accordion;\n","// GA strings need to have leading/trailing whitespace trimmed, and not all\n// browsers have String.prototoype.trim().\nexport default function trim(s) {\n return s.replace(/^\\s+|\\s+$/g, '');\n}","/**\n * To Title Case 2.1 - http://individed.com/code/to-title-case/\n * Copyright 2008-2013 David Gouch. Licensed under the MIT License.\n * https://github.com/gouch/to-title-case\n */\nimport trim from './trim';\nvar smallWords = /^(a|an|and|as|at|but|by|en|for|if|in|nor|of|on|or|per|the|to|vs?\\.?|via)$/i;\nexport default function toTitleCase(string) {\n return trim(string).replace(/[A-Za-z0-9\\u00C0-\\u00FF]+[^\\s-]*/g, function (match, index, title) {\n if (index > 0 && index + match.length !== title.length && match.search(smallWords) > -1 && title.charAt(index - 2) !== ':' && (title.charAt(index + match.length) !== '-' || title.charAt(index - 1) === '-') && title.charAt(index - 1).search(/[^\\s-]/) < 0) {\n return match.toLowerCase();\n }\n\n if (match.substr(1).search(/[A-Z]|\\../) > -1) {\n return match;\n }\n\n return match.charAt(0).toUpperCase() + match.substr(1);\n });\n}","export default function warn(s) {\n console.warn('[react-ga]', s);\n}","import mightBeEmail from './mightBeEmail';\nimport toTitleCase from './toTitleCase';\nimport warn from './console/warn';\nvar redacted = 'REDACTED (Potential Email Address)';\nexport default function format(s, titleCase) {\n if (mightBeEmail(s)) {\n warn('This arg looks like an email address, redacting.');\n return redacted;\n }\n\n if (titleCase) {\n return toTitleCase(s);\n }\n\n return s;\n}","// See if s could be an email address. We don't want to send personal data like email.\n// https://support.google.com/analytics/answer/2795983?hl=en\nexport default function mightBeEmail(s) {\n // There's no point trying to validate rfc822 fully, just look for ...@...\n return /[^@]+@[^@]+/.test(s);\n}","export default function (options) {\n var gaAddress = 'https://www.google-analytics.com/analytics.js';\n\n if (options && options.gaAddress) {\n gaAddress = options.gaAddress;\n } else if (options && options.debug) {\n gaAddress = 'https://www.google-analytics.com/analytics_debug.js';\n } // https://developers.google.com/analytics/devguides/collection/analyticsjs/\n\n /* eslint-disable */\n\n\n (function (i, s, o, g, r, a, m) {\n i['GoogleAnalyticsObject'] = r;\n i[r] = i[r] || function () {\n (i[r].q = i[r].q || []).push(arguments);\n }, i[r].l = 1 * new Date();\n a = s.createElement(o), m = s.getElementsByTagName(o)[0];\n a.async = 1;\n a.src = g;\n m.parentNode.insertBefore(a, m);\n })(window, document, 'script', gaAddress, 'ga');\n /* eslint-enable */\n\n}","export default function log(s) {\n console.info('[react-ga]', s);\n}","export var gaCalls = [];\nexport default {\n calls: gaCalls,\n ga: function ga() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n gaCalls.push(args.concat());\n },\n resetCalls: function resetCalls() {\n gaCalls.length = 0;\n }\n};","function _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport warn from '../utils/console/warn';\nvar NEWTAB = '_blank';\nvar MIDDLECLICK = 1;\n\nvar OutboundLink =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(OutboundLink, _Component);\n\n function OutboundLink() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, OutboundLink);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(OutboundLink)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"handleClick\", function (event) {\n var _this$props = _this.props,\n target = _this$props.target,\n eventLabel = _this$props.eventLabel,\n to = _this$props.to,\n onClick = _this$props.onClick;\n var eventMeta = {\n label: eventLabel\n };\n var sameTarget = target !== NEWTAB;\n var normalClick = !(event.ctrlKey || event.shiftKey || event.metaKey || event.button === MIDDLECLICK);\n\n if (sameTarget && normalClick) {\n event.preventDefault();\n OutboundLink.trackLink(eventMeta, function () {\n window.location.href = to;\n });\n } else {\n OutboundLink.trackLink(eventMeta, function () {});\n }\n\n if (onClick) {\n onClick(event);\n }\n });\n\n return _this;\n }\n\n _createClass(OutboundLink, [{\n key: \"render\",\n value: function render() {\n var _this$props2 = this.props,\n href = _this$props2.to,\n oldProps = _objectWithoutProperties(_this$props2, [\"to\"]);\n\n var props = _objectSpread({}, oldProps, {\n href: href,\n onClick: this.handleClick\n });\n\n if (this.props.target === NEWTAB) {\n props.rel = 'noopener noreferrer';\n }\n\n delete props.eventLabel;\n return React.createElement('a', props);\n }\n }]);\n\n return OutboundLink;\n}(Component);\n\n_defineProperty(OutboundLink, \"trackLink\", function () {\n warn('ga tracking not enabled');\n});\n\n_defineProperty(OutboundLink, \"propTypes\", {\n eventLabel: PropTypes.string.isRequired,\n target: PropTypes.string,\n to: PropTypes.string,\n onClick: PropTypes.func\n});\n\n_defineProperty(OutboundLink, \"defaultProps\", {\n target: null,\n to: null,\n onClick: null\n});\n\nexport { OutboundLink as default };","function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance\"); }\n\nfunction _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }\n\n/**\n * React Google Analytics Module\n *\n * @package react-ga\n * @author Adam Lofting \n * Atul Varma \n */\n\n/**\n * Utilities\n */\nimport format from './utils/format';\nimport removeLeadingSlash from './utils/removeLeadingSlash';\nimport trim from './utils/trim';\nimport loadGA from './utils/loadGA';\nimport warn from './utils/console/warn';\nimport log from './utils/console/log';\nimport TestModeAPI from './utils/testModeAPI';\nimport UnboundOutboundLink from './components/OutboundLink';\nvar _debug = false;\nvar _titleCase = true;\nvar _testMode = false;\nvar _alwaysSendToDefaultTracker = true;\n\nvar internalGa = function internalGa() {\n var _window;\n\n if (_testMode) return TestModeAPI.ga.apply(TestModeAPI, arguments);\n if (typeof window === 'undefined') return false;\n if (!window.ga) return warn('ReactGA.initialize must be called first or GoogleAnalytics should be loaded manually');\n return (_window = window).ga.apply(_window, arguments);\n};\n\nfunction _format(s) {\n return format(s, _titleCase);\n}\n\nfunction _gaCommand(trackerNames) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n var command = args[0];\n\n if (typeof internalGa === 'function') {\n if (typeof command !== 'string') {\n warn('ga command must be a string');\n return;\n }\n\n if (_alwaysSendToDefaultTracker || !Array.isArray(trackerNames)) internalGa.apply(void 0, args);\n\n if (Array.isArray(trackerNames)) {\n trackerNames.forEach(function (name) {\n internalGa.apply(void 0, _toConsumableArray([\"\".concat(name, \".\").concat(command)].concat(args.slice(1))));\n });\n }\n }\n}\n\nfunction _initialize(gaTrackingID, options) {\n if (!gaTrackingID) {\n warn('gaTrackingID is required in initialize()');\n return;\n }\n\n if (options) {\n if (options.debug && options.debug === true) {\n _debug = true;\n }\n\n if (options.titleCase === false) {\n _titleCase = false;\n }\n }\n\n if (options && options.gaOptions) {\n internalGa('create', gaTrackingID, options.gaOptions);\n } else {\n internalGa('create', gaTrackingID, 'auto');\n }\n}\n\nexport function initialize(configsOrTrackingId, options) {\n if (options && options.testMode === true) {\n _testMode = true;\n } else {\n if (typeof window === 'undefined') {\n return false;\n }\n\n if (!options || options.standardImplementation !== true) loadGA(options);\n }\n\n _alwaysSendToDefaultTracker = options && typeof options.alwaysSendToDefaultTracker === 'boolean' ? options.alwaysSendToDefaultTracker : true;\n\n if (Array.isArray(configsOrTrackingId)) {\n configsOrTrackingId.forEach(function (config) {\n if (_typeof(config) !== 'object') {\n warn('All configs must be an object');\n return;\n }\n\n _initialize(config.trackingId, config);\n });\n } else {\n _initialize(configsOrTrackingId, options);\n }\n\n return true;\n}\n/**\n * ga:\n * Returns the original GA object.\n */\n\nexport function ga() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n if (args.length > 0) {\n internalGa.apply(void 0, args);\n\n if (_debug) {\n log('called ga(\\'arguments\\');');\n log(\"with arguments: \".concat(JSON.stringify(args)));\n }\n }\n\n return window.ga;\n}\n/**\n * set:\n * GA tracker set method\n * @param {Object} fieldsObject - a field/value pair or a group of field/value pairs on the tracker\n * @param {Array} trackerNames - (optional) a list of extra trackers to run the command on\n */\n\nexport function set(fieldsObject, trackerNames) {\n if (!fieldsObject) {\n warn('`fieldsObject` is required in .set()');\n return;\n }\n\n if (_typeof(fieldsObject) !== 'object') {\n warn('Expected `fieldsObject` arg to be an Object');\n return;\n }\n\n if (Object.keys(fieldsObject).length === 0) {\n warn('empty `fieldsObject` given to .set()');\n }\n\n _gaCommand(trackerNames, 'set', fieldsObject);\n\n if (_debug) {\n log('called ga(\\'set\\', fieldsObject);');\n log(\"with fieldsObject: \".concat(JSON.stringify(fieldsObject)));\n }\n}\n/**\n * send:\n * Clone of the low level `ga.send` method\n * WARNING: No validations will be applied to this\n * @param {Object} fieldObject - field object for tracking different analytics\n * @param {Array} trackerNames - trackers to send the command to\n * @param {Array} trackerNames - (optional) a list of extra trackers to run the command on\n */\n\nexport function send(fieldObject, trackerNames) {\n _gaCommand(trackerNames, 'send', fieldObject);\n\n if (_debug) {\n log('called ga(\\'send\\', fieldObject);');\n log(\"with fieldObject: \".concat(JSON.stringify(fieldObject)));\n log(\"with trackers: \".concat(JSON.stringify(trackerNames)));\n }\n}\n/**\n * pageview:\n * Basic GA pageview tracking\n * @param {String} path - the current page page e.g. '/about'\n * @param {Array} trackerNames - (optional) a list of extra trackers to run the command on\n * @param {String} title - (optional) the page title e. g. 'My Website'\n */\n\nexport function pageview(rawPath, trackerNames, title) {\n if (!rawPath) {\n warn('path is required in .pageview()');\n return;\n }\n\n var path = trim(rawPath);\n\n if (path === '') {\n warn('path cannot be an empty string in .pageview()');\n return;\n }\n\n var extraFields = {};\n\n if (title) {\n extraFields.title = title;\n }\n\n if (typeof ga === 'function') {\n _gaCommand(trackerNames, 'send', _objectSpread({\n hitType: 'pageview',\n page: path\n }, extraFields));\n\n if (_debug) {\n log('called ga(\\'send\\', \\'pageview\\', path);');\n var extraLog = '';\n\n if (title) {\n extraLog = \" and title: \".concat(title);\n }\n\n log(\"with path: \".concat(path).concat(extraLog));\n }\n }\n}\n/**\n * modalview:\n * a proxy to basic GA pageview tracking to consistently track\n * modal views that are an equivalent UX to a traditional pageview\n * @param {String} modalName e.g. 'add-or-edit-club'\n * @param {Array} trackerNames - (optional) a list of extra trackers to run the command on\n */\n\nexport function modalview(rawModalName, trackerNames) {\n if (!rawModalName) {\n warn('modalName is required in .modalview(modalName)');\n return;\n }\n\n var modalName = removeLeadingSlash(trim(rawModalName));\n\n if (modalName === '') {\n warn('modalName cannot be an empty string or a single / in .modalview()');\n return;\n }\n\n if (typeof ga === 'function') {\n var path = \"/modal/\".concat(modalName);\n\n _gaCommand(trackerNames, 'send', 'pageview', path);\n\n if (_debug) {\n log('called ga(\\'send\\', \\'pageview\\', path);');\n log(\"with path: \".concat(path));\n }\n }\n}\n/**\n * timing:\n * GA timing\n * @param args.category {String} required\n * @param args.variable {String} required\n * @param args.value {Int} required\n * @param args.label {String} required\n * @param {Array} trackerNames - (optional) a list of extra trackers to run the command on\n */\n\nexport function timing() {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n category = _ref.category,\n variable = _ref.variable,\n value = _ref.value,\n label = _ref.label;\n\n var trackerNames = arguments.length > 1 ? arguments[1] : undefined;\n\n if (typeof ga === 'function') {\n if (!category || !variable || !value || typeof value !== 'number') {\n warn('args.category, args.variable ' + 'AND args.value are required in timing() ' + 'AND args.value has to be a number');\n return;\n } // Required Fields\n\n\n var fieldObject = {\n hitType: 'timing',\n timingCategory: _format(category),\n timingVar: _format(variable),\n timingValue: value\n };\n\n if (label) {\n fieldObject.timingLabel = _format(label);\n }\n\n send(fieldObject, trackerNames);\n }\n}\n/**\n * event:\n * GA event tracking\n * @param args.category {String} required\n * @param args.action {String} required\n * @param args.label {String} optional\n * @param args.value {Int} optional\n * @param args.nonInteraction {boolean} optional\n * @param args.transport {string} optional\n * @param {Array} trackerNames - (optional) a list of extra trackers to run the command on\n */\n\nexport function event() {\n var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n category = _ref2.category,\n action = _ref2.action,\n label = _ref2.label,\n value = _ref2.value,\n nonInteraction = _ref2.nonInteraction,\n transport = _ref2.transport,\n args = _objectWithoutProperties(_ref2, [\"category\", \"action\", \"label\", \"value\", \"nonInteraction\", \"transport\"]);\n\n var trackerNames = arguments.length > 1 ? arguments[1] : undefined;\n\n if (typeof ga === 'function') {\n // Simple Validation\n if (!category || !action) {\n warn('args.category AND args.action are required in event()');\n return;\n } // Required Fields\n\n\n var fieldObject = {\n hitType: 'event',\n eventCategory: _format(category),\n eventAction: _format(action)\n }; // Optional Fields\n\n if (label) {\n fieldObject.eventLabel = _format(label);\n }\n\n if (typeof value !== 'undefined') {\n if (typeof value !== 'number') {\n warn('Expected `args.value` arg to be a Number.');\n } else {\n fieldObject.eventValue = value;\n }\n }\n\n if (typeof nonInteraction !== 'undefined') {\n if (typeof nonInteraction !== 'boolean') {\n warn('`args.nonInteraction` must be a boolean.');\n } else {\n fieldObject.nonInteraction = nonInteraction;\n }\n }\n\n if (typeof transport !== 'undefined') {\n if (typeof transport !== 'string') {\n warn('`args.transport` must be a string.');\n } else {\n if (['beacon', 'xhr', 'image'].indexOf(transport) === -1) {\n warn('`args.transport` must be either one of these values: `beacon`, `xhr` or `image`');\n }\n\n fieldObject.transport = transport;\n }\n }\n\n Object.keys(args).filter(function (key) {\n return key.substr(0, 'dimension'.length) === 'dimension';\n }).forEach(function (key) {\n fieldObject[key] = args[key];\n });\n Object.keys(args).filter(function (key) {\n return key.substr(0, 'metric'.length) === 'metric';\n }).forEach(function (key) {\n fieldObject[key] = args[key];\n }); // Send to GA\n\n send(fieldObject, trackerNames);\n }\n}\n/**\n * exception:\n * GA exception tracking\n * @param args.description {String} optional\n * @param args.fatal {boolean} optional\n * @param {Array} trackerNames - (optional) a list of extra trackers to run the command on\n */\n\nexport function exception(_ref3, trackerNames) {\n var description = _ref3.description,\n fatal = _ref3.fatal;\n\n if (typeof ga === 'function') {\n // Required Fields\n var fieldObject = {\n hitType: 'exception'\n }; // Optional Fields\n\n if (description) {\n fieldObject.exDescription = _format(description);\n }\n\n if (typeof fatal !== 'undefined') {\n if (typeof fatal !== 'boolean') {\n warn('`args.fatal` must be a boolean.');\n } else {\n fieldObject.exFatal = fatal;\n }\n } // Send to GA\n\n\n send(fieldObject, trackerNames);\n }\n}\nexport var plugin = {\n /**\n * require:\n * GA requires a plugin\n * @param name {String} e.g. 'ecommerce' or 'myplugin'\n * @param options {Object} optional e.g {path: '/log', debug: true}\n */\n require: function require(rawName, options) {\n if (typeof ga === 'function') {\n // Required Fields\n if (!rawName) {\n warn('`name` is required in .require()');\n return;\n }\n\n var name = trim(rawName);\n\n if (name === '') {\n warn('`name` cannot be an empty string in .require()');\n return;\n } // Optional Fields\n\n\n if (options) {\n if (_typeof(options) !== 'object') {\n warn('Expected `options` arg to be an Object');\n return;\n }\n\n if (Object.keys(options).length === 0) {\n warn('Empty `options` given to .require()');\n }\n\n ga('require', name, options);\n\n if (_debug) {\n log(\"called ga('require', '\".concat(name, \"', \").concat(JSON.stringify(options)));\n }\n } else {\n ga('require', name);\n\n if (_debug) {\n log(\"called ga('require', '\".concat(name, \"');\"));\n }\n }\n }\n },\n\n /**\n * execute:\n * GA execute action for plugin\n * Takes variable number of arguments\n * @param pluginName {String} e.g. 'ecommerce' or 'myplugin'\n * @param action {String} e.g. 'addItem' or 'myCustomAction'\n * @param actionType {String} optional e.g. 'detail'\n * @param payload {Object} optional e.g { id: '1x5e', name : 'My product to track' }\n */\n execute: function execute(pluginName, action) {\n var payload;\n var actionType;\n\n if ((arguments.length <= 2 ? 0 : arguments.length - 2) === 1) {\n payload = arguments.length <= 2 ? undefined : arguments[2];\n } else {\n actionType = arguments.length <= 2 ? undefined : arguments[2];\n payload = arguments.length <= 3 ? undefined : arguments[3];\n }\n\n if (typeof ga === 'function') {\n if (typeof pluginName !== 'string') {\n warn('Expected `pluginName` arg to be a String.');\n } else if (typeof action !== 'string') {\n warn('Expected `action` arg to be a String.');\n } else {\n var command = \"\".concat(pluginName, \":\").concat(action);\n payload = payload || null;\n\n if (actionType && payload) {\n ga(command, actionType, payload);\n\n if (_debug) {\n log(\"called ga('\".concat(command, \"');\"));\n log(\"actionType: \\\"\".concat(actionType, \"\\\" with payload: \").concat(JSON.stringify(payload)));\n }\n } else if (payload) {\n ga(command, payload);\n\n if (_debug) {\n log(\"called ga('\".concat(command, \"');\"));\n log(\"with payload: \".concat(JSON.stringify(payload)));\n }\n } else {\n ga(command);\n\n if (_debug) {\n log(\"called ga('\".concat(command, \"');\"));\n }\n }\n }\n }\n }\n};\n/**\n * outboundLink:\n * GA outboundLink tracking\n * @param args.label {String} e.g. url, or 'Create an Account'\n * @param {function} hitCallback - Called after processing a hit.\n */\n\nexport function outboundLink(args, hitCallback, trackerNames) {\n if (typeof hitCallback !== 'function') {\n warn('hitCallback function is required');\n return;\n }\n\n if (typeof ga === 'function') {\n // Simple Validation\n if (!args || !args.label) {\n warn('args.label is required in outboundLink()');\n return;\n } // Required Fields\n\n\n var fieldObject = {\n hitType: 'event',\n eventCategory: 'Outbound',\n eventAction: 'Click',\n eventLabel: _format(args.label)\n };\n var safetyCallbackCalled = false;\n\n var safetyCallback = function safetyCallback() {\n // This prevents a delayed response from GA\n // causing hitCallback from being fired twice\n safetyCallbackCalled = true;\n hitCallback();\n }; // Using a timeout to ensure the execution of critical application code\n // in the case when the GA server might be down\n // or an ad blocker prevents sending the data\n // register safety net timeout:\n\n\n var t = setTimeout(safetyCallback, 250);\n\n var clearableCallbackForGA = function clearableCallbackForGA() {\n clearTimeout(t);\n\n if (!safetyCallbackCalled) {\n hitCallback();\n }\n };\n\n fieldObject.hitCallback = clearableCallbackForGA; // Send to GA\n\n send(fieldObject, trackerNames);\n } else {\n // if ga is not defined, return the callback so the application\n // continues to work as expected\n setTimeout(hitCallback, 0);\n }\n}\nUnboundOutboundLink.origTrackLink = UnboundOutboundLink.trackLink;\nUnboundOutboundLink.trackLink = outboundLink;\nexport var OutboundLink = UnboundOutboundLink;\nexport var testModeAPI = TestModeAPI;\nexport default {\n initialize: initialize,\n ga: ga,\n set: set,\n send: send,\n pageview: pageview,\n modalview: modalview,\n timing: timing,\n event: event,\n exception: exception,\n plugin: plugin,\n outboundLink: outboundLink,\n OutboundLink: OutboundLink,\n testModeAPI: TestModeAPI\n};","export default function removeLeadingSlash(string) {\n if (string.substring(0, 1) === '/') {\n return string.substring(1);\n }\n\n return string;\n}"],"sourceRoot":""} \ No newline at end of file diff --git a/6-65df467710836b21d57b.js b/6-65df467710836b21d57b.js new file mode 100644 index 000000000..54485f400 --- /dev/null +++ b/6-65df467710836b21d57b.js @@ -0,0 +1,2 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[6],{151:function(e,t,n){"use strict";n.d(t,"a",function(){return f});n(28),n(245);var a=n(148),i=n.n(a),o=(n(224),n(247)),r=n.n(o),s=n(4),l=n.n(s),c=n(0),u=n.n(c),f=function(e){var t=e.text,n=e.className,a=e.heading,o=e.headingFontSize,s=e.bold,l=e.centered,c=e.noPadding,f=e.headingFont,p=i()(e,["text","className","heading","headingFontSize","bold","centered","noPadding","headingFont"]),h=[];l&&h.push("centered"),s&&h.push("bold"),c&&h.push("body-text--no-padding"),f&&h.push("heading-font");return u.a.createElement("div",Object.assign({className:"body-text "+n},p),a.title&&function(){if(a){var e=a.level;return u.a.createElement(e,{className:"body-text__title",style:o?{fontSize:o}:{}},a.title)}return null}(),t&&"string"==typeof t?u.a.createElement("p",{className:"body-text__content "+h.join(" ")},t):t&&t.map(function(e){return u.a.createElement("div",{key:e,className:"body-text__content "+h.join(" ")},r()(e))}))};f.defaultProps={heading:{title:"",level:"h2"},text:"",className:"",centered:!1,bold:!1,noPadding:!1},f.propTypes={heading:l.a.shape({text:l.a.string,level:l.a.string}),headingFontSize:l.a.string,text:l.a.oneOfType([l.a.string,l.a.array]),className:l.a.string,centered:l.a.bool,bold:l.a.bool,noPadding:l.a.bool}},157:function(e,t){e.exports=["fullstack","full stack open 2019","course","helsingin yliopisto","tietojenkäsittelytieteen osasto","mooc","mooc.fi","full stack","full stack open","web-sovelluskehitys","web","houston","houston inc","websovelluskehitys","web-sovellus","React","Redux","Node.js","Node","MongoDB","GraphQL","REST","REST api","single page -sovellus","ohjelmointi","university of helsinki","department of computer science","web development","software development","web","web application","single page app","programming"]},159:function(e,t,n){"use strict";n(163);var a=n(147),i=n(149),o=n(146),r=n(0),s=n.n(r),l=n(155),c=n.n(l),u=n(220),f=n(152),p=[{src:n.n(f).a,alt:"Helsingin yliopiston logo",href:"https://www.helsinki.fi/"},{src:c.a,alt:"Houston inc. logo",href:"https://www.houston-inc.com/"}];t.a=function(e){var t=e.lang;return s.a.createElement(a.a,{id:"footer",className:"container spacing--after-small spacing--mobile",flex:!0},s.a.createElement(a.a,{className:"col-5 push-right-3 col-10--mobile order-2--mobile order-2--tablet footer__links",flex:!0,spaceBetween:!0},p.map(function(e){return s.a.createElement("a",{key:e.alt,href:e.href,className:"col-5 col-4--mobile spacing--mobile"},s.a.createElement(i.a,{contain:!0,src:e.src,alt:e.alt,className:"col-6"}))})),s.a.createElement(a.a,{flex:!0,className:"col-5 col-5--mobile order-1--mobile order-1--tablet footer__navigation"},s.a.createElement("div",{className:"footer__navigation-link-container"},u.b[t].map(function(e){return s.a.createElement(o.Link,{key:e.path,to:e.path,className:"footer__navigation-link nav-item-hover",style:{marginLeft:"4.5rem"}},e.text)}))))}},163:function(e,t,n){},224:function(e,t,n){},227:function(e,t,n){"use strict";n.d(t,"a",function(){return c});n(28);var a=n(148),i=n.n(a),o=(n(242),n(4)),r=n.n(o),s=n(0),l=n.n(s),c=function(e){var t=e.className,n=e.headingLevel,a=void 0===n?"h2":n,o=e.headingFontSize,r=e.text,s=i()(e,["className","headingLevel","headingFontSize","text"]),c=a;return l.a.createElement(c,Object.assign({className:"sub-header "+t,style:o?{fontSize:o}:{}},s),r)};c.propTypes={className:r.a.string,headingLevel:r.a.string,text:r.a.string.isRequired,headingFontSize:r.a.string},c.defaultProps={className:""}},242:function(e,t,n){},324:function(e,t,n){"use strict";var a=n(6),i=n.n(a),o=(n(363),n(0)),r=n.n(o),s=n(151),l=n(146),c=n(4),u=n.n(c),f=n(401);f.a.initialize("UA-135975842-1");var p=function(e){function t(t){var n;return(n=e.call(this,t)||this).state={isOpened:!1},n}i()(t,e);var n=t.prototype;return n.componentDidMount=function(){this.props.initiallyOpened&&this.setState({isOpened:!0})},n.handleClick=function(){var e=this.state.isOpened,t=this.props,n=t.title,a=t.track;this.setState({isOpened:!e},function(){a&&f.a.event({category:"FAQ",action:n+" "+(e?"closed":"expanded")})})},n.render=function(){var e=this,t=this.props,n=t.title,a=t.content,i=t.className,o=t.containerClassName,c=t.list,u=t.titleStyle,f=this.state.isOpened;return r.a.createElement("div",{className:"accordion__container col-8 push-right-1 "+o},r.a.createElement("button",{className:"accordion accordion__title "+(f?"active":"")+" "+i,style:u,onClick:function(){return e.handleClick()}},n),r.a.createElement("div",{className:"panel",style:{padding:f?"2rem 18px":"",maxHeight:""+(f?"unset":0),transition:"max-height 0.2s ease-out"}},a&&r.a.createElement(s.a,{className:"col-8 push-right-1",text:a}),c&&r.a.createElement("ul",null,c.map(function(e){return r.a.createElement("li",{key:e.text},r.a.createElement(l.Link,{to:e.href},e.text))}))))},t}(o.Component);p.propTypes={title:u.a.string.isRequired,track:u.a.bool,content:u.a.oneOfType([u.a.string,u.a.array]),list:u.a.array,className:u.a.string,containerClassName:u.a.string,initiallyOpened:u.a.bool,titleStyle:u.a.object},p.defaultProps={className:"",track:!1,containerClassName:"",initiallyOpened:!1,titleStyle:{}},t.a=p},363:function(e,t,n){},401:function(e,t,n){"use strict";function a(e){return e.replace(/^\s+|\s+$/g,"")}var i=/^(a|an|and|as|at|but|by|en|for|if|in|nor|of|on|or|per|the|to|vs?\.?|via)$/i;function o(e){console.warn("[react-ga]",e)}var r="REDACTED (Potential Email Address)";function s(e,t){return function(e){return/[^@]+@[^@]+/.test(e)}(e)?(o("This arg looks like an email address, redacting."),r):t?a(e).replace(/[A-Za-z0-9\u00C0-\u00FF]+[^\s-]*/g,function(e,t,n){return t>0&&t+e.length!==n.length&&e.search(i)>-1&&":"!==n.charAt(t-2)&&("-"!==n.charAt(t+e.length)||"-"===n.charAt(t-1))&&n.charAt(t-1).search(/[^\s-]/)<0?e.toLowerCase():e.substr(1).search(/[A-Z]|\../)>-1?e:e.charAt(0).toUpperCase()+e.substr(1)}):e}var l=function(e){var t,n,a,i,o,r,s,l="https://www.google-analytics.com/analytics.js";e&&e.gaAddress?l=e.gaAddress:e&&e.debug&&(l="https://www.google-analytics.com/analytics_debug.js"),t=window,n=document,a="script",i=l,o="ga",t.GoogleAnalyticsObject=o,t.ga=t.ga||function(){(t.ga.q=t.ga.q||[]).push(arguments)},t.ga.l=1*new Date,r=n.createElement(a),s=n.getElementsByTagName(a)[0],r.async=1,r.src=i,s.parentNode.insertBefore(r,s)};function c(e){console.info("[react-ga]",e)}var u=[],f={calls:u,ga:function(){for(var e=arguments.length,t=new Array(e),n=0;n=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}function b(e,t){for(var n=0;n=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}function N(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function T(e){return(T="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function _(e){return function(e){if(Array.isArray(e)){for(var t=0,n=new Array(e.length);t1?t-1:0),a=1;a0&&(L.apply(void 0,t),A&&(c("called ga('arguments');"),c("with arguments: ".concat(JSON.stringify(t))))),window.ga}function J(e,t){q(t,"send",e),A&&(c("called ga('send', fieldObject);"),c("with fieldObject: ".concat(JSON.stringify(e))),c("with trackers: ".concat(JSON.stringify(t))))}var R={require:function(e,t){if(e){var n=a(e);if(""!==n)if(t){if("object"!==T(t))return void o("Expected `options` arg to be an Object");0===Object.keys(t).length&&o("Empty `options` given to .require()"),z("require",n,t),A&&c("called ga('require', '".concat(n,"', ").concat(JSON.stringify(t)))}else z("require",n),A&&c("called ga('require', '".concat(n,"');"));else o("`name` cannot be an empty string in .require()")}else o("`name` is required in .require()")},execute:function(e,t){var n,a;if(1==(arguments.length<=2?0:arguments.length-2)?n=arguments.length<=2?void 0:arguments[2]:(a=arguments.length<=2?void 0:arguments[2],n=arguments.length<=3?void 0:arguments[3]),"string"!=typeof e)o("Expected `pluginName` arg to be a String.");else if("string"!=typeof t)o("Expected `action` arg to be a String.");else{var i="".concat(e,":").concat(t);n=n||null,a&&n?(z(i,a,n),A&&(c("called ga('".concat(i,"');")),c('actionType: "'.concat(a,'" with payload: ').concat(JSON.stringify(n))))):n?(z(i,n),A&&(c("called ga('".concat(i,"');")),c("with payload: ".concat(JSON.stringify(n))))):(z(i),A&&c("called ga('".concat(i,"');")))}}};function K(e,t,n){if("function"==typeof t)if(e&&e.label){var a={hitType:"event",eventCategory:"Outbound",eventAction:"Click",eventLabel:I(e.label)},i=!1,r=setTimeout(function(){i=!0,t()},250);a.hitCallback=function(){clearTimeout(r),i||t()},J(a,n)}else o("args.label is required in outboundLink()");else o("hitCallback function is required")}S.origTrackLink=S.trackLink,S.trackLink=K;var M=S;t.a={initialize:function(e,t){if(t&&!0===t.testMode)P=!0;else{if("undefined"==typeof window)return!1;t&&!0===t.standardImplementation||l(t)}return F=!t||"boolean"!=typeof t.alwaysSendToDefaultTracker||t.alwaysSendToDefaultTracker,Array.isArray(e)?e.forEach(function(e){"object"===T(e)?D(e.trackingId,e):o("All configs must be an object")}):D(e,t),!0},ga:z,set:function(e,t){e?"object"===T(e)?(0===Object.keys(e).length&&o("empty `fieldsObject` given to .set()"),q(t,"set",e),A&&(c("called ga('set', fieldsObject);"),c("with fieldsObject: ".concat(JSON.stringify(e))))):o("Expected `fieldsObject` arg to be an Object"):o("`fieldsObject` is required in .set()")},send:J,pageview:function(e,t,n){if(e){var i=a(e);if(""!==i){var r={};if(n&&(r.title=n),q(t,"send",function(e){for(var t=1;t0&&void 0!==arguments[0]?arguments[0]:{},t=e.category,n=e.variable,a=e.value,i=e.label,r=arguments.length>1?arguments[1]:void 0;if(t&&n&&a&&"number"==typeof a){var s={hitType:"timing",timingCategory:I(t),timingVar:I(n),timingValue:a};i&&(s.timingLabel=I(i)),J(s,r)}else o("args.category, args.variable AND args.value are required in timing() AND args.value has to be a number")},event:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.category,n=e.action,a=e.label,i=e.value,r=e.nonInteraction,s=e.transport,l=E(e,["category","action","label","value","nonInteraction","transport"]),c=arguments.length>1?arguments[1]:void 0;if(t&&n){var u={hitType:"event",eventCategory:I(t),eventAction:I(n)};a&&(u.eventLabel=I(a)),void 0!==i&&("number"!=typeof i?o("Expected `args.value` arg to be a Number."):u.eventValue=i),void 0!==r&&("boolean"!=typeof r?o("`args.nonInteraction` must be a boolean."):u.nonInteraction=r),void 0!==s&&("string"!=typeof s?o("`args.transport` must be a string."):(-1===["beacon","xhr","image"].indexOf(s)&&o("`args.transport` must be either one of these values: `beacon`, `xhr` or `image`"),u.transport=s)),Object.keys(l).filter(function(e){return"dimension"===e.substr(0,"dimension".length)}).forEach(function(e){u[e]=l[e]}),Object.keys(l).filter(function(e){return"metric"===e.substr(0,"metric".length)}).forEach(function(e){u[e]=l[e]}),J(u,c)}else o("args.category AND args.action are required in event()")},exception:function(e,t){var n=e.description,a=e.fatal,i={hitType:"exception"};n&&(i.exDescription=I(n)),void 0!==a&&("boolean"!=typeof a?o("`args.fatal` must be a boolean."):i.exFatal=a),J(i,t)},plugin:R,outboundLink:K,OutboundLink:M,testModeAPI:f}},452:function(e){e.exports={fi:[{title:"Ilmestyykö kurssista uusi versio 2020?",text:["Kyllä, uusi versio ilmestyy 15.3.2020. Uuden version osat 0-4 eivät poikkea radikaalisti vuoden 2019 versiosta. Osissa 5-8 on jonkun verran muutoksia.

Päivitetyn materiaalin osat 0-7 ovat jo nähtävillä täällä.

Kurssin on myös tulossa uusi Typescriptiä käsittelevä osa.

Vuoden 2019 versiota voi laajentaa 2020 versiossa tämän ohjeen mukaisesti."]},{title:"Miten kurssille ilmoittaudutaan?",text:["Kurssille ei tarvitse varsinaisesti ilmoittautua ennen kuin haluat tehdä kurssin kokeen. Koe tehdään Avoimen yliopiston Moodle-järjestelmään. Katso lisää täältä."]},{title:"Mikä on kurssin laajuus?",text:["Kurssin laajuus on riippuen tekemiesi tehtävien määrästä 3-8 opintopistettä. Suoritettuasi kurssin voit jatkaa aihepiiriin syventymistä 1-10 opintopisteen laajuisen Full stack -harjoitustyön parissa."]},{title:"Milloin on tehtävien ja kokeen deadline?",text:["Etenemisnopeus on vapaa, kurssilla on ainoastaan yksi deadline sekä tehtäville että kokeelle, 10.1.2020 klo 23.59.59. Kannattaa kuitenkin huomata, että kurssille on ilmoittauduttava viimeistään deadlinea edeltävänä päivänä 9.1.2020."]},{title:"Miten tehtävät palautetaan?",text:["Tehtävät palautetaan GitHubin kautta ja merkitsemällä tehdyt tehtävät palautussovellukseen, lue lisää täältä."]},{title:"Pitääkö jokainen osa palauttaa omaan repositorioon?",text:["Ei. Voit käyttää yhtä tai useampaa repositoriota, tärkeintä on, että asiat repositorion sisällä ovat selkeästi nimettyjä."]},{title:"Voinko muokata tekemääni palautusta?",text:["Et. Kaikki osan tehtävät on palautettava kerralla. Jos merkkasit tehtäviä vahingossa väärin tai typotit repositorion nimen, lähetä mailia osoitteeseen matti.luukkainen@helsinki.fi"]},{title:"Milloin ja miten saan kurssilta suoritusmerkinnän?",text:["Saat suoritusmerkinnän sen jälkeen kun olet tehnyt hyväksyttävään suoritukseen oikeuttavan määrän tehtäviä, suorittanut kokeen hyväksytysti ja ilmoittanut palautussovelluksessa olevasi valmis kurssin suorituksen kanssa. Viimeinen mahdollinen suorituspäivä on 10.1.2020. Lue lisää täältä."]},{title:"Voinko laajentaa aiempaa kurssisuoritustani?",text:["Voit, lue lisää täältä"]},{title:"Suoritin kurssin viime vuonna. Miten opin käyttämään React hookeja?",text:["State hookia, eli tapaa määritellä tila funktionaalisille komponenteille käsitellään osassa 1. Lifecycle-metodien roolia hoitavia effect hookeja käsitellään osassa 2. Custom hookeista puhutaan osassa 5"]},{title:"Kuulin että suorittamalla kurssin on mahdollista päästä työhaastatteluun",text:["Pitää paikkansa, jos suoritat täydellä laajuudella kurssin ja siihen liittyvän 10 op:n laajuisen harjoitustyön, pääset yhteistyökumppaniemme työhaastatteluun, lue lisää täältä."]}],en:[{title:"Will there be a new course 2020?",text:["Yes, the new version of the course will start 15.3.2020.

There won't be major changes in the course content. The gereatest change shall be in part 5, where integration testing of frontend will be replaced by E2E testing using Cypres.io.

There will also be an entirely new part about Typescript.

The 2019 version can be expanded in the 2020 version, see more here. "]},{title:"How do I sign up for the course?",text:["You don't have to sign up until you want to do the course exam. The exam is done to the Moodle-system of the Open University. You can find more information here. Please note that only persons with Finnish social security number can get take part to exam and get official ECTS credits. For the course certificate signup or Finnish social security number are not needed."]},{title:"How many credits is the course?",text:["The course is 3-8 ECTS credits depending on the amount of returned exercises. After completing the course you can continue to deepen your knowledge on the subject matter by doing the 1-10 ETCS credit Full Stack project. Please note that only persons with Finnish social security number can get official ECTS credits. For the course certificate signup or Finnish social security number are not needed."]},{title:"When is the deadline for the exercises and the exam?",text:["You can complete the course at your own pace. The course has only one deadline for the exercises and the exams 10th January 2020 at 23.59.59. Do keep in mind that you have to sign up for the exam no later than the day before the deadline 9.1.2020."]},{title:"How do I submit the exercises?",text:["The exercises are submitted to GitHub, and by marking the exercises as done in the exercise submission system. You can read more from here. "]},{title:"Do I have to submit each part to a separate repository?",text:["No. You can use one or more repositories, most important is to name everything in a repository clearly. "]},{title:"Can I edit a submission?",text:["No. All exercises for a part must be submitted at the same time. If you marked exercises wrong by accident, or wrote the repository name wrong, send an e-mail to matti.luukkainen@helsinki.fi."]},{title:"When and how can I get my credits?",text:["You can get your credits after submitting enough exercises for passing the course, passing the course exam and letting us know through the exercise submission system that you are ready with the course. The deadline is 10th January 2020. Read more here. Please note that only persons with Finnish social security number can get official ECTS credits. For the course certificate signup or Finnish social security number are not needed."]},{title:"Do I get a certificate after completing the course?",text:["Yes, certificate is available to all who pass the course by 10th January 2020. You can download the certificate after completing the course from the exercise submission system. For the course certificate signup to Open university and Finnish social security number are not needed."]},{title:"Do I need a Finnish social security number to get the course certificate?",text:["For the course certificate Finnish social security number is not needed. You can download the certificate after completing the course from the exercise submission system."]},{title:"Should I signup to Open University to get the course certificate?",text:["For the course certificate signup to Open University is not needed. You can download the certificate after completing the course from the exercise submission system."]},{title:"I heard that I could get a job interview by completing the course.",text:["That's right. If you complete the course with full credits, and complete the practical work with 10 credits, you get a job interview with our partners. Read more here. Please note that only persons with Finnish social security number can get take part to exam and get official ECTS credits."]}]}}}]); +//# sourceMappingURL=6-65df467710836b21d57b.js.map \ No newline at end of file diff --git a/6-65df467710836b21d57b.js.map b/6-65df467710836b21d57b.js.map new file mode 100644 index 000000000..1ed17a1d9 --- /dev/null +++ b/6-65df467710836b21d57b.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///./src/components/BodyText/BodyText.js","webpack:///./src/content/seo/mainSEOtags.js","webpack:///./src/components/Footer/Footer.js","webpack:///./src/components/SubHeader/SubHeader.js","webpack:///./src/components/Accordion/Accordion.js","webpack:///./node_modules/react-ga/dist/esm/utils/trim.js","webpack:///./node_modules/react-ga/dist/esm/utils/toTitleCase.js","webpack:///./node_modules/react-ga/dist/esm/utils/console/warn.js","webpack:///./node_modules/react-ga/dist/esm/utils/format.js","webpack:///./node_modules/react-ga/dist/esm/utils/mightBeEmail.js","webpack:///./node_modules/react-ga/dist/esm/utils/loadGA.js","webpack:///./node_modules/react-ga/dist/esm/utils/console/log.js","webpack:///./node_modules/react-ga/dist/esm/utils/testModeAPI.js","webpack:///./node_modules/react-ga/dist/esm/components/OutboundLink.js","webpack:///./node_modules/react-ga/dist/esm/index.js","webpack:///./node_modules/react-ga/dist/esm/utils/removeLeadingSlash.js"],"names":["BodyText","_ref","text","className","heading","headingFontSize","bold","centered","noPadding","headingFont","props","_babel_runtime_helpers_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_2___default","classes","push","react__WEBPACK_IMPORTED_MODULE_6___default","a","createElement","Object","assign","title","Heading","level","style","fontSize","getHeading","join","map","p","key","Parser","defaultProps","propTypes","PropTypes","shape","string","oneOfType","array","bool","module","exports","__webpack_require__","_Element_Element__WEBPACK_IMPORTED_MODULE_1__","_Image_Image__WEBPACK_IMPORTED_MODULE_2__","gatsby__WEBPACK_IMPORTED_MODULE_3__","react__WEBPACK_IMPORTED_MODULE_4__","react__WEBPACK_IMPORTED_MODULE_4___default","n","_images_company_logos_houston_svg__WEBPACK_IMPORTED_MODULE_5__","_images_company_logos_houston_svg__WEBPACK_IMPORTED_MODULE_5___default","_Navigation_Navigation__WEBPACK_IMPORTED_MODULE_6__","_images_company_logos_uoh_centre_svg__WEBPACK_IMPORTED_MODULE_7__","images","src","yliopisto","alt","href","houston","Footer","lang","id","flex","spaceBetween","image","contain","navigation","item","path","to","marginLeft","SubHeader","_ref$headingLevel","headingLevel","_babel_runtime_helpers_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_1___default","isRequired","ReactGA","initialize","Accordion","_this","_Component","call","this","state","isOpened","componentDidMount","initiallyOpened","setState","handleClick","_this$props","track","event","category","action","render","_this2","_this$props2","content","containerClassName","list","titleStyle","react__WEBPACK_IMPORTED_MODULE_2___default","onClick","padding","maxHeight","transition","_BodyText_BodyText__WEBPACK_IMPORTED_MODULE_3__","l","gatsby__WEBPACK_IMPORTED_MODULE_4__","Component","object","trim","s","replace","smallWords","warn","console","redacted","format","titleCase","test","mightBeEmail","match","index","length","search","charAt","toLowerCase","substr","toUpperCase","loadGA","options","i","o","g","r","m","gaAddress","debug","window","document","q","arguments","Date","getElementsByTagName","async","parentNode","insertBefore","log","info","gaCalls","testModeAPI","calls","ga","_len","args","Array","_key","concat","resetCalls","_typeof","obj","Symbol","iterator","constructor","prototype","_objectWithoutProperties","source","excluded","target","sourceKeys","keys","indexOf","_objectWithoutPropertiesLoose","getOwnPropertySymbols","sourceSymbolKeys","propertyIsEnumerable","_defineProperties","descriptor","enumerable","configurable","writable","defineProperty","_getPrototypeOf","setPrototypeOf","getPrototypeOf","__proto__","_setPrototypeOf","_assertThisInitialized","self","ReferenceError","_defineProperty","value","NEWTAB","MIDDLECLICK","OutboundLink_OutboundLink","OutboundLink","_getPrototypeOf2","instance","Constructor","TypeError","_classCallCheck","apply","eventLabel","eventMeta","label","sameTarget","normalClick","ctrlKey","shiftKey","metaKey","button","preventDefault","trackLink","location","protoProps","staticProps","subClass","superClass","create","_inherits","react","ownKeys","filter","sym","getOwnPropertyDescriptor","forEach","_objectSpread","rel","react_default","esm_objectWithoutProperties","esm_objectWithoutPropertiesLoose","esm_defineProperty","esm_typeof","_toConsumableArray","arr","isArray","arr2","_arrayWithoutHoles","iter","toString","from","_iterableToArray","_nonIterableSpread","prop_types_default","func","_debug","_titleCase","_testMode","_alwaysSendToDefaultTracker","esm_internalGa","_window","_format","_gaCommand","trackerNames","command","name","slice","_initialize","gaTrackingID","gaOptions","_len2","_key2","JSON","stringify","send","fieldObject","esm_plugin","require","rawName","execute","pluginName","payload","actionType","undefined","outboundLink","hitCallback","hitType","eventCategory","eventAction","safetyCallbackCalled","t","setTimeout","clearTimeout","origTrackLink","esm_OutboundLink","__webpack_exports__","configsOrTrackingId","testMode","standardImplementation","alwaysSendToDefaultTracker","config","trackingId","set","fieldsObject","pageview","rawPath","extraFields","esm_objectSpread","page","extraLog","modalview","rawModalName","modalName","substring","timing","variable","timingCategory","timingVar","timingValue","timingLabel","_ref2","nonInteraction","transport","eventValue","exception","_ref3","description","fatal","exDescription","exFatal","plugin"],"mappings":"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","file":"6-65df467710836b21d57b.js","sourcesContent":["import './BodyText.scss';\n\nimport Parser from 'html-react-parser';\nimport PropTypes from 'prop-types';\nimport React from 'react';\n\nexport const BodyText = ({\n text,\n className,\n heading,\n headingFontSize,\n bold,\n centered,\n noPadding,\n headingFont,\n ...props\n}) => {\n const classes = [];\n\n centered && classes.push('centered');\n bold && classes.push('bold');\n noPadding && classes.push('body-text--no-padding');\n headingFont && classes.push('heading-font');\n\n const getHeading = () => {\n if (heading) {\n const Heading = heading.level;\n return (\n \n {heading.title}\n \n );\n } else {\n return null;\n }\n };\n\n return (\n
\n {heading.title && getHeading()}\n {text && typeof text === 'string' ? (\n

{text}

\n ) : (\n text &&\n text.map(p => (\n
\n {Parser(p)}\n
\n ))\n )}\n
\n );\n};\n\nBodyText.defaultProps = {\n heading: { title: '', level: 'h2' },\n text: '',\n className: '',\n centered: false,\n bold: false,\n noPadding: false,\n};\n\nBodyText.propTypes = {\n heading: PropTypes.shape({\n text: PropTypes.string,\n level: PropTypes.string,\n }),\n headingFontSize: PropTypes.string,\n text: PropTypes.oneOfType([PropTypes.string, PropTypes.array]),\n className: PropTypes.string,\n centered: PropTypes.bool,\n bold: PropTypes.bool,\n noPadding: PropTypes.bool,\n};\n","module.exports = [\n 'fullstack',\n 'full stack open 2019',\n 'course',\n 'helsingin yliopisto',\n 'tietojenkäsittelytieteen osasto',\n 'mooc',\n 'mooc.fi',\n 'full stack',\n 'full stack open',\n 'web-sovelluskehitys',\n 'web',\n 'houston',\n 'houston inc',\n 'websovelluskehitys',\n 'web-sovellus',\n 'React',\n 'Redux',\n 'Node.js',\n 'Node',\n 'MongoDB',\n 'GraphQL',\n 'REST',\n 'REST api',\n 'single page -sovellus',\n 'ohjelmointi',\n 'university of helsinki',\n 'department of computer science',\n 'web development',\n 'software development',\n 'web',\n 'web application',\n 'single page app',\n 'programming'\n];\n","import './Footer.scss';\n\nimport Element from '../Element/Element';\nimport { Image } from '../Image/Image';\nimport { Link } from 'gatsby';\nimport React from 'react';\nimport houston from '../../images/company_logos/houston.svg';\nimport { navigation } from '../Navigation/Navigation';\nimport yliopisto from '../../images/company_logos/uoh_centre.svg';\n\nconst images = [\n {\n src: yliopisto,\n alt: 'Helsingin yliopiston logo',\n href: 'https://www.helsinki.fi/',\n },\n {\n src: houston,\n alt: 'Houston inc. logo',\n href: 'https://www.houston-inc.com/',\n },\n];\n\nconst Footer = ({ lang }) => (\n \n \n {images.map(image => (\n \n {image.alt}\n \n ))}\n \n\n \n
\n {navigation[lang].map(item => (\n \n {item.text}\n \n ))}\n
\n \n \n);\n\nexport default Footer;\n","import './SubHeader.scss';\n\nimport PropTypes from 'prop-types';\nimport React from 'react';\n\nexport const SubHeader = ({\n className,\n headingLevel = 'h2',\n headingFontSize,\n text,\n ...props\n}) => {\n const Heading = headingLevel;\n\n return (\n \n {text}\n \n );\n};\n\nSubHeader.propTypes = {\n className: PropTypes.string,\n headingLevel: PropTypes.string,\n text: PropTypes.string.isRequired,\n headingFontSize: PropTypes.string,\n};\n\nSubHeader.defaultProps = {\n className: '',\n};\n","import './Accordion.scss';\n\nimport React, { Component } from 'react';\n\nimport { BodyText } from '../BodyText/BodyText';\nimport { Link } from 'gatsby';\nimport PropTypes from 'prop-types';\nimport ReactGA from 'react-ga';\n\nReactGA.initialize('UA-135975842-1');\n\nclass Accordion extends Component {\n constructor(props) {\n super(props);\n\n this.state = {\n isOpened: false,\n };\n }\n\n componentDidMount() {\n this.props.initiallyOpened && this.setState({ isOpened: true });\n }\n\n handleClick() {\n const { isOpened } = this.state;\n const { title, track } = this.props;\n\n this.setState({ isOpened: !isOpened }, () => {\n track &&\n ReactGA.event({\n category: 'FAQ',\n action: `${title} ${!isOpened ? 'expanded' : 'closed'}`,\n });\n });\n }\n\n render() {\n const {\n title,\n content,\n className,\n containerClassName,\n list,\n titleStyle,\n } = this.props;\n const { isOpened } = this.state;\n\n return (\n \n this.handleClick()}\n >\n {title}\n \n \n {content && (\n \n )}\n {list && (\n
    \n {list.map(l => (\n
  • \n {l.text}\n
  • \n ))}\n
\n )}\n \n \n );\n }\n}\n\nAccordion.propTypes = {\n title: PropTypes.string.isRequired,\n track: PropTypes.bool,\n content: PropTypes.oneOfType([PropTypes.string, PropTypes.array]),\n list: PropTypes.array,\n className: PropTypes.string,\n containerClassName: PropTypes.string,\n initiallyOpened: PropTypes.bool,\n titleStyle: PropTypes.object,\n};\n\nAccordion.defaultProps = {\n className: '',\n track: false,\n containerClassName: '',\n initiallyOpened: false,\n titleStyle: {},\n};\n\nexport default Accordion;\n","// GA strings need to have leading/trailing whitespace trimmed, and not all\n// browsers have String.prototoype.trim().\nexport default function trim(s) {\n return s.replace(/^\\s+|\\s+$/g, '');\n}","/**\n * To Title Case 2.1 - http://individed.com/code/to-title-case/\n * Copyright 2008-2013 David Gouch. Licensed under the MIT License.\n * https://github.com/gouch/to-title-case\n */\nimport trim from './trim';\nvar smallWords = /^(a|an|and|as|at|but|by|en|for|if|in|nor|of|on|or|per|the|to|vs?\\.?|via)$/i;\nexport default function toTitleCase(string) {\n return trim(string).replace(/[A-Za-z0-9\\u00C0-\\u00FF]+[^\\s-]*/g, function (match, index, title) {\n if (index > 0 && index + match.length !== title.length && match.search(smallWords) > -1 && title.charAt(index - 2) !== ':' && (title.charAt(index + match.length) !== '-' || title.charAt(index - 1) === '-') && title.charAt(index - 1).search(/[^\\s-]/) < 0) {\n return match.toLowerCase();\n }\n\n if (match.substr(1).search(/[A-Z]|\\../) > -1) {\n return match;\n }\n\n return match.charAt(0).toUpperCase() + match.substr(1);\n });\n}","export default function warn(s) {\n console.warn('[react-ga]', s);\n}","import mightBeEmail from './mightBeEmail';\nimport toTitleCase from './toTitleCase';\nimport warn from './console/warn';\nvar redacted = 'REDACTED (Potential Email Address)';\nexport default function format(s, titleCase) {\n if (mightBeEmail(s)) {\n warn('This arg looks like an email address, redacting.');\n return redacted;\n }\n\n if (titleCase) {\n return toTitleCase(s);\n }\n\n return s;\n}","// See if s could be an email address. We don't want to send personal data like email.\n// https://support.google.com/analytics/answer/2795983?hl=en\nexport default function mightBeEmail(s) {\n // There's no point trying to validate rfc822 fully, just look for ...@...\n return /[^@]+@[^@]+/.test(s);\n}","export default function (options) {\n var gaAddress = 'https://www.google-analytics.com/analytics.js';\n\n if (options && options.gaAddress) {\n gaAddress = options.gaAddress;\n } else if (options && options.debug) {\n gaAddress = 'https://www.google-analytics.com/analytics_debug.js';\n } // https://developers.google.com/analytics/devguides/collection/analyticsjs/\n\n /* eslint-disable */\n\n\n (function (i, s, o, g, r, a, m) {\n i['GoogleAnalyticsObject'] = r;\n i[r] = i[r] || function () {\n (i[r].q = i[r].q || []).push(arguments);\n }, i[r].l = 1 * new Date();\n a = s.createElement(o), m = s.getElementsByTagName(o)[0];\n a.async = 1;\n a.src = g;\n m.parentNode.insertBefore(a, m);\n })(window, document, 'script', gaAddress, 'ga');\n /* eslint-enable */\n\n}","export default function log(s) {\n console.info('[react-ga]', s);\n}","export var gaCalls = [];\nexport default {\n calls: gaCalls,\n ga: function ga() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n gaCalls.push(args.concat());\n },\n resetCalls: function resetCalls() {\n gaCalls.length = 0;\n }\n};","function _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport warn from '../utils/console/warn';\nvar NEWTAB = '_blank';\nvar MIDDLECLICK = 1;\n\nvar OutboundLink =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(OutboundLink, _Component);\n\n function OutboundLink() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, OutboundLink);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(OutboundLink)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"handleClick\", function (event) {\n var _this$props = _this.props,\n target = _this$props.target,\n eventLabel = _this$props.eventLabel,\n to = _this$props.to,\n onClick = _this$props.onClick;\n var eventMeta = {\n label: eventLabel\n };\n var sameTarget = target !== NEWTAB;\n var normalClick = !(event.ctrlKey || event.shiftKey || event.metaKey || event.button === MIDDLECLICK);\n\n if (sameTarget && normalClick) {\n event.preventDefault();\n OutboundLink.trackLink(eventMeta, function () {\n window.location.href = to;\n });\n } else {\n OutboundLink.trackLink(eventMeta, function () {});\n }\n\n if (onClick) {\n onClick(event);\n }\n });\n\n return _this;\n }\n\n _createClass(OutboundLink, [{\n key: \"render\",\n value: function render() {\n var _this$props2 = this.props,\n href = _this$props2.to,\n oldProps = _objectWithoutProperties(_this$props2, [\"to\"]);\n\n var props = _objectSpread({}, oldProps, {\n href: href,\n onClick: this.handleClick\n });\n\n if (this.props.target === NEWTAB) {\n props.rel = 'noopener noreferrer';\n }\n\n delete props.eventLabel;\n return React.createElement('a', props);\n }\n }]);\n\n return OutboundLink;\n}(Component);\n\n_defineProperty(OutboundLink, \"trackLink\", function () {\n warn('ga tracking not enabled');\n});\n\n_defineProperty(OutboundLink, \"propTypes\", {\n eventLabel: PropTypes.string.isRequired,\n target: PropTypes.string,\n to: PropTypes.string,\n onClick: PropTypes.func\n});\n\n_defineProperty(OutboundLink, \"defaultProps\", {\n target: null,\n to: null,\n onClick: null\n});\n\nexport { OutboundLink as default };","function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance\"); }\n\nfunction _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }\n\n/**\n * React Google Analytics Module\n *\n * @package react-ga\n * @author Adam Lofting \n * Atul Varma \n */\n\n/**\n * Utilities\n */\nimport format from './utils/format';\nimport removeLeadingSlash from './utils/removeLeadingSlash';\nimport trim from './utils/trim';\nimport loadGA from './utils/loadGA';\nimport warn from './utils/console/warn';\nimport log from './utils/console/log';\nimport TestModeAPI from './utils/testModeAPI';\nimport UnboundOutboundLink from './components/OutboundLink';\nvar _debug = false;\nvar _titleCase = true;\nvar _testMode = false;\nvar _alwaysSendToDefaultTracker = true;\n\nvar internalGa = function internalGa() {\n var _window;\n\n if (_testMode) return TestModeAPI.ga.apply(TestModeAPI, arguments);\n if (typeof window === 'undefined') return false;\n if (!window.ga) return warn('ReactGA.initialize must be called first or GoogleAnalytics should be loaded manually');\n return (_window = window).ga.apply(_window, arguments);\n};\n\nfunction _format(s) {\n return format(s, _titleCase);\n}\n\nfunction _gaCommand(trackerNames) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n var command = args[0];\n\n if (typeof internalGa === 'function') {\n if (typeof command !== 'string') {\n warn('ga command must be a string');\n return;\n }\n\n if (_alwaysSendToDefaultTracker || !Array.isArray(trackerNames)) internalGa.apply(void 0, args);\n\n if (Array.isArray(trackerNames)) {\n trackerNames.forEach(function (name) {\n internalGa.apply(void 0, _toConsumableArray([\"\".concat(name, \".\").concat(command)].concat(args.slice(1))));\n });\n }\n }\n}\n\nfunction _initialize(gaTrackingID, options) {\n if (!gaTrackingID) {\n warn('gaTrackingID is required in initialize()');\n return;\n }\n\n if (options) {\n if (options.debug && options.debug === true) {\n _debug = true;\n }\n\n if (options.titleCase === false) {\n _titleCase = false;\n }\n }\n\n if (options && options.gaOptions) {\n internalGa('create', gaTrackingID, options.gaOptions);\n } else {\n internalGa('create', gaTrackingID, 'auto');\n }\n}\n\nexport function initialize(configsOrTrackingId, options) {\n if (options && options.testMode === true) {\n _testMode = true;\n } else {\n if (typeof window === 'undefined') {\n return false;\n }\n\n if (!options || options.standardImplementation !== true) loadGA(options);\n }\n\n _alwaysSendToDefaultTracker = options && typeof options.alwaysSendToDefaultTracker === 'boolean' ? options.alwaysSendToDefaultTracker : true;\n\n if (Array.isArray(configsOrTrackingId)) {\n configsOrTrackingId.forEach(function (config) {\n if (_typeof(config) !== 'object') {\n warn('All configs must be an object');\n return;\n }\n\n _initialize(config.trackingId, config);\n });\n } else {\n _initialize(configsOrTrackingId, options);\n }\n\n return true;\n}\n/**\n * ga:\n * Returns the original GA object.\n */\n\nexport function ga() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n if (args.length > 0) {\n internalGa.apply(void 0, args);\n\n if (_debug) {\n log('called ga(\\'arguments\\');');\n log(\"with arguments: \".concat(JSON.stringify(args)));\n }\n }\n\n return window.ga;\n}\n/**\n * set:\n * GA tracker set method\n * @param {Object} fieldsObject - a field/value pair or a group of field/value pairs on the tracker\n * @param {Array} trackerNames - (optional) a list of extra trackers to run the command on\n */\n\nexport function set(fieldsObject, trackerNames) {\n if (!fieldsObject) {\n warn('`fieldsObject` is required in .set()');\n return;\n }\n\n if (_typeof(fieldsObject) !== 'object') {\n warn('Expected `fieldsObject` arg to be an Object');\n return;\n }\n\n if (Object.keys(fieldsObject).length === 0) {\n warn('empty `fieldsObject` given to .set()');\n }\n\n _gaCommand(trackerNames, 'set', fieldsObject);\n\n if (_debug) {\n log('called ga(\\'set\\', fieldsObject);');\n log(\"with fieldsObject: \".concat(JSON.stringify(fieldsObject)));\n }\n}\n/**\n * send:\n * Clone of the low level `ga.send` method\n * WARNING: No validations will be applied to this\n * @param {Object} fieldObject - field object for tracking different analytics\n * @param {Array} trackerNames - trackers to send the command to\n * @param {Array} trackerNames - (optional) a list of extra trackers to run the command on\n */\n\nexport function send(fieldObject, trackerNames) {\n _gaCommand(trackerNames, 'send', fieldObject);\n\n if (_debug) {\n log('called ga(\\'send\\', fieldObject);');\n log(\"with fieldObject: \".concat(JSON.stringify(fieldObject)));\n log(\"with trackers: \".concat(JSON.stringify(trackerNames)));\n }\n}\n/**\n * pageview:\n * Basic GA pageview tracking\n * @param {String} path - the current page page e.g. '/about'\n * @param {Array} trackerNames - (optional) a list of extra trackers to run the command on\n * @param {String} title - (optional) the page title e. g. 'My Website'\n */\n\nexport function pageview(rawPath, trackerNames, title) {\n if (!rawPath) {\n warn('path is required in .pageview()');\n return;\n }\n\n var path = trim(rawPath);\n\n if (path === '') {\n warn('path cannot be an empty string in .pageview()');\n return;\n }\n\n var extraFields = {};\n\n if (title) {\n extraFields.title = title;\n }\n\n if (typeof ga === 'function') {\n _gaCommand(trackerNames, 'send', _objectSpread({\n hitType: 'pageview',\n page: path\n }, extraFields));\n\n if (_debug) {\n log('called ga(\\'send\\', \\'pageview\\', path);');\n var extraLog = '';\n\n if (title) {\n extraLog = \" and title: \".concat(title);\n }\n\n log(\"with path: \".concat(path).concat(extraLog));\n }\n }\n}\n/**\n * modalview:\n * a proxy to basic GA pageview tracking to consistently track\n * modal views that are an equivalent UX to a traditional pageview\n * @param {String} modalName e.g. 'add-or-edit-club'\n * @param {Array} trackerNames - (optional) a list of extra trackers to run the command on\n */\n\nexport function modalview(rawModalName, trackerNames) {\n if (!rawModalName) {\n warn('modalName is required in .modalview(modalName)');\n return;\n }\n\n var modalName = removeLeadingSlash(trim(rawModalName));\n\n if (modalName === '') {\n warn('modalName cannot be an empty string or a single / in .modalview()');\n return;\n }\n\n if (typeof ga === 'function') {\n var path = \"/modal/\".concat(modalName);\n\n _gaCommand(trackerNames, 'send', 'pageview', path);\n\n if (_debug) {\n log('called ga(\\'send\\', \\'pageview\\', path);');\n log(\"with path: \".concat(path));\n }\n }\n}\n/**\n * timing:\n * GA timing\n * @param args.category {String} required\n * @param args.variable {String} required\n * @param args.value {Int} required\n * @param args.label {String} required\n * @param {Array} trackerNames - (optional) a list of extra trackers to run the command on\n */\n\nexport function timing() {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n category = _ref.category,\n variable = _ref.variable,\n value = _ref.value,\n label = _ref.label;\n\n var trackerNames = arguments.length > 1 ? arguments[1] : undefined;\n\n if (typeof ga === 'function') {\n if (!category || !variable || !value || typeof value !== 'number') {\n warn('args.category, args.variable ' + 'AND args.value are required in timing() ' + 'AND args.value has to be a number');\n return;\n } // Required Fields\n\n\n var fieldObject = {\n hitType: 'timing',\n timingCategory: _format(category),\n timingVar: _format(variable),\n timingValue: value\n };\n\n if (label) {\n fieldObject.timingLabel = _format(label);\n }\n\n send(fieldObject, trackerNames);\n }\n}\n/**\n * event:\n * GA event tracking\n * @param args.category {String} required\n * @param args.action {String} required\n * @param args.label {String} optional\n * @param args.value {Int} optional\n * @param args.nonInteraction {boolean} optional\n * @param args.transport {string} optional\n * @param {Array} trackerNames - (optional) a list of extra trackers to run the command on\n */\n\nexport function event() {\n var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n category = _ref2.category,\n action = _ref2.action,\n label = _ref2.label,\n value = _ref2.value,\n nonInteraction = _ref2.nonInteraction,\n transport = _ref2.transport,\n args = _objectWithoutProperties(_ref2, [\"category\", \"action\", \"label\", \"value\", \"nonInteraction\", \"transport\"]);\n\n var trackerNames = arguments.length > 1 ? arguments[1] : undefined;\n\n if (typeof ga === 'function') {\n // Simple Validation\n if (!category || !action) {\n warn('args.category AND args.action are required in event()');\n return;\n } // Required Fields\n\n\n var fieldObject = {\n hitType: 'event',\n eventCategory: _format(category),\n eventAction: _format(action)\n }; // Optional Fields\n\n if (label) {\n fieldObject.eventLabel = _format(label);\n }\n\n if (typeof value !== 'undefined') {\n if (typeof value !== 'number') {\n warn('Expected `args.value` arg to be a Number.');\n } else {\n fieldObject.eventValue = value;\n }\n }\n\n if (typeof nonInteraction !== 'undefined') {\n if (typeof nonInteraction !== 'boolean') {\n warn('`args.nonInteraction` must be a boolean.');\n } else {\n fieldObject.nonInteraction = nonInteraction;\n }\n }\n\n if (typeof transport !== 'undefined') {\n if (typeof transport !== 'string') {\n warn('`args.transport` must be a string.');\n } else {\n if (['beacon', 'xhr', 'image'].indexOf(transport) === -1) {\n warn('`args.transport` must be either one of these values: `beacon`, `xhr` or `image`');\n }\n\n fieldObject.transport = transport;\n }\n }\n\n Object.keys(args).filter(function (key) {\n return key.substr(0, 'dimension'.length) === 'dimension';\n }).forEach(function (key) {\n fieldObject[key] = args[key];\n });\n Object.keys(args).filter(function (key) {\n return key.substr(0, 'metric'.length) === 'metric';\n }).forEach(function (key) {\n fieldObject[key] = args[key];\n }); // Send to GA\n\n send(fieldObject, trackerNames);\n }\n}\n/**\n * exception:\n * GA exception tracking\n * @param args.description {String} optional\n * @param args.fatal {boolean} optional\n * @param {Array} trackerNames - (optional) a list of extra trackers to run the command on\n */\n\nexport function exception(_ref3, trackerNames) {\n var description = _ref3.description,\n fatal = _ref3.fatal;\n\n if (typeof ga === 'function') {\n // Required Fields\n var fieldObject = {\n hitType: 'exception'\n }; // Optional Fields\n\n if (description) {\n fieldObject.exDescription = _format(description);\n }\n\n if (typeof fatal !== 'undefined') {\n if (typeof fatal !== 'boolean') {\n warn('`args.fatal` must be a boolean.');\n } else {\n fieldObject.exFatal = fatal;\n }\n } // Send to GA\n\n\n send(fieldObject, trackerNames);\n }\n}\nexport var plugin = {\n /**\n * require:\n * GA requires a plugin\n * @param name {String} e.g. 'ecommerce' or 'myplugin'\n * @param options {Object} optional e.g {path: '/log', debug: true}\n */\n require: function require(rawName, options) {\n if (typeof ga === 'function') {\n // Required Fields\n if (!rawName) {\n warn('`name` is required in .require()');\n return;\n }\n\n var name = trim(rawName);\n\n if (name === '') {\n warn('`name` cannot be an empty string in .require()');\n return;\n } // Optional Fields\n\n\n if (options) {\n if (_typeof(options) !== 'object') {\n warn('Expected `options` arg to be an Object');\n return;\n }\n\n if (Object.keys(options).length === 0) {\n warn('Empty `options` given to .require()');\n }\n\n ga('require', name, options);\n\n if (_debug) {\n log(\"called ga('require', '\".concat(name, \"', \").concat(JSON.stringify(options)));\n }\n } else {\n ga('require', name);\n\n if (_debug) {\n log(\"called ga('require', '\".concat(name, \"');\"));\n }\n }\n }\n },\n\n /**\n * execute:\n * GA execute action for plugin\n * Takes variable number of arguments\n * @param pluginName {String} e.g. 'ecommerce' or 'myplugin'\n * @param action {String} e.g. 'addItem' or 'myCustomAction'\n * @param actionType {String} optional e.g. 'detail'\n * @param payload {Object} optional e.g { id: '1x5e', name : 'My product to track' }\n */\n execute: function execute(pluginName, action) {\n var payload;\n var actionType;\n\n if ((arguments.length <= 2 ? 0 : arguments.length - 2) === 1) {\n payload = arguments.length <= 2 ? undefined : arguments[2];\n } else {\n actionType = arguments.length <= 2 ? undefined : arguments[2];\n payload = arguments.length <= 3 ? undefined : arguments[3];\n }\n\n if (typeof ga === 'function') {\n if (typeof pluginName !== 'string') {\n warn('Expected `pluginName` arg to be a String.');\n } else if (typeof action !== 'string') {\n warn('Expected `action` arg to be a String.');\n } else {\n var command = \"\".concat(pluginName, \":\").concat(action);\n payload = payload || null;\n\n if (actionType && payload) {\n ga(command, actionType, payload);\n\n if (_debug) {\n log(\"called ga('\".concat(command, \"');\"));\n log(\"actionType: \\\"\".concat(actionType, \"\\\" with payload: \").concat(JSON.stringify(payload)));\n }\n } else if (payload) {\n ga(command, payload);\n\n if (_debug) {\n log(\"called ga('\".concat(command, \"');\"));\n log(\"with payload: \".concat(JSON.stringify(payload)));\n }\n } else {\n ga(command);\n\n if (_debug) {\n log(\"called ga('\".concat(command, \"');\"));\n }\n }\n }\n }\n }\n};\n/**\n * outboundLink:\n * GA outboundLink tracking\n * @param args.label {String} e.g. url, or 'Create an Account'\n * @param {function} hitCallback - Called after processing a hit.\n */\n\nexport function outboundLink(args, hitCallback, trackerNames) {\n if (typeof hitCallback !== 'function') {\n warn('hitCallback function is required');\n return;\n }\n\n if (typeof ga === 'function') {\n // Simple Validation\n if (!args || !args.label) {\n warn('args.label is required in outboundLink()');\n return;\n } // Required Fields\n\n\n var fieldObject = {\n hitType: 'event',\n eventCategory: 'Outbound',\n eventAction: 'Click',\n eventLabel: _format(args.label)\n };\n var safetyCallbackCalled = false;\n\n var safetyCallback = function safetyCallback() {\n // This prevents a delayed response from GA\n // causing hitCallback from being fired twice\n safetyCallbackCalled = true;\n hitCallback();\n }; // Using a timeout to ensure the execution of critical application code\n // in the case when the GA server might be down\n // or an ad blocker prevents sending the data\n // register safety net timeout:\n\n\n var t = setTimeout(safetyCallback, 250);\n\n var clearableCallbackForGA = function clearableCallbackForGA() {\n clearTimeout(t);\n\n if (!safetyCallbackCalled) {\n hitCallback();\n }\n };\n\n fieldObject.hitCallback = clearableCallbackForGA; // Send to GA\n\n send(fieldObject, trackerNames);\n } else {\n // if ga is not defined, return the callback so the application\n // continues to work as expected\n setTimeout(hitCallback, 0);\n }\n}\nUnboundOutboundLink.origTrackLink = UnboundOutboundLink.trackLink;\nUnboundOutboundLink.trackLink = outboundLink;\nexport var OutboundLink = UnboundOutboundLink;\nexport var testModeAPI = TestModeAPI;\nexport default {\n initialize: initialize,\n ga: ga,\n set: set,\n send: send,\n pageview: pageview,\n modalview: modalview,\n timing: timing,\n event: event,\n exception: exception,\n plugin: plugin,\n outboundLink: outboundLink,\n OutboundLink: OutboundLink,\n testModeAPI: TestModeAPI\n};","export default function removeLeadingSlash(string) {\n if (string.substring(0, 1) === '/') {\n return string.substring(1);\n }\n\n return string;\n}"],"sourceRoot":""} \ No newline at end of file diff --git a/6-9e5436c3d5186ba1862a.js b/6-9e5436c3d5186ba1862a.js new file mode 100644 index 000000000..9001e0ca7 --- /dev/null +++ b/6-9e5436c3d5186ba1862a.js @@ -0,0 +1,2 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[6],{151:function(e,t,n){"use strict";n.d(t,"a",function(){return f});n(28),n(245);var a=n(148),i=n.n(a),o=(n(224),n(247)),r=n.n(o),s=n(4),l=n.n(s),c=n(0),u=n.n(c),f=function(e){var t=e.text,n=e.className,a=e.heading,o=e.headingFontSize,s=e.bold,l=e.centered,c=e.noPadding,f=e.headingFont,p=i()(e,["text","className","heading","headingFontSize","bold","centered","noPadding","headingFont"]),h=[];l&&h.push("centered"),s&&h.push("bold"),c&&h.push("body-text--no-padding"),f&&h.push("heading-font");return u.a.createElement("div",Object.assign({className:"body-text "+n},p),a.title&&function(){if(a){var e=a.level;return u.a.createElement(e,{className:"body-text__title",style:o?{fontSize:o}:{}},a.title)}return null}(),t&&"string"==typeof t?u.a.createElement("p",{className:"body-text__content "+h.join(" ")},t):t&&t.map(function(e){return u.a.createElement("div",{key:e,className:"body-text__content "+h.join(" ")},r()(e))}))};f.defaultProps={heading:{title:"",level:"h2"},text:"",className:"",centered:!1,bold:!1,noPadding:!1},f.propTypes={heading:l.a.shape({text:l.a.string,level:l.a.string}),headingFontSize:l.a.string,text:l.a.oneOfType([l.a.string,l.a.array]),className:l.a.string,centered:l.a.bool,bold:l.a.bool,noPadding:l.a.bool}},157:function(e,t){e.exports=["fullstack","full stack open 2019","course","helsingin yliopisto","tietojenkäsittelytieteen osasto","mooc","mooc.fi","full stack","full stack open","web-sovelluskehitys","web","houston","houston inc","websovelluskehitys","web-sovellus","React","Redux","Node.js","Node","MongoDB","GraphQL","REST","REST api","single page -sovellus","ohjelmointi","university of helsinki","department of computer science","web development","software development","web","web application","single page app","programming"]},159:function(e,t,n){"use strict";n(163);var a=n(147),i=n(149),o=n(146),r=n(0),s=n.n(r),l=n(155),c=n.n(l),u=n(220),f=n(152),p=[{src:n.n(f).a,alt:"Helsingin yliopiston logo",href:"https://www.helsinki.fi/"},{src:c.a,alt:"Houston inc. logo",href:"https://www.houston-inc.com/"}];t.a=function(e){var t=e.lang;return s.a.createElement(a.a,{id:"footer",className:"container spacing--after-small spacing--mobile",flex:!0},s.a.createElement(a.a,{className:"col-5 push-right-3 col-10--mobile order-2--mobile order-2--tablet footer__links",flex:!0,spaceBetween:!0},p.map(function(e){return s.a.createElement("a",{key:e.alt,href:e.href,className:"col-5 col-4--mobile spacing--mobile"},s.a.createElement(i.a,{contain:!0,src:e.src,alt:e.alt,className:"col-6"}))})),s.a.createElement(a.a,{flex:!0,className:"col-5 col-5--mobile order-1--mobile order-1--tablet footer__navigation"},s.a.createElement("div",{className:"footer__navigation-link-container"},u.b[t].map(function(e){return s.a.createElement(o.Link,{key:e.path,to:e.path,className:"footer__navigation-link nav-item-hover",style:{marginLeft:"4.5rem"}},e.text)}))))}},163:function(e,t,n){},224:function(e,t,n){},227:function(e,t,n){"use strict";n.d(t,"a",function(){return c});n(28);var a=n(148),i=n.n(a),o=(n(242),n(4)),r=n.n(o),s=n(0),l=n.n(s),c=function(e){var t=e.className,n=e.headingLevel,a=void 0===n?"h2":n,o=e.headingFontSize,r=e.text,s=i()(e,["className","headingLevel","headingFontSize","text"]),c=a;return l.a.createElement(c,Object.assign({className:"sub-header "+t,style:o?{fontSize:o}:{}},s),r)};c.propTypes={className:r.a.string,headingLevel:r.a.string,text:r.a.string.isRequired,headingFontSize:r.a.string},c.defaultProps={className:""}},242:function(e,t,n){},324:function(e,t,n){"use strict";var a=n(6),i=n.n(a),o=(n(363),n(0)),r=n.n(o),s=n(151),l=n(146),c=n(4),u=n.n(c),f=n(401);f.a.initialize("UA-135975842-1");var p=function(e){function t(t){var n;return(n=e.call(this,t)||this).state={isOpened:!1},n}i()(t,e);var n=t.prototype;return n.componentDidMount=function(){this.props.initiallyOpened&&this.setState({isOpened:!0})},n.handleClick=function(){var e=this.state.isOpened,t=this.props,n=t.title,a=t.track;this.setState({isOpened:!e},function(){a&&f.a.event({category:"FAQ",action:n+" "+(e?"closed":"expanded")})})},n.render=function(){var e=this,t=this.props,n=t.title,a=t.content,i=t.className,o=t.containerClassName,c=t.list,u=t.titleStyle,f=this.state.isOpened;return r.a.createElement("div",{className:"accordion__container col-8 push-right-1 "+o},r.a.createElement("button",{className:"accordion accordion__title "+(f?"active":"")+" "+i,style:u,onClick:function(){return e.handleClick()}},n),r.a.createElement("div",{className:"panel",style:{padding:f?"2rem 18px":"",maxHeight:""+(f?"unset":0),transition:"max-height 0.2s ease-out"}},a&&r.a.createElement(s.a,{className:"col-8 push-right-1",text:a}),c&&r.a.createElement("ul",null,c.map(function(e){return r.a.createElement("li",{key:e.text},r.a.createElement(l.Link,{to:e.href},e.text))}))))},t}(o.Component);p.propTypes={title:u.a.string.isRequired,track:u.a.bool,content:u.a.oneOfType([u.a.string,u.a.array]),list:u.a.array,className:u.a.string,containerClassName:u.a.string,initiallyOpened:u.a.bool,titleStyle:u.a.object},p.defaultProps={className:"",track:!1,containerClassName:"",initiallyOpened:!1,titleStyle:{}},t.a=p},363:function(e,t,n){},401:function(e,t,n){"use strict";function a(e){return e.replace(/^\s+|\s+$/g,"")}var i=/^(a|an|and|as|at|but|by|en|for|if|in|nor|of|on|or|per|the|to|vs?\.?|via)$/i;function o(e){console.warn("[react-ga]",e)}var r="REDACTED (Potential Email Address)";function s(e,t){return function(e){return/[^@]+@[^@]+/.test(e)}(e)?(o("This arg looks like an email address, redacting."),r):t?a(e).replace(/[A-Za-z0-9\u00C0-\u00FF]+[^\s-]*/g,function(e,t,n){return t>0&&t+e.length!==n.length&&e.search(i)>-1&&":"!==n.charAt(t-2)&&("-"!==n.charAt(t+e.length)||"-"===n.charAt(t-1))&&n.charAt(t-1).search(/[^\s-]/)<0?e.toLowerCase():e.substr(1).search(/[A-Z]|\../)>-1?e:e.charAt(0).toUpperCase()+e.substr(1)}):e}var l=function(e){var t,n,a,i,o,r,s,l="https://www.google-analytics.com/analytics.js";e&&e.gaAddress?l=e.gaAddress:e&&e.debug&&(l="https://www.google-analytics.com/analytics_debug.js"),t=window,n=document,a="script",i=l,o="ga",t.GoogleAnalyticsObject=o,t.ga=t.ga||function(){(t.ga.q=t.ga.q||[]).push(arguments)},t.ga.l=1*new Date,r=n.createElement(a),s=n.getElementsByTagName(a)[0],r.async=1,r.src=i,s.parentNode.insertBefore(r,s)};function c(e){console.info("[react-ga]",e)}var u=[],f={calls:u,ga:function(){for(var e=arguments.length,t=new Array(e),n=0;n=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}function b(e,t){for(var n=0;n=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}function N(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function T(e){return(T="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function _(e){return function(e){if(Array.isArray(e)){for(var t=0,n=new Array(e.length);t1?t-1:0),a=1;a0&&(L.apply(void 0,t),A&&(c("called ga('arguments');"),c("with arguments: ".concat(JSON.stringify(t))))),window.ga}function J(e,t){q(t,"send",e),A&&(c("called ga('send', fieldObject);"),c("with fieldObject: ".concat(JSON.stringify(e))),c("with trackers: ".concat(JSON.stringify(t))))}var R={require:function(e,t){if(e){var n=a(e);if(""!==n)if(t){if("object"!==T(t))return void o("Expected `options` arg to be an Object");0===Object.keys(t).length&&o("Empty `options` given to .require()"),z("require",n,t),A&&c("called ga('require', '".concat(n,"', ").concat(JSON.stringify(t)))}else z("require",n),A&&c("called ga('require', '".concat(n,"');"));else o("`name` cannot be an empty string in .require()")}else o("`name` is required in .require()")},execute:function(e,t){var n,a;if(1==(arguments.length<=2?0:arguments.length-2)?n=arguments.length<=2?void 0:arguments[2]:(a=arguments.length<=2?void 0:arguments[2],n=arguments.length<=3?void 0:arguments[3]),"string"!=typeof e)o("Expected `pluginName` arg to be a String.");else if("string"!=typeof t)o("Expected `action` arg to be a String.");else{var i="".concat(e,":").concat(t);n=n||null,a&&n?(z(i,a,n),A&&(c("called ga('".concat(i,"');")),c('actionType: "'.concat(a,'" with payload: ').concat(JSON.stringify(n))))):n?(z(i,n),A&&(c("called ga('".concat(i,"');")),c("with payload: ".concat(JSON.stringify(n))))):(z(i),A&&c("called ga('".concat(i,"');")))}}};function K(e,t,n){if("function"==typeof t)if(e&&e.label){var a={hitType:"event",eventCategory:"Outbound",eventAction:"Click",eventLabel:I(e.label)},i=!1,r=setTimeout(function(){i=!0,t()},250);a.hitCallback=function(){clearTimeout(r),i||t()},J(a,n)}else o("args.label is required in outboundLink()");else o("hitCallback function is required")}S.origTrackLink=S.trackLink,S.trackLink=K;var M=S;t.a={initialize:function(e,t){if(t&&!0===t.testMode)P=!0;else{if("undefined"==typeof window)return!1;t&&!0===t.standardImplementation||l(t)}return F=!t||"boolean"!=typeof t.alwaysSendToDefaultTracker||t.alwaysSendToDefaultTracker,Array.isArray(e)?e.forEach(function(e){"object"===T(e)?D(e.trackingId,e):o("All configs must be an object")}):D(e,t),!0},ga:z,set:function(e,t){e?"object"===T(e)?(0===Object.keys(e).length&&o("empty `fieldsObject` given to .set()"),q(t,"set",e),A&&(c("called ga('set', fieldsObject);"),c("with fieldsObject: ".concat(JSON.stringify(e))))):o("Expected `fieldsObject` arg to be an Object"):o("`fieldsObject` is required in .set()")},send:J,pageview:function(e,t,n){if(e){var i=a(e);if(""!==i){var r={};if(n&&(r.title=n),q(t,"send",function(e){for(var t=1;t0&&void 0!==arguments[0]?arguments[0]:{},t=e.category,n=e.variable,a=e.value,i=e.label,r=arguments.length>1?arguments[1]:void 0;if(t&&n&&a&&"number"==typeof a){var s={hitType:"timing",timingCategory:I(t),timingVar:I(n),timingValue:a};i&&(s.timingLabel=I(i)),J(s,r)}else o("args.category, args.variable AND args.value are required in timing() AND args.value has to be a number")},event:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.category,n=e.action,a=e.label,i=e.value,r=e.nonInteraction,s=e.transport,l=E(e,["category","action","label","value","nonInteraction","transport"]),c=arguments.length>1?arguments[1]:void 0;if(t&&n){var u={hitType:"event",eventCategory:I(t),eventAction:I(n)};a&&(u.eventLabel=I(a)),void 0!==i&&("number"!=typeof i?o("Expected `args.value` arg to be a Number."):u.eventValue=i),void 0!==r&&("boolean"!=typeof r?o("`args.nonInteraction` must be a boolean."):u.nonInteraction=r),void 0!==s&&("string"!=typeof s?o("`args.transport` must be a string."):(-1===["beacon","xhr","image"].indexOf(s)&&o("`args.transport` must be either one of these values: `beacon`, `xhr` or `image`"),u.transport=s)),Object.keys(l).filter(function(e){return"dimension"===e.substr(0,"dimension".length)}).forEach(function(e){u[e]=l[e]}),Object.keys(l).filter(function(e){return"metric"===e.substr(0,"metric".length)}).forEach(function(e){u[e]=l[e]}),J(u,c)}else o("args.category AND args.action are required in event()")},exception:function(e,t){var n=e.description,a=e.fatal,i={hitType:"exception"};n&&(i.exDescription=I(n)),void 0!==a&&("boolean"!=typeof a?o("`args.fatal` must be a boolean."):i.exFatal=a),J(i,t)},plugin:R,outboundLink:K,OutboundLink:M,testModeAPI:f}},452:function(e){e.exports={fi:[{title:"Ilmestyykö kurssista uusi versio 2020?",text:["Kyllä, uusi versio ilmestyy 15.3.2020.

Uusi versio ei tule poikkeamaan radikaalisti nykyisestä. Suurin ero tulee osaan 5, integraatiotestaus poistuu ja korjaantuu Cypres.io:lla tapahtuvalla E2E-testauksella.

Kurssin on myös tulossa uusi Typescriptiä käsittelevä osa.

Vuoden 2019 versiota voi laajentaa 2020 versiossa tämän ohjeen mukaisesti."]},{title:"Miten kurssille ilmoittaudutaan?",text:["Kurssille ei tarvitse varsinaisesti ilmoittautua ennen kuin haluat tehdä kurssin kokeen. Koe tehdään Avoimen yliopiston Moodle-järjestelmään. Katso lisää täältä."]},{title:"Mikä on kurssin laajuus?",text:["Kurssin laajuus on riippuen tekemiesi tehtävien määrästä 3-8 opintopistettä. Suoritettuasi kurssin voit jatkaa aihepiiriin syventymistä 1-10 opintopisteen laajuisen Full stack -harjoitustyön parissa."]},{title:"Milloin on tehtävien ja kokeen deadline?",text:["Etenemisnopeus on vapaa, kurssilla on ainoastaan yksi deadline sekä tehtäville että kokeelle, 10.1.2020 klo 23.59.59. Kannattaa kuitenkin huomata, että kurssille on ilmoittauduttava viimeistään deadlinea edeltävänä päivänä 9.1.2020."]},{title:"Miten tehtävät palautetaan?",text:["Tehtävät palautetaan GitHubin kautta ja merkitsemällä tehdyt tehtävät palautussovellukseen, lue lisää täältä."]},{title:"Pitääkö jokainen osa palauttaa omaan repositorioon?",text:["Ei. Voit käyttää yhtä tai useampaa repositoriota, tärkeintä on, että asiat repositorion sisällä ovat selkeästi nimettyjä."]},{title:"Voinko muokata tekemääni palautusta?",text:["Et. Kaikki osan tehtävät on palautettava kerralla. Jos merkkasit tehtäviä vahingossa väärin tai typotit repositorion nimen, lähetä mailia osoitteeseen matti.luukkainen@helsinki.fi"]},{title:"Milloin ja miten saan kurssilta suoritusmerkinnän?",text:["Saat suoritusmerkinnän sen jälkeen kun olet tehnyt hyväksyttävään suoritukseen oikeuttavan määrän tehtäviä, suorittanut kokeen hyväksytysti ja ilmoittanut palautussovelluksessa olevasi valmis kurssin suorituksen kanssa. Viimeinen mahdollinen suorituspäivä on 10.1.2020. Lue lisää täältä."]},{title:"Voinko laajentaa aiempaa kurssisuoritustani?",text:["Voit, lue lisää täältä"]},{title:"Suoritin kurssin viime vuonna. Miten opin käyttämään React hookeja?",text:["State hookia, eli tapaa määritellä tila funktionaalisille komponenteille käsitellään osassa 1. Lifecycle-metodien roolia hoitavia effect hookeja käsitellään osassa 2. Custom hookeista puhutaan osassa 5"]},{title:"Kuulin että suorittamalla kurssin on mahdollista päästä työhaastatteluun",text:["Pitää paikkansa, jos suoritat täydellä laajuudella kurssin ja siihen liittyvän 10 op:n laajuisen harjoitustyön, pääset yhteistyökumppaniemme työhaastatteluun, lue lisää täältä."]}],en:[{title:"Will there be a new course 2020?",text:["Yes, the new version of the course will start 15.3.2020.

There won't be major changes in the course content. The gereatest change shall be in part 5, where integration testing of frontend will be replaced by E2E testing using Cypres.io.

There will also be an entirely new part about Typescript.

The 2019 version can be expanded in the 2020 version, see more here. "]},{title:"How do I sign up for the course?",text:["You don't have to sign up until you want to do the course exam. The exam is done to the Moodle-system of the Open University. You can find more information here. Please note that only persons with Finnish social security number can get take part to exam and get official ECTS credits. For the course certificate signup or Finnish social security number are not needed."]},{title:"How many credits is the course?",text:["The course is 3-8 ECTS credits depending on the amount of returned exercises. After completing the course you can continue to deepen your knowledge on the subject matter by doing the 1-10 ETCS credit Full Stack project. Please note that only persons with Finnish social security number can get official ECTS credits. For the course certificate signup or Finnish social security number are not needed."]},{title:"When is the deadline for the exercises and the exam?",text:["You can complete the course at your own pace. The course has only one deadline for the exercises and the exams 10th January 2020 at 23.59.59. Do keep in mind that you have to sign up for the exam no later than the day before the deadline 9.1.2020."]},{title:"How do I submit the exercises?",text:["The exercises are submitted to GitHub, and by marking the exercises as done in the exercise submission system. You can read more from here. "]},{title:"Do I have to submit each part to a separate repository?",text:["No. You can use one or more repositories, most important is to name everything in a repository clearly. "]},{title:"Can I edit a submission?",text:["No. All exercises for a part must be submitted at the same time. If you marked exercises wrong by accident, or wrote the repository name wrong, send an e-mail to matti.luukkainen@helsinki.fi."]},{title:"When and how can I get my credits?",text:["You can get your credits after submitting enough exercises for passing the course, passing the course exam and letting us know through the exercise submission system that you are ready with the course. The deadline is 10th January 2020. Read more here. Please note that only persons with Finnish social security number can get official ECTS credits. For the course certificate signup or Finnish social security number are not needed."]},{title:"Do I get a certificate after completing the course?",text:["Yes, certificate is available to all who pass the course by 10th January 2020. You can download the certificate after completing the course from the exercise submission system. For the course certificate signup to Open university and Finnish social security number are not needed."]},{title:"Do I need a Finnish social security number to get the course certificate?",text:["For the course certificate Finnish social security number is not needed. You can download the certificate after completing the course from the exercise submission system."]},{title:"Should I signup to Open University to get the course certificate?",text:["For the course certificate signup to Open University is not needed. You can download the certificate after completing the course from the exercise submission system."]},{title:"I heard that I could get a job interview by completing the course.",text:["That's right. If you complete the course with full credits, and complete the practical work with 10 credits, you get a job interview with our partners. Read more here. Please note that only persons with Finnish social security number can get take part to exam and get official ECTS credits."]}]}}}]); +//# sourceMappingURL=6-9e5436c3d5186ba1862a.js.map \ No newline at end of file diff --git a/6-9e5436c3d5186ba1862a.js.map b/6-9e5436c3d5186ba1862a.js.map new file mode 100644 index 000000000..c3d1b452e --- /dev/null +++ b/6-9e5436c3d5186ba1862a.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///./src/components/BodyText/BodyText.js","webpack:///./src/content/seo/mainSEOtags.js","webpack:///./src/components/Footer/Footer.js","webpack:///./src/components/SubHeader/SubHeader.js","webpack:///./src/components/Accordion/Accordion.js","webpack:///./node_modules/react-ga/dist/esm/utils/trim.js","webpack:///./node_modules/react-ga/dist/esm/utils/toTitleCase.js","webpack:///./node_modules/react-ga/dist/esm/utils/console/warn.js","webpack:///./node_modules/react-ga/dist/esm/utils/format.js","webpack:///./node_modules/react-ga/dist/esm/utils/mightBeEmail.js","webpack:///./node_modules/react-ga/dist/esm/utils/loadGA.js","webpack:///./node_modules/react-ga/dist/esm/utils/console/log.js","webpack:///./node_modules/react-ga/dist/esm/utils/testModeAPI.js","webpack:///./node_modules/react-ga/dist/esm/components/OutboundLink.js","webpack:///./node_modules/react-ga/dist/esm/index.js","webpack:///./node_modules/react-ga/dist/esm/utils/removeLeadingSlash.js"],"names":["BodyText","_ref","text","className","heading","headingFontSize","bold","centered","noPadding","headingFont","props","_babel_runtime_helpers_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_2___default","classes","push","react__WEBPACK_IMPORTED_MODULE_6___default","a","createElement","Object","assign","title","Heading","level","style","fontSize","getHeading","join","map","p","key","Parser","defaultProps","propTypes","PropTypes","shape","string","oneOfType","array","bool","module","exports","__webpack_require__","_Element_Element__WEBPACK_IMPORTED_MODULE_1__","_Image_Image__WEBPACK_IMPORTED_MODULE_2__","gatsby__WEBPACK_IMPORTED_MODULE_3__","react__WEBPACK_IMPORTED_MODULE_4__","react__WEBPACK_IMPORTED_MODULE_4___default","n","_images_company_logos_houston_svg__WEBPACK_IMPORTED_MODULE_5__","_images_company_logos_houston_svg__WEBPACK_IMPORTED_MODULE_5___default","_Navigation_Navigation__WEBPACK_IMPORTED_MODULE_6__","_images_company_logos_uoh_centre_svg__WEBPACK_IMPORTED_MODULE_7__","images","src","yliopisto","alt","href","houston","Footer","lang","id","flex","spaceBetween","image","contain","navigation","item","path","to","marginLeft","SubHeader","_ref$headingLevel","headingLevel","_babel_runtime_helpers_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_1___default","isRequired","ReactGA","initialize","Accordion","_this","_Component","call","this","state","isOpened","componentDidMount","initiallyOpened","setState","handleClick","_this$props","track","event","category","action","render","_this2","_this$props2","content","containerClassName","list","titleStyle","react__WEBPACK_IMPORTED_MODULE_2___default","onClick","padding","maxHeight","transition","_BodyText_BodyText__WEBPACK_IMPORTED_MODULE_3__","l","gatsby__WEBPACK_IMPORTED_MODULE_4__","Component","object","trim","s","replace","smallWords","warn","console","redacted","format","titleCase","test","mightBeEmail","match","index","length","search","charAt","toLowerCase","substr","toUpperCase","loadGA","options","i","o","g","r","m","gaAddress","debug","window","document","q","arguments","Date","getElementsByTagName","async","parentNode","insertBefore","log","info","gaCalls","testModeAPI","calls","ga","_len","args","Array","_key","concat","resetCalls","_typeof","obj","Symbol","iterator","constructor","prototype","_objectWithoutProperties","source","excluded","target","sourceKeys","keys","indexOf","_objectWithoutPropertiesLoose","getOwnPropertySymbols","sourceSymbolKeys","propertyIsEnumerable","_defineProperties","descriptor","enumerable","configurable","writable","defineProperty","_getPrototypeOf","setPrototypeOf","getPrototypeOf","__proto__","_setPrototypeOf","_assertThisInitialized","self","ReferenceError","_defineProperty","value","NEWTAB","MIDDLECLICK","OutboundLink_OutboundLink","OutboundLink","_getPrototypeOf2","instance","Constructor","TypeError","_classCallCheck","apply","eventLabel","eventMeta","label","sameTarget","normalClick","ctrlKey","shiftKey","metaKey","button","preventDefault","trackLink","location","protoProps","staticProps","subClass","superClass","create","_inherits","react","ownKeys","filter","sym","getOwnPropertyDescriptor","forEach","_objectSpread","rel","react_default","esm_objectWithoutProperties","esm_objectWithoutPropertiesLoose","esm_defineProperty","esm_typeof","_toConsumableArray","arr","isArray","arr2","_arrayWithoutHoles","iter","toString","from","_iterableToArray","_nonIterableSpread","prop_types_default","func","_debug","_titleCase","_testMode","_alwaysSendToDefaultTracker","esm_internalGa","_window","_format","_gaCommand","trackerNames","command","name","slice","_initialize","gaTrackingID","gaOptions","_len2","_key2","JSON","stringify","send","fieldObject","esm_plugin","require","rawName","execute","pluginName","payload","actionType","undefined","outboundLink","hitCallback","hitType","eventCategory","eventAction","safetyCallbackCalled","t","setTimeout","clearTimeout","origTrackLink","esm_OutboundLink","__webpack_exports__","configsOrTrackingId","testMode","standardImplementation","alwaysSendToDefaultTracker","config","trackingId","set","fieldsObject","pageview","rawPath","extraFields","esm_objectSpread","page","extraLog","modalview","rawModalName","modalName","substring","timing","variable","timingCategory","timingVar","timingValue","timingLabel","_ref2","nonInteraction","transport","eventValue","exception","_ref3","description","fatal","exDescription","exFatal","plugin"],"mappings":"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","file":"6-9e5436c3d5186ba1862a.js","sourcesContent":["import './BodyText.scss';\n\nimport Parser from 'html-react-parser';\nimport PropTypes from 'prop-types';\nimport React from 'react';\n\nexport const BodyText = ({\n text,\n className,\n heading,\n headingFontSize,\n bold,\n centered,\n noPadding,\n headingFont,\n ...props\n}) => {\n const classes = [];\n\n centered && classes.push('centered');\n bold && classes.push('bold');\n noPadding && classes.push('body-text--no-padding');\n headingFont && classes.push('heading-font');\n\n const getHeading = () => {\n if (heading) {\n const Heading = heading.level;\n return (\n \n {heading.title}\n \n );\n } else {\n return null;\n }\n };\n\n return (\n
\n {heading.title && getHeading()}\n {text && typeof text === 'string' ? (\n

{text}

\n ) : (\n text &&\n text.map(p => (\n
\n {Parser(p)}\n
\n ))\n )}\n
\n );\n};\n\nBodyText.defaultProps = {\n heading: { title: '', level: 'h2' },\n text: '',\n className: '',\n centered: false,\n bold: false,\n noPadding: false,\n};\n\nBodyText.propTypes = {\n heading: PropTypes.shape({\n text: PropTypes.string,\n level: PropTypes.string,\n }),\n headingFontSize: PropTypes.string,\n text: PropTypes.oneOfType([PropTypes.string, PropTypes.array]),\n className: PropTypes.string,\n centered: PropTypes.bool,\n bold: PropTypes.bool,\n noPadding: PropTypes.bool,\n};\n","module.exports = [\n 'fullstack',\n 'full stack open 2019',\n 'course',\n 'helsingin yliopisto',\n 'tietojenkäsittelytieteen osasto',\n 'mooc',\n 'mooc.fi',\n 'full stack',\n 'full stack open',\n 'web-sovelluskehitys',\n 'web',\n 'houston',\n 'houston inc',\n 'websovelluskehitys',\n 'web-sovellus',\n 'React',\n 'Redux',\n 'Node.js',\n 'Node',\n 'MongoDB',\n 'GraphQL',\n 'REST',\n 'REST api',\n 'single page -sovellus',\n 'ohjelmointi',\n 'university of helsinki',\n 'department of computer science',\n 'web development',\n 'software development',\n 'web',\n 'web application',\n 'single page app',\n 'programming'\n];\n","import './Footer.scss';\n\nimport Element from '../Element/Element';\nimport { Image } from '../Image/Image';\nimport { Link } from 'gatsby';\nimport React from 'react';\nimport houston from '../../images/company_logos/houston.svg';\nimport { navigation } from '../Navigation/Navigation';\nimport yliopisto from '../../images/company_logos/uoh_centre.svg';\n\nconst images = [\n {\n src: yliopisto,\n alt: 'Helsingin yliopiston logo',\n href: 'https://www.helsinki.fi/',\n },\n {\n src: houston,\n alt: 'Houston inc. logo',\n href: 'https://www.houston-inc.com/',\n },\n];\n\nconst Footer = ({ lang }) => (\n \n \n {images.map(image => (\n \n {image.alt}\n \n ))}\n \n\n \n
\n {navigation[lang].map(item => (\n \n {item.text}\n \n ))}\n
\n \n \n);\n\nexport default Footer;\n","import './SubHeader.scss';\n\nimport PropTypes from 'prop-types';\nimport React from 'react';\n\nexport const SubHeader = ({\n className,\n headingLevel = 'h2',\n headingFontSize,\n text,\n ...props\n}) => {\n const Heading = headingLevel;\n\n return (\n \n {text}\n \n );\n};\n\nSubHeader.propTypes = {\n className: PropTypes.string,\n headingLevel: PropTypes.string,\n text: PropTypes.string.isRequired,\n headingFontSize: PropTypes.string,\n};\n\nSubHeader.defaultProps = {\n className: '',\n};\n","import './Accordion.scss';\n\nimport React, { Component } from 'react';\n\nimport { BodyText } from '../BodyText/BodyText';\nimport { Link } from 'gatsby';\nimport PropTypes from 'prop-types';\nimport ReactGA from 'react-ga';\n\nReactGA.initialize('UA-135975842-1');\n\nclass Accordion extends Component {\n constructor(props) {\n super(props);\n\n this.state = {\n isOpened: false,\n };\n }\n\n componentDidMount() {\n this.props.initiallyOpened && this.setState({ isOpened: true });\n }\n\n handleClick() {\n const { isOpened } = this.state;\n const { title, track } = this.props;\n\n this.setState({ isOpened: !isOpened }, () => {\n track &&\n ReactGA.event({\n category: 'FAQ',\n action: `${title} ${!isOpened ? 'expanded' : 'closed'}`,\n });\n });\n }\n\n render() {\n const {\n title,\n content,\n className,\n containerClassName,\n list,\n titleStyle,\n } = this.props;\n const { isOpened } = this.state;\n\n return (\n \n this.handleClick()}\n >\n {title}\n \n \n {content && (\n \n )}\n {list && (\n
    \n {list.map(l => (\n
  • \n {l.text}\n
  • \n ))}\n
\n )}\n \n \n );\n }\n}\n\nAccordion.propTypes = {\n title: PropTypes.string.isRequired,\n track: PropTypes.bool,\n content: PropTypes.oneOfType([PropTypes.string, PropTypes.array]),\n list: PropTypes.array,\n className: PropTypes.string,\n containerClassName: PropTypes.string,\n initiallyOpened: PropTypes.bool,\n titleStyle: PropTypes.object,\n};\n\nAccordion.defaultProps = {\n className: '',\n track: false,\n containerClassName: '',\n initiallyOpened: false,\n titleStyle: {},\n};\n\nexport default Accordion;\n","// GA strings need to have leading/trailing whitespace trimmed, and not all\n// browsers have String.prototoype.trim().\nexport default function trim(s) {\n return s.replace(/^\\s+|\\s+$/g, '');\n}","/**\n * To Title Case 2.1 - http://individed.com/code/to-title-case/\n * Copyright 2008-2013 David Gouch. Licensed under the MIT License.\n * https://github.com/gouch/to-title-case\n */\nimport trim from './trim';\nvar smallWords = /^(a|an|and|as|at|but|by|en|for|if|in|nor|of|on|or|per|the|to|vs?\\.?|via)$/i;\nexport default function toTitleCase(string) {\n return trim(string).replace(/[A-Za-z0-9\\u00C0-\\u00FF]+[^\\s-]*/g, function (match, index, title) {\n if (index > 0 && index + match.length !== title.length && match.search(smallWords) > -1 && title.charAt(index - 2) !== ':' && (title.charAt(index + match.length) !== '-' || title.charAt(index - 1) === '-') && title.charAt(index - 1).search(/[^\\s-]/) < 0) {\n return match.toLowerCase();\n }\n\n if (match.substr(1).search(/[A-Z]|\\../) > -1) {\n return match;\n }\n\n return match.charAt(0).toUpperCase() + match.substr(1);\n });\n}","export default function warn(s) {\n console.warn('[react-ga]', s);\n}","import mightBeEmail from './mightBeEmail';\nimport toTitleCase from './toTitleCase';\nimport warn from './console/warn';\nvar redacted = 'REDACTED (Potential Email Address)';\nexport default function format(s, titleCase) {\n if (mightBeEmail(s)) {\n warn('This arg looks like an email address, redacting.');\n return redacted;\n }\n\n if (titleCase) {\n return toTitleCase(s);\n }\n\n return s;\n}","// See if s could be an email address. We don't want to send personal data like email.\n// https://support.google.com/analytics/answer/2795983?hl=en\nexport default function mightBeEmail(s) {\n // There's no point trying to validate rfc822 fully, just look for ...@...\n return /[^@]+@[^@]+/.test(s);\n}","export default function (options) {\n var gaAddress = 'https://www.google-analytics.com/analytics.js';\n\n if (options && options.gaAddress) {\n gaAddress = options.gaAddress;\n } else if (options && options.debug) {\n gaAddress = 'https://www.google-analytics.com/analytics_debug.js';\n } // https://developers.google.com/analytics/devguides/collection/analyticsjs/\n\n /* eslint-disable */\n\n\n (function (i, s, o, g, r, a, m) {\n i['GoogleAnalyticsObject'] = r;\n i[r] = i[r] || function () {\n (i[r].q = i[r].q || []).push(arguments);\n }, i[r].l = 1 * new Date();\n a = s.createElement(o), m = s.getElementsByTagName(o)[0];\n a.async = 1;\n a.src = g;\n m.parentNode.insertBefore(a, m);\n })(window, document, 'script', gaAddress, 'ga');\n /* eslint-enable */\n\n}","export default function log(s) {\n console.info('[react-ga]', s);\n}","export var gaCalls = [];\nexport default {\n calls: gaCalls,\n ga: function ga() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n gaCalls.push(args.concat());\n },\n resetCalls: function resetCalls() {\n gaCalls.length = 0;\n }\n};","function _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport warn from '../utils/console/warn';\nvar NEWTAB = '_blank';\nvar MIDDLECLICK = 1;\n\nvar OutboundLink =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(OutboundLink, _Component);\n\n function OutboundLink() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, OutboundLink);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(OutboundLink)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"handleClick\", function (event) {\n var _this$props = _this.props,\n target = _this$props.target,\n eventLabel = _this$props.eventLabel,\n to = _this$props.to,\n onClick = _this$props.onClick;\n var eventMeta = {\n label: eventLabel\n };\n var sameTarget = target !== NEWTAB;\n var normalClick = !(event.ctrlKey || event.shiftKey || event.metaKey || event.button === MIDDLECLICK);\n\n if (sameTarget && normalClick) {\n event.preventDefault();\n OutboundLink.trackLink(eventMeta, function () {\n window.location.href = to;\n });\n } else {\n OutboundLink.trackLink(eventMeta, function () {});\n }\n\n if (onClick) {\n onClick(event);\n }\n });\n\n return _this;\n }\n\n _createClass(OutboundLink, [{\n key: \"render\",\n value: function render() {\n var _this$props2 = this.props,\n href = _this$props2.to,\n oldProps = _objectWithoutProperties(_this$props2, [\"to\"]);\n\n var props = _objectSpread({}, oldProps, {\n href: href,\n onClick: this.handleClick\n });\n\n if (this.props.target === NEWTAB) {\n props.rel = 'noopener noreferrer';\n }\n\n delete props.eventLabel;\n return React.createElement('a', props);\n }\n }]);\n\n return OutboundLink;\n}(Component);\n\n_defineProperty(OutboundLink, \"trackLink\", function () {\n warn('ga tracking not enabled');\n});\n\n_defineProperty(OutboundLink, \"propTypes\", {\n eventLabel: PropTypes.string.isRequired,\n target: PropTypes.string,\n to: PropTypes.string,\n onClick: PropTypes.func\n});\n\n_defineProperty(OutboundLink, \"defaultProps\", {\n target: null,\n to: null,\n onClick: null\n});\n\nexport { OutboundLink as default };","function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance\"); }\n\nfunction _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }\n\n/**\n * React Google Analytics Module\n *\n * @package react-ga\n * @author Adam Lofting \n * Atul Varma \n */\n\n/**\n * Utilities\n */\nimport format from './utils/format';\nimport removeLeadingSlash from './utils/removeLeadingSlash';\nimport trim from './utils/trim';\nimport loadGA from './utils/loadGA';\nimport warn from './utils/console/warn';\nimport log from './utils/console/log';\nimport TestModeAPI from './utils/testModeAPI';\nimport UnboundOutboundLink from './components/OutboundLink';\nvar _debug = false;\nvar _titleCase = true;\nvar _testMode = false;\nvar _alwaysSendToDefaultTracker = true;\n\nvar internalGa = function internalGa() {\n var _window;\n\n if (_testMode) return TestModeAPI.ga.apply(TestModeAPI, arguments);\n if (typeof window === 'undefined') return false;\n if (!window.ga) return warn('ReactGA.initialize must be called first or GoogleAnalytics should be loaded manually');\n return (_window = window).ga.apply(_window, arguments);\n};\n\nfunction _format(s) {\n return format(s, _titleCase);\n}\n\nfunction _gaCommand(trackerNames) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n var command = args[0];\n\n if (typeof internalGa === 'function') {\n if (typeof command !== 'string') {\n warn('ga command must be a string');\n return;\n }\n\n if (_alwaysSendToDefaultTracker || !Array.isArray(trackerNames)) internalGa.apply(void 0, args);\n\n if (Array.isArray(trackerNames)) {\n trackerNames.forEach(function (name) {\n internalGa.apply(void 0, _toConsumableArray([\"\".concat(name, \".\").concat(command)].concat(args.slice(1))));\n });\n }\n }\n}\n\nfunction _initialize(gaTrackingID, options) {\n if (!gaTrackingID) {\n warn('gaTrackingID is required in initialize()');\n return;\n }\n\n if (options) {\n if (options.debug && options.debug === true) {\n _debug = true;\n }\n\n if (options.titleCase === false) {\n _titleCase = false;\n }\n }\n\n if (options && options.gaOptions) {\n internalGa('create', gaTrackingID, options.gaOptions);\n } else {\n internalGa('create', gaTrackingID, 'auto');\n }\n}\n\nexport function initialize(configsOrTrackingId, options) {\n if (options && options.testMode === true) {\n _testMode = true;\n } else {\n if (typeof window === 'undefined') {\n return false;\n }\n\n if (!options || options.standardImplementation !== true) loadGA(options);\n }\n\n _alwaysSendToDefaultTracker = options && typeof options.alwaysSendToDefaultTracker === 'boolean' ? options.alwaysSendToDefaultTracker : true;\n\n if (Array.isArray(configsOrTrackingId)) {\n configsOrTrackingId.forEach(function (config) {\n if (_typeof(config) !== 'object') {\n warn('All configs must be an object');\n return;\n }\n\n _initialize(config.trackingId, config);\n });\n } else {\n _initialize(configsOrTrackingId, options);\n }\n\n return true;\n}\n/**\n * ga:\n * Returns the original GA object.\n */\n\nexport function ga() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n if (args.length > 0) {\n internalGa.apply(void 0, args);\n\n if (_debug) {\n log('called ga(\\'arguments\\');');\n log(\"with arguments: \".concat(JSON.stringify(args)));\n }\n }\n\n return window.ga;\n}\n/**\n * set:\n * GA tracker set method\n * @param {Object} fieldsObject - a field/value pair or a group of field/value pairs on the tracker\n * @param {Array} trackerNames - (optional) a list of extra trackers to run the command on\n */\n\nexport function set(fieldsObject, trackerNames) {\n if (!fieldsObject) {\n warn('`fieldsObject` is required in .set()');\n return;\n }\n\n if (_typeof(fieldsObject) !== 'object') {\n warn('Expected `fieldsObject` arg to be an Object');\n return;\n }\n\n if (Object.keys(fieldsObject).length === 0) {\n warn('empty `fieldsObject` given to .set()');\n }\n\n _gaCommand(trackerNames, 'set', fieldsObject);\n\n if (_debug) {\n log('called ga(\\'set\\', fieldsObject);');\n log(\"with fieldsObject: \".concat(JSON.stringify(fieldsObject)));\n }\n}\n/**\n * send:\n * Clone of the low level `ga.send` method\n * WARNING: No validations will be applied to this\n * @param {Object} fieldObject - field object for tracking different analytics\n * @param {Array} trackerNames - trackers to send the command to\n * @param {Array} trackerNames - (optional) a list of extra trackers to run the command on\n */\n\nexport function send(fieldObject, trackerNames) {\n _gaCommand(trackerNames, 'send', fieldObject);\n\n if (_debug) {\n log('called ga(\\'send\\', fieldObject);');\n log(\"with fieldObject: \".concat(JSON.stringify(fieldObject)));\n log(\"with trackers: \".concat(JSON.stringify(trackerNames)));\n }\n}\n/**\n * pageview:\n * Basic GA pageview tracking\n * @param {String} path - the current page page e.g. '/about'\n * @param {Array} trackerNames - (optional) a list of extra trackers to run the command on\n * @param {String} title - (optional) the page title e. g. 'My Website'\n */\n\nexport function pageview(rawPath, trackerNames, title) {\n if (!rawPath) {\n warn('path is required in .pageview()');\n return;\n }\n\n var path = trim(rawPath);\n\n if (path === '') {\n warn('path cannot be an empty string in .pageview()');\n return;\n }\n\n var extraFields = {};\n\n if (title) {\n extraFields.title = title;\n }\n\n if (typeof ga === 'function') {\n _gaCommand(trackerNames, 'send', _objectSpread({\n hitType: 'pageview',\n page: path\n }, extraFields));\n\n if (_debug) {\n log('called ga(\\'send\\', \\'pageview\\', path);');\n var extraLog = '';\n\n if (title) {\n extraLog = \" and title: \".concat(title);\n }\n\n log(\"with path: \".concat(path).concat(extraLog));\n }\n }\n}\n/**\n * modalview:\n * a proxy to basic GA pageview tracking to consistently track\n * modal views that are an equivalent UX to a traditional pageview\n * @param {String} modalName e.g. 'add-or-edit-club'\n * @param {Array} trackerNames - (optional) a list of extra trackers to run the command on\n */\n\nexport function modalview(rawModalName, trackerNames) {\n if (!rawModalName) {\n warn('modalName is required in .modalview(modalName)');\n return;\n }\n\n var modalName = removeLeadingSlash(trim(rawModalName));\n\n if (modalName === '') {\n warn('modalName cannot be an empty string or a single / in .modalview()');\n return;\n }\n\n if (typeof ga === 'function') {\n var path = \"/modal/\".concat(modalName);\n\n _gaCommand(trackerNames, 'send', 'pageview', path);\n\n if (_debug) {\n log('called ga(\\'send\\', \\'pageview\\', path);');\n log(\"with path: \".concat(path));\n }\n }\n}\n/**\n * timing:\n * GA timing\n * @param args.category {String} required\n * @param args.variable {String} required\n * @param args.value {Int} required\n * @param args.label {String} required\n * @param {Array} trackerNames - (optional) a list of extra trackers to run the command on\n */\n\nexport function timing() {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n category = _ref.category,\n variable = _ref.variable,\n value = _ref.value,\n label = _ref.label;\n\n var trackerNames = arguments.length > 1 ? arguments[1] : undefined;\n\n if (typeof ga === 'function') {\n if (!category || !variable || !value || typeof value !== 'number') {\n warn('args.category, args.variable ' + 'AND args.value are required in timing() ' + 'AND args.value has to be a number');\n return;\n } // Required Fields\n\n\n var fieldObject = {\n hitType: 'timing',\n timingCategory: _format(category),\n timingVar: _format(variable),\n timingValue: value\n };\n\n if (label) {\n fieldObject.timingLabel = _format(label);\n }\n\n send(fieldObject, trackerNames);\n }\n}\n/**\n * event:\n * GA event tracking\n * @param args.category {String} required\n * @param args.action {String} required\n * @param args.label {String} optional\n * @param args.value {Int} optional\n * @param args.nonInteraction {boolean} optional\n * @param args.transport {string} optional\n * @param {Array} trackerNames - (optional) a list of extra trackers to run the command on\n */\n\nexport function event() {\n var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n category = _ref2.category,\n action = _ref2.action,\n label = _ref2.label,\n value = _ref2.value,\n nonInteraction = _ref2.nonInteraction,\n transport = _ref2.transport,\n args = _objectWithoutProperties(_ref2, [\"category\", \"action\", \"label\", \"value\", \"nonInteraction\", \"transport\"]);\n\n var trackerNames = arguments.length > 1 ? arguments[1] : undefined;\n\n if (typeof ga === 'function') {\n // Simple Validation\n if (!category || !action) {\n warn('args.category AND args.action are required in event()');\n return;\n } // Required Fields\n\n\n var fieldObject = {\n hitType: 'event',\n eventCategory: _format(category),\n eventAction: _format(action)\n }; // Optional Fields\n\n if (label) {\n fieldObject.eventLabel = _format(label);\n }\n\n if (typeof value !== 'undefined') {\n if (typeof value !== 'number') {\n warn('Expected `args.value` arg to be a Number.');\n } else {\n fieldObject.eventValue = value;\n }\n }\n\n if (typeof nonInteraction !== 'undefined') {\n if (typeof nonInteraction !== 'boolean') {\n warn('`args.nonInteraction` must be a boolean.');\n } else {\n fieldObject.nonInteraction = nonInteraction;\n }\n }\n\n if (typeof transport !== 'undefined') {\n if (typeof transport !== 'string') {\n warn('`args.transport` must be a string.');\n } else {\n if (['beacon', 'xhr', 'image'].indexOf(transport) === -1) {\n warn('`args.transport` must be either one of these values: `beacon`, `xhr` or `image`');\n }\n\n fieldObject.transport = transport;\n }\n }\n\n Object.keys(args).filter(function (key) {\n return key.substr(0, 'dimension'.length) === 'dimension';\n }).forEach(function (key) {\n fieldObject[key] = args[key];\n });\n Object.keys(args).filter(function (key) {\n return key.substr(0, 'metric'.length) === 'metric';\n }).forEach(function (key) {\n fieldObject[key] = args[key];\n }); // Send to GA\n\n send(fieldObject, trackerNames);\n }\n}\n/**\n * exception:\n * GA exception tracking\n * @param args.description {String} optional\n * @param args.fatal {boolean} optional\n * @param {Array} trackerNames - (optional) a list of extra trackers to run the command on\n */\n\nexport function exception(_ref3, trackerNames) {\n var description = _ref3.description,\n fatal = _ref3.fatal;\n\n if (typeof ga === 'function') {\n // Required Fields\n var fieldObject = {\n hitType: 'exception'\n }; // Optional Fields\n\n if (description) {\n fieldObject.exDescription = _format(description);\n }\n\n if (typeof fatal !== 'undefined') {\n if (typeof fatal !== 'boolean') {\n warn('`args.fatal` must be a boolean.');\n } else {\n fieldObject.exFatal = fatal;\n }\n } // Send to GA\n\n\n send(fieldObject, trackerNames);\n }\n}\nexport var plugin = {\n /**\n * require:\n * GA requires a plugin\n * @param name {String} e.g. 'ecommerce' or 'myplugin'\n * @param options {Object} optional e.g {path: '/log', debug: true}\n */\n require: function require(rawName, options) {\n if (typeof ga === 'function') {\n // Required Fields\n if (!rawName) {\n warn('`name` is required in .require()');\n return;\n }\n\n var name = trim(rawName);\n\n if (name === '') {\n warn('`name` cannot be an empty string in .require()');\n return;\n } // Optional Fields\n\n\n if (options) {\n if (_typeof(options) !== 'object') {\n warn('Expected `options` arg to be an Object');\n return;\n }\n\n if (Object.keys(options).length === 0) {\n warn('Empty `options` given to .require()');\n }\n\n ga('require', name, options);\n\n if (_debug) {\n log(\"called ga('require', '\".concat(name, \"', \").concat(JSON.stringify(options)));\n }\n } else {\n ga('require', name);\n\n if (_debug) {\n log(\"called ga('require', '\".concat(name, \"');\"));\n }\n }\n }\n },\n\n /**\n * execute:\n * GA execute action for plugin\n * Takes variable number of arguments\n * @param pluginName {String} e.g. 'ecommerce' or 'myplugin'\n * @param action {String} e.g. 'addItem' or 'myCustomAction'\n * @param actionType {String} optional e.g. 'detail'\n * @param payload {Object} optional e.g { id: '1x5e', name : 'My product to track' }\n */\n execute: function execute(pluginName, action) {\n var payload;\n var actionType;\n\n if ((arguments.length <= 2 ? 0 : arguments.length - 2) === 1) {\n payload = arguments.length <= 2 ? undefined : arguments[2];\n } else {\n actionType = arguments.length <= 2 ? undefined : arguments[2];\n payload = arguments.length <= 3 ? undefined : arguments[3];\n }\n\n if (typeof ga === 'function') {\n if (typeof pluginName !== 'string') {\n warn('Expected `pluginName` arg to be a String.');\n } else if (typeof action !== 'string') {\n warn('Expected `action` arg to be a String.');\n } else {\n var command = \"\".concat(pluginName, \":\").concat(action);\n payload = payload || null;\n\n if (actionType && payload) {\n ga(command, actionType, payload);\n\n if (_debug) {\n log(\"called ga('\".concat(command, \"');\"));\n log(\"actionType: \\\"\".concat(actionType, \"\\\" with payload: \").concat(JSON.stringify(payload)));\n }\n } else if (payload) {\n ga(command, payload);\n\n if (_debug) {\n log(\"called ga('\".concat(command, \"');\"));\n log(\"with payload: \".concat(JSON.stringify(payload)));\n }\n } else {\n ga(command);\n\n if (_debug) {\n log(\"called ga('\".concat(command, \"');\"));\n }\n }\n }\n }\n }\n};\n/**\n * outboundLink:\n * GA outboundLink tracking\n * @param args.label {String} e.g. url, or 'Create an Account'\n * @param {function} hitCallback - Called after processing a hit.\n */\n\nexport function outboundLink(args, hitCallback, trackerNames) {\n if (typeof hitCallback !== 'function') {\n warn('hitCallback function is required');\n return;\n }\n\n if (typeof ga === 'function') {\n // Simple Validation\n if (!args || !args.label) {\n warn('args.label is required in outboundLink()');\n return;\n } // Required Fields\n\n\n var fieldObject = {\n hitType: 'event',\n eventCategory: 'Outbound',\n eventAction: 'Click',\n eventLabel: _format(args.label)\n };\n var safetyCallbackCalled = false;\n\n var safetyCallback = function safetyCallback() {\n // This prevents a delayed response from GA\n // causing hitCallback from being fired twice\n safetyCallbackCalled = true;\n hitCallback();\n }; // Using a timeout to ensure the execution of critical application code\n // in the case when the GA server might be down\n // or an ad blocker prevents sending the data\n // register safety net timeout:\n\n\n var t = setTimeout(safetyCallback, 250);\n\n var clearableCallbackForGA = function clearableCallbackForGA() {\n clearTimeout(t);\n\n if (!safetyCallbackCalled) {\n hitCallback();\n }\n };\n\n fieldObject.hitCallback = clearableCallbackForGA; // Send to GA\n\n send(fieldObject, trackerNames);\n } else {\n // if ga is not defined, return the callback so the application\n // continues to work as expected\n setTimeout(hitCallback, 0);\n }\n}\nUnboundOutboundLink.origTrackLink = UnboundOutboundLink.trackLink;\nUnboundOutboundLink.trackLink = outboundLink;\nexport var OutboundLink = UnboundOutboundLink;\nexport var testModeAPI = TestModeAPI;\nexport default {\n initialize: initialize,\n ga: ga,\n set: set,\n send: send,\n pageview: pageview,\n modalview: modalview,\n timing: timing,\n event: event,\n exception: exception,\n plugin: plugin,\n outboundLink: outboundLink,\n OutboundLink: OutboundLink,\n testModeAPI: TestModeAPI\n};","export default function removeLeadingSlash(string) {\n if (string.substring(0, 1) === '/') {\n return string.substring(1);\n }\n\n return string;\n}"],"sourceRoot":""} \ No newline at end of file diff --git a/6-f2e81accf0c29e3f37fd.js b/6-f2e81accf0c29e3f37fd.js new file mode 100644 index 000000000..00779eb4c --- /dev/null +++ b/6-f2e81accf0c29e3f37fd.js @@ -0,0 +1,2 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[6],{151:function(e,t,n){"use strict";n.d(t,"a",function(){return f});n(28),n(245);var a=n(148),i=n.n(a),o=(n(224),n(247)),r=n.n(o),s=n(4),l=n.n(s),c=n(0),u=n.n(c),f=function(e){var t=e.text,n=e.className,a=e.heading,o=e.headingFontSize,s=e.bold,l=e.centered,c=e.noPadding,f=e.headingFont,p=i()(e,["text","className","heading","headingFontSize","bold","centered","noPadding","headingFont"]),h=[];l&&h.push("centered"),s&&h.push("bold"),c&&h.push("body-text--no-padding"),f&&h.push("heading-font");return u.a.createElement("div",Object.assign({className:"body-text "+n},p),a.title&&function(){if(a){var e=a.level;return u.a.createElement(e,{className:"body-text__title",style:o?{fontSize:o}:{}},a.title)}return null}(),t&&"string"==typeof t?u.a.createElement("p",{className:"body-text__content "+h.join(" ")},t):t&&t.map(function(e){return u.a.createElement("div",{key:e,className:"body-text__content "+h.join(" ")},r()(e))}))};f.defaultProps={heading:{title:"",level:"h2"},text:"",className:"",centered:!1,bold:!1,noPadding:!1},f.propTypes={heading:l.a.shape({text:l.a.string,level:l.a.string}),headingFontSize:l.a.string,text:l.a.oneOfType([l.a.string,l.a.array]),className:l.a.string,centered:l.a.bool,bold:l.a.bool,noPadding:l.a.bool}},157:function(e,t){e.exports=["fullstack","full stack open 2019","course","helsingin yliopisto","tietojenkäsittelytieteen osasto","mooc","mooc.fi","full stack","full stack open","web-sovelluskehitys","web","houston","houston inc","websovelluskehitys","web-sovellus","React","Redux","Node.js","Node","MongoDB","GraphQL","REST","REST api","single page -sovellus","ohjelmointi","university of helsinki","department of computer science","web development","software development","web","web application","single page app","programming"]},159:function(e,t,n){"use strict";n(163);var a=n(147),i=n(149),o=n(146),r=n(0),s=n.n(r),l=n(155),c=n.n(l),u=n(220),f=n(152),p=[{src:n.n(f).a,alt:"Helsingin yliopiston logo",href:"https://www.helsinki.fi/"},{src:c.a,alt:"Houston inc. logo",href:"https://www.houston-inc.com/"}];t.a=function(e){var t=e.lang;return s.a.createElement(a.a,{id:"footer",className:"container spacing--after-small spacing--mobile",flex:!0},s.a.createElement(a.a,{className:"col-5 push-right-3 col-10--mobile order-2--mobile order-2--tablet footer__links",flex:!0,spaceBetween:!0},p.map(function(e){return s.a.createElement("a",{key:e.alt,href:e.href,className:"col-5 col-4--mobile spacing--mobile"},s.a.createElement(i.a,{contain:!0,src:e.src,alt:e.alt,className:"col-6"}))})),s.a.createElement(a.a,{flex:!0,className:"col-5 col-5--mobile order-1--mobile order-1--tablet footer__navigation"},s.a.createElement("div",{className:"footer__navigation-link-container"},u.b[t].map(function(e){return s.a.createElement(o.Link,{key:e.path,to:e.path,className:"footer__navigation-link nav-item-hover",style:{marginLeft:"4.5rem"}},e.text)}))))}},163:function(e,t,n){},224:function(e,t,n){},227:function(e,t,n){"use strict";n.d(t,"a",function(){return c});n(28);var a=n(148),i=n.n(a),o=(n(242),n(4)),r=n.n(o),s=n(0),l=n.n(s),c=function(e){var t=e.className,n=e.headingLevel,a=void 0===n?"h2":n,o=e.headingFontSize,r=e.text,s=i()(e,["className","headingLevel","headingFontSize","text"]),c=a;return l.a.createElement(c,Object.assign({className:"sub-header "+t,style:o?{fontSize:o}:{}},s),r)};c.propTypes={className:r.a.string,headingLevel:r.a.string,text:r.a.string.isRequired,headingFontSize:r.a.string},c.defaultProps={className:""}},242:function(e,t,n){},324:function(e,t,n){"use strict";var a=n(6),i=n.n(a),o=(n(363),n(0)),r=n.n(o),s=n(151),l=n(146),c=n(4),u=n.n(c),f=n(401);f.a.initialize("UA-135975842-1");var p=function(e){function t(t){var n;return(n=e.call(this,t)||this).state={isOpened:!1},n}i()(t,e);var n=t.prototype;return n.componentDidMount=function(){this.props.initiallyOpened&&this.setState({isOpened:!0})},n.handleClick=function(){var e=this.state.isOpened,t=this.props,n=t.title,a=t.track;this.setState({isOpened:!e},function(){a&&f.a.event({category:"FAQ",action:n+" "+(e?"closed":"expanded")})})},n.render=function(){var e=this,t=this.props,n=t.title,a=t.content,i=t.className,o=t.containerClassName,c=t.list,u=t.titleStyle,f=this.state.isOpened;return r.a.createElement("div",{className:"accordion__container col-8 push-right-1 "+o},r.a.createElement("button",{className:"accordion accordion__title "+(f?"active":"")+" "+i,style:u,onClick:function(){return e.handleClick()}},n),r.a.createElement("div",{className:"panel",style:{padding:f?"2rem 18px":"",maxHeight:""+(f?"unset":0),transition:"max-height 0.2s ease-out"}},a&&r.a.createElement(s.a,{className:"col-8 push-right-1",text:a}),c&&r.a.createElement("ul",null,c.map(function(e){return r.a.createElement("li",{key:e.text},r.a.createElement(l.Link,{to:e.href},e.text))}))))},t}(o.Component);p.propTypes={title:u.a.string.isRequired,track:u.a.bool,content:u.a.oneOfType([u.a.string,u.a.array]),list:u.a.array,className:u.a.string,containerClassName:u.a.string,initiallyOpened:u.a.bool,titleStyle:u.a.object},p.defaultProps={className:"",track:!1,containerClassName:"",initiallyOpened:!1,titleStyle:{}},t.a=p},363:function(e,t,n){},401:function(e,t,n){"use strict";function a(e){return e.replace(/^\s+|\s+$/g,"")}var i=/^(a|an|and|as|at|but|by|en|for|if|in|nor|of|on|or|per|the|to|vs?\.?|via)$/i;function o(e){console.warn("[react-ga]",e)}var r="REDACTED (Potential Email Address)";function s(e,t){return function(e){return/[^@]+@[^@]+/.test(e)}(e)?(o("This arg looks like an email address, redacting."),r):t?a(e).replace(/[A-Za-z0-9\u00C0-\u00FF]+[^\s-]*/g,function(e,t,n){return t>0&&t+e.length!==n.length&&e.search(i)>-1&&":"!==n.charAt(t-2)&&("-"!==n.charAt(t+e.length)||"-"===n.charAt(t-1))&&n.charAt(t-1).search(/[^\s-]/)<0?e.toLowerCase():e.substr(1).search(/[A-Z]|\../)>-1?e:e.charAt(0).toUpperCase()+e.substr(1)}):e}var l=function(e){var t,n,a,i,o,r,s,l="https://www.google-analytics.com/analytics.js";e&&e.gaAddress?l=e.gaAddress:e&&e.debug&&(l="https://www.google-analytics.com/analytics_debug.js"),t=window,n=document,a="script",i=l,o="ga",t.GoogleAnalyticsObject=o,t.ga=t.ga||function(){(t.ga.q=t.ga.q||[]).push(arguments)},t.ga.l=1*new Date,r=n.createElement(a),s=n.getElementsByTagName(a)[0],r.async=1,r.src=i,s.parentNode.insertBefore(r,s)};function c(e){console.info("[react-ga]",e)}var u=[],f={calls:u,ga:function(){for(var e=arguments.length,t=new Array(e),n=0;n=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}function b(e,t){for(var n=0;n=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}function N(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function T(e){return(T="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function _(e){return function(e){if(Array.isArray(e)){for(var t=0,n=new Array(e.length);t1?t-1:0),a=1;a0&&(L.apply(void 0,t),A&&(c("called ga('arguments');"),c("with arguments: ".concat(JSON.stringify(t))))),window.ga}function J(e,t){q(t,"send",e),A&&(c("called ga('send', fieldObject);"),c("with fieldObject: ".concat(JSON.stringify(e))),c("with trackers: ".concat(JSON.stringify(t))))}var R={require:function(e,t){if(e){var n=a(e);if(""!==n)if(t){if("object"!==T(t))return void o("Expected `options` arg to be an Object");0===Object.keys(t).length&&o("Empty `options` given to .require()"),z("require",n,t),A&&c("called ga('require', '".concat(n,"', ").concat(JSON.stringify(t)))}else z("require",n),A&&c("called ga('require', '".concat(n,"');"));else o("`name` cannot be an empty string in .require()")}else o("`name` is required in .require()")},execute:function(e,t){var n,a;if(1==(arguments.length<=2?0:arguments.length-2)?n=arguments.length<=2?void 0:arguments[2]:(a=arguments.length<=2?void 0:arguments[2],n=arguments.length<=3?void 0:arguments[3]),"string"!=typeof e)o("Expected `pluginName` arg to be a String.");else if("string"!=typeof t)o("Expected `action` arg to be a String.");else{var i="".concat(e,":").concat(t);n=n||null,a&&n?(z(i,a,n),A&&(c("called ga('".concat(i,"');")),c('actionType: "'.concat(a,'" with payload: ').concat(JSON.stringify(n))))):n?(z(i,n),A&&(c("called ga('".concat(i,"');")),c("with payload: ".concat(JSON.stringify(n))))):(z(i),A&&c("called ga('".concat(i,"');")))}}};function K(e,t,n){if("function"==typeof t)if(e&&e.label){var a={hitType:"event",eventCategory:"Outbound",eventAction:"Click",eventLabel:I(e.label)},i=!1,r=setTimeout(function(){i=!0,t()},250);a.hitCallback=function(){clearTimeout(r),i||t()},J(a,n)}else o("args.label is required in outboundLink()");else o("hitCallback function is required")}S.origTrackLink=S.trackLink,S.trackLink=K;var M=S;t.a={initialize:function(e,t){if(t&&!0===t.testMode)P=!0;else{if("undefined"==typeof window)return!1;t&&!0===t.standardImplementation||l(t)}return F=!t||"boolean"!=typeof t.alwaysSendToDefaultTracker||t.alwaysSendToDefaultTracker,Array.isArray(e)?e.forEach(function(e){"object"===T(e)?D(e.trackingId,e):o("All configs must be an object")}):D(e,t),!0},ga:z,set:function(e,t){e?"object"===T(e)?(0===Object.keys(e).length&&o("empty `fieldsObject` given to .set()"),q(t,"set",e),A&&(c("called ga('set', fieldsObject);"),c("with fieldsObject: ".concat(JSON.stringify(e))))):o("Expected `fieldsObject` arg to be an Object"):o("`fieldsObject` is required in .set()")},send:J,pageview:function(e,t,n){if(e){var i=a(e);if(""!==i){var r={};if(n&&(r.title=n),q(t,"send",function(e){for(var t=1;t0&&void 0!==arguments[0]?arguments[0]:{},t=e.category,n=e.variable,a=e.value,i=e.label,r=arguments.length>1?arguments[1]:void 0;if(t&&n&&a&&"number"==typeof a){var s={hitType:"timing",timingCategory:I(t),timingVar:I(n),timingValue:a};i&&(s.timingLabel=I(i)),J(s,r)}else o("args.category, args.variable AND args.value are required in timing() AND args.value has to be a number")},event:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.category,n=e.action,a=e.label,i=e.value,r=e.nonInteraction,s=e.transport,l=E(e,["category","action","label","value","nonInteraction","transport"]),c=arguments.length>1?arguments[1]:void 0;if(t&&n){var u={hitType:"event",eventCategory:I(t),eventAction:I(n)};a&&(u.eventLabel=I(a)),void 0!==i&&("number"!=typeof i?o("Expected `args.value` arg to be a Number."):u.eventValue=i),void 0!==r&&("boolean"!=typeof r?o("`args.nonInteraction` must be a boolean."):u.nonInteraction=r),void 0!==s&&("string"!=typeof s?o("`args.transport` must be a string."):(-1===["beacon","xhr","image"].indexOf(s)&&o("`args.transport` must be either one of these values: `beacon`, `xhr` or `image`"),u.transport=s)),Object.keys(l).filter(function(e){return"dimension"===e.substr(0,"dimension".length)}).forEach(function(e){u[e]=l[e]}),Object.keys(l).filter(function(e){return"metric"===e.substr(0,"metric".length)}).forEach(function(e){u[e]=l[e]}),J(u,c)}else o("args.category AND args.action are required in event()")},exception:function(e,t){var n=e.description,a=e.fatal,i={hitType:"exception"};n&&(i.exDescription=I(n)),void 0!==a&&("boolean"!=typeof a?o("`args.fatal` must be a boolean."):i.exFatal=a),J(i,t)},plugin:R,outboundLink:K,OutboundLink:M,testModeAPI:f}},452:function(e){e.exports={fi:[{title:"Ilmestyykö kurssista uusi versio 2020?",text:["Kyllä, uusi versio ilmestyy 15.3.2020. Uuden version osat 0-4 eivät poikkea radikaalisti vuoden 2019 versiosta. Osissa 5-8 on jonkun verran muutoksia.

Päivitetyn materiaalin osat 0-7 ovat jo nähtävillä täällä.

Kurssin on myös tulossa uusi Typescriptiä käsittelevä osa.

Vuoden 2019 versiota voi laajentaa 2020 versiossa tämän ohjeen mukaisesti."]},{title:"Miten kurssille ilmoittaudutaan?",text:["Kurssille ei tarvitse varsinaisesti ilmoittautua ennen kuin haluat tehdä kurssin kokeen. Koe tehdään Avoimen yliopiston Moodle-järjestelmään. Katso lisää täältä."]},{title:"Mikä on kurssin laajuus?",text:["Kurssin laajuus on riippuen tekemiesi tehtävien määrästä 3-8 opintopistettä. Suoritettuasi kurssin voit jatkaa aihepiiriin syventymistä 1-10 opintopisteen laajuisen Full stack -harjoitustyön parissa."]},{title:"Milloin on tehtävien ja kokeen deadline?",text:["Etenemisnopeus on vapaa, kurssilla on ainoastaan yksi deadline sekä tehtäville että kokeelle, 10.1.2020 klo 23.59.59. Kannattaa kuitenkin huomata, että kurssille on ilmoittauduttava viimeistään deadlinea edeltävänä päivänä 9.1.2020."]},{title:"Miten tehtävät palautetaan?",text:["Tehtävät palautetaan GitHubin kautta ja merkitsemällä tehdyt tehtävät palautussovellukseen, lue lisää täältä."]},{title:"Pitääkö jokainen osa palauttaa omaan repositorioon?",text:["Ei. Voit käyttää yhtä tai useampaa repositoriota, tärkeintä on, että asiat repositorion sisällä ovat selkeästi nimettyjä."]},{title:"Voinko muokata tekemääni palautusta?",text:["Et. Kaikki osan tehtävät on palautettava kerralla. Jos merkkasit tehtäviä vahingossa väärin tai typotit repositorion nimen, lähetä mailia osoitteeseen matti.luukkainen@helsinki.fi"]},{title:"Milloin ja miten saan kurssilta suoritusmerkinnän?",text:["Saat suoritusmerkinnän sen jälkeen kun olet tehnyt hyväksyttävään suoritukseen oikeuttavan määrän tehtäviä, suorittanut kokeen hyväksytysti ja ilmoittanut palautussovelluksessa olevasi valmis kurssin suorituksen kanssa. Viimeinen mahdollinen suorituspäivä on 10.1.2020. Lue lisää täältä."]},{title:"Voinko laajentaa aiempaa kurssisuoritustani?",text:["Voit, lue lisää täältä"]},{title:"Suoritin kurssin viime vuonna. Miten opin käyttämään React hookeja?",text:["State hookia, eli tapaa määritellä tila funktionaalisille komponenteille käsitellään osassa 1. Lifecycle-metodien roolia hoitavia effect hookeja käsitellään osassa 2. Custom hookeista puhutaan osassa 5"]},{title:"Kuulin että suorittamalla kurssin on mahdollista päästä työhaastatteluun",text:["Pitää paikkansa, jos suoritat täydellä laajuudella kurssin ja siihen liittyvän 10 op:n laajuisen harjoitustyön, pääset yhteistyökumppaniemme työhaastatteluun, lue lisää täältä."]}],en:[{title:"Will there be a new course 2020?",text:["Yes, the new version of the course will start 15.3.2020.

There won't be major changes in the course content. The gereatest change shall be in part 5, where integration testing of frontend will be replaced by E2E testing using Cypres.io.

There will also be an entirely new part about Typescript.

The 2019 version can be expanded in the 2020 version, see more here. "]},{title:"How do I sign up for the course?",text:["You don't have to sign up until you want to do the course exam. The exam is done to the Moodle-system of the Open University. You can find more information here. Please note that only persons with Finnish social security number can get take part to exam and get official ECTS credits. For the course certificate signup or Finnish social security number are not needed."]},{title:"How many credits is the course?",text:["The course is 3-8 ECTS credits depending on the amount of returned exercises. After completing the course you can continue to deepen your knowledge on the subject matter by doing the 1-10 ETCS credit Full Stack project. Please note that only persons with Finnish social security number can get official ECTS credits. For the course certificate signup or Finnish social security number are not needed."]},{title:"When is the deadline for the exercises and the exam?",text:["You can complete the course at your own pace. The course has only one deadline for the exercises and the exams 10th January 2020 at 23.59.59. Do keep in mind that you have to sign up for the exam no later than the day before the deadline 9.1.2020."]},{title:"How do I submit the exercises?",text:["The exercises are submitted to GitHub, and by marking the exercises as done in the exercise submission system. You can read more from here. "]},{title:"Do I have to submit each part to a separate repository?",text:["No. You can use one or more repositories, most important is to name everything in a repository clearly. "]},{title:"Can I edit a submission?",text:["No. All exercises for a part must be submitted at the same time. If you marked exercises wrong by accident, or wrote the repository name wrong, send an e-mail to matti.luukkainen@helsinki.fi."]},{title:"When and how can I get my credits?",text:["You can get your credits after submitting enough exercises for passing the course, passing the course exam and letting us know through the exercise submission system that you are ready with the course. The deadline is 10th January 2020. Read more here. Please note that only persons with Finnish social security number can get official ECTS credits. For the course certificate signup or Finnish social security number are not needed."]},{title:"Do I get a certificate after completing the course?",text:["Yes, certificate is available to all who pass the course by 10th January 2020. You can download the certificate after completing the course from the exercise submission system. For the course certificate signup to Open university and Finnish social security number are not needed."]},{title:"Do I need a Finnish social security number to get the course certificate?",text:["For the course certificate Finnish social security number is not needed. You can download the certificate after completing the course from the exercise submission system."]},{title:"Should I signup to Open University to get the course certificate?",text:["For the course certificate signup to Open University is not needed. You can download the certificate after completing the course from the exercise submission system."]},{title:"I heard that I could get a job interview by completing the course.",text:["That's right. If you complete the course with full credits, and complete the practical work with 10 credits, you get a job interview with our partners. Read more here. Please note that only persons with Finnish social security number can get take part to exam and get official ECTS credits."]}]}}}]); +//# sourceMappingURL=6-f2e81accf0c29e3f37fd.js.map \ No newline at end of file diff --git a/6-f2e81accf0c29e3f37fd.js.map b/6-f2e81accf0c29e3f37fd.js.map new file mode 100644 index 000000000..577b56b9f --- /dev/null +++ b/6-f2e81accf0c29e3f37fd.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///./src/components/BodyText/BodyText.js","webpack:///./src/content/seo/mainSEOtags.js","webpack:///./src/components/Footer/Footer.js","webpack:///./src/components/SubHeader/SubHeader.js","webpack:///./src/components/Accordion/Accordion.js","webpack:///./node_modules/react-ga/dist/esm/utils/trim.js","webpack:///./node_modules/react-ga/dist/esm/utils/toTitleCase.js","webpack:///./node_modules/react-ga/dist/esm/utils/console/warn.js","webpack:///./node_modules/react-ga/dist/esm/utils/format.js","webpack:///./node_modules/react-ga/dist/esm/utils/mightBeEmail.js","webpack:///./node_modules/react-ga/dist/esm/utils/loadGA.js","webpack:///./node_modules/react-ga/dist/esm/utils/console/log.js","webpack:///./node_modules/react-ga/dist/esm/utils/testModeAPI.js","webpack:///./node_modules/react-ga/dist/esm/components/OutboundLink.js","webpack:///./node_modules/react-ga/dist/esm/index.js","webpack:///./node_modules/react-ga/dist/esm/utils/removeLeadingSlash.js"],"names":["BodyText","_ref","text","className","heading","headingFontSize","bold","centered","noPadding","headingFont","props","_babel_runtime_helpers_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_2___default","classes","push","react__WEBPACK_IMPORTED_MODULE_6___default","a","createElement","Object","assign","title","Heading","level","style","fontSize","getHeading","join","map","p","key","Parser","defaultProps","propTypes","PropTypes","shape","string","oneOfType","array","bool","module","exports","__webpack_require__","_Element_Element__WEBPACK_IMPORTED_MODULE_1__","_Image_Image__WEBPACK_IMPORTED_MODULE_2__","gatsby__WEBPACK_IMPORTED_MODULE_3__","react__WEBPACK_IMPORTED_MODULE_4__","react__WEBPACK_IMPORTED_MODULE_4___default","n","_images_company_logos_houston_svg__WEBPACK_IMPORTED_MODULE_5__","_images_company_logos_houston_svg__WEBPACK_IMPORTED_MODULE_5___default","_Navigation_Navigation__WEBPACK_IMPORTED_MODULE_6__","_images_company_logos_uoh_centre_svg__WEBPACK_IMPORTED_MODULE_7__","images","src","yliopisto","alt","href","houston","Footer","lang","id","flex","spaceBetween","image","contain","navigation","item","path","to","marginLeft","SubHeader","_ref$headingLevel","headingLevel","_babel_runtime_helpers_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_1___default","isRequired","ReactGA","initialize","Accordion","_this","_Component","call","this","state","isOpened","componentDidMount","initiallyOpened","setState","handleClick","_this$props","track","event","category","action","render","_this2","_this$props2","content","containerClassName","list","titleStyle","react__WEBPACK_IMPORTED_MODULE_2___default","onClick","padding","maxHeight","transition","_BodyText_BodyText__WEBPACK_IMPORTED_MODULE_3__","l","gatsby__WEBPACK_IMPORTED_MODULE_4__","Component","object","trim","s","replace","smallWords","warn","console","redacted","format","titleCase","test","mightBeEmail","match","index","length","search","charAt","toLowerCase","substr","toUpperCase","loadGA","options","i","o","g","r","m","gaAddress","debug","window","document","q","arguments","Date","getElementsByTagName","async","parentNode","insertBefore","log","info","gaCalls","testModeAPI","calls","ga","_len","args","Array","_key","concat","resetCalls","_typeof","obj","Symbol","iterator","constructor","prototype","_objectWithoutProperties","source","excluded","target","sourceKeys","keys","indexOf","_objectWithoutPropertiesLoose","getOwnPropertySymbols","sourceSymbolKeys","propertyIsEnumerable","_defineProperties","descriptor","enumerable","configurable","writable","defineProperty","_getPrototypeOf","setPrototypeOf","getPrototypeOf","__proto__","_setPrototypeOf","_assertThisInitialized","self","ReferenceError","_defineProperty","value","NEWTAB","MIDDLECLICK","OutboundLink_OutboundLink","OutboundLink","_getPrototypeOf2","instance","Constructor","TypeError","_classCallCheck","apply","eventLabel","eventMeta","label","sameTarget","normalClick","ctrlKey","shiftKey","metaKey","button","preventDefault","trackLink","location","protoProps","staticProps","subClass","superClass","create","_inherits","react","ownKeys","filter","sym","getOwnPropertyDescriptor","forEach","_objectSpread","rel","react_default","esm_objectWithoutProperties","esm_objectWithoutPropertiesLoose","esm_defineProperty","esm_typeof","_toConsumableArray","arr","isArray","arr2","_arrayWithoutHoles","iter","toString","from","_iterableToArray","_nonIterableSpread","prop_types_default","func","_debug","_titleCase","_testMode","_alwaysSendToDefaultTracker","esm_internalGa","_window","_format","_gaCommand","trackerNames","command","name","slice","_initialize","gaTrackingID","gaOptions","_len2","_key2","JSON","stringify","send","fieldObject","esm_plugin","require","rawName","execute","pluginName","payload","actionType","undefined","outboundLink","hitCallback","hitType","eventCategory","eventAction","safetyCallbackCalled","t","setTimeout","clearTimeout","origTrackLink","esm_OutboundLink","__webpack_exports__","configsOrTrackingId","testMode","standardImplementation","alwaysSendToDefaultTracker","config","trackingId","set","fieldsObject","pageview","rawPath","extraFields","esm_objectSpread","page","extraLog","modalview","rawModalName","modalName","substring","timing","variable","timingCategory","timingVar","timingValue","timingLabel","_ref2","nonInteraction","transport","eventValue","exception","_ref3","description","fatal","exDescription","exFatal","plugin"],"mappings":"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","file":"6-f2e81accf0c29e3f37fd.js","sourcesContent":["import './BodyText.scss';\n\nimport Parser from 'html-react-parser';\nimport PropTypes from 'prop-types';\nimport React from 'react';\n\nexport const BodyText = ({\n text,\n className,\n heading,\n headingFontSize,\n bold,\n centered,\n noPadding,\n headingFont,\n ...props\n}) => {\n const classes = [];\n\n centered && classes.push('centered');\n bold && classes.push('bold');\n noPadding && classes.push('body-text--no-padding');\n headingFont && classes.push('heading-font');\n\n const getHeading = () => {\n if (heading) {\n const Heading = heading.level;\n return (\n \n {heading.title}\n \n );\n } else {\n return null;\n }\n };\n\n return (\n
\n {heading.title && getHeading()}\n {text && typeof text === 'string' ? (\n

{text}

\n ) : (\n text &&\n text.map(p => (\n
\n {Parser(p)}\n
\n ))\n )}\n
\n );\n};\n\nBodyText.defaultProps = {\n heading: { title: '', level: 'h2' },\n text: '',\n className: '',\n centered: false,\n bold: false,\n noPadding: false,\n};\n\nBodyText.propTypes = {\n heading: PropTypes.shape({\n text: PropTypes.string,\n level: PropTypes.string,\n }),\n headingFontSize: PropTypes.string,\n text: PropTypes.oneOfType([PropTypes.string, PropTypes.array]),\n className: PropTypes.string,\n centered: PropTypes.bool,\n bold: PropTypes.bool,\n noPadding: PropTypes.bool,\n};\n","module.exports = [\n 'fullstack',\n 'full stack open 2019',\n 'course',\n 'helsingin yliopisto',\n 'tietojenkäsittelytieteen osasto',\n 'mooc',\n 'mooc.fi',\n 'full stack',\n 'full stack open',\n 'web-sovelluskehitys',\n 'web',\n 'houston',\n 'houston inc',\n 'websovelluskehitys',\n 'web-sovellus',\n 'React',\n 'Redux',\n 'Node.js',\n 'Node',\n 'MongoDB',\n 'GraphQL',\n 'REST',\n 'REST api',\n 'single page -sovellus',\n 'ohjelmointi',\n 'university of helsinki',\n 'department of computer science',\n 'web development',\n 'software development',\n 'web',\n 'web application',\n 'single page app',\n 'programming'\n];\n","import './Footer.scss';\n\nimport Element from '../Element/Element';\nimport { Image } from '../Image/Image';\nimport { Link } from 'gatsby';\nimport React from 'react';\nimport houston from '../../images/company_logos/houston.svg';\nimport { navigation } from '../Navigation/Navigation';\nimport yliopisto from '../../images/company_logos/uoh_centre.svg';\n\nconst images = [\n {\n src: yliopisto,\n alt: 'Helsingin yliopiston logo',\n href: 'https://www.helsinki.fi/',\n },\n {\n src: houston,\n alt: 'Houston inc. logo',\n href: 'https://www.houston-inc.com/',\n },\n];\n\nconst Footer = ({ lang }) => (\n \n \n {images.map(image => (\n \n {image.alt}\n \n ))}\n \n\n \n
\n {navigation[lang].map(item => (\n \n {item.text}\n \n ))}\n
\n \n \n);\n\nexport default Footer;\n","import './SubHeader.scss';\n\nimport PropTypes from 'prop-types';\nimport React from 'react';\n\nexport const SubHeader = ({\n className,\n headingLevel = 'h2',\n headingFontSize,\n text,\n ...props\n}) => {\n const Heading = headingLevel;\n\n return (\n \n {text}\n \n );\n};\n\nSubHeader.propTypes = {\n className: PropTypes.string,\n headingLevel: PropTypes.string,\n text: PropTypes.string.isRequired,\n headingFontSize: PropTypes.string,\n};\n\nSubHeader.defaultProps = {\n className: '',\n};\n","import './Accordion.scss';\n\nimport React, { Component } from 'react';\n\nimport { BodyText } from '../BodyText/BodyText';\nimport { Link } from 'gatsby';\nimport PropTypes from 'prop-types';\nimport ReactGA from 'react-ga';\n\nReactGA.initialize('UA-135975842-1');\n\nclass Accordion extends Component {\n constructor(props) {\n super(props);\n\n this.state = {\n isOpened: false,\n };\n }\n\n componentDidMount() {\n this.props.initiallyOpened && this.setState({ isOpened: true });\n }\n\n handleClick() {\n const { isOpened } = this.state;\n const { title, track } = this.props;\n\n this.setState({ isOpened: !isOpened }, () => {\n track &&\n ReactGA.event({\n category: 'FAQ',\n action: `${title} ${!isOpened ? 'expanded' : 'closed'}`,\n });\n });\n }\n\n render() {\n const {\n title,\n content,\n className,\n containerClassName,\n list,\n titleStyle,\n } = this.props;\n const { isOpened } = this.state;\n\n return (\n \n this.handleClick()}\n >\n {title}\n \n \n {content && (\n \n )}\n {list && (\n
    \n {list.map(l => (\n
  • \n {l.text}\n
  • \n ))}\n
\n )}\n \n \n );\n }\n}\n\nAccordion.propTypes = {\n title: PropTypes.string.isRequired,\n track: PropTypes.bool,\n content: PropTypes.oneOfType([PropTypes.string, PropTypes.array]),\n list: PropTypes.array,\n className: PropTypes.string,\n containerClassName: PropTypes.string,\n initiallyOpened: PropTypes.bool,\n titleStyle: PropTypes.object,\n};\n\nAccordion.defaultProps = {\n className: '',\n track: false,\n containerClassName: '',\n initiallyOpened: false,\n titleStyle: {},\n};\n\nexport default Accordion;\n","// GA strings need to have leading/trailing whitespace trimmed, and not all\n// browsers have String.prototoype.trim().\nexport default function trim(s) {\n return s.replace(/^\\s+|\\s+$/g, '');\n}","/**\n * To Title Case 2.1 - http://individed.com/code/to-title-case/\n * Copyright 2008-2013 David Gouch. Licensed under the MIT License.\n * https://github.com/gouch/to-title-case\n */\nimport trim from './trim';\nvar smallWords = /^(a|an|and|as|at|but|by|en|for|if|in|nor|of|on|or|per|the|to|vs?\\.?|via)$/i;\nexport default function toTitleCase(string) {\n return trim(string).replace(/[A-Za-z0-9\\u00C0-\\u00FF]+[^\\s-]*/g, function (match, index, title) {\n if (index > 0 && index + match.length !== title.length && match.search(smallWords) > -1 && title.charAt(index - 2) !== ':' && (title.charAt(index + match.length) !== '-' || title.charAt(index - 1) === '-') && title.charAt(index - 1).search(/[^\\s-]/) < 0) {\n return match.toLowerCase();\n }\n\n if (match.substr(1).search(/[A-Z]|\\../) > -1) {\n return match;\n }\n\n return match.charAt(0).toUpperCase() + match.substr(1);\n });\n}","export default function warn(s) {\n console.warn('[react-ga]', s);\n}","import mightBeEmail from './mightBeEmail';\nimport toTitleCase from './toTitleCase';\nimport warn from './console/warn';\nvar redacted = 'REDACTED (Potential Email Address)';\nexport default function format(s, titleCase) {\n if (mightBeEmail(s)) {\n warn('This arg looks like an email address, redacting.');\n return redacted;\n }\n\n if (titleCase) {\n return toTitleCase(s);\n }\n\n return s;\n}","// See if s could be an email address. We don't want to send personal data like email.\n// https://support.google.com/analytics/answer/2795983?hl=en\nexport default function mightBeEmail(s) {\n // There's no point trying to validate rfc822 fully, just look for ...@...\n return /[^@]+@[^@]+/.test(s);\n}","export default function (options) {\n var gaAddress = 'https://www.google-analytics.com/analytics.js';\n\n if (options && options.gaAddress) {\n gaAddress = options.gaAddress;\n } else if (options && options.debug) {\n gaAddress = 'https://www.google-analytics.com/analytics_debug.js';\n } // https://developers.google.com/analytics/devguides/collection/analyticsjs/\n\n /* eslint-disable */\n\n\n (function (i, s, o, g, r, a, m) {\n i['GoogleAnalyticsObject'] = r;\n i[r] = i[r] || function () {\n (i[r].q = i[r].q || []).push(arguments);\n }, i[r].l = 1 * new Date();\n a = s.createElement(o), m = s.getElementsByTagName(o)[0];\n a.async = 1;\n a.src = g;\n m.parentNode.insertBefore(a, m);\n })(window, document, 'script', gaAddress, 'ga');\n /* eslint-enable */\n\n}","export default function log(s) {\n console.info('[react-ga]', s);\n}","export var gaCalls = [];\nexport default {\n calls: gaCalls,\n ga: function ga() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n gaCalls.push(args.concat());\n },\n resetCalls: function resetCalls() {\n gaCalls.length = 0;\n }\n};","function _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport warn from '../utils/console/warn';\nvar NEWTAB = '_blank';\nvar MIDDLECLICK = 1;\n\nvar OutboundLink =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(OutboundLink, _Component);\n\n function OutboundLink() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, OutboundLink);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(OutboundLink)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"handleClick\", function (event) {\n var _this$props = _this.props,\n target = _this$props.target,\n eventLabel = _this$props.eventLabel,\n to = _this$props.to,\n onClick = _this$props.onClick;\n var eventMeta = {\n label: eventLabel\n };\n var sameTarget = target !== NEWTAB;\n var normalClick = !(event.ctrlKey || event.shiftKey || event.metaKey || event.button === MIDDLECLICK);\n\n if (sameTarget && normalClick) {\n event.preventDefault();\n OutboundLink.trackLink(eventMeta, function () {\n window.location.href = to;\n });\n } else {\n OutboundLink.trackLink(eventMeta, function () {});\n }\n\n if (onClick) {\n onClick(event);\n }\n });\n\n return _this;\n }\n\n _createClass(OutboundLink, [{\n key: \"render\",\n value: function render() {\n var _this$props2 = this.props,\n href = _this$props2.to,\n oldProps = _objectWithoutProperties(_this$props2, [\"to\"]);\n\n var props = _objectSpread({}, oldProps, {\n href: href,\n onClick: this.handleClick\n });\n\n if (this.props.target === NEWTAB) {\n props.rel = 'noopener noreferrer';\n }\n\n delete props.eventLabel;\n return React.createElement('a', props);\n }\n }]);\n\n return OutboundLink;\n}(Component);\n\n_defineProperty(OutboundLink, \"trackLink\", function () {\n warn('ga tracking not enabled');\n});\n\n_defineProperty(OutboundLink, \"propTypes\", {\n eventLabel: PropTypes.string.isRequired,\n target: PropTypes.string,\n to: PropTypes.string,\n onClick: PropTypes.func\n});\n\n_defineProperty(OutboundLink, \"defaultProps\", {\n target: null,\n to: null,\n onClick: null\n});\n\nexport { OutboundLink as default };","function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance\"); }\n\nfunction _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }\n\n/**\n * React Google Analytics Module\n *\n * @package react-ga\n * @author Adam Lofting \n * Atul Varma \n */\n\n/**\n * Utilities\n */\nimport format from './utils/format';\nimport removeLeadingSlash from './utils/removeLeadingSlash';\nimport trim from './utils/trim';\nimport loadGA from './utils/loadGA';\nimport warn from './utils/console/warn';\nimport log from './utils/console/log';\nimport TestModeAPI from './utils/testModeAPI';\nimport UnboundOutboundLink from './components/OutboundLink';\nvar _debug = false;\nvar _titleCase = true;\nvar _testMode = false;\nvar _alwaysSendToDefaultTracker = true;\n\nvar internalGa = function internalGa() {\n var _window;\n\n if (_testMode) return TestModeAPI.ga.apply(TestModeAPI, arguments);\n if (typeof window === 'undefined') return false;\n if (!window.ga) return warn('ReactGA.initialize must be called first or GoogleAnalytics should be loaded manually');\n return (_window = window).ga.apply(_window, arguments);\n};\n\nfunction _format(s) {\n return format(s, _titleCase);\n}\n\nfunction _gaCommand(trackerNames) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n var command = args[0];\n\n if (typeof internalGa === 'function') {\n if (typeof command !== 'string') {\n warn('ga command must be a string');\n return;\n }\n\n if (_alwaysSendToDefaultTracker || !Array.isArray(trackerNames)) internalGa.apply(void 0, args);\n\n if (Array.isArray(trackerNames)) {\n trackerNames.forEach(function (name) {\n internalGa.apply(void 0, _toConsumableArray([\"\".concat(name, \".\").concat(command)].concat(args.slice(1))));\n });\n }\n }\n}\n\nfunction _initialize(gaTrackingID, options) {\n if (!gaTrackingID) {\n warn('gaTrackingID is required in initialize()');\n return;\n }\n\n if (options) {\n if (options.debug && options.debug === true) {\n _debug = true;\n }\n\n if (options.titleCase === false) {\n _titleCase = false;\n }\n }\n\n if (options && options.gaOptions) {\n internalGa('create', gaTrackingID, options.gaOptions);\n } else {\n internalGa('create', gaTrackingID, 'auto');\n }\n}\n\nexport function initialize(configsOrTrackingId, options) {\n if (options && options.testMode === true) {\n _testMode = true;\n } else {\n if (typeof window === 'undefined') {\n return false;\n }\n\n if (!options || options.standardImplementation !== true) loadGA(options);\n }\n\n _alwaysSendToDefaultTracker = options && typeof options.alwaysSendToDefaultTracker === 'boolean' ? options.alwaysSendToDefaultTracker : true;\n\n if (Array.isArray(configsOrTrackingId)) {\n configsOrTrackingId.forEach(function (config) {\n if (_typeof(config) !== 'object') {\n warn('All configs must be an object');\n return;\n }\n\n _initialize(config.trackingId, config);\n });\n } else {\n _initialize(configsOrTrackingId, options);\n }\n\n return true;\n}\n/**\n * ga:\n * Returns the original GA object.\n */\n\nexport function ga() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n if (args.length > 0) {\n internalGa.apply(void 0, args);\n\n if (_debug) {\n log('called ga(\\'arguments\\');');\n log(\"with arguments: \".concat(JSON.stringify(args)));\n }\n }\n\n return window.ga;\n}\n/**\n * set:\n * GA tracker set method\n * @param {Object} fieldsObject - a field/value pair or a group of field/value pairs on the tracker\n * @param {Array} trackerNames - (optional) a list of extra trackers to run the command on\n */\n\nexport function set(fieldsObject, trackerNames) {\n if (!fieldsObject) {\n warn('`fieldsObject` is required in .set()');\n return;\n }\n\n if (_typeof(fieldsObject) !== 'object') {\n warn('Expected `fieldsObject` arg to be an Object');\n return;\n }\n\n if (Object.keys(fieldsObject).length === 0) {\n warn('empty `fieldsObject` given to .set()');\n }\n\n _gaCommand(trackerNames, 'set', fieldsObject);\n\n if (_debug) {\n log('called ga(\\'set\\', fieldsObject);');\n log(\"with fieldsObject: \".concat(JSON.stringify(fieldsObject)));\n }\n}\n/**\n * send:\n * Clone of the low level `ga.send` method\n * WARNING: No validations will be applied to this\n * @param {Object} fieldObject - field object for tracking different analytics\n * @param {Array} trackerNames - trackers to send the command to\n * @param {Array} trackerNames - (optional) a list of extra trackers to run the command on\n */\n\nexport function send(fieldObject, trackerNames) {\n _gaCommand(trackerNames, 'send', fieldObject);\n\n if (_debug) {\n log('called ga(\\'send\\', fieldObject);');\n log(\"with fieldObject: \".concat(JSON.stringify(fieldObject)));\n log(\"with trackers: \".concat(JSON.stringify(trackerNames)));\n }\n}\n/**\n * pageview:\n * Basic GA pageview tracking\n * @param {String} path - the current page page e.g. '/about'\n * @param {Array} trackerNames - (optional) a list of extra trackers to run the command on\n * @param {String} title - (optional) the page title e. g. 'My Website'\n */\n\nexport function pageview(rawPath, trackerNames, title) {\n if (!rawPath) {\n warn('path is required in .pageview()');\n return;\n }\n\n var path = trim(rawPath);\n\n if (path === '') {\n warn('path cannot be an empty string in .pageview()');\n return;\n }\n\n var extraFields = {};\n\n if (title) {\n extraFields.title = title;\n }\n\n if (typeof ga === 'function') {\n _gaCommand(trackerNames, 'send', _objectSpread({\n hitType: 'pageview',\n page: path\n }, extraFields));\n\n if (_debug) {\n log('called ga(\\'send\\', \\'pageview\\', path);');\n var extraLog = '';\n\n if (title) {\n extraLog = \" and title: \".concat(title);\n }\n\n log(\"with path: \".concat(path).concat(extraLog));\n }\n }\n}\n/**\n * modalview:\n * a proxy to basic GA pageview tracking to consistently track\n * modal views that are an equivalent UX to a traditional pageview\n * @param {String} modalName e.g. 'add-or-edit-club'\n * @param {Array} trackerNames - (optional) a list of extra trackers to run the command on\n */\n\nexport function modalview(rawModalName, trackerNames) {\n if (!rawModalName) {\n warn('modalName is required in .modalview(modalName)');\n return;\n }\n\n var modalName = removeLeadingSlash(trim(rawModalName));\n\n if (modalName === '') {\n warn('modalName cannot be an empty string or a single / in .modalview()');\n return;\n }\n\n if (typeof ga === 'function') {\n var path = \"/modal/\".concat(modalName);\n\n _gaCommand(trackerNames, 'send', 'pageview', path);\n\n if (_debug) {\n log('called ga(\\'send\\', \\'pageview\\', path);');\n log(\"with path: \".concat(path));\n }\n }\n}\n/**\n * timing:\n * GA timing\n * @param args.category {String} required\n * @param args.variable {String} required\n * @param args.value {Int} required\n * @param args.label {String} required\n * @param {Array} trackerNames - (optional) a list of extra trackers to run the command on\n */\n\nexport function timing() {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n category = _ref.category,\n variable = _ref.variable,\n value = _ref.value,\n label = _ref.label;\n\n var trackerNames = arguments.length > 1 ? arguments[1] : undefined;\n\n if (typeof ga === 'function') {\n if (!category || !variable || !value || typeof value !== 'number') {\n warn('args.category, args.variable ' + 'AND args.value are required in timing() ' + 'AND args.value has to be a number');\n return;\n } // Required Fields\n\n\n var fieldObject = {\n hitType: 'timing',\n timingCategory: _format(category),\n timingVar: _format(variable),\n timingValue: value\n };\n\n if (label) {\n fieldObject.timingLabel = _format(label);\n }\n\n send(fieldObject, trackerNames);\n }\n}\n/**\n * event:\n * GA event tracking\n * @param args.category {String} required\n * @param args.action {String} required\n * @param args.label {String} optional\n * @param args.value {Int} optional\n * @param args.nonInteraction {boolean} optional\n * @param args.transport {string} optional\n * @param {Array} trackerNames - (optional) a list of extra trackers to run the command on\n */\n\nexport function event() {\n var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n category = _ref2.category,\n action = _ref2.action,\n label = _ref2.label,\n value = _ref2.value,\n nonInteraction = _ref2.nonInteraction,\n transport = _ref2.transport,\n args = _objectWithoutProperties(_ref2, [\"category\", \"action\", \"label\", \"value\", \"nonInteraction\", \"transport\"]);\n\n var trackerNames = arguments.length > 1 ? arguments[1] : undefined;\n\n if (typeof ga === 'function') {\n // Simple Validation\n if (!category || !action) {\n warn('args.category AND args.action are required in event()');\n return;\n } // Required Fields\n\n\n var fieldObject = {\n hitType: 'event',\n eventCategory: _format(category),\n eventAction: _format(action)\n }; // Optional Fields\n\n if (label) {\n fieldObject.eventLabel = _format(label);\n }\n\n if (typeof value !== 'undefined') {\n if (typeof value !== 'number') {\n warn('Expected `args.value` arg to be a Number.');\n } else {\n fieldObject.eventValue = value;\n }\n }\n\n if (typeof nonInteraction !== 'undefined') {\n if (typeof nonInteraction !== 'boolean') {\n warn('`args.nonInteraction` must be a boolean.');\n } else {\n fieldObject.nonInteraction = nonInteraction;\n }\n }\n\n if (typeof transport !== 'undefined') {\n if (typeof transport !== 'string') {\n warn('`args.transport` must be a string.');\n } else {\n if (['beacon', 'xhr', 'image'].indexOf(transport) === -1) {\n warn('`args.transport` must be either one of these values: `beacon`, `xhr` or `image`');\n }\n\n fieldObject.transport = transport;\n }\n }\n\n Object.keys(args).filter(function (key) {\n return key.substr(0, 'dimension'.length) === 'dimension';\n }).forEach(function (key) {\n fieldObject[key] = args[key];\n });\n Object.keys(args).filter(function (key) {\n return key.substr(0, 'metric'.length) === 'metric';\n }).forEach(function (key) {\n fieldObject[key] = args[key];\n }); // Send to GA\n\n send(fieldObject, trackerNames);\n }\n}\n/**\n * exception:\n * GA exception tracking\n * @param args.description {String} optional\n * @param args.fatal {boolean} optional\n * @param {Array} trackerNames - (optional) a list of extra trackers to run the command on\n */\n\nexport function exception(_ref3, trackerNames) {\n var description = _ref3.description,\n fatal = _ref3.fatal;\n\n if (typeof ga === 'function') {\n // Required Fields\n var fieldObject = {\n hitType: 'exception'\n }; // Optional Fields\n\n if (description) {\n fieldObject.exDescription = _format(description);\n }\n\n if (typeof fatal !== 'undefined') {\n if (typeof fatal !== 'boolean') {\n warn('`args.fatal` must be a boolean.');\n } else {\n fieldObject.exFatal = fatal;\n }\n } // Send to GA\n\n\n send(fieldObject, trackerNames);\n }\n}\nexport var plugin = {\n /**\n * require:\n * GA requires a plugin\n * @param name {String} e.g. 'ecommerce' or 'myplugin'\n * @param options {Object} optional e.g {path: '/log', debug: true}\n */\n require: function require(rawName, options) {\n if (typeof ga === 'function') {\n // Required Fields\n if (!rawName) {\n warn('`name` is required in .require()');\n return;\n }\n\n var name = trim(rawName);\n\n if (name === '') {\n warn('`name` cannot be an empty string in .require()');\n return;\n } // Optional Fields\n\n\n if (options) {\n if (_typeof(options) !== 'object') {\n warn('Expected `options` arg to be an Object');\n return;\n }\n\n if (Object.keys(options).length === 0) {\n warn('Empty `options` given to .require()');\n }\n\n ga('require', name, options);\n\n if (_debug) {\n log(\"called ga('require', '\".concat(name, \"', \").concat(JSON.stringify(options)));\n }\n } else {\n ga('require', name);\n\n if (_debug) {\n log(\"called ga('require', '\".concat(name, \"');\"));\n }\n }\n }\n },\n\n /**\n * execute:\n * GA execute action for plugin\n * Takes variable number of arguments\n * @param pluginName {String} e.g. 'ecommerce' or 'myplugin'\n * @param action {String} e.g. 'addItem' or 'myCustomAction'\n * @param actionType {String} optional e.g. 'detail'\n * @param payload {Object} optional e.g { id: '1x5e', name : 'My product to track' }\n */\n execute: function execute(pluginName, action) {\n var payload;\n var actionType;\n\n if ((arguments.length <= 2 ? 0 : arguments.length - 2) === 1) {\n payload = arguments.length <= 2 ? undefined : arguments[2];\n } else {\n actionType = arguments.length <= 2 ? undefined : arguments[2];\n payload = arguments.length <= 3 ? undefined : arguments[3];\n }\n\n if (typeof ga === 'function') {\n if (typeof pluginName !== 'string') {\n warn('Expected `pluginName` arg to be a String.');\n } else if (typeof action !== 'string') {\n warn('Expected `action` arg to be a String.');\n } else {\n var command = \"\".concat(pluginName, \":\").concat(action);\n payload = payload || null;\n\n if (actionType && payload) {\n ga(command, actionType, payload);\n\n if (_debug) {\n log(\"called ga('\".concat(command, \"');\"));\n log(\"actionType: \\\"\".concat(actionType, \"\\\" with payload: \").concat(JSON.stringify(payload)));\n }\n } else if (payload) {\n ga(command, payload);\n\n if (_debug) {\n log(\"called ga('\".concat(command, \"');\"));\n log(\"with payload: \".concat(JSON.stringify(payload)));\n }\n } else {\n ga(command);\n\n if (_debug) {\n log(\"called ga('\".concat(command, \"');\"));\n }\n }\n }\n }\n }\n};\n/**\n * outboundLink:\n * GA outboundLink tracking\n * @param args.label {String} e.g. url, or 'Create an Account'\n * @param {function} hitCallback - Called after processing a hit.\n */\n\nexport function outboundLink(args, hitCallback, trackerNames) {\n if (typeof hitCallback !== 'function') {\n warn('hitCallback function is required');\n return;\n }\n\n if (typeof ga === 'function') {\n // Simple Validation\n if (!args || !args.label) {\n warn('args.label is required in outboundLink()');\n return;\n } // Required Fields\n\n\n var fieldObject = {\n hitType: 'event',\n eventCategory: 'Outbound',\n eventAction: 'Click',\n eventLabel: _format(args.label)\n };\n var safetyCallbackCalled = false;\n\n var safetyCallback = function safetyCallback() {\n // This prevents a delayed response from GA\n // causing hitCallback from being fired twice\n safetyCallbackCalled = true;\n hitCallback();\n }; // Using a timeout to ensure the execution of critical application code\n // in the case when the GA server might be down\n // or an ad blocker prevents sending the data\n // register safety net timeout:\n\n\n var t = setTimeout(safetyCallback, 250);\n\n var clearableCallbackForGA = function clearableCallbackForGA() {\n clearTimeout(t);\n\n if (!safetyCallbackCalled) {\n hitCallback();\n }\n };\n\n fieldObject.hitCallback = clearableCallbackForGA; // Send to GA\n\n send(fieldObject, trackerNames);\n } else {\n // if ga is not defined, return the callback so the application\n // continues to work as expected\n setTimeout(hitCallback, 0);\n }\n}\nUnboundOutboundLink.origTrackLink = UnboundOutboundLink.trackLink;\nUnboundOutboundLink.trackLink = outboundLink;\nexport var OutboundLink = UnboundOutboundLink;\nexport var testModeAPI = TestModeAPI;\nexport default {\n initialize: initialize,\n ga: ga,\n set: set,\n send: send,\n pageview: pageview,\n modalview: modalview,\n timing: timing,\n event: event,\n exception: exception,\n plugin: plugin,\n outboundLink: outboundLink,\n OutboundLink: OutboundLink,\n testModeAPI: TestModeAPI\n};","export default function removeLeadingSlash(string) {\n if (string.substring(0, 1) === '/') {\n return string.substring(1);\n }\n\n return string;\n}"],"sourceRoot":""} \ No newline at end of file diff --git a/6.26ccdb775cdbcc42df19.css b/6.26ccdb775cdbcc42df19.css new file mode 100644 index 000000000..c4baca8a7 --- /dev/null +++ b/6.26ccdb775cdbcc42df19.css @@ -0,0 +1 @@ +.accordion__container{margin-bottom:1rem}.accordion__title{padding-left:2.149rem!important;padding-right:2.149rem!important;font-size:1.111rem!important;font-weight:600}.accordion{background-color:#fff;border:3px solid #33332d;border-radius:5px;color:#444;cursor:pointer;padding:1rem;width:100%;text-align:left;outline:none;font-size:15px;transition:max-width .4s}.accordion:hover,.active{background-color:#e1e1e1}.accordion:after{content:"+";font-size:1.5rem;float:right;margin-left:5px}.active{border-color:#fff}.active:after{content:"-";font-size:1.5rem}.panel{background-color:#fff;transition:height .3s;transition-timing-function:ease-in-out;overflow:hidden}.accordion--side-navigation{width:100%;margin-left:unset}.accordion--side-navigation .accordion{border:none;padding:0!important;background-color:transparent!important;color:#33332d!important;border-radius:0}.accordion--side-navigation .accordion__title{font-size:16px!important;font-weight:unset;background-color:transparent}.accordion--side-navigation .accordion__title:hover{background-color:#33332d!important;color:#fff!important}.accordion--side-navigation .panel{padding:1rem 0 0!important;background-color:transparent}.accordion--side-navigation .panel ul{margin-left:1rem}.accordion--side-navigation .accordion:hover,.accordion--side-navigation .active{background-color:#33332d;color:#fff}.accordion--side-navigation .accordion:after,.accordion--side-navigation .active:after{content:""}.body-text:not(:last-of-type){margin-bottom:2.5rem}.body-text__title{color:#33332d;font-size:1.44rem;line-height:1.25em;font-weight:700;margin:0;position:relative;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.body-text__content:not(:last-of-type){padding-bottom:2em}.bold{font-weight:700}.body-text--no-padding{padding:0!important}@media (min-width:640px){.companies__main-title .body-text__title{font-size:3rem}}.challenge-title{font-size:1.44rem}#footer{margin-top:auto}@media (min-width:992px){#footer{align-items:center}}#footer a:hover{background-color:transparent!important}#footer .footer__navigation{display:none}@media (max-width:1199px){#footer .footer__navigation{width:100%;display:block}#footer .footer__navigation-link-container{display:flex;flex-direction:column}}#footer .footer__navigation-link{font-size:1rem;line-height:18px;white-space:nowrap;font-family:IBM Plex Sans,monospace;margin-left:0!important;margin-right:auto}@media (max-width:639px){#footer .footer__navigation-link{line-height:8px}}#footer .footer__navigation-link:hover{color:#fff!important;background-color:#33332d!important}#footer .footer__navigation-link:nth-of-type(n+2){margin-top:2.142rem}@media (min-width:1200px){#footer .footer__navigation{flex-direction:row;flex-wrap:nowrap;justify-content:flex-end}#footer .footer__navigation-link{margin-top:0!important;margin-bottom:auto}#footer .footer__navigation-link:nth-of-type(n+1){margin-right:2.877rem}#footer .footer__navigation-link:last-of-type{margin-right:0!important}}.sub-header{color:#33332d;font-family:IBM Plex Mono,monospace;padding-bottom:1.357rem}@media (min-width:992px){.sub-header{padding-bottom:2.333rem}} \ No newline at end of file diff --git a/LICENSE b/LICENSE deleted file mode 100644 index 5169a5e41..000000000 --- a/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2015 gatsbyjs - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - diff --git a/README.md b/README.md deleted file mode 100644 index 991227765..000000000 --- a/README.md +++ /dev/null @@ -1,97 +0,0 @@ -

- - Gatsby - -

-

- Gatsby's default starter -

- -Kick off your project with this default boilerplate ([live demo](https://gatsby-starter-default-demo.netlify.com/)). This barebones starter ships with the main Gatsby configuration files you might need. - -_Have another more specific idea? You may want to check out our vibrant collection of [official and community-created starters](https://www.gatsbyjs.org/docs/gatsby-starters/)._ - -## 🚀 Quick start - -1. **Create a Gatsby site.** - - Use the Gatsby CLI to create a new site, specifying the default starter. - - ```sh - # create a new Gatsby site using the default starter - npx gatsby new my-default-starter - ``` - -1. **Start developing.** - - Navigate into your new site’s directory and start it up. - - ```sh - cd my-default-starter/ - gatsby develop - ``` - -1. **Open the source code and start editing!** - - Your site is now running at `http://localhost:8000`! - - *Note: You'll also see a second link: `http://localhost:8000/___graphql`. This is a tool you can use to experiment with querying your data. Learn more about using this tool in the [Gatsby tutorial](https://www.gatsbyjs.org/tutorial/part-five/#introducing-graphiql).* - - Open the `my-default-starter` directory in your code editor of choice and edit `src/pages/index.js`. Save your changes and the browser will update in real time! - -## 🧐 What's inside? - -A quick look at the top-level files and directories you'll see in a Gatsby project. - - . - ├── node_modules - ├── src - ├── .gitignore - ├── .prettierrc - ├── gatsby-browser.js - ├── gatsby-config.js - ├── gatsby-node.js - ├── gatsby-ssr.js - ├── LICENSE - ├── package-lock.json - ├── package.json - ├── README.md - └── yarn.lock - - 1. **`/node_modules`**: This directory contains all of the modules of code that your project depends on (npm packages) are automatically installed. - - 2. **`/src`**: This directory will contain all of the code related to what you will see on the front-end of your site (what you see in the browser) such as your site header or a page template. `src` is a convention for “source code”. - - 3. **`.gitignore`**: This file tells git which files it should not track / not maintain a version history for. - - 4. **`.prettierrc`**: This is a configuration file for [Prettier](https://prettier.io/). Prettier is a tool to help keep the formatting of your code consistent. - - 5. **`gatsby-browser.js`**: This file is where Gatsby expects to find any usage of the [Gatsby browser APIs](https://www.gatsbyjs.org/docs/browser-apis/) (if any). These allow customization/extension of default Gatsby settings affecting the browser. - - 6. **`gatsby-config.js`**: This is the main configuration file for a Gatsby site. This is where you can specify information about your site (metadata) like the site title and description, which Gatsby plugins you’d like to include, etc. (Check out the [config docs](https://www.gatsbyjs.org/docs/gatsby-config/) for more detail). - - 7. **`gatsby-node.js`**: This file is where Gatsby expects to find any usage of the [Gatsby Node APIs](https://www.gatsbyjs.org/docs/node-apis/) (if any). These allow customization/extension of default Gatsby settings affecting pieces of the site build process. - - 8. **`gatsby-ssr.js`**: This file is where Gatsby expects to find any usage of the [Gatsby server-side rendering APIs](https://www.gatsbyjs.org/docs/ssr-apis/) (if any). These allow customization of default Gatsby settings affecting server-side rendering. - - 9. **`LICENSE`**: Gatsby is licensed under the MIT license. - - 10. **`package-lock.json`** (See `package.json` below, first). This is an automatically generated file based on the exact versions of your npm dependencies that were installed for your project. **(You won’t change this file directly).** - - 11. **`package.json`**: A manifest file for Node.js projects, which includes things like metadata (the project’s name, author, etc). This manifest is how npm knows which packages to install for your project. - - 12. **`README.md`**: A text file containing useful reference information about your project. - - 13. **`yarn.lock`**: [Yarn](https://yarnpkg.com/) is a package manager alternative to npm. You can use either yarn or npm, though all of the Gatsby docs reference npm. This file serves essentially the same purpose as `package-lock.json`, just for a different package management system. - -## 🎓 Learning Gatsby - -Looking for more guidance? Full documentation for Gatsby lives [on the website](https://www.gatsbyjs.org/). Here are some places to start: - -- **For most developers, we recommend starting with our [in-depth tutorial for creating a site with Gatsby](https://www.gatsbyjs.org/tutorial/).** It starts with zero assumptions about your level of ability and walks through every step of the process. - -- **To dive straight into code samples, head [to our documentation](https://www.gatsbyjs.org/docs/).** In particular, check out the _Guides_, _API Reference_, and _Advanced Tutorials_ sections in the sidebar. - -## 💫 Deploy - -[![Deploy to Netlify](https://www.netlify.com/img/deploy/button.svg)](https://app.netlify.com/start/deploy?repository=https://github.com/gatsbyjs/gatsby-starter-default) diff --git a/about/index.html b/about/index.html new file mode 100644 index 000000000..6c84eda74 --- /dev/null +++ b/about/index.html @@ -0,0 +1,16 @@ +Kurssista | Full Stack Open 2019

Yleistä

\ No newline at end of file diff --git a/app-646f33d6245fa679e343.js b/app-646f33d6245fa679e343.js new file mode 100644 index 000000000..7909f2f60 --- /dev/null +++ b/app-646f33d6245fa679e343.js @@ -0,0 +1,2 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[7],[function(e,t,n){"use strict";e.exports=n(113)},function(e,t,n){n(40);var r=n(96),o=n(2).publicLoader,i=o.getResourcesForPathname,a=o.getResourcesForPathnameSync,l=o.getResourceURLsForPathname;t.apiRunner=function(e,t,n,o){void 0===t&&(t={}),window.Cypress&&(window.___apiHandler?window.___apiHandler(e):window.___resolvedAPIs?window.___resolvedAPIs.push(e):window.___resolvedAPIs=[e]);var u=r.map(function(n){if(n.plugin[e]){t.getResourcesForPathnameSync=a,t.getResourcesForPathname=i,t.getResourceURLsForPathname=l;var r=n.plugin[e](t,n.options);return r&&o&&(t=o({args:t,result:r,plugin:n})),r}});return(u=u.filter(function(e){return void 0!==e})).length>0?u:n?[n]:[]},t.apiRunnerAsync=function(e,t,n){return r.reduce(function(n,r){return r.plugin[e]?n.then(function(){return r.plugin[e](t,r.options)}):n},Promise.resolve())}},function(e,t,n){"use strict";n.r(t);n(42),n(102),n(67),n(46),n(70),n(40),n(71);var r=n(20),o={},i=n(7),a=function(e){if("undefined"==typeof document)return!1;var t=document.createElement("link");try{if(t.relList&&"function"==typeof t.relList.supports)return t.relList.supports(e)}catch(e){return!1}return!1}("prefetch")?function(e){return new Promise(function(t,n){if("undefined"!=typeof document){var r=document.createElement("link");r.setAttribute("rel","prefetch"),r.setAttribute("href",e),r.onload=t,r.onerror=n,(document.getElementsByTagName("head")[0]||document.getElementsByName("script")[0].parentNode).appendChild(r)}else n()})}:function(e){return new Promise(function(t,n){var r=new XMLHttpRequest;r.open("GET",e,!0),r.withCredentials=!0,r.onload=function(){200===r.status?t():n()},r.send(null)})},l={},u=function(e){return new Promise(function(t){l[e]?t():a(e).then(function(){t(),l[e]=!0}).catch(function(){})})};n.d(t,"setApiRunnerForLoader",function(){return L}),n.d(t,"publicLoader",function(){return U});var c,s=function(e){return e&&e.default||e},f=!0,d=Object.create(null),p={},h={},m=[],v=null,y=!1,g={},b={};var w,_=function(){return v||(v=new Promise(function(e){p.data().then(function(t){var n=t.pages,r=t.dataPaths;window.___dataPaths=r,N.addPagesArray(n),N.addDataPaths(r),e(y=!0)})})),v},x=function(e){return"/static/d/"+e+".json"},k=function(e){return window.___chunkMapping[e].map(function(e){return""+e})},T=function(e){if("component---"===e.slice(0,12))return Promise.all(k(e).map(function(e){return u(e)}));var t=x(h[e]);return u(t)},S=function(e){return function(e){var t;return t="component---"===e.slice(0,12)?p.components[e]:e in b?function(){return b[e]}:function(){var t=new Promise(function(t,n){var r=x(h[e]),o=new XMLHttpRequest;o.open("GET",r,!0),o.withCredentials=!0,o.onreadystatechange=function(){4==o.readyState&&(200===o.status?t(JSON.parse(o.responseText)):(delete b[e],n()))},o.send(null)});return b[e]=t,t},d[e]=!0,new Promise(function(n){var r=t(),o=!1;return r.catch(function(e){console.error(e),o=!0}).then(function(t){m.push({resource:e,succeeded:!o}),m=m.slice(-5),n(t)})})}(e).then(s)},E=function(e,t){var n;g[e]||(g[e]=t),("boolean"==typeof(n=navigator.onLine)?n:m.find(function(e){return e.succeeded}))&&window.location.pathname.replace(/\/$/g,"")!==e.replace(/\/$/g,"")&&(window.location.pathname=e)},P=function(e){R[e]||(c("onPostPrefetchPathname",{pathname:e}),R[e]=!0)},C={},O={},R={},j=!1,N={addPagesArray:function(e){var t,n;t=e,void 0===(n="")&&(n=""),w=function(e){var i,a,l,u=decodeURIComponent(e),c=(void 0===(a=n)&&(a=""),(i=u).substr(0,a.length)===a?i.slice(a.length):i);return c.split("#").length>1&&(c=c.split("#").slice(0,-1).join("")),c.split("?").length>1&&(c=c.split("?").slice(0,-1).join("")),o[c]?o[c]:(t.some(function(e){var t=e.matchPath?e.matchPath:e.path;return Object(r.match)(t,c)?(l=e,o[c]=e,!0):!!Object(r.match)(e.path+"index.html",c)&&(l=e,o[c]=e,!0)}),l)}},addDevRequires:function(e){e},addProdRequires:function(e){p=e},addDataPaths:function(e){h=e},hovering:function(e){N.getResourcesForPathname(e)},enqueue:function(e){var t;if(c||console.error("Run setApiRunnerForLoader() before enqueing paths"),O[t=e]||(c("onPrefetchPathname",{pathname:t}),O[t]=!0),j.some(function(e){return e}))return!1;var n=w(e);return n||y?!!n&&(Promise.all([T(n.jsonName),T(n.componentChunkName)]).then(function(){P(e)}),!0):_().then(function(){return N.enqueue(e)})},getPage:function(e){return w(e)},getResourceURLsForPathname:function(e){var t=w(e);return t?[].concat(k(t.componentChunkName),[x(h[t.jsonName])]):null},getResourcesForPathnameSync:function(e){var t=w(e);return t?C[t.path]:"/404.html"!==e?N.getResourcesForPathnameSync("/404.html"):null},getResourcesForPathname:function(e){return new Promise(function(t,n){var r=f;if(f=!1,g[e])return E(e,'Previously detected load failure for "'+e+'"'),void n();var o=w(e);if(o||y){if(!o)return console.log("A page wasn't found for \""+e+'"'),"/404.html"!==e?void t(N.getResourcesForPathname("/404.html")):void t();if(e=o.path,C[e])return i.a.emit("onPostLoadPageResources",{page:o,pageResources:C[e]}),void t(C[e]);i.a.emit("onPreLoadPageResources",{path:e}),Promise.all([S(o.componentChunkName),S(o.jsonName)]).then(function(n){var a=n[0],l=n[1];if(a&&l){var u={component:a,json:l,page:o};u.page.jsonURL=x(h[o.jsonName]),C[e]=u,t(u),i.a.emit("onPostLoadPageResources",{page:o,pageResources:u}),P(e),r&&_()}else t(null)})}else _().then(function(){return t(N.getResourcesForPathname(e))})})}},L=function(e){j=(c=e)("disableCorePrefetching")},U={getResourcesForPathname:N.getResourcesForPathname,getResourceURLsForPathname:N.getResourceURLsForPathname,getResourcesForPathnameSync:N.getResourcesForPathnameSync};t.default=N},function(e,t,n){var r=n(53)("wks"),o=n(35),i=n(5).Symbol,a="function"==typeof i;(e.exports=function(e){return r[e]||(r[e]=a&&i[e]||(a?i:o)("Symbol."+e))}).store=r},function(e,t,n){e.exports=n(117)()},function(e,t){var n=e.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=n)},function(e,t){e.exports=function(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e.__proto__=t}},function(e,t,n){"use strict";var r=function(e){return e=e||Object.create(null),{on:function(t,n){(e[t]||(e[t]=[])).push(n)},off:function(t,n){e[t]&&e[t].splice(e[t].indexOf(n)>>>0,1)},emit:function(t,n){(e[t]||[]).slice().map(function(e){e(n)}),(e["*"]||[]).slice().map(function(e){e(t,n)})}}}();t.a=r},function(e,t){e.exports=function(e){return e&&e.__esModule?e:{default:e}}},function(e,t,n){"use strict";e.exports=function(e,t,n,r,o,i,a,l){if(!e){var u;if(void 0===t)u=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var c=[n,r,o,i,a,l],s=0;(u=new Error(t.replace(/%s/g,function(){return c[s++]}))).name="Invariant Violation"}throw u.framesToPop=1,u}}},function(e,t,n){var r=n(12);e.exports=function(e){if(!r(e))throw TypeError(e+" is not an object!");return e}},function(e,t,n){var r=n(23),o=n(49);e.exports=n(14)?function(e,t,n){return r.f(e,t,o(1,n))}:function(e,t,n){return e[t]=n,e}},function(e,t){e.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},function(e,t){var n={}.toString;e.exports=function(e){return n.call(e).slice(8,-1)}},function(e,t,n){e.exports=!n(22)(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},function(e,t){var n=e.exports={version:"2.5.7"};"number"==typeof __e&&(__e=n)},function(e,t,n){var r=n(5),o=n(11),i=n(26),a=n(35)("src"),l=Function.toString,u=(""+l).split("toString");n(15).inspectSource=function(e){return l.call(e)},(e.exports=function(e,t,n,l){var c="function"==typeof n;c&&(i(n,"name")||o(n,"name",t)),e[t]!==n&&(c&&(i(n,a)||o(n,a,e[t]?""+e[t]:u.join(String(t)))),e===r?e[t]=n:l?e[t]?e[t]=n:o(e,t,n):(delete e[t],o(e,t,n)))})(Function.prototype,"toString",function(){return"function"==typeof this&&this[a]||l.call(this)})},function(e,t,n){var r=n(27);e.exports=function(e,t,n){if(r(e),void 0===t)return e;switch(n){case 1:return function(n){return e.call(t,n)};case 2:return function(n,r){return e.call(t,n,r)};case 3:return function(n,r,o){return e.call(t,n,r,o)}}return function(){return e.apply(t,arguments)}}},function(e,t){e.exports={}},function(e,t,n){"use strict";n.r(t);var r=n(0),o=n.n(r),i=(n(60),n(4),n(9)),a=n.n(i),l=o.a.createContext,u=n(63),c=function(e,t){return e.substr(0,t.length)===t},s=function(e,t){for(var n=void 0,r=void 0,o=t.split("?")[0],i=y(o),l=""===i[0],u=v(e),c=0,s=u.length;ct.score?-1:e.index-t.index})},y=function(e){return e.replace(/(^\/+|\/+$)/g,"").split("/")},g=function(e,t){return e+(t?"?"+t:"")},b=["uri","path"],w=Object.assign||function(e){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:{},l=a.state,u=a.replace,c=void 0!==u&&u;l=w({},l,{key:Date.now()+""});try{o||c?e.history.replaceState(l,null,t):e.history.pushState(l,null,t)}catch(n){e.location[c?"replace":"assign"](t)}r=_(e),o=!0;var s=new Promise(function(e){return i=e});return n.forEach(function(e){return e({location:r,action:"PUSH"})}),s}}},k=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"/",t=0,n=[{pathname:e,search:""}],r=[];return{get location(){return n[t]},addEventListener:function(e,t){},removeEventListener:function(e,t){},history:{get entries(){return n},get index(){return t},get state(){return r[t]},pushState:function(e,o,i){var a=i.split("?"),l=a[0],u=a[1],c=void 0===u?"":u;t++,n.push({pathname:l,search:c}),r.push(e)},replaceState:function(e,o,i){var a=i.split("?"),l=a[0],u=a[1],c=void 0===u?"":u;n[t]={pathname:l,search:c},r[t]=e}}}},T=!("undefined"==typeof window||!window.document||!window.document.createElement),S=x(T?window:k()),E=S.navigate;n.d(t,"Link",function(){return K}),n.d(t,"Location",function(){return U}),n.d(t,"LocationProvider",function(){return M}),n.d(t,"Match",function(){return Z}),n.d(t,"Redirect",function(){return J}),n.d(t,"Router",function(){return D}),n.d(t,"ServerLocation",function(){return F}),n.d(t,"isRedirect",function(){return G}),n.d(t,"redirectTo",function(){return Q}),n.d(t,"createHistory",function(){return x}),n.d(t,"createMemorySource",function(){return k}),n.d(t,"navigate",function(){return E}),n.d(t,"globalHistory",function(){return S});var P=Object.assign||function(e){for(var t=1;t=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}function O(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function R(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function j(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var N=function(e,t){var n=l(t);return n.Consumer.displayName=e+".Consumer",n.Provider.displayName=e+".Provider",n},L=N("Location"),U=function(e){var t=e.children;return o.a.createElement(L.Consumer,null,function(e){return e?t(e):o.a.createElement(M,null,t)})},M=function(e){function t(){var n,r;O(this,t);for(var o=arguments.length,i=Array(o),a=0;at.score?-1:e.index-t.index})},d=function(e){return e.replace(/(^\/+|\/+$)/g,"").split("/")},p=function(e,t){return e+(t?"?"+t:"")},h=["uri","path"];t.startsWith=a,t.pick=l,t.match=function(e,t){return l([{path:e}],t)},t.resolve=function(e,t){if(a(e,"/"))return e;var n=e.split("?"),r=n[0],o=n[1],i=t.split("?")[0],l=d(r),u=d(i);if(""===l[0])return p(i,o);if(!a(l[0],".")){var c=u.concat(l).join("/");return p(("/"===i?"":"/")+c,o)}for(var s=u.concat(l),f=[],h=0,m=s.length;h0?o(r(e),9007199254740991):0}},function(e,t,n){var r=n(12),o=n(5).document,i=r(o)&&r(o.createElement);e.exports=function(e){return i?o.createElement(e):{}}},function(e,t){var n=0,r=Math.random();e.exports=function(e){return"Symbol(".concat(void 0===e?"":e,")_",(++n+r).toString(36))}},function(e,t){e.exports=!1},function(e,t,n){var r=n(13);e.exports=Object("z").propertyIsEnumerable(0)?Object:function(e){return"String"==r(e)?e.split(""):Object(e)}},function(e,t){var n=Math.ceil,r=Math.floor;e.exports=function(e){return isNaN(e=+e)?0:(e>0?r:n)(e)}},function(e,t,n){var r=n(53)("keys"),o=n(35);e.exports=function(e){return r[e]||(r[e]=o(e))}},function(e,t,n){"use strict";var r,o,i,a,l=n(36),u=n(5),c=n(17),s=n(55),f=n(21),d=n(12),p=n(27),h=n(86),m=n(87),v=n(88),y=n(56).set,g=n(90)(),b=n(58),w=n(91),_=n(92),x=n(93),k=u.TypeError,T=u.process,S=T&&T.versions,E=S&&S.v8||"",P=u.Promise,C="process"==s(T),O=function(){},R=o=b.f,j=!!function(){try{var e=P.resolve(1),t=(e.constructor={})[n(3)("species")]=function(e){e(O,O)};return(C||"function"==typeof PromiseRejectionEvent)&&e.then(O)instanceof t&&0!==E.indexOf("6.6")&&-1===_.indexOf("Chrome/66")}catch(e){}}(),N=function(e){var t;return!(!d(e)||"function"!=typeof(t=e.then))&&t},L=function(e,t){if(!e._n){e._n=!0;var n=e._c;g(function(){for(var r=e._v,o=1==e._s,i=0,a=function(t){var n,i,a,l=o?t.ok:t.fail,u=t.resolve,c=t.reject,s=t.domain;try{l?(o||(2==e._h&&F(e),e._h=1),!0===l?n=r:(s&&s.enter(),n=l(r),s&&(s.exit(),a=!0)),n===t.promise?c(k("Promise-chain cycle")):(i=N(n))?i.call(n,u,c):u(n)):c(r)}catch(e){s&&!a&&s.exit(),c(e)}};n.length>i;)a(n[i++]);e._c=[],e._n=!1,t&&!e._h&&U(e)})}},U=function(e){y.call(u,function(){var t,n,r,o=e._v,i=M(e);if(i&&(t=w(function(){C?T.emit("unhandledRejection",o,e):(n=u.onunhandledrejection)?n({promise:e,reason:o}):(r=u.console)&&r.error&&r.error("Unhandled promise rejection",o)}),e._h=C||M(e)?2:1),e._a=void 0,i&&t.e)throw t.v})},M=function(e){return 1!==e._h&&0===(e._a||e._c).length},F=function(e){y.call(u,function(){var t;C?T.emit("rejectionHandled",e):(t=u.onrejectionhandled)&&t({promise:e,reason:e._v})})},A=function(e){var t=this;t._d||(t._d=!0,(t=t._w||t)._v=e,t._s=2,t._a||(t._a=t._c.slice()),L(t,!0))},D=function(e){var t,n=this;if(!n._d){n._d=!0,n=n._w||n;try{if(n===e)throw k("Promise can't be resolved itself");(t=N(e))?g(function(){var r={_w:n,_d:!1};try{t.call(e,c(D,r,1),c(A,r,1))}catch(e){A.call(r,e)}}):(n._v=e,n._s=1,L(n,!1))}catch(e){A.call({_w:n,_d:!1},e)}}};j||(P=function(e){h(this,P,"Promise","_h"),p(e),r.call(this);try{e(c(D,this,1),c(A,this,1))}catch(e){A.call(this,e)}},(r=function(e){this._c=[],this._a=void 0,this._s=0,this._d=!1,this._v=void 0,this._h=0,this._n=!1}).prototype=n(94)(P.prototype,{then:function(e,t){var n=R(v(this,P));return n.ok="function"!=typeof e||e,n.fail="function"==typeof t&&t,n.domain=C?T.domain:void 0,this._c.push(n),this._a&&this._a.push(n),this._s&&L(this,!1),n.promise},catch:function(e){return this.then(void 0,e)}}),i=function(){var e=new r;this.promise=e,this.resolve=c(D,e,1),this.reject=c(A,e,1)},b.f=R=function(e){return e===P||e===a?new i(e):o(e)}),f(f.G+f.W+f.F*!j,{Promise:P}),n(41)(P,"Promise"),n(95)("Promise"),a=n(15).Promise,f(f.S+f.F*!j,"Promise",{reject:function(e){var t=R(this);return(0,t.reject)(e),t.promise}}),f(f.S+f.F*(l||!j),"Promise",{resolve:function(e){return x(l&&this===a?P:this,e)}}),f(f.S+f.F*!(j&&n(77)(function(e){P.all(e).catch(O)})),"Promise",{all:function(e){var t=this,n=R(t),r=n.resolve,o=n.reject,i=w(function(){var n=[],i=0,a=1;m(e,!1,function(e){var l=i++,u=!1;n.push(void 0),a++,t.resolve(e).then(function(e){u||(u=!0,n[l]=e,--a||r(n))},o)}),--a||r(n)});return i.e&&o(i.v),n.promise},race:function(e){var t=this,n=R(t),r=n.reject,o=w(function(){m(e,!1,function(e){t.resolve(e).then(n.resolve,r)})});return o.e&&r(o.v),n.promise}})},function(e,t,n){var r=n(23).f,o=n(26),i=n(3)("toStringTag");e.exports=function(e,t,n){e&&!o(e=n?e:e.prototype,i)&&r(e,i,{configurable:!0,value:t})}},function(e,t,n){n(25)("replace",2,function(e,t,n){return[function(r,o){"use strict";var i=e(this),a=null==r?void 0:r[t];return void 0!==a?a.call(r,i,o):n.call(String(i),r,o)},n]})},function(e,t,n){"use strict";t.__esModule=!0,t.default=void 0;var r=!("undefined"==typeof window||!window.document||!window.document.createElement);t.default=r,e.exports=t.default},function(e,t,n){"use strict";!function e(){if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE)try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(e){console.error(e)}}(),e.exports=n(114)},function(e,t,n){t.components={"component---src-templates-part-intro-template-js":function(){return Promise.all([n.e(0),n.e(1),n.e(3),n.e(2),n.e(20)]).then(n.bind(null,132))},"component---src-templates-content-template-js":function(){return Promise.all([n.e(0),n.e(1),n.e(3),n.e(22),n.e(19)]).then(n.bind(null,145))},"component---src-pages-404-js":function(){return Promise.all([n.e(0),n.e(2),n.e(8)]).then(n.bind(null,133))},"component---src-pages-about-en-js":function(){return Promise.all([n.e(0),n.e(1),n.e(2),n.e(4),n.e(9)]).then(n.bind(null,134))},"component---src-pages-about-js":function(){return Promise.all([n.e(0),n.e(1),n.e(2),n.e(4),n.e(10)]).then(n.bind(null,135))},"component---src-pages-challenge-en-js":function(){return Promise.all([n.e(0),n.e(1),n.e(3),n.e(5),n.e(11)]).then(n.bind(null,136))},"component---src-pages-challenge-js":function(){return Promise.all([n.e(0),n.e(1),n.e(3),n.e(5),n.e(12)]).then(n.bind(null,137))},"component---src-pages-companies-en-js":function(){return Promise.all([n.e(0),n.e(1),n.e(2),n.e(4),n.e(13)]).then(n.bind(null,138))},"component---src-pages-companies-js":function(){return Promise.all([n.e(0),n.e(1),n.e(2),n.e(4),n.e(14)]).then(n.bind(null,139))},"component---src-pages-faq-en-js":function(){return Promise.all([n.e(0),n.e(1),n.e(2),n.e(6),n.e(15)]).then(n.bind(null,140))},"component---src-pages-faq-js":function(){return Promise.all([n.e(0),n.e(1),n.e(2),n.e(6),n.e(16)]).then(n.bind(null,141))},"component---src-pages-index-en-js":function(){return Promise.all([n.e(0),n.e(1),n.e(3),n.e(2),n.e(17)]).then(n.bind(null,142))},"component---src-pages-index-js":function(){return Promise.all([n.e(0),n.e(1),n.e(3),n.e(2),n.e(18)]).then(n.bind(null,143))}},t.data=function(){return n.e(23).then(n.t.bind(null,144,3))}},function(e,t,n){"use strict";var r=n(48),o=n(107),i=n(18),a=n(32);e.exports=n(59)(Array,"Array",function(e,t){this._t=a(e),this._i=0,this._k=t},function(){var e=this._t,t=this._k,n=this._i++;return!e||n>=e.length?(this._t=void 0,o(1)):o(0,"keys"==t?n:"values"==t?e[n]:[n,e[n]])},"values"),i.Arguments=i.Array,r("keys"),r("values"),r("entries")},function(e,t,n){"use strict";n(28);var r=n(6),o=n.n(r),i=n(0),a=n.n(i),l=n(4),u=n.n(l),c=n(2),s=n(1),f=function(e){function t(){return e.apply(this,arguments)||this}return o()(t,e),t.prototype.render=function(){var e=Object.assign({},this.props,{pathContext:this.props.pageContext}),t=Object(s.apiRunner)("replaceComponentRenderer",{props:this.props,loader:c.publicLoader})[0]||Object(i.createElement)(this.props.pageResources.component,Object.assign({},e,{key:this.props.location.pathname}));return Object(s.apiRunner)("wrapPageElement",{element:t,props:e},t,function(t){return{element:t.result,props:e}}).pop()},t}(a.a.Component);f.propTypes={location:u.a.object.isRequired,pageResources:u.a.object.isRequired,data:u.a.object,pageContext:u.a.object.isRequired},t.a=f},function(e,t,n){var r=n(3)("unscopables"),o=Array.prototype;null==o[r]&&n(11)(o,r,{}),e.exports=function(e){o[r][e]=!0}},function(e,t){e.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},function(e,t,n){"use strict";var r=Object.getOwnPropertySymbols,o=Object.prototype.hasOwnProperty,i=Object.prototype.propertyIsEnumerable;e.exports=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(t).map(function(e){return t[e]}).join(""))return!1;var r={};return"abcdefghijklmnopqrst".split("").forEach(function(e){r[e]=e}),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},r)).join("")}catch(e){return!1}}()?Object.assign:function(e,t){for(var n,a,l=function(e){if(null==e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}(e),u=1;un;)t.push(arguments[n++]);return y[++v]=function(){l("function"==typeof e?e:Function(e),t)},r(v),v},p=function(e){delete y[e]},"process"==n(13)(f)?r=function(e){f.nextTick(a(g,e,1))}:m&&m.now?r=function(e){m.now(a(g,e,1))}:h?(i=(o=new h).port2,o.port1.onmessage=b,r=a(i.postMessage,i,1)):s.addEventListener&&"function"==typeof postMessage&&!s.importScripts?(r=function(e){s.postMessage(e+"","*")},s.addEventListener("message",b,!1)):r="onreadystatechange"in c("script")?function(e){u.appendChild(c("script")).onreadystatechange=function(){u.removeChild(this),g.call(e)}}:function(e){setTimeout(a(g,e,1),0)}),e.exports={set:d,clear:p}},function(e,t,n){var r=n(5).document;e.exports=r&&r.documentElement},function(e,t,n){"use strict";var r=n(27);function o(e){var t,n;this.promise=new e(function(e,r){if(void 0!==t||void 0!==n)throw TypeError("Bad Promise constructor");t=e,n=r}),this.resolve=r(t),this.reject=r(n)}e.exports.f=function(e){return new o(e)}},function(e,t,n){"use strict";var r=n(36),o=n(21),i=n(16),a=n(11),l=n(18),u=n(108),c=n(41),s=n(111),f=n(3)("iterator"),d=!([].keys&&"next"in[].keys()),p=function(){return this};e.exports=function(e,t,n,h,m,v,y){u(n,t,h);var g,b,w,_=function(e){if(!d&&e in S)return S[e];switch(e){case"keys":case"values":return function(){return new n(this,e)}}return function(){return new n(this,e)}},x=t+" Iterator",k="values"==m,T=!1,S=e.prototype,E=S[f]||S["@@iterator"]||m&&S[m],P=E||_(m),C=m?k?_("entries"):P:void 0,O="Array"==t&&S.entries||E;if(O&&(w=s(O.call(new e)))!==Object.prototype&&w.next&&(c(w,x,!0),r||"function"==typeof w[f]||a(w,f,p)),k&&E&&"values"!==E.name&&(T=!0,P=function(){return E.call(this)}),r&&!y||!d&&!T&&S[f]||a(S,f,P),l[t]=P,l[x]=p,m)if(g={values:k?P:_("values"),keys:v?P:_("keys"),entries:C},y)for(b in g)b in S||i(S,b,g[b]);else o(o.P+o.F*(d||T),t,g);return g}},function(e,t,n){"use strict";e.exports=function(){}},function(e,t,n){"use strict";t.__esModule=!0,t.default=function(e){return e===e.window?e:9===e.nodeType&&(e.defaultView||e.parentWindow)},e.exports=t.default},function(e,t,n){var r=n(100);t.hash=function(e,n){var r=(n=n||{}).callback||function(){};if(e){var o=n.scroller||t.scroller;setTimeout(function(){var n=t.elements(e);n&&(o(n.id)||o(n.name))?r():r(!0)},0)}else r()},t.scroller=function(e){return!!e&&(e.scrollIntoView(),!0)},t.elements=function(e){var n=t.selectors(e);if(n)return{id:document.getElementById(n.id),name:document.querySelector(n.name)}},t.selectors=function(e){if(e&&(e=e.replace(/^#/,"")))return{id:e,name:'[name="'+r(e)+'"]'}},t.anchorate=function(e){t.hash(window.location.hash,e)},t.default=t.anchorate},function(e,t){t.polyfill=function(e){return e}},function(e,t,n){"use strict";var r=n(8),o=r(n(119)),i=r(n(129));t.ScrollContainer=i.default,t.ScrollContext=o.default},function(e,t,n){var r,o,i,a,l;e.exports=(o=[],i=document,a=i.documentElement.doScroll,(l=(a?/^loaded|^c/:/^loaded|^i|^c/).test(i.readyState))||i.addEventListener("DOMContentLoaded",r=function(){for(i.removeEventListener("DOMContentLoaded",r),l=1;r=o.shift();)r()}),function(e){l?setTimeout(e,0):o.push(e)})},function(e){e.exports=[]},function(e,t,n){for(var r=n(46),o=n(29),i=n(16),a=n(5),l=n(11),u=n(18),c=n(3),s=c("iterator"),f=c("toStringTag"),d=u.Array,p={CSSRuleList:!0,CSSStyleDeclaration:!1,CSSValueList:!1,ClientRectList:!1,DOMRectList:!1,DOMStringList:!1,DOMTokenList:!0,DataTransferItemList:!1,FileList:!1,HTMLAllCollection:!1,HTMLCollection:!1,HTMLFormElement:!1,HTMLSelectElement:!1,MediaList:!0,MimeTypeArray:!1,NamedNodeMap:!1,NodeList:!0,PaintRequestList:!1,Plugin:!1,PluginArray:!1,SVGLengthList:!1,SVGNumberList:!1,SVGPathSegList:!1,SVGPointList:!1,SVGStringList:!1,SVGTransformList:!1,SourceBufferList:!1,StyleSheetList:!0,TextTrackCueList:!1,TextTrackList:!1,TouchList:!1},h=o(p),m=0;ms;)if((l=u[s++])!=l)return!0}else for(;c>s;s++)if((e||s in u)&&u[s]===n)return e||s||0;return!e&&-1}}},function(e,t){var n;n=function(){return this}();try{n=n||Function("return this")()||(0,eval)("this")}catch(e){"object"==typeof window&&(n=window)}e.exports=n},function(e,t,n){"use strict";var r=n(112)(!0);n(59)(String,"String",function(e){this._t=String(e),this._i=0},function(){var e,t=this._t,n=this._i;return n>=t.length?{value:void 0,done:!0}:(e=r(t,n),this._i+=e.length,{value:e,done:!1})})},function(e,t,n){n(25)("split",2,function(e,t,r){"use strict";var o=n(72),i=r,a=[].push;if("c"=="abbc".split(/(b)*/)[1]||4!="test".split(/(?:)/,-1).length||2!="ab".split(/(?:ab)*/).length||4!=".".split(/(.?)(.?)/).length||".".split(/()()/).length>1||"".split(/.?/).length){var l=void 0===/()??/.exec("")[1];r=function(e,t){var n=String(this);if(void 0===e&&0===t)return[];if(!o(e))return i.call(n,e,t);var r,u,c,s,f,d=[],p=(e.ignoreCase?"i":"")+(e.multiline?"m":"")+(e.unicode?"u":"")+(e.sticky?"y":""),h=0,m=void 0===t?4294967295:t>>>0,v=new RegExp(e.source,p+"g");for(l||(r=new RegExp("^"+v.source+"$(?!\\s)",p));(u=v.exec(n))&&!((c=u.index+u[0].length)>h&&(d.push(n.slice(h,u.index)),!l&&u.length>1&&u[0].replace(r,function(){for(f=1;f1&&u.index=m));)v.lastIndex===u.index&&v.lastIndex++;return h===n.length?!s&&v.test("")||d.push(""):d.push(n.slice(h)),d.length>m?d.slice(0,m):d}}else"0".split(void 0,0).length&&(r=function(e,t){return void 0===e&&0===t?[]:i.call(this,e,t)});return[function(n,o){var i=e(this),a=null==n?void 0:n[t];return void 0!==a?a.call(n,i,o):r.call(String(i),n,o)},r]})},function(e,t,n){var r=n(12),o=n(13),i=n(3)("match");e.exports=function(e){var t;return r(e)&&(void 0!==(t=e[i])?!!t:"RegExp"==o(e))}},function(e,t){t.f={}.propertyIsEnumerable},function(e,t,n){var r=n(10);e.exports=function(e,t,n,o){try{return o?t(r(n)[0],n[1]):t(n)}catch(t){var i=e.return;throw void 0!==i&&r(i.call(e)),t}}},function(e,t,n){var r=n(18),o=n(3)("iterator"),i=Array.prototype;e.exports=function(e){return void 0!==e&&(r.Array===e||i[o]===e)}},function(e,t,n){var r=n(55),o=n(3)("iterator"),i=n(18);e.exports=n(15).getIteratorMethod=function(e){if(null!=e)return e[o]||e["@@iterator"]||i[r(e)]}},function(e,t,n){var r=n(3)("iterator"),o=!1;try{var i=[7][r]();i.return=function(){o=!0},Array.from(i,function(){throw 2})}catch(e){}e.exports=function(e,t){if(!t&&!o)return!1;var n=!1;try{var i=[7],a=i[r]();a.next=function(){return{done:n=!0}},i[r]=function(){return a},e(i)}catch(e){}return n}},function(e,t,n){n(25)("search",1,function(e,t,n){return[function(n){"use strict";var r=e(this),o=null==n?void 0:n[t];return void 0!==o?o.call(n,r):new RegExp(n)[t](String(r))},n]})},function(e,t,n){e.exports=!n(14)&&!n(22)(function(){return 7!=Object.defineProperty(n(34)("div"),"a",{get:function(){return 7}}).a})},function(e,t,n){var r=n(12);e.exports=function(e,t){if(!r(e))return e;var n,o;if(t&&"function"==typeof(n=e.toString)&&!r(o=n.call(e)))return o;if("function"==typeof(n=e.valueOf)&&!r(o=n.call(e)))return o;if(!t&&"function"==typeof(n=e.toString)&&!r(o=n.call(e)))return o;throw TypeError("Can't convert object to primitive value")}},function(e,t,n){n(25)("match",1,function(e,t,n){return[function(n){"use strict";var r=e(this),o=null==n?void 0:n[t];return void 0!==o?o.call(n,r):new RegExp(n)[t](String(r))},n]})},function(e,t,n){"use strict";var r=n(29),o=n(85),i=n(73),a=n(30),l=n(37),u=Object.assign;e.exports=!u||n(22)(function(){var e={},t={},n=Symbol(),r="abcdefghijklmnopqrst";return e[n]=7,r.split("").forEach(function(e){t[e]=e}),7!=u({},e)[n]||Object.keys(u({},t)).join("")!=r})?function(e,t){for(var n=a(e),u=arguments.length,c=1,s=o.f,f=i.f;u>c;)for(var d,p=l(arguments[c++]),h=s?r(p).concat(s(p)):r(p),m=h.length,v=0;m>v;)f.call(p,d=h[v++])&&(n[d]=p[d]);return n}:u},function(e,t,n){var r=n(26),o=n(32),i=n(68)(!1),a=n(39)("IE_PROTO");e.exports=function(e,t){var n,l=o(e),u=0,c=[];for(n in l)n!=a&&r(l,n)&&c.push(n);for(;t.length>u;)r(l,n=t[u++])&&(~i(c,n)||c.push(n));return c}},function(e,t,n){var r=n(38),o=Math.max,i=Math.min;e.exports=function(e,t){return(e=r(e))<0?o(e+t,0):i(e,t)}},function(e,t){t.f=Object.getOwnPropertySymbols},function(e,t){e.exports=function(e,t,n,r){if(!(e instanceof t)||void 0!==r&&r in e)throw TypeError(n+": incorrect invocation!");return e}},function(e,t,n){var r=n(17),o=n(74),i=n(75),a=n(10),l=n(33),u=n(76),c={},s={};(t=e.exports=function(e,t,n,f,d){var p,h,m,v,y=d?function(){return e}:u(e),g=r(n,f,t?2:1),b=0;if("function"!=typeof y)throw TypeError(e+" is not iterable!");if(i(y)){for(p=l(e.length);p>b;b++)if((v=t?g(a(h=e[b])[0],h[1]):g(e[b]))===c||v===s)return v}else for(m=y.call(e);!(h=m.next()).done;)if((v=o(m,g,h.value,t))===c||v===s)return v}).BREAK=c,t.RETURN=s},function(e,t,n){var r=n(10),o=n(27),i=n(3)("species");e.exports=function(e,t){var n,a=r(e).constructor;return void 0===a||null==(n=r(a)[i])?t:o(n)}},function(e,t){e.exports=function(e,t,n){var r=void 0===n;switch(t.length){case 0:return r?e():e.call(n);case 1:return r?e(t[0]):e.call(n,t[0]);case 2:return r?e(t[0],t[1]):e.call(n,t[0],t[1]);case 3:return r?e(t[0],t[1],t[2]):e.call(n,t[0],t[1],t[2]);case 4:return r?e(t[0],t[1],t[2],t[3]):e.call(n,t[0],t[1],t[2],t[3])}return e.apply(n,t)}},function(e,t,n){var r=n(5),o=n(56).set,i=r.MutationObserver||r.WebKitMutationObserver,a=r.process,l=r.Promise,u="process"==n(13)(a);e.exports=function(){var e,t,n,c=function(){var r,o;for(u&&(r=a.domain)&&r.exit();e;){o=e.fn,e=e.next;try{o()}catch(r){throw e?n():t=void 0,r}}t=void 0,r&&r.enter()};if(u)n=function(){a.nextTick(c)};else if(!i||r.navigator&&r.navigator.standalone)if(l&&l.resolve){var s=l.resolve(void 0);n=function(){s.then(c)}}else n=function(){o.call(r,c)};else{var f=!0,d=document.createTextNode("");new i(c).observe(d,{characterData:!0}),n=function(){d.data=f=!f}}return function(r){var o={fn:r,next:void 0};t&&(t.next=o),e||(e=o,n()),t=o}}},function(e,t){e.exports=function(e){try{return{e:!1,v:e()}}catch(e){return{e:!0,v:e}}}},function(e,t,n){var r=n(5).navigator;e.exports=r&&r.userAgent||""},function(e,t,n){var r=n(10),o=n(12),i=n(58);e.exports=function(e,t){if(r(e),o(t)&&t.constructor===e)return t;var n=i.f(e);return(0,n.resolve)(t),n.promise}},function(e,t,n){var r=n(16);e.exports=function(e,t,n){for(var o in t)r(e,o,t[o],n);return e}},function(e,t,n){"use strict";var r=n(5),o=n(23),i=n(14),a=n(3)("species");e.exports=function(e){var t=r[e];i&&t&&!t[a]&&o.f(t,a,{configurable:!0,get:function(){return this}})}},function(e,t,n){e.exports=[{plugin:n(97),options:{plugins:[],trackingId:"UA-135975842-1",head:!1,respectDNT:!0,exclude:[],cookieDomain:"fullstackopen.com"}},{plugin:n(98),options:{plugins:[],siteUrl:"https://fullstackopen.com"}},{plugin:n(99),options:{plugins:[]}}]},function(e,t,n){"use strict";t.onRouteUpdate=function(e){var t=e.location;if("function"==typeof ga){if(t&&void 0!==window.excludeGAPaths&&window.excludeGAPaths.some(function(e){return e.test(t.pathname)}))return;var n=function(){window.ga("set","page",t?t.pathname+t.search+t.hash:void 0),window.ga("send","pageview")};"requestAnimationFrame"in window?requestAnimationFrame(function(){requestAnimationFrame(n)}):setTimeout(n,32)}}},function(e,t,n){"use strict";t.onRouteUpdate=function(e){var t=e.location,n=document.querySelector("link[rel='canonical']"),r=n.getAttribute("href"),o=n.getAttribute("data-baseProtocol"),i=n.getAttribute("data-baseHost");r&&o&&i&&n.setAttribute("href",o+"//"+i+t.pathname+t.search+t.hash)}},function(e,t,n){"use strict";n.r(t),n.d(t,"onRouteUpdate",function(){return o});var r=n(62);n(101);var o=function(){Object(r.anchorate)({scroller:function(e){return!!e&&(e.scrollIntoView({behavior:"smooth"}),!0)}})}},function(e,t,n){(function(t){var n;n=void 0!==t?t:this,e.exports=function(e){if(e.CSS&&e.CSS.escape)return e.CSS.escape;var t=function(e){if(0==arguments.length)throw new TypeError("`CSS.escape` requires an argument.");for(var t,n=String(e),r=n.length,o=-1,i="",a=n.charCodeAt(0);++o=1&&t<=31||127==t||0==o&&t>=48&&t<=57||1==o&&t>=48&&t<=57&&45==a?"\\"+t.toString(16)+" ":0==o&&1==r&&45==t||!(t>=128||45==t||95==t||t>=48&&t<=57||t>=65&&t<=90||t>=97&&t<=122)?"\\"+n.charAt(o):n.charAt(o):i+="�";return i};return e.CSS||(e.CSS={}),e.CSS.escape=t,t}(n)}).call(this,n(69))},function(e,t,n){},function(e,t,n){"use strict";var r=n(21),o=n(103)(5),i=!0;"find"in[]&&Array(1).find(function(){i=!1}),r(r.P+r.F*i,"Array",{find:function(e){return o(this,e,arguments.length>1?arguments[1]:void 0)}}),n(48)("find")},function(e,t,n){var r=n(17),o=n(37),i=n(30),a=n(33),l=n(104);e.exports=function(e,t){var n=1==e,u=2==e,c=3==e,s=4==e,f=6==e,d=5==e||f,p=t||l;return function(t,l,h){for(var m,v,y=i(t),g=o(y),b=r(l,h,3),w=a(g.length),_=0,x=n?p(t,w):u?p(t,0):void 0;w>_;_++)if((d||_ in g)&&(v=b(m=g[_],_,y),e))if(n)x[_]=v;else if(v)switch(e){case 3:return!0;case 5:return m;case 6:return _;case 2:x.push(m)}else if(s)return!1;return f?-1:c||s?s:x}}},function(e,t,n){var r=n(105);e.exports=function(e,t){return new(r(e))(t)}},function(e,t,n){var r=n(12),o=n(106),i=n(3)("species");e.exports=function(e){var t;return o(e)&&("function"!=typeof(t=e.constructor)||t!==Array&&!o(t.prototype)||(t=void 0),r(t)&&null===(t=t[i])&&(t=void 0)),void 0===t?Array:t}},function(e,t,n){var r=n(13);e.exports=Array.isArray||function(e){return"Array"==r(e)}},function(e,t){e.exports=function(e,t){return{value:t,done:!!e}}},function(e,t,n){"use strict";var r=n(109),o=n(49),i=n(41),a={};n(11)(a,n(3)("iterator"),function(){return this}),e.exports=function(e,t,n){e.prototype=r(a,{next:o(1,n)}),i(e,t+" Iterator")}},function(e,t,n){var r=n(10),o=n(110),i=n(54),a=n(39)("IE_PROTO"),l=function(){},u=function(){var e,t=n(34)("iframe"),r=i.length;for(t.style.display="none",n(57).appendChild(t),t.src="javascript:",(e=t.contentWindow.document).open(),e.write(" \ No newline at end of file diff --git a/chunk-map.json b/chunk-map.json new file mode 100644 index 000000000..00d626fc8 --- /dev/null +++ b/chunk-map.json @@ -0,0 +1 @@ +{"app":["/app.f588656cc80a065e5f1e.css","/app-646f33d6245fa679e343.js"],"component---src-templates-part-intro-template-js":["/component---src-templates-part-intro-template-js.8d664019b0db737497c8.css","/component---src-templates-part-intro-template-js-2360f906dfe678bc52bd.js"],"component---src-templates-content-template-js":["/component---src-templates-content-template-js.3d0afa7b42228b6a3eb1.css","/component---src-templates-content-template-js-89a045bb52e3a64e943b.js"],"component---src-pages-404-js":["/component---src-pages-404-js.6480c5a0a269a417cf42.css","/component---src-pages-404-js-febc0647e8395190a03d.js"],"component---src-pages-about-en-js":["/component---src-pages-about-en-js.2102f04cf7dbbee5f9a3.css","/component---src-pages-about-en-js-0bccff2869cdc18ed31b.js"],"component---src-pages-about-js":["/component---src-pages-about-js.2102f04cf7dbbee5f9a3.css","/component---src-pages-about-js-59e23cbfa4c82957373b.js"],"component---src-pages-challenge-en-js":["/component---src-pages-challenge-en-js.4803702b6ffa3c5a2fa0.css","/component---src-pages-challenge-en-js-c6d6ff773b340e1e6008.js"],"component---src-pages-challenge-js":["/component---src-pages-challenge-js.4803702b6ffa3c5a2fa0.css","/component---src-pages-challenge-js-75b9ae8c8634f00b7ecb.js"],"component---src-pages-companies-en-js":["/component---src-pages-companies-en-js.9a96b07212cab2723d68.css","/component---src-pages-companies-en-js-282da434406d31226e7e.js"],"component---src-pages-companies-js":["/component---src-pages-companies-js.9a96b07212cab2723d68.css","/component---src-pages-companies-js-7ff6b6b6fabf67f868c0.js"],"component---src-pages-faq-en-js":["/component---src-pages-faq-en-js-98bd3f571c824c48b665.js"],"component---src-pages-faq-js":["/component---src-pages-faq-js-594d4b879b86236aa3f8.js"],"component---src-pages-index-en-js":["/component---src-pages-index-en-js.621afd82032206423c53.css","/component---src-pages-index-en-js-4f9c6fdca6a343a88e55.js"],"component---src-pages-index-js":["/component---src-pages-index-js.621afd82032206423c53.css","/component---src-pages-index-js-c8188825e7fb4bd72e57.js"]} \ No newline at end of file diff --git a/companies/index.html b/companies/index.html new file mode 100644 index 000000000..d66213477 --- /dev/null +++ b/companies/index.html @@ -0,0 +1,16 @@ +Yritysesittelyt | Full Stack Open 2019

Devaaja-tarinoita yhteistyökumppaneiltamme

Juha Tauriainen
houston

Roolini Houstonilla keskittyy frontend-kehitykseen. Käytämme teknologioita ja kirjastoja laidasta laitaan, muun muassa kurssilla opetettuja teknologioita. Konsulttitalona autamme asiakkaitamme ja yhteistyökumppaneitamme saavuttamaan korkean laadun kautta paremman tuloksen. Tuomme projekteihin koodin lisäksi myös alan parhaat käytännöt ja autamme asiakkaitamme menestymään.

Juha Tauriainen

Senior Consultant

Tuukka Peuraniemi
terveystalo

Minulla on usean vuoden kokemus terveydenhuollon teknologioista. Päädyin sovelluskehittäjäksi muutaman mutkan kautta, aloittaen urani proviisorina. Tämän jälkeen valmistuin tietojenkäsittelytieteiden maisteriksi ja siirryin kehityspäälliköksi ja edelleen sovelluskehittäjäksi.

Tuukka Peuraniemi

Sovelluskehittäjä ja digitaalinen moniosaaja

Juho Kyrölä
elisa

Työskentelen Elisalla ohjelmistokehittäjänä ja opiskelen samalla tietotekniikkaa Aalto-yliopistossa. Olen opintojeni loppuvaiheessa, ja alan pian tekemään diplomityötäni. Kurssejakin olen suorittanut samaan aikaan kuin olen ollut töissä täällä. Elisalle päädyin ystäväni suosituksesta, hän kertoi, että tämä on hyvä yritys olla töissä ja kehotti minua hakemaan.

Juho Kyrölä

Software Developer

Burcu Aybak
unity

I am working at Unity as a Full-stack Software Engineer and have ten years of experience in software development including e.g. web applications, command and control systems and communication systems.

Burcu Aybak

Software Engineer

Kristiina Rönnberg
konecranes

Alalla, jolla jatkuva oppiminen on melkeinpä elinehto, olen ollut onnekkaassa asemassa saadessani työskennellä uusimpien teknologioiden ja kokeneiden kollegojen kanssa. Roolissani Konecranesilla pääsen toimimaan kansainvälisessä ympäristössä ja kehittämään ratkaisuja, joilla tuodaan teollisen internetin hyödyt asiakkaan arkeen. Käytössämme oleva teknologiapaletti on hyvinkin rikas ja kehitysmenetelmät ovat muuttuneet yhä ketterämmiksi – myös kurssilla opiskeltavat sisällöt ovat läsnä tekemisessä.

Kristiina Rönnberg

Software Engineer

Mikko Kotola
sympa

Suoritin Full stack -kurssin ensimmäisten joukossa alkuvuodesta 2018. Kurssi oli todella tärkeä osa tietojenkäsittelytieteen kandiopintojani. Single page web appien logiikka ja modernit työkalut tulivat tutuksi. Yleisemmin ottaen minulle oli tärkeää saada rutiinia asynkroniseen ja funktionaaliseen ohjelmointiin. Kurssi ei tuntunut aina helpolta: välillä oli kyllä otsa kipeänä kun jotakin kiharaista kohtaa viilasi. Mutta tekemällähän sitä asioita opitaan!

Mikko Kotola

Full stack developer

Holly Gibson
smartly_io

I’m working as a software developer at Smartly.io, building our image and video templating tools and creating a beautiful and powerful experience for designers who make visual media. Our team works with JavaScript, React, and Node.js. From the first moment, I loved the culture at Smartly.io especially our value of being Humble Hungry Hunters. We have no egos here, and we’re humble.

Holly Gibson

Software Developer

\ No newline at end of file diff --git a/component---src-pages-404-js-febc0647e8395190a03d.js b/component---src-pages-404-js-febc0647e8395190a03d.js new file mode 100644 index 000000000..2d1934ce5 --- /dev/null +++ b/component---src-pages-404-js-febc0647e8395190a03d.js @@ -0,0 +1,2 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[8],{133:function(e,a,t){"use strict";t.r(a);var n=t(6),r=t.n(n),o=t(0),l=t.n(o),c=t(293),i=t(147),s=t(159),m=t(161),u=t(160),p=t(153),g=function(e){function a(){for(var a,t=arguments.length,n=new Array(t),r=0;r\n \n\n \n

404 - {title}

\n\n

\n Uncaught ReferenceError: unknown is not defined\n

\n\n \n
\n\n