├── .babelrc ├── .eslintignore ├── .eslintrc.js ├── .gitignore ├── .npmignore ├── .travis.yml ├── LICENSE ├── README.md ├── index.d.ts ├── lib ├── GithubCorner.js ├── GithubCorner.js.map ├── get-github-corner-styles.js └── get-github-corner-styles.js.map ├── package-lock.json ├── package.json ├── src ├── __testutils__ │ └── setup.js ├── app │ ├── components │ │ ├── Footer.js │ │ └── Header.js │ ├── constants │ │ └── ActionTypes.js │ ├── containers │ │ └── App.js │ ├── favicon.ico │ ├── helpers │ │ └── stringToCssName.js │ ├── images │ │ ├── ajax-loader.gif │ │ └── gradient_squares.png │ ├── index.html │ ├── index.js │ ├── pages │ │ ├── About.js │ │ ├── Home.js │ │ └── NotFound.js │ ├── reducers │ │ └── index.js │ ├── routes │ │ └── index.js │ ├── store │ │ └── configureStore.js │ └── styles │ │ ├── app.less │ │ ├── components │ │ ├── footer.less │ │ └── header.less │ │ ├── includes │ │ ├── common.less │ │ └── variables.less │ │ └── pages │ │ ├── about.less │ │ └── home.less ├── lib │ ├── GithubCorner.js │ ├── GithubCorner.test.js │ ├── __snapshots__ │ │ ├── GithubCorner.test.js.snap │ │ └── get-github-corner-styles.test.js.snap │ ├── get-github-corner-styles.js │ └── get-github-corner-styles.test.js └── plugins │ └── remove-prop-types-import.js └── webpack.config.js /.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | presets: ['env', 'react', 'stage-0'], 3 | env: { 4 | production: { 5 | plugins: [ 6 | 'transform-react-remove-prop-types', 7 | './src/plugins/remove-prop-types-import' 8 | ] 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /.eslintignore: -------------------------------------------------------------------------------- 1 | # ignore these files: 2 | -------------------------------------------------------------------------------- /.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | env: { 3 | browser: true, 4 | es6: true, 5 | jest: true, 6 | node: true 7 | }, 8 | extends: [ 9 | 'eslint:recommended', 10 | 'plugin:react/recommended', 11 | 'plugin:jsx-a11y/recommended' 12 | ], 13 | parser: 'babel-eslint', 14 | parserOptions: { 15 | sourceType: 'module' 16 | }, 17 | plugins: ['react', 'jsx-a11y'], 18 | rules: {} 19 | }; 20 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # npm ignore 2 | npm-debug.log 3 | node_modules/* 4 | 5 | # Sublime Text 6 | *.sublime-workspace 7 | 8 | # WebStorm IDE 9 | .idea/ 10 | 11 | # vim 12 | *.swp 13 | 14 | # kdiff3 15 | *.orig 16 | 17 | # OSX 18 | Thumbs.db 19 | .DS_Store 20 | 21 | # IIS logs 22 | iisnode/ 23 | 24 | # TernJs 25 | .tern-port 26 | 27 | # CTags 28 | tags 29 | 30 | # Code Coverage 31 | coverage/ 32 | 33 | # ignores specific to this repo 34 | build/ 35 | -------------------------------------------------------------------------------- /.npmignore: -------------------------------------------------------------------------------- 1 | .git* 2 | _ignore/ 3 | build/ 4 | coverage/ 5 | src/ 6 | test/ 7 | .DS_Store 8 | .npm-debug.log 9 | .project 10 | .travis.yml 11 | TODO.md 12 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: node_js 2 | node_js: 3 | - node 4 | - lts/* 5 | - 10 6 | before_script: 7 | - npm install -g gulp 8 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2015 skratchdot 2 | 3 | Permission is hereby granted, free of charge, to any person 4 | obtaining a copy of this software and associated documentation 5 | files (the "Software"), to deal in the Software without 6 | restriction, including without limitation the rights to use, 7 | copy, modify, merge, publish, distribute, sublicense, and/or sell 8 | copies of the Software, and to permit persons to whom the 9 | Software is furnished to do so, subject to the following 10 | conditions: 11 | 12 | The above copyright notice and this permission notice shall be 13 | included in all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 16 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 17 | OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 18 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 19 | HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 20 | WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 21 | FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 22 | OTHER DEALINGS IN THE SOFTWARE. 23 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # react-github-corner 2 | 3 | [![NPM version](https://badge.fury.io/js/react-github-corner.svg)](http://badge.fury.io/js/react-github-corner) 4 | [![Dependency Status](https://david-dm.org/skratchdot/react-github-corner.svg)](https://david-dm.org/skratchdot/react-github-corner) 5 | [![devDependency Status](https://david-dm.org/skratchdot/react-github-corner/dev-status.svg)](https://david-dm.org/skratchdot/react-github-corner#info=devDependencies) 6 | 7 | [![NPM](https://nodei.co/npm/react-github-corner.png)](https://npmjs.org/package/react-github-corner) 8 | 9 | 10 | ## Description 11 | 12 | Add a Github banner to your project page. A React version of: 13 | 14 | - [https://github.com/tholman/github-corners](https://github.com/tholman/github-corners) 15 | 16 | 17 | ## Getting Started 18 | 19 | Install the module with: `npm install --save react-github-corner` 20 | 21 | 22 | ## Usage 23 | 24 | ```javascript 25 | import React, { Component } from 'react'; 26 | import GithubCorner from 'react-github-corner'; 27 | export default class MyApp extends Component { 28 | render() { 29 | return ( 30 |
31 |
Wow
32 |
Cool
33 | 34 | 35 |
36 | ); 37 | } 38 | } 39 | ``` 40 | 41 | 42 | ## Documentation 43 | 44 | Here are the props you can pass to the `GithubCorner` instance: 45 | 46 | | Property Name | Type | Default Value | Description | 47 | |:-------------:|:----:|:-------------:|-------------| 48 | | href | String | '/' | The link to your project page | 49 | | size | Number or String | 80 | The width and height of the banner | 50 | | direction | String | 'right' | Whether the banner shows up on the right or left | 51 | | octoColor | String | '#fff' | The CSS color of the Octocat | 52 | | bannerColor | String | '#151513' | The CSS color of the banner | 53 | | ariaLabel | String | 'Open GitHub project' | The aria-label for a11y support | 54 | | className | String | undefined | Additional class names to be merged with the `github-corner` default | 55 | | svgStyle | Object | undefined | Custom styles to apply to the main `svg` element | 56 | 57 | Any additional props will be added to the `` tag that is rendered. 58 | For instance, you can do: 59 | ``` 60 | 61 | ``` 62 | and the `style` attribute will be rendered (which will hide the element). 63 | 64 | 65 | ## Links 66 | 67 | - [Source Code](https://github.com/skratchdot/react-github-corner/) 68 | - [Project Page](http://projects.skratchdot.com/react-github-corner/) 69 | - [Project Page Source](https://github.com/skratchdot/react-github-corner/tree/gh-pages) 70 | 71 | 72 | ## License 73 | Copyright (c) 2015 [skratchdot](http://skratchdot.com/) 74 | Licensed under the [MIT license](LICENSE-MIT). 75 | -------------------------------------------------------------------------------- /index.d.ts: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import { CSSProperties, AnchorHTMLAttributes } from 'react'; 3 | 4 | interface GithubCornerProps extends AnchorHTMLAttributes { 5 | href?: string; 6 | size?: number | string; 7 | direction?: string; 8 | octoColor?: string; 9 | bannerColor?: string; 10 | ariaLabel?: string; 11 | className?: string; 12 | svgStyle?: CSSProperties; 13 | } 14 | 15 | export default class GithubCorner extends React.Component { 16 | } 17 | -------------------------------------------------------------------------------- /lib/GithubCorner.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | Object.defineProperty(exports, "__esModule", { 4 | value: true 5 | }); 6 | 7 | var _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; }; 8 | 9 | var _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; }; }(); 10 | 11 | var _react = require('react'); 12 | 13 | var _react2 = _interopRequireDefault(_react); 14 | 15 | var _getGithubCornerStyles = require('./get-github-corner-styles.js'); 16 | 17 | var _getGithubCornerStyles2 = _interopRequireDefault(_getGithubCornerStyles); 18 | 19 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 20 | 21 | function _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; } 22 | 23 | function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } 24 | 25 | function _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; } 26 | 27 | function _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; } 28 | 29 | var githubCornerStyleId = '____GITHUB_CORNER_SUPER_SECRET___'; 30 | var githubCornerStyles = (0, _getGithubCornerStyles2.default)(); 31 | 32 | /** 33 | * A react component based off of: 34 | * https://github.com/tholman/github-corners 35 | * 36 | * @class GithubCorner 37 | * @extends React.Component 38 | * @example 39 | * 40 | */ 41 | 42 | var GithubCorner = function (_Component) { 43 | _inherits(GithubCorner, _Component); 44 | 45 | function GithubCorner() { 46 | _classCallCheck(this, GithubCorner); 47 | 48 | return _possibleConstructorReturn(this, (GithubCorner.__proto__ || Object.getPrototypeOf(GithubCorner)).apply(this, arguments)); 49 | } 50 | 51 | _createClass(GithubCorner, [{ 52 | key: 'componentDidMount', 53 | value: function componentDidMount() { 54 | if (!document.getElementById(githubCornerStyleId)) { 55 | var head = document.head || document.getElementsByTagName('head')[0]; 56 | var style = document.createElement('style'); 57 | style.type = 'text/css'; 58 | style.id = githubCornerStyleId; 59 | if (style.styleSheet) { 60 | style.styleSheet.cssText = githubCornerStyles; 61 | } else { 62 | style.appendChild(document.createTextNode(githubCornerStyles)); 63 | } 64 | head.appendChild(style); 65 | } 66 | } 67 | }, { 68 | key: 'render', 69 | value: function render() { 70 | var _props = this.props, 71 | href = _props.href, 72 | size = _props.size, 73 | direction = _props.direction, 74 | octoColor = _props.octoColor, 75 | bannerColor = _props.bannerColor, 76 | ariaLabel = _props.ariaLabel, 77 | className = _props.className, 78 | svgStyle = _props.svgStyle, 79 | otherProps = _objectWithoutProperties(_props, ['href', 'size', 'direction', 'octoColor', 'bannerColor', 'ariaLabel', 'className', 'svgStyle']); 80 | 81 | var mainStyle = { 82 | position: 'absolute', 83 | top: 0, 84 | fill: octoColor 85 | }; 86 | var armStyle = {}; 87 | var pathBanner = ''; 88 | var pathArm = ''; 89 | var pathBody = ''; 90 | if (direction === 'left') { 91 | pathBanner = 'M250 0L135 115h-15l-12 27L0 250V0z'; 92 | pathArm = 'M122 109c15-9 9-19 9-19-3-7-2-11-2-11 1-7-3-2-3-2-4 5-2 11-2 11 3 10-5 15-9 16'; 93 | pathBody = 'M135 115s-4 2-5 0l-14-14c-3-2-6-3-8-3 8-11 15-24-2-41-5-5-10-7-16-7-1-2-3-7-12-11 0 0-5 3-7 16-4 2-8 5-12 9s-7 8-9 12c-14 4-17 9-17 9 4 8 9 11 11 11 0 6 2 11 7 16 16 16 30 10 41 2 0 3 1 7 5 11l12 11c1 2-1 6-1 6z'; 94 | mainStyle.left = 0; 95 | armStyle.WebkitTransformOrigin = '120px 144px'; 96 | armStyle.transformOrigin = '120px 144px'; 97 | } else { 98 | pathBanner = 'M0 0l115 115h15l12 27 108 108V0z'; 99 | pathArm = 'M128 109c-15-9-9-19-9-19 3-7 2-11 2-11-1-7 3-2 3-2 4 5 2 11 2 11-3 10 5 15 9 16'; 100 | pathBody = 'M115 115s4 2 5 0l14-14c3-2 6-3 8-3-8-11-15-24 2-41 5-5 10-7 16-7 1-2 3-7 12-11 0 0 5 3 7 16 4 2 8 5 12 9s7 8 9 12c14 3 17 7 17 7-4 8-9 11-11 11 0 6-2 11-7 16-16 16-30 10-41 2 0 3-1 7-5 11l-12 11c-1 1 1 5 1 5z'; 101 | mainStyle.right = 0; 102 | armStyle.WebkitTransformOrigin = '130px 106px'; 103 | armStyle.transformOrigin = '130px 106px'; 104 | } 105 | var additionalClass = typeof className === 'string' ? ' ' + className : ''; 106 | return _react2.default.createElement( 107 | 'a', 108 | _extends({}, otherProps, { 109 | href: href, 110 | className: 'github-corner' + additionalClass, 111 | 'aria-label': ariaLabel 112 | }), 113 | _react2.default.createElement( 114 | 'svg', 115 | { 116 | width: size, 117 | height: size, 118 | viewBox: '0 0 250 250', 119 | style: _extends({}, mainStyle, svgStyle) 120 | }, 121 | _react2.default.createElement('path', { className: 'octo-banner', d: pathBanner, fill: bannerColor }), 122 | _react2.default.createElement('path', { className: 'octo-arm', d: pathArm, style: armStyle }), 123 | _react2.default.createElement('path', { className: 'octo-body', d: pathBody }) 124 | ) 125 | ); 126 | } 127 | }]); 128 | 129 | return GithubCorner; 130 | }(_react.Component); 131 | 132 | GithubCorner.defaultProps = { 133 | href: '/', 134 | size: 80, 135 | direction: 'right', 136 | octoColor: '#fff', 137 | bannerColor: '#151513', 138 | ariaLabel: 'Open GitHub project' 139 | }; 140 | exports.default = GithubCorner; 141 | //# sourceMappingURL=GithubCorner.js.map -------------------------------------------------------------------------------- /lib/GithubCorner.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["../src/lib/GithubCorner.js"],"names":["githubCornerStyleId","githubCornerStyles","GithubCorner","document","getElementById","head","getElementsByTagName","style","createElement","type","id","styleSheet","cssText","appendChild","createTextNode","props","href","size","direction","octoColor","bannerColor","ariaLabel","className","svgStyle","otherProps","mainStyle","position","top","fill","armStyle","pathBanner","pathArm","pathBody","left","WebkitTransformOrigin","transformOrigin","right","additionalClass","Component","defaultProps"],"mappings":";;;;;;;;;;AAAA;;;;AAEA;;;;;;;;;;;;;;AAEA,IAAMA,sBAAsB,mCAA5B;AACA,IAAMC,qBAAqB,sCAA3B;;AAEA;;;;;;;;;;IASqBC,Y;;;;;;;;;;;wCAmBC;AAClB,UAAI,CAACC,SAASC,cAAT,CAAwBJ,mBAAxB,CAAL,EAAmD;AACjD,YAAMK,OAAOF,SAASE,IAAT,IAAiBF,SAASG,oBAAT,CAA8B,MAA9B,EAAsC,CAAtC,CAA9B;AACA,YAAMC,QAAQJ,SAASK,aAAT,CAAuB,OAAvB,CAAd;AACAD,cAAME,IAAN,GAAa,UAAb;AACAF,cAAMG,EAAN,GAAWV,mBAAX;AACA,YAAIO,MAAMI,UAAV,EAAsB;AACpBJ,gBAAMI,UAAN,CAAiBC,OAAjB,GAA2BX,kBAA3B;AACD,SAFD,MAEO;AACLM,gBAAMM,WAAN,CAAkBV,SAASW,cAAT,CAAwBb,kBAAxB,CAAlB;AACD;AACDI,aAAKQ,WAAL,CAAiBN,KAAjB;AACD;AACF;;;6BACQ;AAAA,mBAWH,KAAKQ,KAXF;AAAA,UAELC,IAFK,UAELA,IAFK;AAAA,UAGLC,IAHK,UAGLA,IAHK;AAAA,UAILC,SAJK,UAILA,SAJK;AAAA,UAKLC,SALK,UAKLA,SALK;AAAA,UAMLC,WANK,UAMLA,WANK;AAAA,UAOLC,SAPK,UAOLA,SAPK;AAAA,UAQLC,SARK,UAQLA,SARK;AAAA,UASLC,QATK,UASLA,QATK;AAAA,UAUFC,UAVE;;AAYP,UAAMC,YAAY;AAChBC,kBAAU,UADM;AAEhBC,aAAK,CAFW;AAGhBC,cAAMT;AAHU,OAAlB;AAKA,UAAMU,WAAW,EAAjB;AACA,UAAIC,aAAa,EAAjB;AACA,UAAIC,UAAU,EAAd;AACA,UAAIC,WAAW,EAAf;AACA,UAAId,cAAc,MAAlB,EAA0B;AACxBY,qBAAa,oCAAb;AACAC,kBACE,gFADF;AAEAC,mBACE,qNADF;AAEAP,kBAAUQ,IAAV,GAAiB,CAAjB;AACAJ,iBAASK,qBAAT,GAAiC,aAAjC;AACAL,iBAASM,eAAT,GAA2B,aAA3B;AACD,OATD,MASO;AACLL,qBAAa,kCAAb;AACAC,kBACE,iFADF;AAEAC,mBACE,kNADF;AAEAP,kBAAUW,KAAV,GAAkB,CAAlB;AACAP,iBAASK,qBAAT,GAAiC,aAAjC;AACAL,iBAASM,eAAT,GAA2B,aAA3B;AACD;AACD,UAAME,kBACJ,OAAOf,SAAP,KAAqB,QAArB,SAAoCA,SAApC,GAAkD,EADpD;AAEA,aACE;AAAA;AAAA,qBACME,UADN;AAEE,gBAAMR,IAFR;AAGE,uCAA2BqB,eAH7B;AAIE,wBAAYhB;AAJd;AAME;AAAA;AAAA;AACE,mBAAOJ,IADT;AAEE,oBAAQA,IAFV;AAGE,qBAAQ,aAHV;AAIE,gCACKQ,SADL,EAEKF,QAFL;AAJF;AASE,kDAAM,WAAU,aAAhB,EAA8B,GAAGO,UAAjC,EAA6C,MAAMV,WAAnD,GATF;AAUE,kDAAM,WAAU,UAAhB,EAA2B,GAAGW,OAA9B,EAAuC,OAAOF,QAA9C,GAVF;AAWE,kDAAM,WAAU,WAAhB,EAA4B,GAAGG,QAA/B;AAXF;AANF,OADF;AAsBD;;;;EAjGuCM,gB;;AAArBpC,Y,CAWZqC,Y,GAAe;AACpBvB,QAAM,GADc;AAEpBC,QAAM,EAFc;AAGpBC,aAAW,OAHS;AAIpBC,aAAW,MAJS;AAKpBC,eAAa,SALO;AAMpBC,aAAW;AANS,C;kBAXHnB,Y","file":"GithubCorner.js","sourcesContent":["import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport getGithubCornerStyles from './get-github-corner-styles.js';\n\nconst githubCornerStyleId = '____GITHUB_CORNER_SUPER_SECRET___';\nconst githubCornerStyles = getGithubCornerStyles();\n\n/**\n * A react component based off of:\n * https://github.com/tholman/github-corners\n *\n * @class GithubCorner\n * @extends React.Component\n * @example\n * \n */\nexport default class GithubCorner extends Component {\n static propTypes = {\n href: PropTypes.string,\n size: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n direction: PropTypes.string,\n octoColor: PropTypes.string,\n bannerColor: PropTypes.string,\n ariaLabel: PropTypes.string,\n className: PropTypes.string,\n svgStyle: PropTypes.object\n };\n static defaultProps = {\n href: '/',\n size: 80,\n direction: 'right',\n octoColor: '#fff',\n bannerColor: '#151513',\n ariaLabel: 'Open GitHub project'\n };\n componentDidMount() {\n if (!document.getElementById(githubCornerStyleId)) {\n const head = document.head || document.getElementsByTagName('head')[0];\n const style = document.createElement('style');\n style.type = 'text/css';\n style.id = githubCornerStyleId;\n if (style.styleSheet) {\n style.styleSheet.cssText = githubCornerStyles;\n } else {\n style.appendChild(document.createTextNode(githubCornerStyles));\n }\n head.appendChild(style);\n }\n }\n render() {\n const {\n href,\n size,\n direction,\n octoColor,\n bannerColor,\n ariaLabel,\n className,\n svgStyle,\n ...otherProps\n } = this.props;\n const mainStyle = {\n position: 'absolute',\n top: 0,\n fill: octoColor\n };\n const armStyle = {};\n let pathBanner = '';\n let pathArm = '';\n let pathBody = '';\n if (direction === 'left') {\n pathBanner = 'M250 0L135 115h-15l-12 27L0 250V0z';\n pathArm =\n 'M122 109c15-9 9-19 9-19-3-7-2-11-2-11 1-7-3-2-3-2-4 5-2 11-2 11 3 10-5 15-9 16';\n pathBody =\n 'M135 115s-4 2-5 0l-14-14c-3-2-6-3-8-3 8-11 15-24-2-41-5-5-10-7-16-7-1-2-3-7-12-11 0 0-5 3-7 16-4 2-8 5-12 9s-7 8-9 12c-14 4-17 9-17 9 4 8 9 11 11 11 0 6 2 11 7 16 16 16 30 10 41 2 0 3 1 7 5 11l12 11c1 2-1 6-1 6z';\n mainStyle.left = 0;\n armStyle.WebkitTransformOrigin = '120px 144px';\n armStyle.transformOrigin = '120px 144px';\n } else {\n pathBanner = 'M0 0l115 115h15l12 27 108 108V0z';\n pathArm =\n 'M128 109c-15-9-9-19-9-19 3-7 2-11 2-11-1-7 3-2 3-2 4 5 2 11 2 11-3 10 5 15 9 16';\n pathBody =\n 'M115 115s4 2 5 0l14-14c3-2 6-3 8-3-8-11-15-24 2-41 5-5 10-7 16-7 1-2 3-7 12-11 0 0 5 3 7 16 4 2 8 5 12 9s7 8 9 12c14 3 17 7 17 7-4 8-9 11-11 11 0 6-2 11-7 16-16 16-30 10-41 2 0 3-1 7-5 11l-12 11c-1 1 1 5 1 5z';\n mainStyle.right = 0;\n armStyle.WebkitTransformOrigin = '130px 106px';\n armStyle.transformOrigin = '130px 106px';\n }\n const additionalClass =\n typeof className === 'string' ? ` ${className}` : '';\n return (\n \n \n \n \n \n \n \n );\n }\n}\n"]} -------------------------------------------------------------------------------- /lib/get-github-corner-styles.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | Object.defineProperty(exports, "__esModule", { 4 | value: true 5 | }); 6 | 7 | exports.default = function () { 8 | return "\n.github-corner:hover .octo-arm {\n animation: octocat-wave 560ms ease-in-out;\n}\n\n@keyframes octocat-wave {\n 0%, 100% {\n transform: rotate(0deg);\n }\n\n 20%, 60% {\n transform: rotate(-25deg);\n }\n\n 40%, 80% {\n transform: rotate(10deg);\n }\n}\n\n@media (max-width: 500px) {\n .github-corner:hover .octo-arm {\n animation: none;\n }\n\n .github-corner .octo-arm {\n animation: octocat-wave 560ms ease-in-out;\n }\n}\n"; 9 | }; 10 | //# sourceMappingURL=get-github-corner-styles.js.map -------------------------------------------------------------------------------- /lib/get-github-corner-styles.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["../src/lib/get-github-corner-styles.js"],"names":[],"mappings":";;;;;;kBAAe,YAAM;AACnB;AA6BD,C","file":"get-github-corner-styles.js","sourcesContent":["export default () => {\n return `\n.github-corner:hover .octo-arm {\n animation: octocat-wave 560ms ease-in-out;\n}\n\n@keyframes octocat-wave {\n 0%, 100% {\n transform: rotate(0deg);\n }\n\n 20%, 60% {\n transform: rotate(-25deg);\n }\n\n 40%, 80% {\n transform: rotate(10deg);\n }\n}\n\n@media (max-width: 500px) {\n .github-corner:hover .octo-arm {\n animation: none;\n }\n\n .github-corner .octo-arm {\n animation: octocat-wave 560ms ease-in-out;\n }\n}\n`;\n};\n"]} -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "react-github-corner", 3 | "description": "Add a Github banner to your project page. A React version of: https://github.com/tholman/github-corners", 4 | "version": "2.5.0", 5 | "homepage": "https://github.com/skratchdot/react-github-corner/", 6 | "files": [ 7 | "lib/", 8 | "index.d.ts" 9 | ], 10 | "main": "./lib/GithubCorner.js", 11 | "author": { 12 | "name": "skratchdot", 13 | "url": "http://skratchdot.com/" 14 | }, 15 | "repository": { 16 | "type": "git", 17 | "url": "git+https://github.com/skratchdot/react-github-corner.git" 18 | }, 19 | "bugs": { 20 | "url": "https://github.com/skratchdot/react-github-corner/issues" 21 | }, 22 | "engines": { 23 | "node": ">= 4.0.0" 24 | }, 25 | "license": "MIT", 26 | "scripts": { 27 | "build": "npm-run-all clean format lint cover transpile webpack", 28 | "clean": "npm-run-all clean:coverage clean:lib clean:build", 29 | "clean:coverage": "rimraf coverage/", 30 | "clean:lib": "rimraf lib/", 31 | "clean:build": "rimraf build/", 32 | "cover": "jest --coverage", 33 | "predeploy": "npm run build", 34 | "deploy": "gh-pages -d build/prod", 35 | "format": "prettier --write --single-quote 'src/**/*.js' '*.js'", 36 | "lint": "eslint src", 37 | "test": "jest", 38 | "transpile": "cross-env BABEL_ENV=production babel -s true --ignore test.js -d lib src/lib ", 39 | "start": "webpack-dev-server", 40 | "webpack": "npm-run-all webpack:dev webpack:prod", 41 | "webpack:dev": "cross-env NODE_ENV=development webpack", 42 | "webpack:prod": "cross-env NODE_ENV=production webpack" 43 | }, 44 | "dependencies": {}, 45 | "peerDependencies": { 46 | "react": "*" 47 | }, 48 | "devDependencies": { 49 | "babel-cli": "^6.26.0", 50 | "babel-core": "^6.26.3", 51 | "babel-eslint": "^9.0.0", 52 | "babel-jest": "^23.6.0", 53 | "babel-loader": "^7.1.5", 54 | "babel-plugin-transform-react-remove-prop-types": "^0.4.15", 55 | "babel-preset-env": "^1.7.0", 56 | "babel-preset-react": "^6.5.0", 57 | "babel-preset-stage-0": "^6.24.1", 58 | "bootstrap": "^3.3.6", 59 | "copy-webpack-plugin": "^4.5.2", 60 | "cross-env": "^5.2.0", 61 | "css-loader": "^1.0.0", 62 | "enzyme": "^3.6.0", 63 | "enzyme-adapter-react-16": "^1.5.0", 64 | "eslint": "^5.6.0", 65 | "eslint-plugin-jsx-a11y": "^6.1.1", 66 | "eslint-plugin-react": "^7.11.1", 67 | "extract-text-webpack-plugin": "^3.0.2", 68 | "gh-pages": "^3.1.0", 69 | "html-loader": "^0.5.5", 70 | "jest": "^23.6.0", 71 | "jsdom": "^12.0.0", 72 | "less": "^3.8.1", 73 | "less-loader": "^4.1.0", 74 | "markdown-loader": "^4.0.0", 75 | "npm-run-all": "^4.1.5", 76 | "object-path-get": "^1.0.1", 77 | "prettier": "^1.14.2", 78 | "prop-types": "^15.6.2", 79 | "react": "^16.5.1", 80 | "react-bootstrap": "^0.32.4", 81 | "react-dom": "^16.5.1", 82 | "react-redux": "^5.0.7", 83 | "react-router-dom": "^4.3.1", 84 | "react-test-renderer": "^16.5.1", 85 | "redux": "^3.5.2", 86 | "redux-devtools": "^3.4.1", 87 | "redux-thunk": "^2.3.0", 88 | "rimraf": "^2.6.2", 89 | "url-loader": "^1.1.1", 90 | "webpack": "^3.10.0", 91 | "webpack-dev-server": "^2.10.0" 92 | }, 93 | "jest": { 94 | "verbose": true, 95 | "collectCoverageFrom": [ 96 | "src/lib/**/*.js" 97 | ], 98 | "coverageReporters": [ 99 | "text-summary", 100 | "html", 101 | "json", 102 | "lcovonly" 103 | ], 104 | "setupTestFrameworkScriptFile": "/src/__testutils__/setup.js" 105 | }, 106 | "keywords": [ 107 | "react", 108 | "react-component", 109 | "github", 110 | "banner", 111 | "corner", 112 | "flag", 113 | "header", 114 | "href", 115 | "link" 116 | ] 117 | } 118 | -------------------------------------------------------------------------------- /src/__testutils__/setup.js: -------------------------------------------------------------------------------- 1 | import Enzyme from 'enzyme'; 2 | import Adapter from 'enzyme-adapter-react-16'; 3 | 4 | Enzyme.configure({ adapter: new Adapter() }); 5 | -------------------------------------------------------------------------------- /src/app/components/Footer.js: -------------------------------------------------------------------------------- 1 | import React, { Component } from 'react'; 2 | import { Row, Col } from 'react-bootstrap'; 3 | import { connect } from 'react-redux'; 4 | 5 | class Footer extends Component { 6 | render() { 7 | return ( 8 | 23 | ); 24 | } 25 | } 26 | 27 | export default connect()(Footer); 28 | -------------------------------------------------------------------------------- /src/app/components/Header.js: -------------------------------------------------------------------------------- 1 | import React, { Component } from 'react'; 2 | import { Link, withRouter } from 'react-router-dom'; 3 | import { Row, Col, Nav } from 'react-bootstrap'; 4 | import PropTypes from 'prop-types'; 5 | import { connect } from 'react-redux'; 6 | const packageInfo = require('../../../package.json'); 7 | 8 | class Header extends Component { 9 | static propTypes = { 10 | match: PropTypes.object.isRequired 11 | }; 12 | getActiveClass(pathname) { 13 | const { match } = this.props; 14 | return pathname === match.path ? 'active' : ''; 15 | } 16 | render() { 17 | return ( 18 |
19 | 20 | 21 | 22 |

23 | react-github-corner   24 | version {packageInfo.version} 25 |

26 | 27 | 28 | 29 | 46 | 47 |
48 | 49 | 50 |
51 | 52 | 53 |
54 | ); 55 | } 56 | } 57 | 58 | export default withRouter(connect()(Header)); 59 | -------------------------------------------------------------------------------- /src/app/constants/ActionTypes.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skratchdot/react-github-corner/28cc81c7c20e3b6f1a95e4297e6e7d5d6e18063c/src/app/constants/ActionTypes.js -------------------------------------------------------------------------------- /src/app/containers/App.js: -------------------------------------------------------------------------------- 1 | import React, { Component } from 'react'; 2 | import { Grid } from 'react-bootstrap'; 3 | import pathGet from 'object-path-get'; 4 | import Header from '../components/Header'; 5 | import Footer from '../components/Footer'; 6 | import GithubCorner from '../../lib/GithubCorner'; 7 | import PropTypes from 'prop-types'; 8 | import stringToCssName from '../helpers/stringToCssName'; 9 | import { connect } from 'react-redux'; 10 | import { withRouter } from 'react-router'; 11 | 12 | class App extends Component { 13 | static propTypes = { 14 | children: PropTypes.node, 15 | match: PropTypes.object.isRequired 16 | }; 17 | render() { 18 | const path = pathGet(this, 'props.match.path', ''); 19 | const githubUrl = 'https://github.com/skratchdot/react-github-corner'; 20 | return ( 21 |
22 | 23 |
24 | {this.props.children} 25 |
26 | 27 | 28 |
29 | ); 30 | } 31 | } 32 | 33 | export default withRouter(connect()(App)); 34 | -------------------------------------------------------------------------------- /src/app/helpers/stringToCssName.js: -------------------------------------------------------------------------------- 1 | export default name => { 2 | return name.toLowerCase().replace(/[^a-z0-9]/gi, '-'); 3 | }; 4 | -------------------------------------------------------------------------------- /src/app/images/ajax-loader.gif: -------------------------------------------------------------------------------- 1 | GIF89a ��������億ﶶꚚ�66�VV�����������!� NETSCAPE2.0!�Created with ajaxload.info!� 2 | , ��Iia����bK�$�F �RA�T�,�2S�*05//�m�p!z���0;$�0C�.I*!�HC(A@o�!39T5�\�8)� ��`�dwxG=Y 3 | g�wHb�vA=�0 V\�\�; ����;���H��������0��t%�Hs��rY'���e�$��"�\�#E1Cn�Ď��~��J,�,Aa���Uw^4I%P��u Q33{0�i1T�Ggwy}%�%'R�� ��  ���=�� ���� ���3��G�%��p��0� 14 | ��JRo�5Ȇ0IĦmyk��x�T�_}�(���^��yK��s����>i_�%���n�=����q�4e�-M¤D!� 15 | , ��I)*���')E�d]����PR A�:!��zr����bw� %6�"G�(d$["���J��Fh��aQP�`p%†/BFP\cU � ?T�tW/pG&OtDa_sylD'M�� ��q �tc��� ���� b��2��D��M :���� �d��%� �4%s) ���u��E3� �YU��tږ����D�$�JiM�<�Y�;�ذ��d<� O�tX�^%o/rvl9'L����;��9�����������9�%� �i9���� C� "�B B��Ds� �^Xf}$P � {L�?P� ��O4 ���E��咛V�$���dJ�#)�pV��$!� 19 | , ��IiR��ͧ"J�d]� �R�ZN�*P*��;�$P{*�N���\EА�!1UO2�D �_r6I�b 20 | �����H��8 B�; ��"'��Z��t��b�K#C'K����w}?�����K��iz6��:x�KAC���&}9�tz\ \���D5;x ���Q�d( � � �KW� � �MB���I��ڈM=�ˤs�⸽8Da��J`@LG!� 21 | , ��IiR��ͧ"J�d]� �R�ZN�*P*��;�$P{*�N���\EА�!1UO2�D �_r6I�b 22 | �����H��8 B�; ��"'��Z��t��b�K#C'K��Gziz6��8}z����~��%X�K9�:���0}�% �tz\B��lc L�bQ� � � ���� � �lj ���ųK����ň� �����x�(țP��X ,��ւ|/"!� 23 | , ��IiR��ͧ"J�d]� �R�ZN�*P*��;�$P{*�N���\EА�!1UO2�D �_r6I�b 24 | �����H��8 B�; ��"'��Z��t��b�K#C'K��Gziz6��8}z����~��%�:�A/ C} ���u\� �h}b�� D��]=�� �� ��V)� � 25 | ڊ����9C���D�K� ����K���u� ��*00�S�tD!� 26 | , ��IiR��ͧ"J�d]� �R�ZN�*P*��;�$P{*�N���\EА�!1UO2�D �_r6I�b 27 | �����H��8 B�; ��"'��Z��t��b�K#C'K��Gz ���z5 28 | �� �������C�: �A/ C}���u\� �Eh}b��6�[=�����Wx&)���I9�Ԭ�@oC��T?K����d���]��B7����6ЫD!� 29 | , ��IiR��ͧ"J�d]� �R�ZN�*P*��;�$P{*�N���\EА�!1UO2�D �_r6I� ƀ��H��03���hո��a��j U {CIkmbK#�cK���8 �{a��8�n��������V�:�/q:M� 30 | ��Cu�~���Eh�k��6 �[_���6P.]�6��!�)V�!� 32 | , ��IiR��ͧ"J�d]U �R�ZN ��J�j�N2sK6� 33 | �� d�I��)  34 | L�H�W�G 6 �KX��젱�.6�d��~z�h��uur/6 X5�I;_�t O#E {O���9V����9��4��������;V�C/ 35 | ��6�Ø~*�'��Mo����n��bX�:~]+V*�m�K_�O�rK��N@.���d�~�qЦ��D�B֋ 5D; -------------------------------------------------------------------------------- /src/app/images/gradient_squares.png: -------------------------------------------------------------------------------- 1 | �PNG 2 |  3 | IHDR��kH�gAMA��7��tEXtSoftwareAdobe ImageReadyq�e<�aIDAT$���$���_U�#���{0��S�:�tݎwku=_��Z�V��\V2�-e��O�r��^M��1����\��h��d�;��KHŭ����Hǻ�Zν����]z7G˨\"&�infΧ%�}��^�Ж���Jعq(��vSl]nJn����gmӥn�� s����[�e��%c���y���&�Ԫ�G�ws�\��i��G�Iv�+븤���R��lKW'�x'����f�6��.����Vi�3u"�D�/aj� �ƾ�w9���ܹ�r����l:Me��m�-�F�� ���ia�*Y�R�j�t;�cm�U��]/�?S�T�xG]�6-�NW�W�(/�\���Y}7z�)��v�%Nj�՛J�ǎ�U�Tb/W�;M=�r�&����HsO��r�T���u��}��أ9ŭ��V��'��I����d ;),���Kx�8�G33����RvW%�Gۻi4R�m����Q��$=���,��qz���ֳ/���?�Y�X���fr��\r�c�9�ܝZ� Y����ڋ{�5��J�K]ˣk��]G�s4���ⶖ�����v�ma}i����b�żI��l�zM��s�7����&�Y��G��ݙ�5�u�{����^'�2u\������٩'g]&Y�+�t�99������[H-��R���RjֻSΚ��j�l��rw��R]xӬ�Nr]�K��w���y���д{��u�v��D�;�[�eY��ƻܬhr�[O%s�|�-;����l���ҕ���)j(�b)Q�Q��-=��^s\���qG���R6�f��i�X;2㸛����V�:���{��}��H�ީ��&.GjI���;+�m��3e��FI���"{�t���5����=[�ӳ�sH��co'�z��͎z�֞)[�Z������N�%��Q�؞o 9��d����[�S�ƋO�S8�܉�z���sÐ"�9�X�Nʖ+����U�՘��9S��n�,��5.Y��kV���"[SdX�R&�0�H��7�aɥ��R���ܚDj��V�&��)YgN ]�%G��ٱ��i�H7�q�*[U�����^�H>����'e��ieM���ڝ��W%��Vm�lU뮝R�Y�t��V�����3�e[me�JQ�D�Ĩ�71����Y�n�ԭ[W5��tJ6n���r�*/���\bflV[]��u#sm,*[���Z�l��aۭ:�zͻ{���˔���>1��M1�(�G�R�QLc�KkE������L�K�^d���I��9�L�3Er�Ym(��W�S)�MF�$�4����ʚխ�Fq2�f���H5�eV:�R�-\��1�Q��N�T��#)*�=׵R�֒t͊����n�!���F�tLZ���lH;�(�e����,)���Ӹqhvf4y����l)�&R3Bf��Fc�0U�����2:��*f%)SӸ�dY�d���N�����U.ۥ~��&�>}���4[�%�J�d���2[����JR1GVc�5���d-����s����n�8�I�tR��9�L9�4���uM�]g1�(�5���6%��v�e.)��*j�MfF3L�F�2���a�� �9c�d3�R��#E1� �(��cQb(T)U�#��FP��k�Jc�8l 6 | ~�� �&0�ZfG7S#�X�$�Q��Rgu9��8�Jp-`���V �ͬR��O�ڗHv�۵��Z�<����=�M��!1��M�%�!�d�e[lU‚.)����M��@Ȟ�L�<p�4�m�N������DGi�*m��E�e6�����&,Fb�X@[�DT ��1\�i����ԴI^�G"\��䀀$(��DͲ��� ���J���=��W�r��5ر��r+ �5����8j. �h�V(�R����6�s��4MFI@iA/D����zT�Xm�eec��Ixh�1��(6�+���,-k��U���x��8��'��U�����Lu�!�0�){�<1� [-�`��v�y3$��Qaʐ-�B��(RR���.n$[c�"\�q4IQ��E��,Q�J�4Z��\�[��;������&��W/�w��Eu�����'�ѭ{w��Yk�����zD�J�rM��Fm&J�s�� Vp6C`\h���ŋ]%Ru�VnhD���X�,�qD�R���Tئm�nmj���2D���B� 'ۂ*bj &����Mex��֡�*Ff���) ��'��\�-�a�h�4]�P��s7��Bc�+E#�e����Am�`�Պ���h�2�9�,����X,y,BV��`'R��}����~�{�zoJϓ��y:_�{�{�����tO}OQ��뫬�{��}]k���8�@��*�fJ���0"�0�!���g,;�3�t�M۴���9�,1�a)����(��A�� �ne%N���d�0�5� �"�Sĵ T"j��!f��g����V���BNj�5ee�vq[l�g\�0j��D�4�4a.�@�����(�JR���ad�RY�,3��nfRYb�i�� 3leH�b���}��l�)N۳�I�5�������Y�U�/���%�������szꓶ׾��� ���rȊR1� 12 | :� 9)Zl��֕R;01Њ���� �Z�1�Kk� ��3��^ ��XɐR!H4V(��b ���6㬚FT��H�bK]��E��q[g�!��TE�Н`s�$��1I�����(�ӎ�������#U�J�v� )f��l՘�p٤�bV\*"�����d��ib�HC�]�����^����yie?ɻ�樝T��y��MU���{/Q�*o��r������9�}�֙�ƎQI6���Be�n*5���2F���iiY#�cc�I�5� �`�Q�ш��z�$�6��4tM T)�v�*�� C���\V����8c\��0#(U�s�y�+(!Tc�U����$��,��1P� )����j�3 13 | "�(�޲؋-ȣcŀ�L� zP��ѢA0���d�Mk�|�w��{��],�&�͞������d'�����v{�i��b�J�ڳ�.��rI|��>����!H)��F�R� 14 | �D� 15 | �E�������q�P)]���XSH�4 ���%��� @)�)CG�����1�Y�Dq�-� �"+Y �@HD3�F7��ɳݲL� l"�Y 16 | $�f��4Ԯ��� x�!E�܈PH�F��f ٢�)��ԭ�4\Ld��3�`[�Ґ�����l�N�)t-|���vw�����͞����-Q�]#���kN'��g]}yr��wOJ}󹕟��^�}�'f��.�T.QQ�w�[��k�Rv:N�:�\�P�hϚE��S"o & �*l ERJ8WV%\��s a;t�u�(�j"b��"l������Z����T�b����n��*�F�Z���z��(������L��n Pړ��e�N� 7.'���q�)�p�T���Q�I�2x��n�2�Xm�}��k/��okW�I|۪K��^{�,�^����k���h�]_�n��6�V��m��������%��x�3���r�Df촂L��hn�5�.O+�S���;5Lj �H ��P�����%.\�b�QtXI5���B��9���i���) e��".&!r8fv� ���$��X c�e�R��`n � 17 | �m�t�Z]ͦ�GM���Tc4���7��<���6+S6ˤ�e3p��ҲY�?l��a�����N��;���=�.����zM�ܓ��Yz���-�]ݽHz흞��]���u���f_������ܨIQ璥�bH� ��ĭ(��pڀ�P����e(q�����D+���҃81��m� �u�U0X[p$�����!�Vcǔm]��c, ��,^ňmj�N,� 18 | �v)(� 19 | �+��6��m��V���b�����Z��5� �� ���8u<�i /�=$\�\aR�����9�U/{q����w��NOI޽��/}ʴ������ܭ�-kOwj�w���y�����\����}�����6�‚�2H�M�d�@F�q����l���T"���h�� i@(X' 20 | b���7AD�@��M0A)6pC*����f����RL@U9��I����j4l6b�B�l����i���8�u����ئ�%� 21 | K%�SEZD�a���U�2i8;��8��Ѓa*@Qy�d�����5X�M�iC@��5�o�k����zY������麋N~�Y~'����U�/��dOO��-z��g��}�/���w�����M�,vˀv=��2+�R��:��B�� �nm���Y�h�u̼Y&���d˰L$Cu2w���0*E� 6)�z�U� 3�%�,��?��i������ԩ�I�i�2�Nme 22 | 舊�i� 23 | T��<���EV�5T6��ِ��,&6X6�&��&qHo#�5Sˎ�x!�����v��y�z������K��|���j�ל���i�����'��N~��-�=�����*�{�uVR�u��͖��>5�Z묒U)Qa���M����(&���l��9���\i�Z� 24 | Š�a�<�����������Kˡ�Z��0�U�t�� 25 | \�t�ac���S[P��֠ �@M2�mT8[6wp"kQ�e�E 26 | � &�j�I��x� 27 | ���Y60ո);8�H]r5,Tle�2v�Y�P�� � j�.��}��jɻ�n�-��{Rܻ7���*W�=��S��{~>�콤��d�rs�n���8I����n�9Z}J�')�����D�T%�i�# p�(�$b��"T��F[0�!s$�A�z�����-04��pQ�pi2Vg�`h�����@�c[�i 0Y �V�F��5����b� m1k�.*AN ;)ص6k��)%B�5����Q�q�2[H�0�%1I���.q��4{�9�r��m�F�����@4Q������;�KNWy�笚sJ�IO�^��%��7�MoJ���ޮ��g5�{Ku�^ܧw���{��]��R$]��]��}-3y��� �Z"�Tr��.�L&+�J:1��b������Gw�jnY\�DZ#�V[�.A-B��̸ Vʟ�.)p`�j�v�@��CY+!(Q(���$1� �xB�4��a��nh�cD��W;c��Q�r1�.�PY/��xZ�a�ݚP���쮃l� ��l� 28 | \v9\ 29 | �i�-�Q����cu�F&�������+_��\��S�{�������6O���w�wz/�����n�n��}o���*����\��ػw�Z�/���s�;���׾u"��>Gu�P���M�:���q����r-����YI��ڒY@Bt7��ͺ�z��p� �p�ݒ+Fe�dL�4��݂�^�Ȋ���A�.S�� 30 | .���J]n$�]�H��U�h�Y����nj�6�\�ލc�[�Xq������Z��'�z̈́ITWMd�J�ղ4)�����xT|�g�֒w��^�.�m7�D�ݳ/=�nޮ*]���N����Ӷ�����V�����*w�r���������{z^�����'�������}N�"��E�.ݭ�JP�Ĥ@��I/6J*�t��u��5��.�D��5$&�$]�����Kvî��6X[� 31 | �U�r�J�6M8�8&Ii����Ƶ $.P��lWFɴ�R�SX�rk�¶N!&R�]� ���\2���"�v��!P��vAT���0�$� ���Nsèk�Kh���o�ޝ�v�k#7}����Y����ު�Wy�^�����j�n߹/'�=��O��u�)zwZ'緹w������}��ꩍ[Y�;�����X��� c � #�˒2E�j����ʢ.�.��2���jw�����]K�R�6�Z�j����r��mJ��ʦ 32 | z� ͕�E[k�u+Zf���d�xL�`��jM�[#�Vk-�0�!STS� 33 | ѥЂ)v����A- H �d7�,w��Q�٭�f�F������e�}��O�{�����ݻ�>�S�u�w���پZ���V/~wﵫ=��N�^���������u��^e[��y{����S�������u��>;����U� Gڍ���*�x����v�]sW6I�m� -�6ZoM��z׭�N�BXx��%�bЅ�ʂ�dc��� *Nk�K��V�Ŗ�R�n`�%i�����p���]hY���*\� ���ᶡ���"b�j#�Pbt�]�Q��� �,R 34 | �zt �\i���`ɖ��^"v�]~߷�=����N�Vn��t�}r��]�Kw�]��^V���Ӌ�ϗ=��6��.:����q|���w�\���*�����%����󾧾�8��M�}�� w�V˲�U[-�6^7Yb��l�Qw#׻��@+EI�eW�@rY���!�%"����$"�ZX�@'�dFt��P���%â��/��V���\�˨!��n7p�ްj7\f6m,�����I��.�*�CS�,H�e��!�"�[X�"������rc���}m��=���d�޾���wo{I�}��뾽'�w���޽��j������>���Ey���k߾z_�˓ں�{�h/�������N߮���������U�t��\#$ͥ@�!ݵV��kwC��rCT�`���$�h�D� ���U~ 35 | 0v��6(ZjA�bUD��p�U�Xv�6ôXIـ�GT ��@\��J�[V W6@{%�X�"@�d���� 36 | !d�x ��m��^��S�B����M�[PTY�ֲ a ��z�"���}_t��<���Ʒo��^wsZ������tw��?���m�={%��}�l��{zk�_�z���>����z^%[������w��I�]�6�w����n_��T�����~�9H�djAN� 6MD�tV�u�؄Mִ�� ���C�Β˶,�UnJ�vV^��&-[^0�D̍ p�[E+/�-�� 37 | �+��)$�T�H4�f��T�[r���T&��0�T�Ѓ:(L� ���2��l̑sJ U�N�je� ]bX�,%�X ,)�0S�|�w�.+ᆴ֧*��e����պ�+?�dK��{ޗ����i�R%{������dߪ�N���;o�&��>�zﹹ��{O~y���Szq�ɻ�Nڴy�Qs�v��K0Se@�0RS�pX�ST$#�H9 t\ؖ: m���� j�������X;���#3��0SL�� BJ��:Ұ�HJ�b�?� 0�4D9D�d8Sa(FȤ3%LIG F!V��*����Q()"K ꉊZ g� cZQ�&S�5۰�H�J���s�g_���.��n}���]Z��ݻ��E������r�������y-�ce��O��=?��ҽ۞�]�����v�9��k�{mW/ͭz���֛��ܾ������>��� #�2Sek)u��:DYF���F�43�tƄB�C��V`�5#6�i0���I��$V�Cw2�ZF�!:"�"�Lf�R�,�d;)Jѡ�X��U���� �hfP��2CY��045M$*��`2�,� 56&�� #A�E�rhL��{��痽w�w�����6�I�F��������6~O'��y�'V����Nz��k�>��>��޶���Dm��4�[C6L��7Tj�"�i ��j������s��8�Ԅ tF O=���0J�x8� J�Pg\�Ð�Cf4��E:�hR1SM0�'-���'�T *ue:a&�ݠ63&����3�$q�;0+1cG�$S��@�����������{yo{�R嫓�KϒNJ^z޾[���6��;Y�^���[�)�։.v����5׻ԉn�;;z��[G��^��n����M��w�{��ͻ��;��>_�m����˺O��K��}��QJ)�T�Y���2�f�z�(qKu�� �x�I@gZ�.� gP �j�CcȐ&����T�M��:C͈��_ٿtZ �X ,:�X&C�p 39 | әh�R����AJpȲ� v2�@�# q��UFc��zʱӠ��t�3�Ԯ:���}߭^O^���y�����ɕ�{��G�ktO��}듞6�v���/���n����*ieٺ��Q�\7͋�{�ߝ��;W��k���^�]��]ٮ�������>7}��n�K��=�VV^���<���u�}�t����޻�mS祻�.�{�NW��𐎧��cŒ+'�L�yRŔ�)0�R��q -�N�,�I j��8SC�Pdž�q)!:,�V�Q���2a� kR�*GA���*p���b u�$@�$Gd 40 | )#v���‰��40[+W�c�#�D٦AU3 [��0���������V�TkKz�t�=%������ڧ8��>�tժ[���5ի���潫�{}m��r�=�Uo�z{ﵗ���۷�����^���.���IZ���{qz��{u7�o���ž]e{��S��mԷm��#ڌˎX�#���`K�J'���n�I��6EiR��;�H��i�6b�:�� ��=]� �0���� ��l� %GL8�i��3*�0����j��[�墔�JHXM;M X�]`VS�B��t$B�w&I�}��*�v��=��:����z���}�W5�d_�N���˓󞚾ݓϽ�Y/}�}}��f��ۮ�fW~W{յ�V��٩���Z��۷׻��i'��=�n�VO������齶ko]?����n\���%#IUŨYRST��ጀ�p�°�Țh����t� g�L�2��I�5,�6mϔ��T[�0����R�2H"�e1��T���H�f��1 [U�d� .e�J#J錉v�T���' dFc��(�j6�"Y�������V��������}��[?w/�w���u{�W{νܭ�/m�}����=7YU�緾Ӌ}ן�j7wi�ۍu^'����o�T�R���=��%y���ں�])���V�w�V|�>;���y_o�y����>3�ąYIUd4ELV�t4�rB�qA�V 41 | ���̠�x 5�t,4�1 42 | iFN6 43 | OG��2L�A�)���]�m����ɰ��G��%�&Ѵ�F3���:��[�� 49 | 4��� �۔6��͔�4�@a��2�p�T���S�e� ��{�fD�J��r�0e[�ۑH��%� ��#�hcئa3T��e0SKB����U��r�����������I�g'~w{����m$�r����E���m����ZJ}�V�:��st�S�w:_�$��|�ֶ�k[�׻�z�ݮb��S���V��9���vӫ��==�[[�O�+�=�W���^Vv^oS5�|߇��dX�*R%��S��L;L2 !�)D'�X�++��t<����q���5�W�(L� ���3�?�b'��I�l�9 �B�h2II0�j�銵�� �9 %uG4e �(p*6�0(2*��2����S����&Z�i�ϾU�y���ݷ�>[M�{�Vo�Ny������v�i���n�޾�V�e����F��j��ޫ�����J����wW;y��]�ޗw����.~9on�w�}wr�=g��~~�������E�n�5�;��������^�}�(D:��" �a ��hR@d��D)�!zؚ�R��NP;B��Щ��uS�mIϐLS������:FK���p'FZ�tTT3�l ��%\[)Lw�qPB3� 50 | �*ˌ�D9S�D��(T��s���^=߶i7��������%�ݻ�J��S�����n5���V���������KdI�������k��n����)�r�u��n�=����^��^tvn����׵�����z޻�'u�V���#�o�]��Ǿ�#gm��������HC� ƥ�V��w:.��GuȌ�:�r�q� �1��0��c�) 51 | +��0�U������v]�8� ��x�,�%f���H y�N�N�A2U)3#e� �i,��L:�;Ta��c2q0�L�D�����^W�U��.��Z�[���w���dGϻ������{�����ݓ�r�f����z]�����u��6y�u}�ō����l�U��%��������]��}�g�j�d��޵~�z�_v���^����_Wn����J�sr��v_��^�^��~�G��nLfؐ�H��h'N���Ik�a�J�x@ 52 | ��x0�i���P��(M��#ɦ]�������z8g4&�@)�F�:eeH�I� 53 | Ɣih��f:LB2�2�P��L�� 64g���es+��\���)ɽ��zΞ�\�=mt�h��ԓ����s���_�=m]�uy�o7Q7zq��R�V/U�J��}�{Q_�����Ӿ'�����ɾ�n/�w�=��'�{�6�}����z�{��}��vs�~^)��ە�j������F�s��ﳔQ��Teٙ������F���P���1<�� ���5��b� �.�hXb��������Q1a�&LN���]�w~��&��rϒ���Y����r�KU�u����]m��n������m��Nz/>����>؅���$�̐tg�pHy<�NƊ�Xf0�)E( -vB* cL�)�j�I�J:�8�_2�8������Eّ; �N���a 54 | @��L)�����I#cbq0 � ��t�z��@����K��u�F�������$9b��Z$."��4�P[F|�'��w����:q��{zm��*�D���z������о�w����&=��նꊺ��SK3���^�����|/�>��tU?��E�'^���z�g�/:�R��骫���c�秞/�I�볏W���M��ׄ�x)�����c{<d���;��cﬨ����r<�p�@�ݵ3&B. �#��;���ɀ0��"$���cVB�K�(��vcC�P��J�(.l��B 55 | � l GG�Q� :�F'�s�]X;�B���~����.�x������#������������U���Fα��=2���y2K?�� ?&/��+Y����j��.���k�W��L;��S��^$��Em|'5��Z}wyN�;[9��ûDN%>�~|��\-��>�y'����ꧾ��UeEt/�|���[O&XadM<�L�����ȔAz#�W+h`؄�g2g�r&ŗG�z|9����U�U��%��^������J�w"���}U�����ݽ��{}佾�'��T�^)���Q�u<��z�=]T�Sβ__������C7��r��O�����G���ӻ{���j��xy�\�4W?�b�9�Iy��o8B�!g����� G�ل$����@��l$gw�,C.�C�ˆY$� �]*���x��<����,dhfC�����,�KiiRJ� �]p<"+H���r�#o4�B�^z�A��f����{%���j�佗�C���{�1gZ��{�{�c߻�f����N5-���}׼{�˺<�� s�{lE��JLzf��6| 56 | {��xU���=#>�_�st,�ώEY�G��c����5ң������E⣢H�����&ώm>�<�V��S�:��zy�+�hկ���_� mBY��P �3\��Yk�3CXX���]p��#z ������d;A�X���K���I�-v3Z�����HHp%�+A��I��,<�,�E�(�H�103�pw��Ls������� K+��^���H��M���^.V��|���lS�{/�ә �+)W��أ�����kh���"Z��*�|��H�˳�5=?�3���{z����>V�����ǣ^��sϯ�Vb��)}zbH�5��{Oy���X��;���ci���=�����+Qi�������]�D1�I`B��&an&i���!��"OH�J�;;�(HT& *��h����^�v�%�Y�c�RY�0���2Q�x�c��=��U~���I���;��Q���1L"�Ѿ�����:�N�W�Q���^٣_d&T�\���>���G���{�J �ҍ�^^芗ʼ����G��5���I��Ր|jJ��]U!)�����Vt>�]^��f������q�`-0�x=̀���9��gG��Zv��K�&;�dj=�0�����!v�2 1�$�BI� w$�C;Xس@�2�83�r��b�݅03fVG��L�^�������y��S���]%�;��X�%���yQ�Rϼ�1 uRz��{�c��wϯT�Z���S�tz_����+�>�]�r�]���_�U,��w|�3�T��T짰������J�Y<�*9w1S�ף�����I�]�-+�+���R�$fίz�k���=޻{���~���t���6YhG�g6��jE���)Ozz'��I[ʣ_�ݾ�J����e�uY�E~N��O�c��5<��ezlz�~�'9g�)}�U�����Ғ��Y,��9���A�kN4�Ġ �Q؄Jf� 57 | Hq6�B�j3�zfv'�?9"� 8�Eb9�]IJf�Hkҁ�Av� �D���F3�d��L ,qf����G�^�s��˓���T��%�.���;�N�e�g�Ź�5K�]U�=F�a}�wO��f�ku��w�{����ӵ���L�׋CI� /y���ェ��ӱ'2������U���G[��e�|���1=�^��]�w<5,{<2�SY�k���|'��{/V��R|Ti':椧���=�R��z��Z��n����pt�(^�(�Ga�� �Z @���xc2^dDh<b3��h r$��N64vH� 58 | q2�Z6!��$��D�����$D����vV�0d��~w*���L�8L�:U�y.�OՋ�__N'���;��{||'�y�{�.}���q��e֗2��^dK~�Iu��븍����&<޹������Ow��yU�0�{��#�g�(����{��ty��>�]_��^���Ë�яwU�ԅz�� ���|�����=��r���/�U��~$�\K��� #���3�.��'����a-��,��Di��5����g�Y���8Yc9��KH6(�.8�,6 59 | �h&��`g&^'Z�'kj������tD��w�sLW�'�����֑����Kx��_d6}���B鞢��%�;:/���^�zrN��^_���z��������Ԉ9_�k�,�fzR/gGl��9�Ƥ�||�]+��{���=�%�]�|�뵹��萍y��{'���2�K�g5�[��P�>��ӱ���{��3}��]��*�����8�� i���� #R��Њ��Ҋ6�Q(k����uƂl��)z�`��#��X�X4 b9$0k`� ��#��v�%=;���� 60 | �vv쑘4a�L~�_��>��;�*����<�T�%ӼX׻s���E�W����-��}黧����^����ӽ����w/M_y�d��DM�����1N->W��_k�i���E��tl�{|<����Ȝ,��{�Ҧ|�=?�y�ݽ4W?K �>�~���w�g�����}G�Ѣ#?�|�5��D�;��� _˧�;����7��X��!�Lj A���@��� ��rȑ���&��r� %�e�i�8+�k&� 6��,�������ڃY��ޕ�c8������g��RJ1y���6�s|��Q���'��齗J�;��K����]sy�WE:>�l�&�B�2���,���OTbKO����z����t~�_iҹ6q��w�{:Ɗ,˦^�����%N}}��/.]���{}Ow�����)���g?�O�(��Bɧ���59I�J��]����<��iz�+��:��<'���~�LSA��. ���3�%��a �iě�Ke��L2r��@;�h4f���:��"�'�^9 ���j�!"b5�r���!�� \f���~?�>��{�&���y�S��]z�w�1��ܻ�m2�ޱz�����V=�GRɻD������C���y�c��\y���w��Kl�I-�罾cyz����I��<*���w~���_�{G��U��tw���{t�WJ�9�2�đ�޽KX:�]Y)+:��<�݉����_����Ļ��ݑ��X?J�������� P�8������� l&���c1� 7���hCz��J����p��n�VK��* 61 | 4t6�Y�j9�W�*�������j)c�����[��ꪻk,)N�8��wD���kq�P�+O��5]�$�RC��d쒁�*�:9(ӄg�l�� �9B���U�� A*w,$aE<�r�eB��+Xve��Nd���p���Ȋ���NK!fክ���Ge{`��vr 62 | ]���>V"�5q�RQ�K������ F^ 63 | �&�5�"� �Q��&Z{I);��vf�wh,w��3��vIe�&���$h��� 9�q&Y$ +�󿥥��~?@� ѥp�ԩ��sJ*��Y�{� �0�'3r���1�\-_!Jf�����m]��C�ܦf�^E����HΊ�tT&Q�R�q�zqɦ ����D%�K��)�q�$���za,%-S�>���EZV��>H���O����&����:qD�1plk����*;Q~��FP��� ��%(kG�E2^�����fg̈́�G�7"��LN&��� �q֜��$ �2�gW�-���m�v3;�b2�b����ν�B�DW���.��C�`W%Ņd���O���Õ��`m�w'%�!�������{)%��r�6Ǒ�N2��jʤK���g@��wB�+ut�Bp1#7EiH�qq$���౐*�gU.q��Ǩ������=BA��9�, R��OD@R�q��5=I�"��`'����� �Y���+�P���g�ES�A��!����5��|�dÔ � A���}����q�T�X7��C�G$�C��C��XV�CR�Q圏V`���u�cC��Z@O9V�E�x6*�H!b��ȠP�q.��z-��ECp�^�P�@m�R}�H�>��C�H 65 | ͳi�r�;��O����<�< 66 | ������U��иS�#�����2 67 | Z�۫tN��"�������4LKߘ;�o<�̷&,� ������}����YK��>������i8�>q>j4;���J��������3^x��>�␿�/%�(��ʕs�-��*SL`�+�2>�N���� �qI�-�l�D�Z� �"��t���`xa逆s �:T��z<`� �8W�E�<_EG�]���5pdø��#��^Ţf�X�P7qђ8�1�� 68 | ��,^$��%nc�TZۉ$;��#�S�S�’�2~�?{�O�,���g�=2AjG�� ��3������o�){����7���m�·�>Z�o�Y����;�}������7��?�g���G�r�z�x � ���΢�!uC�������;���^��<�aqu��`A�r�6 Є�R����C�͝A��%(��a��#�g•Tԁb�uD #'4�+��w�!�4P{��w,b 69 | =�r1�+�8.�D)�G!�@S��H�kS��Q'��] 70 | �h� ��q��u�E��竄S.��~��C?������@Sҷ�����Mp��r�Y-���Ǖg�ۏZ��3L��x���,�����#�o4��~��[��~�_�ꈤ�c�� 71 | 1E���C铝K�X�W /α���*���J��� u4{W8u������i��/e�$���X����Q- ��h� �.���wg�IH��G��E�{� � �x�+ȆtK��@9�Ѻ:�M�[Yv��-B)% �X��G {ȱ$�" �2IJu�]�6=����"���~�!�o��Y@���7�O��I��"�5糖R�4�����o���z<�X�70��>�����h����.h�$���us��L4�+�|e$^�6��C)[�g���k�֑a����*�}׃�sH .vb����BG�Y%�:���K P�3�8��� >��:U 1�y�)=�!��w�آ�;���:���1a��JI�8�t� ��@M�9��i���\E�TЁ��d��zw< b��5A���Ή-9rh������vWZ ?ڙ�v>[���7���1�$������i?�$V3^�|�x����C�XQ�����~[�����Á>�Ұ�����2F�bK�R�R�u��1"��w ]���$���=��E62��+B����#��}��EIГ���'����<�`�$u��6tzW�`���V�"t�Q%�B�+x�J�� /J�V��v�V8��ֽmIB��f��HV����;l ���� �ؖ��/FM 72 | ��H��� ����3�ٱ���]��v���$!�#H��-M���̿o����@�^wH������Z���h�^ 73 | �����h�Z���D�)9�$�l�8��Edq��w��ͥFM]eX>Q��\9#WՁ�ؔ��9�Dr.xa*��NtxV��OJd%�� =�L��>�!�Yi����!:��[�P}A�6w>R�� ��.�z�4��rS���ɵz�Y(S�݄�C��Yp/����j)�im�!�ʥaG6��!BL��Q�%�~���[};��>���#��+���J���ȅ�Z������g�Y�\�\-0���4��^x0�o����&'��;�*� Y�l��� ���Ձ�S��&��& W���8��S#�� rb�c�9�����M$��&�-����r5}�xj�(��¶����ٻ"���`k�w*{2���rx=h]� K1ңђ�����ϑb&87FD��{*s���9E�m�F����C{�2�rqw<�Z�㖌�ÑF�TR�i����4߷�rr�3ן�����ƃ���� �$ҞK/����G��Է&�o����8�e���/g1����D�5%dE5âW². ! �ݵb��4�&(|!|�J�P��\Ȫ������4p����)��:Er����ѹ=��H9�.��ݑH��ɽZ$��zril�,�@�)ez�㝐&`YY� O��=�!t�1E�έ[� �j�$�Cq�cc�p�P��WU�2t@��+� 74 | �X�a5>@)uֱ=��� 75 | )�J[(O&~�ߌ���~�P�� B��ӧ�g��~���߂��a�^����O��d�ۏ�l�3w�����4�>~�߯'R9t�90�;Kee[Nђ=[��*����T�8dl�W��Ch_aݝv 76 | �)�8���+���*��#(���2i�GpnHn��GJ��5�x�b�H*x�+�3+������6Md�Bm�%�A�1,*�a����@5uj�A�v$ZD�ՀQ*���5E�f/ue�0�E[�,�����%3kԣ[�j�*���a��(Ѩ��) ���{��'���s@ 77 | ��4�;~��ɦm����Ώ|��;<�{�<[����x�ι��:��� �0E[�Q��3`��)*��-���,�?n���T��ɖ��)�I��$(�4nP�b@B�]!�r=�8���$c��6,�(��0�Y���Ď��V�*y0M6�Q��V��Ѕ#j=N�(blk"Z�vR�"j�q�ʤ�5n�25H3� r�v�h ��1!E�9�(!(PS��ʆ��& 78 | Kc� ��}��B4���}|W�<�{E����yz��ď����+�#�=�w�%�<����su���+'9i R�,<�39&�6k�["qg �%@��#lVV��-9wA��5 ��K�*�u*R�aG�Z�T�a����51h2*PsԂ�ѣ8U]�B�̍�BM 79 | ���yV�Ed��� [�UP H6I6V+[C�ȡl�k�s�8�f-�%�1�q���H� \P��&��Q#=� �.XD�q�Ff�� 80 | d6���@�G ��H�yz�����;������!=P��=�GG�t�壨�ǫ�}��!(ٙ�� ��0�M�TE�M�6���xm�D��2�fq���[�Ѧ^��0��8!X���v��F��]��?���Մ�. 81 | ��J���qB�z���mУ鍎]S� V�xr5ԁ+v.!ȤR�Ȋ0M" �-VZĘR L% L]ˉ]�3�M\�(-�T�]�FIl�NЦ]��J(�Q�q+L�T���}����=WG:<��9��t����%��||8�$��� y�puy@�K��3W03G��{����֖Ďq�CJN�Щ�dĀ�,��"�d�#FI��#�#Sa �k08jLq@�% ���X<9� 6���-�v�*f�IeX��7���eP��C����J 82 | vP�"�X��nq�b�SK[j�a,93:[��b�j�i�8�� ��4EM�5sZt�S�$�U`���V2d"�%3���T����x��!p��=��y:| �����Ϲ�������� �@�򾋫�}&�gvCDaʀR]B��Y��Ւ ��Ц[@��t���.��&)�nXY�K�$�ht N�BL���� ���E �*ؖmS:@�!�E�t�G��꩑���)5�'-6�B���ʎ�CM�!S�r��KD��h��*u� R6���a�'jŪh��ڨ+B���f$M1�gA����21I�s��qi�*������ӣ�џ��(�������t���w��;W��\���������}-��dfML+VS�Q 5t�2��ݱZ:�chCI�uμZ�˃ �լ Wj�e�cܖ��Ķ 2Y�f�YA,��q�1���é��y�2B�D#LS�0����hF3�r� A+�eմ[�e-Cg�ư����q�,c�S[S"�i5�Ɍ� �.Lj����$�1FP#x�)��!�nk�f��͡5q=ʴ��3$�-��!4���}�]����{8��=ܧ���{羟�$^A�W���P�����y����5 �Њd�&CvD�e=.FC ��R!�K�h�AŌ�*T�� e^���PG�1M�0ӆ�&��I#��� P,�90��p�LC�̔IfDZp�R:, �N�e{$6���nA�-��T�yň�ɴ�- +�� 83 | W����Ju�j+Ӭ��L3R�,�2���*��e� D�(6���X:�Y�$�i��2�*�g�ٕ�C1�B�u�������=Oz��<�n�@�J�(;��@FZ��d�OA�H� ��[U�dQ\uR��E�0L�(���U�k�!B&#�[`���Mk �� 85 | d��@G���n�D5$2\C��u�ɥ�Taa<2XGRA���BT�F;��j\fF�W��EAD���HS �UK��Xh�S���ǑSKkR�c��B�D���n2����j��y*��ȴ��bR�I$צJ���6I���>�+�����������_���>�J���������}. x�S�,c3u�F��!�+s�L2TR�k�.#)�3�"6Ip �����37%i@3(Y��4c��H�����ڎ��)R۰�� � 86 | !��7,L���Q�ڐ�ę q�, 8�4BEf5�D� ���UKg������4nB`�p��`�� ���d,�a�M�zeg"�#n�����xj w���%�z�":�D+%�!LWe˱���J6rV{E���=��w޻:<���;��������{���{���}� ����m�RQ���g���N� 87 | gF k%9���*@f@� A;nE{Ccz�̚ ��V6�`��(V5P-%:6qQ�� m��(�D��j �BK�в�$�0H� K �Y�@v�*lcK��1�$��P�^Q�Y��m���6�,�Z�eiD��1k y��h���&�#k`��ڥ��sQ���R��-N8�֩5�+�rDzk1:�mB��ۨ�����{����}|O����=��9������>q^�5��Q���`̔�FM���B؞6�2� e`��@�Ů;K�j����2�X�İd��[*둨Sj5��Z�e����Y^<��*�N�I���&0���j�4h��D��ݸNJ=�#�"&T���5M� "�X0�-�Q� 88 | ��F���@�̈́�H�C��Dzm��fTo�C�r�Ip���T�ǹT� �,U�9��.kLsh�A�P�^�Q��������Q�}�����}��������2�B ˠ��ի��HΈ�F��j�%��I��,Y���:h���,$���Sa�u�g���`v�M�@���e L^�������U����h0 �La3hk���j3m�]��z�3���m���5��?ύ2݈I4�xN��@2�i, C���A�L+��ܡuR�6�V� ����v ��*uMW�F!KI�MT�s�)58�JB"�dq�r9�E@�|�wu���{~������}:�~߇҆`4ieF�s R2u�ǐ�<)�Ђ�0�d��AU �&�3ӓ�#T��v�@�2�-�Ҍ���� Y�X���q�-R3i 89 | �̘�m��<Ʀ4cC-%*�BXg����SZ(�8�Z̅֡L Y��!@Ea��F��E ��\*H Ρ�N��y ��2� Mv3�,p���2�F�eC����1+[��20Hz��x�=:� 90 | y`�I�j�PG ̔��}�������=���o��b���ve�$��*�L��4W��թ'�4* 91 | %��N0���ŠAf�X��,̰*U��(�u�u��t�YdG.ņ�$2E’0�0�+���2nH=�b�Y�A��:3Y� ��l��=�d&p��Tp�9i'R��eN� ��iy6{�����4���q9y:�A��vm�� 92 | zqi�U� ��r1����)�;�H�p�Ԋ��J�c� *���(��x���sy���ǵS��* F$%������R@l��z�k-e<`u%�)#VaQp�X��Pm!��1E+W̰j�6��CbM[������*vbS�P��& (��� �M�+ �2ĺl����f�*�q�l�n#Q����Id���@X�&��@��B�!������,��p�4���L�R,js�Hր�"Y�2B�b�Ud�v�Dv�,2c��-8 93 | $�*�, 1�؀ထ%)ڌ���H t������~~����.�*��� 94 | *Uf (�+��v�2�T��6a�E�b9����bVѰ5rY9G�k2f��T �?SS[��.A؎�VR�m�9�jH\v�(�UY2��������h�*���\X�](XT� -l���RP ;"�����]�5��l*�2H�iJS �%ri2����g�#X��(Ȳ8e KydE��F%M 95 | Pq��'��76�kO�FD)- ��q�l��Y+,x��4��{��|� [���5j3�1Jd7䲉�I��q5`��&�HS�0ʴ��C�Ȗ�fA�)��2���� �5j�)�Ut��[8�ل��$#��t�9�JjE�����j����Ҏ 96 | q�j��h��'be�� \�Zō�f{\� ܅rn gX��N��H��x�F)(a;���6�Lы�(�<��:������fO4��- 9K�Ɇ�g���ڠ֬@��CD{Q�ք��F�T9������D�}���}�"��XC!�U�P�V!�l�%��V��"%M�& ��X��z��z�2 �4�"�0(4q�64"IG�;v 9��X��*�-�����E��6@��.�y��u� �+R�!�V�� �V�c��u�UD�1F�D����BӪ�묘c�h��ȳV��gg܀b5�R��-L�%�"H#4SD�(���&(%�(�& 97 | ����%\�ғc3���(3��z�(��rҮ��M*eu�y`��3��Tq�p�� ��1T-��i#& �c�ԢEQ�ȁhb�#��RI7dMY�С^!j�k�M�VSFw��㠡1�MV�Ia�uR���Yb� 8����Y���*B�X��B����_��!4y���\<��*C0��ō�j�Jc��1�5h`;��0 �X��9�@S��(��ݺ�*9w�{~�^��s�]����^֗���=�R�{��{���r�� ���j�&�r��T�/a*�@X��*�cdJA�� +���D"8����6eR؀C6�E��!B����QZ�rUo(��Lб��BR��6ꆰ,5"'�mu͠���ܰY�Hc���"��H#ܪVT��]��ٴ�h�Z`�Ŋ5 �F$t#��hNJMS �cU�i�� 112 | ��5Z�hv�ڜ"���"K�����}_���u���'�u/ӝ��~����Ou}w�.=WoR.ʋ�{��}�d (� �V�tV��f2$+Z�h��,�1���lB����Ps�] 113 | �d 114 | q��������n�b2���(��6�]ЬWF�hH��Dht��!��V8$t�Y�Ђ�S6���M2E� ����e�$�����z�,� 115 | ��� n;aCPvV�N�@ VGX��6�0 cP�̐і��U�B:4Z#8uZ���}i��볟tW�����f����.�9��ůo=GUn�U7�\�Uz�SO���Cf��� l�N -�-f��VU������j OI�h6��R/ ,Zl!� ���9����"�.�RB����2Y���6� 116 | V#�桋0�3ba#3�5��� 117 | ��FS�R�6�55��ol�VN���z0c� qsE8�ոg�)�Dݚ������kC GTF�R�i��6m`%d�HJ�f����n]�ثU~�y�S��u����-���۴[{/�f�v�E�Woݚw�ճ�}��R� ds#bܺ�ܲ`6zf�9�4y[��4 ��R�56��"RR-�e�3� K�H+@b-v^����EC �fȌIRTٸ�)�!���'�5V 118 | �8�)X4�mr<�� 119 | TD�&�H4��� 120 | IȔ�,*�k�)3�4�ThX3�d�'" 121 | I�r���"��3nH%k�2���F��8�PI��^��k�דr^ӻ�.Z��.��]�ܫrQ�����ﴽ�v�����>u�w����w�޾���#�#HȸX���d ��,(���%n�inQڥgw�,0�xBe:δL����ٰ���� ��bjM��Ȗ;v��x��J�P��RoD&E��f�BPV�Cp�-G�Mjq�f�̢� �[��Qי*&�c����Fp7ۢD0+S��%�^(� '1d�u6��hn�\Ш���(� � 122 | �����X����4;U�"U{w�e�=;Z'�6�ߓ�t��ޓ޼>߽�i�6^n�Rܧ�&����4�t⍵NN��<ó�ȣQ��bh��Ia���� �Ԋ�"�lS�Y������B���]���Zk�e��ՈJy����R1�K�i厉3�*�֢S�1lVZ�:&�1B`l�bG��bְ !Lx�89PW��=���VJ7�N�w����Ӻ��<��]/~����������t��y,@ �zʺ��&hE�#MH� ��N"%OȊ���(5�"�@ؓM� D�Z�R� 1�B 124 | �k�`¥5gPU�RcPD�Z mЦVX-���SD�R���Zf�eCK5�����JzI7�Ha X��y8�5��\pN)�f�� 125 | 8��mS�bp ��`gm8 �-�Z9���VX'��=�V^����)�i��S�/��v��w�η����w�}n�:w��{��z֝o�����;�z}��}�g�J��P-�V��0�A#�u5�,�4dю-,��.UK'��%eY,-%�c��BfӜ��M!aiA[Ql!TIG% 126 | ��=�D�KA��,p��& � �@�:fmJ(amUS+��R� 3e�V��lr<�NX I�� �Y�@��P��*# Qn"�2a׌2���V 7P�F��1/�� B�ճ P�����k}��ۦ�t�mzU�g��9~ﺞ^b���yo'���\�ޓZ?�����v��IV����%�{��#rL�2 . ����8�F��覵ә�&�a�� @����Y�T5TrSV���t9�lUjq�摆d��B�Yfx�xL4�(W�t�Xs�N)���\;����a�t�z6�T� 127 | h$NA( F�$7���r���3/�Q�p+���4K�dZ�Y\&����J!)����jP����z��[�ީ�X�����ݽ{�|�U�{�����w����i�s�����鳫�|O��ͤ��K�;��n����o��d�� ��+���Z� L�f��p^�*�4g��l G����J*���a�* �i��К3��HZ3� FRH�H�9`�U��*V�dj������L�\�C⎃5�9q�*!�������2V�e�n��8�l�d��z�,Faik�v^ ��:�k��0�,;)ZVٰ� ! ����T˯�*��lS5y���w/Ne݋sYN�~����D�5k�]rﺋ�Xʞ^���|Z�&��>督k����}a vUyc�L4I`�(B6lu��vr�Zݎ�x��%��DR"� �I)&�B�!� 0 128 | ��P� 129 | �-cJ��� 130 | d���v3��@M���'ʘjL\Y�e5�g� 131 | h���EU&�3M�`)Zc��cc�B�i��c�d8��[�CS+=0S�vAS�v4oC��ʜu��j��}�N}y�Ewo�%��>u�{y�{m=����}�Ֆ�i�,��wi�r#�{���v��O���;����靧;�ݻ��nٹ��-"XĢ�3��b����{V�?4�"�?]�Mpt�� ^D[C�Hf �I6�5�,a�5��cAq�I]1���Z� X�Bw`�d˨)-CD�pm&�&(���Z��0! ��(�n���LG��$ Wa(E�%�@3Ħ���8HX���kձ�b���Ȑ ��5.��uqg� �*Y(�q� "�.4[\������^2���z[�NӪ����{o��z����t��Ȏ���ٗ�k�����U�W�����U�˻��=/U��mR��Oy;��}` v#aKL`dg�1D��Zm�$��AL�?�c7f�U��]HSNF<v�8�-h�� 132 | �@c��@��u2��dz��j��&1r 133 | ��P�%�TD'J���$b1�* A�P�Ac�ia��D�����l0T�y��J�� 134 | �'����uk�d,��ZL����kx]��8����U�����%��s�zӓ^�Nח�]��=�͑��z����_�����{�ԭ��{z�w�n���wZ;�v���ί���W�k&��SPUH�NJ��a;�f�Ԝ��R��R�P"�S�+ S� �2��#��iC"$�c3��P�jL�U<�F��*��q3���a`脄�`"#� 135 | #7� HJ���j�6��N'�ƸcUQ��r=,KCXݪ�t;��@q�nv�:���Ln�����[��6�s�\��0��%Yj1(*ױ�K)֤i�P��(�v%km�Z��ט(�`�TUH�(r�2ZeK�$Ѭ��L���:i� vAGlT-�EQy��z"���lm�����ڀ:A�8"E@��i4j#mN��d-���XN�ڄLM��Q)�%5XY�:[O�b[)~����[��^�{wzy�\�����N_����V�ޞ�e��NS��%/������oW%�N�R���ƛ�7+�ٷ�ۮn�[��h�y���}m1�k8{=���BQ[u�`)V���Hi�Jh���#3���M^�&��h���,��ls4f 136 | Yt4]��F�:&¦ ��S�2���ٖ(��9yQ����Ų���4���(�)f�J��1gXd��0� 137 | 4��lE�\:����`���5 �8v����C~������X��K�Y���N����&��'�;?��~}��f�u{��:?WO9[I�r��H��oo�^�殭�ޛ�׋��.:���F֜7Ky��yl�Z]IJ��*�Zt5�� V,����ᦳ�q3M��k�V�I��+h#l�"��j�d�2"DC�j353������z ��S,"�5]�c9�-�:l3��)�b� `��* ��6u�8C(�e6��Q�F%B��Ձ��Mة��� <�D�J%G6��[�rg�칓sv��y��޻���n��;�J��z���ޫ��d]������ދ���w��ڝ+?���]z���UIWiV�s�^��̝�O���>9�]0b���2oC v�!�l�am�WUM`�� �1YlfdA0o�Y��P��B�H<�Ʃ4�YL��(��n�͹���![�%�ɬUuH��D� !.��P#��� Ԭhc�VHT�Z��4�SET�0a�ҝ��QD�(��� !����>�}/��]ޓ��"u����wR��^ߴ�{R_�kt^�ӫ���%Y<�/�����O����Sor��NnN/�������]��W���&��mo�ٓ���S�,��/�c�����#��������!~�BY��?�Q��JP���G�����ŏ�����������?Ņ�T?a 138 | ��Q��W���CP��E�ͯ� �$��)a�?Q�ҟ�_B� DL��EP�P�_T?� ?����e��Ƥ⟡��U���q' r!���O%�8��5�V���4%(q�B��v���L��dObQ4��ǵ�'"���/��ތ�=�HF��o�[Mƾ��z�_xk�w�d�,��K�w��1J9/g}Rf7��;O4��&w�p���Q�9�N�{D��e�~�`WT,v��� �fw��d ��P��D���H)�1eY���4�J��(��( ���.�(]�J�Bu����P]U�� Q�"�I��V ��]n�T4�.�]�m�AEf+�a�pUJ��PL�:��Hݩb� 139 | ���*��(��@Uh�Ql6�R��� Ǚk%�ѣ��1Y�>�x''�"ѣ��̬n}���(km��]n���/�m����ሚ��]����&�&��w��r�c2�!E�z'c�����q/���bu3��,�B�H;0b7Y@1BhXꦤ�d���ѝ�dR��F5�l�� ���pC6�T�K`Љ�r�NW�%��TJnt�"D)�F3L��b�����NKm��TY���"��R�S�B�IW��Z�B#N��I��HB�P�]�T ��(!�J�-���� U��n4{7�̭o��%7�pEޞVQ4w��jw�Sf=7�fO�春'�l&{��[�8w�ktc^f�n�-���e5���L6����r�%i��Č�L����\�s��A ;�Rh�v 140 | n �K��8�X�n�%v�M�4Ȑ �2�Z]�����t�J#. 141 | �h�X�F5�E�q�D w�*�7�b���f�)��j��2�n���䔪���]T����2 ���B�����qw� V�h� �XlD��v�C��ѬtX.T�~�it�j��I��y s�����^N���6ZY��(��8tt��Sn5'�ko���(��C���X�mn����Ut�h/:͑93���Ck��m�ԍt�(��'ֈ�=��t�B��V�q�B��Jw��*+���.5�R�U����h�N�!Ljiu��]h��U3e�T�N��rT�]d��T*��V�(ˬB�� �L�J��B7@�>J�h��.�rXlDP��`� e m2R�ٍt�[0-�#��muұ��T�H��`c �2�6���� G{��Y%���������;+Qڍ���dv�rx;��|Z{�q��[ewN��Q����d�k�kE��� W���z%z<��E˓�m�R�H:��uV#2wDŽ+�9흲�y�U�.@,�bEUrĎZr\�\�v�A���)��C ���Y,��R���)2)���*|� ;V7J��b5�.7�V�b����Q�hQHD�- ,��h�$vЦK՟�D�d��F7>4�jw��%8v��)��v�aШN7�|ZEUu�N�;ևN���C��{#�oe�g�w�q����imO���pG�˭�d�L��yÓ�'�go�Mr�(����s��ٙ��{�2�o/�:�f��'���9���C����x^f��p8ci�6KQ��V��}��+B�*a�t�Ҍ�J+�\n�T�tEM��� 142 | i��6XU���j:.Z�jʮ ���CQ��%W�e��!� �l�U�Q'Q�B��6�t Td:h��[Tۈ��X�T��eB1;T� �F�v���Vʮ�P��V��*+���%�~�����g3_�1IeNCeV���]�x����,=ڈ^���� �Rܕ���M�'����x�Un׺�����L�# od��2�M����M� /����pymfw2�&��y|q���M� Ƭ�.���B0��N'�Y XP5@B1 �M4��C�����]Hb'��R���tڀ]"��*.��eT���B7� ���dW�]*�I��B(w� F�ԩ�6�� �t�J�X�b�� �Bt�@WS�*� ��*�].F�2��%Py��h�0�6�xn=sޝ�;{��|���,3���Y��"CŦN��f�vm��<����Y�J7�OBZ�6�����N|��l����O3�u���zde����DkZ;c�� - ��^Wb1��\��ł�� �RJ�*7��j�B�Cp�h9��ݬn�-9v��� �c��& ��A�� 143 | Z,v9vAJ� \`P�j�q%,Y���j+T��E$P���Jb"VwSͪV���"�,T7,����JWw����J(T��{w�;�V��q3�H���n�w�0�󙷱Dg5{N�ϗ�eeڌV;��R�� ��ef��ț�冫ሷs�y��IF���"eg�x|t�7{w�̑ o͋I��N�9�96%Z�M$Q�';���w��-Tu�f��V�N �QlWFe��2�����tE�� � Š)TR���ۥr\*]e� [M@��2CT��Vv��:�l�JI����H�B��" �A� 6K]A�Ul��n��Et�.u%$�*�%��vh:f���zg.�;��\�{��Y�t��hgF� �I��c���R�n&��=�s�[�yl�Ѯ���r9���.�*vH&�&ڙ�����G{E-�� ����nv2>��Y��nx�<''{��p���+��{�ͤ�V�0,�]@��b�ZUq�K)$jA� �)�B�n���� VD˅N 144 | �V�H��K!)�t3t�U�Dm�M�Y�:��$��wUʦ���R$�� ��;�l! 145 | S���J�V�h�I[�$@)BET�UF�R�;-���\�#︞�8��K:�s���t���Hjg�Z�� w���c�Y�4���\&s��ܙ�%Z����NR|w枖Q$Z7�e�<�2�b�X�o��3�9J� '��ьnVw3�q�� ���(����h��=��r�(�2���ڦ���S&���"��Rh���j�L�.@)�1�%B0ܥ�ɤ�MW�] JD��T�FDžv�Шn�`��Tt���t5��!�"�B����•"��ۦ�vQM .�p�Į�����T�Z���4w��6GK֭6�og�^���%ot����rw2�N.�xx7���&ޱ"��ܜ�X�q���ic^~N���03�ݻ��=Or�sy��Kv����d�hy�f���܊⬒M���Z*����l87�sN���� t����vu�j��b 146 | ��宒���&�*��r�A�)����P�bU�e�h��b7���t��X�`2`�Sm�4���Y%�t �Z*1n�SDU��%�nD��ۅJK.Eb�e����V�6W7�R�Rt��(PB�X�{o��h7���gO��R�9��9�™X�x��$ޑ�l8݌vW��̈́޵=�r+֭Nw��n��a���o�-��|���8ޡ��$'�o3�H̘��ln��_��s�(�ۻxN:�n�ι��:31y�q��3Yb3 �f��N[��(w�RLJ&`� w�%@����&ӆ�������,�US]�6����Ke�J�X�B!P�w�� ;A�.��b[�Tݡe�]��i*A������T��(������b�����&�d8�&7{����ƫ1kt��]RJ�s#+��E���2o��c�8�G�莻:ݜgַ\�H��ܻ��z�̳G�����w4�.���r{ɮ�D����O��StlK����x5mƦ���Q����;{�=RF�*�XtJ�f>�E��*(U�B��*���A�j�q�U��LwR�91�JH���*��B�M��6c��Щ$�T+JI@���j� 147 | ���A�PGR���6�R�B H�Q[���vSI�V���^t�I�|c[䅳{3\_�+�mv̳�s���G�H޻�̜G9*�y��� 148 | �p�Әs�\�ݎ����N��:�&�^��j�Ή���#���Es���jO���i.!or�Lκhn���:��x��pv��&ʜ���� 149 | ���J.�nUiTS]tSP]�ҪV5���*��(D�v�*T�I�������aw��U� P��QEʒX��e 150 | �vwY��A�N�ȴBHEU����&�P�R���j rIղ;"u\�ꀡ�K�޻h/�ϳ�u���;��ٝ��ˊ��j��3��d���\<�Ƒ,�r5���V�MN��$�q�(K���v���qMNvf���{���Y=ŷ�����o�땇���X���� =����Dw{�[}��I�Ǚ;�f��Nョr�Z�\�Lt:�t� ����htv1.�(]@7�QIX"ST��@�[�F�F�Y�.�UF;���J�-D�*C.��d;-UJV�X(V��,���"�j�����v96�2h6��Q�!u�ʎ阰�����BΒ9�'./�q(�^.'Kf��,�tv��}�ɽ�ޜ�:�&��x��܆��������H�7�����&��D�|{�dm�;w��(9�wV�tދn����f�3�ita8�=��" ��WZ���'��á�4������aF��YZ��%z����Yڷ\G;��4� ��4�;��=��e��� mz���xfĄ�xvtC�<1�1g&:q|��P\���.;Ñ�����abN(Y�g���3���K)��"�b��v:a+*R �n�P� %�B$;(�%���2X�[bðͪ�a;�0mK+������Q�8@��&c*��Y�b��� �l�(�d(.��h��VK��*V��,��.��ҳ3���tDQ�Ecm$r����R\�ڎon��<^(�Y3�=��������*G� �a��f��(Xn!-ЌS 156 | d4'vW�E�@(��`��,� v��*�-(q�%20� 157 | ���q��:�2�˕VA�ê��� ��n+���&D�� 158 | -"�t+ ������������v/�c�Ĺ��]縗9�ݮ���]�$o�{ք������$gך�Q^��l$��طw'��� 3�3��K���9��):G��'�dOL��8�p#k�Ȍ�[��ӭ6;��3;���� ��Ȏ���4^�s^�&✤[:�ѭ7GǦ���v��g���"�E�J ���ES��]�r�*7$T��4L�L���b�$X(��v p��r�Шb�i �QU;U,�T� +��ݕ.S��rw�p��*(5*b�DD� 159 | ��=E�BeIKǽ�y��0�f����z�KK���kJ��:�k��M&4#�y>_&jm��.w;�;'�܆�+ڳϚ�M�7��/ٕ���-�Lv��/Y��D�?������!Ǔ �B������U���x�<ٌv&w�;;c9޵|�|.\S#����)������bGq���*D��j��":Hhѐ�N�YJK���h�p�U@�N:�JՑ�����L2M2!U�nW��4���T��t�.���鈨2� ���*�@�Bǀ:���꽧=�\�>�F�hn���������+"��W��`)��!��B'tI����C2������4|E!��{bH�P6��_���k_�p$�&���x��p�Q�>�����D{~//c�mQ~/f�1�\%6[�v����&�(�Oy���MƌyMS=�}���J�������b�E�H??[a�7���Y��G�ɲ��=s��Եv&�vU6$���{��F����Џy�3���Ǒ��t���>3�s�DS��oݣ<����;ɽWĹ�ѽ ��p�t���*���8�����5��NN�Ď�Ǿ����(�׺7>�M|ueڗ<�I�{s!̹9�t/��#���r$�\ b���~㋢==�}cI��Fm�q����I5m���?;�)��RLY��K��W�+9�z~{��fFJ����u����e����5�"�M�����?�-YU6�K�G�u�'�tT���=����&�{����yQ_֤泦�'wz|t^�Ww~��֖����'��lF�{3ٴ��˓��ڼ���;�~?Z�� �K����a"%>�:���CR���t�epiS�bb� �po� t��c8���k�^8�p��{O�=1/ ��>�^��><�����\��9���1���+K�[�6�Iً��E��3&zY(�-�1TӌO ��ٳj�L�Iq���z�l9��v�{����J�%�����m�{�Ԥ�s��S��4���zr��D���d�UN6����-��s�ƥ��<�QJ.�me�������yi^I�r%+5=�����-���� _�yy�������{ �� i�W<�epy!�sttr`���s��5st Q x}�=Wxc��X�1%��1����k;�P������J��"<�5��J�Ɂ��FIN����Ҿ�����Xj~^�f|�k���z�3���.֋^�x{^�E{�ۢ��m7��l���XY#�o/�R/�ܖ����/OK���L۴���Mo�XE�۞�?�,�-m�͉��l��=�}O���t\m���zq^�2��Uz�r��L]�Hѹ̽�B�&�: 162 | �IJι�A��s Q8ֹ�HSt ��G E���B�9ѕ,���^�^297��s�����7��Z��ȕR�{}ﵫ��|S��'o";�c�7����Qu'ڏ�M�&�T6��KO�c��o-�JB)�_�h�֚z���B����c�F/�(Z������q�*�$�R��F��i:�A@����V�p�V�ة��&�6��S����6yNق" �)�6�qL\�~?�X��5y�{u��%�D����sNx�G����[�D�Lb���&�"��x���8GĹ��x�����_��������5rr�{����eD����X�hFi���`� U 163 | (�q� 164 | U��N5�"����Ʋ*�t���f@� $n��,+�TM3 `� �\;��0�G0@�@��8U�Vj�ah$c�2l2�h:1$a�s�t6�8+]`40e���,/ 6G�I@i�Lo�KpG5S�������I�{A�*lޣ�^�07��H�Axu�����Q�&>q���?��� 165 | ���rbA 166 | qsu�J��0�!сιƑr��11��~�r��Z��`#�bpD�^c�x�VD��Ml�GB���� SLQHV$�*�#6�3��T�1��â�9�.�ְz�G33K����s�0�LRQ��F�!"B�4��$A�*+��g�5j&�D$Y�\-�$h��d֫�H�-Q]K�*&[A �2�:�E$�:���~��y��\\��RǢ҉r�{uu��1�s�s����=�)�����˛瞋����D:�.r.��\���kኲqO�{DI�u����M̼H1p�gs8-��e⼴4 NR��&f����M�ԤʼnCc�����Q&��&���4[t��s�z�� 167 | R��JcS��5�)0 �2��*�,��D*�\c������ �z���d�wR��`7.aA�@��$'�1LjT`&�MU$L(Y&gͭR���s�Id�����?4|S����#^�����G��-G9�/����^��\��n�ܜk�C�^^&8�����!M��J�/i���gS��r- 168 | n�x�+����\)�"��+PO!� 169 | :s]�]���7�,���̍��N �Z�I�F�L������� �J$`��s7���t W�c%��FLj��C�91�:�GQ.��A���2�\F�h�9S� -i���ьͲ(g���S`Gq�� �� 170 | �*A��1����9�GW��H ���݃�W�=����w�{��!t�g�����������/��/�c�ý���>^�s��w�=����s����΅t�����~)�.�"k��C �HC����%`K(IQ�0��;�dA� ���TLY�\UU1P�l ��g⏻שF1��q�o�� ��9�����e!W�cX��b � ApR[p�W��Mc��O��9���f�*���u�m���@#UK0k�eז-�Z-�01,����hg����~��'>�� ����ኺ�_��;��Q<��>}�.��]^�������\8���h����q��G��c}: ����;���}�������B���� 171 | � 172 | �������ըfs]P W!�,�(`�M5v�1� azN��6DR5gH�l��RN�:���l�Q'���0لR�/iJ��fʊ�t�-�#c� (�`Aך3�X �Z=��Y�)"&#�%6����fwq�mjLʂnj�VZ�,r3��б�ńQo!!g����w΁������ 0?X����c���|�<�8�L������g]���� �t,��������>П�{��s-��-^���~��M�U�\�;�l]���=��9�����G�k�|!��C���]��Ϲ����#�~�B�DW#��ʀ�6o���e�X��@��L%nVI�MI#�P<,����g\*$D*���2�V]��=ahņq\ Z�q��0FT&���M��嚁j�0���A���q�L]�D�jh ����RU���1�-��c�S��sc�.����Fn D�Ě %:��b�Fi�P�HAY�������|�u����\^}��{?Gx}��s�銼��w �>��{mֵx��k���3D���B��9�qxuq����~€�g nVLb*��D�sf��!��u�du�ÍY�A��*����-6kqѨy���ñ�Д�rC���Ql�d��d��M�+6¸�����:��P�j����He����"u��5� �r,6.d�6KĠ�$@<�h���؉��B�tA�����[���������c���yYb��������i�#x����]�c�����>>����.y��������Q��΅�/��8:���2p>�{>���-�|�>}�~>ƽ��.���{a�����|8&?||t�}�����5C\�~?FM5,�hx�SY�5#2���lК��V�Y���Z��Q[j�����tc›Q�&�B���q���L�����c"u���&0"x`�pr�o@�9X,%��rQd��n�R����I�w7� �Hۘ����p�+��>�爺�pt�C>�|�{qx>�����C�����r04lc�´h��,@I��Z����ƟyL�Im4[�8^�ih�s�J%ZV ��^GʱJ��@0�� 174 | �m�ň:�+!1`�� ���Dk]�S�� 175 | R��(P�x0#J������M@mP�����V���Ր]Y��dd�P�3tȑ KN�*�-��Ʀa[�ʪȶ�� ��vٔ�x�5I�����}�gI�?����<W��߱����.}}y��p�# �>���|ߥ�|��?������E�jt��u$�:@�I�Q�M�˜Q����. (��+ąhɡ�Z%ƈ� ���6��% u\'դ�P�Z(�,nj�f%1{l�pd�DL�!*���?Lr���5��t,[�Q/*�T��V� 176 | K ns=t$<0�TcݐօJAU=�UI��De*�̃q\�E�"�9t�!�lH��X <�#�b��΍(Z[ꁳ�~����9t%���G����O�.>�|W � �J��������9::½G~�ߔn4"Y2`�I;$3V�r�0����R��`�4�TD��V�r� ,W 2�b#m,�Q���*X)�f�r�,����N!�Gm2��hWCǂ�5F��C`�k�e�ҰY0:^f�X*�p��T����MÈ┈��n��B[�ц�e�����1 `��%��(�U9`\a� :5m�Ё�u) r[e�Gy����tu>���{��I�w���#}�����}���~W���⽗�@���x>�����!]E�j��@�q�&)�s�D"��n�dh,#�;���4T�Ay��"pK�s3x�H��J&�j��@v� �6/�n(��e��d{��8��fj��?�T�tĄ]贂8RIh�:�`�Z��%���Hkպ�3F$�g��n����ҹ�3(¸E!+P(�l�)@�� 177 | ��(%z�6:$�*:'%ȓ)�p�h,�d �����A���?R�G��x������{����]��?\�|���G�Ï���P��/��*Д)��8� /�I���D���g�و@�� N�Q�dJ��Y-�'�@G����%6�#�v�p�ttxI��,��G�Ce�U�����aI�4�arLh�k��V@�&�-@��񲑆0dVG��$��z�8�m!8Y�L�2��,���HS�a�c�2��pb��*W1r�eZg�a�i��(����<�~�t ~��x/ ���p?�H�t/�s(|����|:�~��1U�!�h�d�ZUsh\�`�LĚI��d����S�6���[ 1pD�21��sp� QZ��D�5˄1#hA@��A��(� ��c�Mhn�@-��O�\�k�����Py����0�B���Vi������'�6p'[ W/��)����d4S���2�f���Aә X�eN�id� 178 | &$(l %q�q�*��������"u�w�����QW��8�~�wu�w ��;��O$t�O���~*g D䬲*%�"���=J�䈄'�0��11�S������JV�&�y�i�.h��D{�Ҫ �dhu�S���-ܔ1�A�l�)QTy��j%���0X`����(ZR�G�MH0Z�"4���@��j��ܑneZ�H�[6X ��6�a���x� �JYcH:^4���je1X5@d5jl$Yt�m�""�햿�� 179 | ��x���#�O:����W��G�9�:�ߧ���x���B��F���I24�l)[ԁ���VuRoن�a+� Vl���s#��Ў.� { f[���.�E '2M�IC��*k��R����qY���u���m��%9*:[������H���oi����?M( ���2�V.ZY�p�j�'D��Ā0���Cl��Pla�Z"8���^�L��z��D` �Y��&�`��7� %R�ڴ 180 | 3�{��9��{x��@W� >~G��������}�瞫�J�G��7�b�`n6�3bc��L�j�p�� R�K�1�ў���U��� 181 | -.i,R�3 182 | ZL �qg�%��"��.r����z�H�3 eHfk��/(�)F���� �Ș�+� �3��I����`�E���i��L4�Œ��1XIڤ&2�"��`D�\�*��;����5�J="�T��P��F��N�i���2��͠1���=����=������ѥ�{�����{u�·s$J����ے��:sl��tk{�U� LA�B0�( �jEA�tYpb V���:U�3��aȓY`�Tv�6� ��VY!n�P�+�,�1�N�bk8��ĦuQ-فev�?��Հ���� �(Z���vF�"UU[�b]p]Ic ���H�J"`��0�5ZU1/p խB7��S���b�Mϝ�(\ث����q��L�b��2��0�s�H���~>�p��C������x��G���wq���ڀ�K#��h�6(�)�И! 2�Q"�;g��n,,��H��.2� 1baЀu+ψ-+Vam��t�d��e��1Z��f �v�$f����C��?���iД�̩�Dc��Ozp��PS���Ҡ$DK�Iّ��94�.�Hb���T�mޚ 183 | E`���Hr����Љ&Ud*��j��VS)�?^ב�'�Y�0�Uz��#��{��t��G������=��O�����(��L`[: m,�.�X!îaE��d�P�Z���\��T�Q�0q8,��� �%�)4f�\`Z���D Մ�(ŕnX�$q�[12a��T$��r �0 184 | � ���;n��f��"aWiuj�Xa��l�B��3�@v�+�V�VA"E�%J-� Fc�NX�,L� ������H��#�(4]Wsd;^�� -14C�r3��6�"�2(c� �~��s�A����s������ �wq��{�!�%�&2�`tfTA�TП��F�sSڈ���lbJVN�4D�8�D��@� ����h��i.=���V�V0�F��g��F�D�؊�&�MR`��a����璪��F[��q���M<��0�! �0� ۲(�h���m��u��mHZ�u�!g.��r&�u o PU����`g-4�n�� ��^\�s���9��ҍc0�� 185 | ��*� )��{�#�?���~�O<��G�>\��p"��� !V %E"� 186 | ���$6ue�̴a �F�-@��ݱqkK�U.Gɮ�2���L!��`M�%#�q*-`�������UI�!��*��h�(N^�L5 7��f��G�h"8)���%XN�U�����2���ؚ�"�M���.:u 0y��z�Qa`Wf^LE���Hm�H�6���Bs���9� S8�DK!� 187 | 2�J��P�1R�[�@�����ď���p�w.���4V6)CT#�H��.r���`c���K/��C�܎�e�$D2�m�rbRCIFS���$PI��G�� X��\ص�0�`K��m֩02&�lQv����v�����`$q$���@W �B7ڠn ��I�x��&!�H�+�ѐ�6jg�`�V�q^C� 188 | $u�VDL;��QA�D����̙,1T�DC��3�ٔ��e1 189 | �Y�UaJ���{��pϽﹿ��@?^��������4+Y=�q�VDI�LW��[�B��L)�AȊ��� �ЖJ�i���9���qs�8�] �i��f�Sʸ��Zbd�6��\�M*��i&���9�c�ۈQ)�:2� ��F��ɮ�����PN0�n 8H���7(4& 190 | +Q#YN�H���r'!#A��D�2�ܚ�T��(;�s�Sb�;X�Aۂ�đTI��8��U(��� ��Bd�4�u� j� n<&s�Uz��{�������{�3Yv� (ˆ���а:� H�a�� ���� a�F�z�X:��P�0:��"n%,�va��SD=ۘ\J�B�jTl�l7V"7j%Ԥ����V�̥��LԄ0Cp<���bȖ�$fe��� zМm& 2 | 3 | 4 | 5 | 6 | 7 | react-github-corner 8 | 9 | 10 | 11 | 21 | 22 | 23 |
24 |

Loading react-github-corner...

25 |
26 | 35 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /src/app/index.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { render } from 'react-dom'; 3 | import { BrowserRouter } from 'react-router-dom'; 4 | import { Provider } from 'react-redux'; 5 | import configureStore from './store/configureStore'; 6 | import routes from './routes'; 7 | const store = configureStore(); 8 | 9 | render( 10 | 11 | {routes} 12 | , 13 | document.getElementById('app') 14 | ); 15 | -------------------------------------------------------------------------------- /src/app/pages/About.js: -------------------------------------------------------------------------------- 1 | import React, { Component } from 'react'; 2 | import { Jumbotron } from 'react-bootstrap'; 3 | import { connect } from 'react-redux'; 4 | import readmeContents from '../../../README.md'; 5 | 6 | class About extends Component { 7 | render() { 8 | return ; 9 | } 10 | } 11 | 12 | export default connect()(About); 13 | -------------------------------------------------------------------------------- /src/app/pages/Home.js: -------------------------------------------------------------------------------- 1 | import React, { Component } from 'react'; 2 | import { Row, Col, Jumbotron } from 'react-bootstrap'; 3 | import { Link } from 'react-router-dom'; 4 | import { connect } from 'react-redux'; 5 | import GithubCorner from '../../lib/GithubCorner'; 6 | 7 | class Home extends Component { 8 | render() { 9 | return ( 10 |
11 | 12 |

13 | react-github-corner 14 |
15 | Add a Github banner to your project page. 16 |

17 |

18 | View the examples below or learn more by visiting the about page 19 | after clicking the button below: 20 |

21 |

22 | 23 | About Page 24 | 25 |

26 |
27 |

Examples

28 | {[ 29 | ['#fff', '#151513', '#fff', 'right'], 30 | ['#fff', '#64CEAA', '#fff', 'right'], 31 | ['#fff', '#FD6C6C', '#fff', 'right'], 32 | ['#fff', '#70B7FD', '#fff', 'right'], 33 | ['#000', '#fff', '#000', 'right'], 34 | ['#000', '#64CEAA', '#fff', 'right'], 35 | ['#000', '#FD6C6C', '#fff', 'right'], 36 | ['#000', '#70B7FD', '#fff', 'right'], 37 | [ 38 | 'linear-gradient(to right, orange, blue, violet)', 39 | '#000', 40 | '#fff', 41 | 'right', 42 | { mixBlendMode: 'darken' } 43 | ], 44 | ['#fff', '#151513', '#fff', 'left'], 45 | ['#fff', '#64CEAA', '#fff', 'left'], 46 | ['#fff', '#FD6C6C', '#fff', 'left'], 47 | ['#fff', '#70B7FD', '#fff', 'left'], 48 | ['#000', '#fff', '#000', 'left'], 49 | ['#000', '#64CEAA', '#fff', 'left'], 50 | ['#000', '#FD6C6C', '#fff', 'left'], 51 | ['#000', '#70B7FD', '#fff', 'left'], 52 | [ 53 | 'linear-gradient(to right, orange, blue, violet)', 54 | '#000', 55 | '#fff', 56 | 'left', 57 | { mixBlendMode: 'darken' } 58 | ] 59 | ].map((obj, i) => { 60 | const [ 61 | backgroundColor, 62 | bannerColor, 63 | octoColor, 64 | direction, 65 | svgStyle 66 | ] = obj; 67 | const height = 200; 68 | return ( 69 | 79 | 88 | 96 | 97 | 98 |
 99 |                   {``}
108 |                 
109 | 110 |
111 | ); 112 | })} 113 |
114 | ); 115 | } 116 | } 117 | 118 | export default connect()(Home); 119 | -------------------------------------------------------------------------------- /src/app/pages/NotFound.js: -------------------------------------------------------------------------------- 1 | import React, { Component } from 'react'; 2 | import { Jumbotron } from 'react-bootstrap'; 3 | import { Link } from 'react-router-dom'; 4 | import { connect } from 'react-redux'; 5 | const packageInfo = require('../../../package.json'); 6 | 7 | class NotFound extends Component { 8 | render() { 9 | return ( 10 |
11 | 12 |

404 - Not Found

13 |

14 | We couldn't find the page you are looking for. You may want to 15 | visit the home page by clicking the button below: 16 |

17 |

18 | 19 | Homepage 20 | 21 |

22 |
23 |
24 | ); 25 | } 26 | } 27 | 28 | export default connect()(NotFound); 29 | -------------------------------------------------------------------------------- /src/app/reducers/index.js: -------------------------------------------------------------------------------- 1 | export default () => {}; 2 | -------------------------------------------------------------------------------- /src/app/routes/index.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { Switch, Route } from 'react-router-dom'; 3 | import App from '../containers/App'; 4 | const packageInfo = require('../../../package.json'); 5 | 6 | // pages 7 | import NotFound from '../pages/NotFound'; 8 | import Home from '../pages/Home'; 9 | import About from '../pages/About'; 10 | 11 | const routes = ( 12 | 13 | ( 17 | 18 | 19 | 20 | )} 21 | /> 22 | ( 26 | 27 | 28 | 29 | )} 30 | /> 31 | ( 35 | 36 | 37 | 38 | )} 39 | /> 40 | ( 42 | 43 | 44 | 45 | )} 46 | /> 47 | 48 | ); 49 | 50 | export default routes; 51 | -------------------------------------------------------------------------------- /src/app/store/configureStore.js: -------------------------------------------------------------------------------- 1 | import { applyMiddleware, createStore, compose } from 'redux'; 2 | import thunk from 'redux-thunk'; 3 | import rootReducer from '../reducers'; 4 | 5 | export default function configureStore(initialState) { 6 | const store = compose(applyMiddleware(thunk))(createStore)( 7 | rootReducer, 8 | initialState 9 | ); 10 | 11 | if (module.hot) { 12 | // Enable Webpack hot module replacement for reducers 13 | module.hot.accept('../reducers', () => { 14 | const nextReducer = require('../reducers'); 15 | store.replaceReducer(nextReducer); 16 | }); 17 | } 18 | 19 | return store; 20 | } 21 | -------------------------------------------------------------------------------- /src/app/styles/app.less: -------------------------------------------------------------------------------- 1 | /* bootstrap and 3rd party styles */ 2 | @import "../../../node_modules/bootstrap/less/bootstrap.less"; 3 | 4 | /* base includes */ 5 | @import "./includes/variables.less"; 6 | @import "./includes/common.less"; 7 | 8 | /* components */ 9 | @import "./components/header.less"; 10 | @import "./components/footer.less"; 11 | 12 | /* pages */ 13 | @import "./pages/about.less"; 14 | @import "./pages/home.less"; 15 | -------------------------------------------------------------------------------- /src/app/styles/components/footer.less: -------------------------------------------------------------------------------- 1 | .footer { 2 | .copyright { 3 | text-align: left; 4 | } 5 | .social { 6 | text-align: right; 7 | } 8 | @media (max-width: @screen-md-max) { 9 | .copyright, .social { 10 | text-align: center; 11 | } 12 | .social { 13 | margin-top: 20px; 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/app/styles/components/header.less: -------------------------------------------------------------------------------- 1 | .header { 2 | margin-top: 20px; 3 | .title { 4 | margin-top: 0; 5 | &> span { 6 | text-transform: uppercase; 7 | color: @text-color; 8 | } 9 | small { 10 | text-transform: lowercase; 11 | } 12 | } 13 | ul.nav { 14 | float: right; 15 | display: inline-block; 16 | } 17 | } 18 | 19 | @media (max-width: @screen-md-max) { 20 | .header .title { 21 | text-align: center; 22 | } 23 | .header ul.nav { 24 | float: none; 25 | text-align: center; 26 | } 27 | } 28 | 29 | @media (max-width: @screen-sm-max) { 30 | .header .title small { 31 | display: block; 32 | } 33 | } 34 | 35 | @media (max-width: @screen-xs-max) { 36 | .header ul.nav li { 37 | font-size: 10px; 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /src/app/styles/includes/common.less: -------------------------------------------------------------------------------- 1 | html, body, #app { 2 | border: 0; 3 | margin: 0; 4 | padding: 0; 5 | width: 100%; 6 | height: 100%; 7 | } 8 | 9 | html, body { 10 | background-image: radial-gradient(circle farthest-corner at center center , @body-bg 0px, @body-bg-radial 100%); 11 | } 12 | 13 | /* show this when our app is loading */ 14 | #app-loading { 15 | width: 100%; 16 | text-align: center; 17 | background: url('../../images/ajax-loader.gif') no-repeat center 40px; 18 | padding-top: 100px; 19 | color: #ccc; 20 | } 21 | 22 | .main-seperator { 23 | background: linear-gradient(to right, 24 | darken(@brand-primary, 10%) 0%, 25 | lighten(@brand-primary, 25%) 100% 26 | ); 27 | margin-top: 5px; 28 | margin-bottom: 20px; 29 | height: 5px; 30 | overflow: hidden; 31 | } 32 | 33 | .no-select { 34 | -webkit-touch-callout: none; 35 | -webkit-user-select: none; 36 | -khtml-user-select: none; 37 | -moz-user-select: none; 38 | -ms-user-select: none; 39 | user-select: none; 40 | } 41 | 42 | .squares { 43 | background-image: url('../../images/gradient_squares.png'); 44 | background-repeat: repeat; 45 | background-position: center center; 46 | } 47 | 48 | .jumbotron, .well { 49 | border-style: solid; 50 | border-color: @brand-primary; 51 | border-width: 3px; 52 | border-radius: 10px; 53 | box-shadow: 10px 10px 5px @box-shadow-color; 54 | .squares; 55 | } 56 | -------------------------------------------------------------------------------- /src/app/styles/includes/variables.less: -------------------------------------------------------------------------------- 1 | 2 | @body-bg: #fff; 3 | @body-bg-radial: #fbfefe; 4 | 5 | @seperator-color: #333; 6 | @box-shadow-color: #888; 7 | 8 | //@font-family-sans-serif: "Helvetica Neue", Helvetica, Arial, sans-serif; 9 | @font-family-sans-serif: Lato, Impact, Haettenschweiler, "Franklin Gothic Bold", Charcoal, "Helvetica Inserat", "Bitstream Vera Sans Bold", "Arial Black", sans serif; 10 | @font-family-serif: Georgia, "Times New Roman", Times, serif; 11 | //** Default monospace fonts for ``, ``, and `
`.
12 | @font-family-monospace:   Menlo, Monaco, Consolas, "Courier New", monospace;
13 | @font-family-base:        @font-family-sans-serif;
14 | 


--------------------------------------------------------------------------------
/src/app/styles/pages/about.less:
--------------------------------------------------------------------------------
 1 | .page--react-github-corner-about {
 2 |   h2 {
 3 |     border-bottom: 1px solid #aaa;
 4 |     padding-bottom: 0.3em;
 5 |     margin-top: 28px;
 6 |   }
 7 |   table {
 8 |     .table;
 9 |     .table-striped;
10 |     .table-bordered;
11 |     .table-hover;
12 |   }
13 | }
14 | 


--------------------------------------------------------------------------------
/src/app/styles/pages/home.less:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/skratchdot/react-github-corner/28cc81c7c20e3b6f1a95e4297e6e7d5d6e18063c/src/app/styles/pages/home.less


--------------------------------------------------------------------------------
/src/lib/GithubCorner.js:
--------------------------------------------------------------------------------
  1 | import React, { Component } from 'react';
  2 | import PropTypes from 'prop-types';
  3 | import getGithubCornerStyles from './get-github-corner-styles.js';
  4 | 
  5 | const githubCornerStyleId = '____GITHUB_CORNER_SUPER_SECRET___';
  6 | const githubCornerStyles = getGithubCornerStyles();
  7 | 
  8 | /**
  9 |  * A react component based off of:
 10 |  *   https://github.com/tholman/github-corners
 11 |  *
 12 |  * @class GithubCorner
 13 |  * @extends React.Component
 14 |  * @example
 15 |  * 
 16 |  */
 17 | export default class GithubCorner extends Component {
 18 |   static propTypes = {
 19 |     href: PropTypes.string,
 20 |     size: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
 21 |     direction: PropTypes.string,
 22 |     octoColor: PropTypes.string,
 23 |     bannerColor: PropTypes.string,
 24 |     ariaLabel: PropTypes.string,
 25 |     className: PropTypes.string,
 26 |     svgStyle: PropTypes.object
 27 |   };
 28 |   static defaultProps = {
 29 |     href: '/',
 30 |     size: 80,
 31 |     direction: 'right',
 32 |     octoColor: '#fff',
 33 |     bannerColor: '#151513',
 34 |     ariaLabel: 'Open GitHub project'
 35 |   };
 36 |   componentDidMount() {
 37 |     if (!document.getElementById(githubCornerStyleId)) {
 38 |       const head = document.head || document.getElementsByTagName('head')[0];
 39 |       const style = document.createElement('style');
 40 |       style.type = 'text/css';
 41 |       style.id = githubCornerStyleId;
 42 |       if (style.styleSheet) {
 43 |         style.styleSheet.cssText = githubCornerStyles;
 44 |       } else {
 45 |         style.appendChild(document.createTextNode(githubCornerStyles));
 46 |       }
 47 |       head.appendChild(style);
 48 |     }
 49 |   }
 50 |   render() {
 51 |     const {
 52 |       href,
 53 |       size,
 54 |       direction,
 55 |       octoColor,
 56 |       bannerColor,
 57 |       ariaLabel,
 58 |       className,
 59 |       svgStyle,
 60 |       ...otherProps
 61 |     } = this.props;
 62 |     const mainStyle = {
 63 |       position: 'absolute',
 64 |       top: 0,
 65 |       fill: octoColor
 66 |     };
 67 |     const armStyle = {};
 68 |     let pathBanner = '';
 69 |     let pathArm = '';
 70 |     let pathBody = '';
 71 |     if (direction === 'left') {
 72 |       pathBanner = 'M250 0L135 115h-15l-12 27L0 250V0z';
 73 |       pathArm =
 74 |         'M122 109c15-9 9-19 9-19-3-7-2-11-2-11 1-7-3-2-3-2-4 5-2 11-2 11 3 10-5 15-9 16';
 75 |       pathBody =
 76 |         'M135 115s-4 2-5 0l-14-14c-3-2-6-3-8-3 8-11 15-24-2-41-5-5-10-7-16-7-1-2-3-7-12-11 0 0-5 3-7 16-4 2-8 5-12 9s-7 8-9 12c-14 4-17 9-17 9 4 8 9 11 11 11 0 6 2 11 7 16 16 16 30 10 41 2 0 3 1 7 5 11l12 11c1 2-1 6-1 6z';
 77 |       mainStyle.left = 0;
 78 |       armStyle.WebkitTransformOrigin = '120px 144px';
 79 |       armStyle.transformOrigin = '120px 144px';
 80 |     } else {
 81 |       pathBanner = 'M0 0l115 115h15l12 27 108 108V0z';
 82 |       pathArm =
 83 |         'M128 109c-15-9-9-19-9-19 3-7 2-11 2-11-1-7 3-2 3-2 4 5 2 11 2 11-3 10 5 15 9 16';
 84 |       pathBody =
 85 |         'M115 115s4 2 5 0l14-14c3-2 6-3 8-3-8-11-15-24 2-41 5-5 10-7 16-7 1-2 3-7 12-11 0 0 5 3 7 16 4 2 8 5 12 9s7 8 9 12c14 3 17 7 17 7-4 8-9 11-11 11 0 6-2 11-7 16-16 16-30 10-41 2 0 3-1 7-5 11l-12 11c-1 1 1 5 1 5z';
 86 |       mainStyle.right = 0;
 87 |       armStyle.WebkitTransformOrigin = '130px 106px';
 88 |       armStyle.transformOrigin = '130px 106px';
 89 |     }
 90 |     const additionalClass =
 91 |       typeof className === 'string' ? ` ${className}` : '';
 92 |     return (
 93 |       
 99 |         
108 |           
109 |           
110 |           
111 |         
112 |       
113 |     );
114 |   }
115 | }
116 | 


--------------------------------------------------------------------------------
/src/lib/GithubCorner.test.js:
--------------------------------------------------------------------------------
 1 | import React from 'react';
 2 | import GithubCorner from './GithubCorner';
 3 | import { mount, shallow } from 'enzyme';
 4 | 
 5 | beforeEach(() => {
 6 |   document.open();
 7 |   document.write('');
 8 |   document.close();
 9 | });
10 | 
11 | test('default ', () => {
12 |   const wrapper = shallow();
13 |   expect(wrapper).toMatchSnapshot();
14 | });
15 | 
16 | test('', () => {
17 |   const wrapper = shallow();
18 |   expect(wrapper).toMatchSnapshot();
19 | });
20 | 
21 | test('GithubCorner with non-left directions', () => {
22 |   const wrappers = [];
23 |   ['right', 'invalid'].forEach(dir => {
24 |     const wrapper = shallow();
25 |     wrappers.push(wrapper);
26 |     expect(wrapper).toMatchSnapshot();
27 |   });
28 |   expect(wrappers[0]).toEqual(wrappers[1]);
29 | });
30 | 
31 | test('with additional props', () => {
32 |   const wrapper = shallow();
33 |   expect(wrapper).toMatchSnapshot();
34 | });
35 | 
36 | test('merge className attribute', () => {
37 |   const wrapper = shallow();
38 |   expect(wrapper).toMatchSnapshot();
39 |   expect(wrapper.find('.github-corner').hasClass('wow')).toEqual(true);
40 |   expect(wrapper.find('.github-corner').hasClass('cool')).toEqual(true);
41 | });
42 | 
43 | test('it mounts', () => {
44 |   const headBefore = document.head.innerHTML;
45 |   const wrapper = mount();
46 |   const headAfter = document.head.innerHTML;
47 |   expect(wrapper.html()).toMatchSnapshot();
48 |   expect(headBefore).not.toEqual(headAfter);
49 |   expect({
50 |     headBefore,
51 |     headAfter
52 |   }).toMatchSnapshot();
53 | });
54 | 
55 | test('styles have already been injected', () => {
56 |   document.head.innerHTML =
57 |     '';
58 |   const headBefore = document.head.innerHTML;
59 |   mount();
60 |   const headAfter = document.head.innerHTML;
61 |   expect(headBefore).toEqual(headAfter);
62 |   expect({
63 |     headBefore,
64 |     headAfter
65 |   }).toMatchSnapshot();
66 | });
67 | 
68 | test('when document.head does not exist', () => {
69 |   document.head.remove();
70 |   const mockHead = jest.fn();
71 |   mockHead.appendChild = jest.fn();
72 |   const original = document.getElementsByTagName;
73 |   document.getElementsByTagName = jest.fn(() => [mockHead]);
74 |   const wrapper = mount();
75 |   expect(wrapper.html()).toMatchSnapshot();
76 |   expect(mockHead.appendChild.mock.calls).toMatchSnapshot();
77 |   document.getElementsByTagName = original;
78 | });
79 | 
80 | test('when style.stylesheet exists we use cssText', () => {
81 |   let style;
82 |   const original = document.createElement;
83 |   document.createElement = () => {
84 |     style = original.call(document, 'style');
85 |     style.styleSheet = { cssText: '' };
86 |     return style;
87 |   };
88 |   mount();
89 |   expect(style.styleSheet.cssText).toMatchSnapshot();
90 |   document.createElement = original;
91 | });
92 | 
93 | test('can use svgStyle prop', () => {
94 |   const svgStyle = { mixBlendMode: 'darken' };
95 |   const wrapper = shallow();
96 |   expect(wrapper).toMatchSnapshot();
97 | });
98 | 


--------------------------------------------------------------------------------
/src/lib/__snapshots__/GithubCorner.test.js.snap:
--------------------------------------------------------------------------------
   1 | // Jest Snapshot v1, https://goo.gl/fbAQLP
   2 | 
   3 | exports[` 1`] = `
   4 | ShallowWrapper {
   5 |   Symbol(enzyme.__root__): [Circular],
   6 |   Symbol(enzyme.__unrendered__): ,
  14 |   Symbol(enzyme.__renderer__): Object {
  15 |     "batchedUpdates": [Function],
  16 |     "getNode": [Function],
  17 |     "render": [Function],
  18 |     "simulateError": [Function],
  19 |     "simulateEvent": [Function],
  20 |     "unmount": [Function],
  21 |   },
  22 |   Symbol(enzyme.__node__): Object {
  23 |     "instance": null,
  24 |     "key": undefined,
  25 |     "nodeType": "host",
  26 |     "props": Object {
  27 |       "aria-label": "Open GitHub project",
  28 |       "children": 
  41 |         
  46 |         
  56 |         
  60 |       ,
  61 |       "className": "github-corner",
  62 |       "href": "/",
  63 |     },
  64 |     "ref": null,
  65 |     "rendered": Object {
  66 |       "instance": null,
  67 |       "key": undefined,
  68 |       "nodeType": "host",
  69 |       "props": Object {
  70 |         "children": Array [
  71 |           ,
  76 |           ,
  86 |           ,
  90 |         ],
  91 |         "height": 80,
  92 |         "style": Object {
  93 |           "fill": "#fff",
  94 |           "left": 0,
  95 |           "position": "absolute",
  96 |           "top": 0,
  97 |         },
  98 |         "viewBox": "0 0 250 250",
  99 |         "width": 80,
 100 |       },
 101 |       "ref": null,
 102 |       "rendered": Array [
 103 |         Object {
 104 |           "instance": null,
 105 |           "key": undefined,
 106 |           "nodeType": "host",
 107 |           "props": Object {
 108 |             "className": "octo-banner",
 109 |             "d": "M250 0L135 115h-15l-12 27L0 250V0z",
 110 |             "fill": "#151513",
 111 |           },
 112 |           "ref": null,
 113 |           "rendered": null,
 114 |           "type": "path",
 115 |         },
 116 |         Object {
 117 |           "instance": null,
 118 |           "key": undefined,
 119 |           "nodeType": "host",
 120 |           "props": Object {
 121 |             "className": "octo-arm",
 122 |             "d": "M122 109c15-9 9-19 9-19-3-7-2-11-2-11 1-7-3-2-3-2-4 5-2 11-2 11 3 10-5 15-9 16",
 123 |             "style": Object {
 124 |               "WebkitTransformOrigin": "120px 144px",
 125 |               "transformOrigin": "120px 144px",
 126 |             },
 127 |           },
 128 |           "ref": null,
 129 |           "rendered": null,
 130 |           "type": "path",
 131 |         },
 132 |         Object {
 133 |           "instance": null,
 134 |           "key": undefined,
 135 |           "nodeType": "host",
 136 |           "props": Object {
 137 |             "className": "octo-body",
 138 |             "d": "M135 115s-4 2-5 0l-14-14c-3-2-6-3-8-3 8-11 15-24-2-41-5-5-10-7-16-7-1-2-3-7-12-11 0 0-5 3-7 16-4 2-8 5-12 9s-7 8-9 12c-14 4-17 9-17 9 4 8 9 11 11 11 0 6 2 11 7 16 16 16 30 10 41 2 0 3 1 7 5 11l12 11c1 2-1 6-1 6z",
 139 |           },
 140 |           "ref": null,
 141 |           "rendered": null,
 142 |           "type": "path",
 143 |         },
 144 |       ],
 145 |       "type": "svg",
 146 |     },
 147 |     "type": "a",
 148 |   },
 149 |   Symbol(enzyme.__nodes__): Array [
 150 |     Object {
 151 |       "instance": null,
 152 |       "key": undefined,
 153 |       "nodeType": "host",
 154 |       "props": Object {
 155 |         "aria-label": "Open GitHub project",
 156 |         "children": 
 169 |           
 174 |           
 184 |           
 188 |         ,
 189 |         "className": "github-corner",
 190 |         "href": "/",
 191 |       },
 192 |       "ref": null,
 193 |       "rendered": Object {
 194 |         "instance": null,
 195 |         "key": undefined,
 196 |         "nodeType": "host",
 197 |         "props": Object {
 198 |           "children": Array [
 199 |             ,
 204 |             ,
 214 |             ,
 218 |           ],
 219 |           "height": 80,
 220 |           "style": Object {
 221 |             "fill": "#fff",
 222 |             "left": 0,
 223 |             "position": "absolute",
 224 |             "top": 0,
 225 |           },
 226 |           "viewBox": "0 0 250 250",
 227 |           "width": 80,
 228 |         },
 229 |         "ref": null,
 230 |         "rendered": Array [
 231 |           Object {
 232 |             "instance": null,
 233 |             "key": undefined,
 234 |             "nodeType": "host",
 235 |             "props": Object {
 236 |               "className": "octo-banner",
 237 |               "d": "M250 0L135 115h-15l-12 27L0 250V0z",
 238 |               "fill": "#151513",
 239 |             },
 240 |             "ref": null,
 241 |             "rendered": null,
 242 |             "type": "path",
 243 |           },
 244 |           Object {
 245 |             "instance": null,
 246 |             "key": undefined,
 247 |             "nodeType": "host",
 248 |             "props": Object {
 249 |               "className": "octo-arm",
 250 |               "d": "M122 109c15-9 9-19 9-19-3-7-2-11-2-11 1-7-3-2-3-2-4 5-2 11-2 11 3 10-5 15-9 16",
 251 |               "style": Object {
 252 |                 "WebkitTransformOrigin": "120px 144px",
 253 |                 "transformOrigin": "120px 144px",
 254 |               },
 255 |             },
 256 |             "ref": null,
 257 |             "rendered": null,
 258 |             "type": "path",
 259 |           },
 260 |           Object {
 261 |             "instance": null,
 262 |             "key": undefined,
 263 |             "nodeType": "host",
 264 |             "props": Object {
 265 |               "className": "octo-body",
 266 |               "d": "M135 115s-4 2-5 0l-14-14c-3-2-6-3-8-3 8-11 15-24-2-41-5-5-10-7-16-7-1-2-3-7-12-11 0 0-5 3-7 16-4 2-8 5-12 9s-7 8-9 12c-14 4-17 9-17 9 4 8 9 11 11 11 0 6 2 11 7 16 16 16 30 10 41 2 0 3 1 7 5 11l12 11c1 2-1 6-1 6z",
 267 |             },
 268 |             "ref": null,
 269 |             "rendered": null,
 270 |             "type": "path",
 271 |           },
 272 |         ],
 273 |         "type": "svg",
 274 |       },
 275 |       "type": "a",
 276 |     },
 277 |   ],
 278 |   Symbol(enzyme.__options__): Object {
 279 |     "adapter": ReactSixteenAdapter {
 280 |       "options": Object {
 281 |         "enableComponentDidUpdateOnSetState": true,
 282 |         "lifecycles": Object {
 283 |           "componentDidUpdate": Object {
 284 |             "onSetState": true,
 285 |           },
 286 |           "getDerivedStateFromProps": true,
 287 |           "getSnapshotBeforeUpdate": true,
 288 |           "setState": Object {
 289 |             "skipsComponentDidUpdateOnNullish": true,
 290 |           },
 291 |         },
 292 |       },
 293 |     },
 294 |     "attachTo": undefined,
 295 |     "hydrateIn": undefined,
 296 |   },
 297 | }
 298 | `;
 299 | 
 300 | exports[`GithubCorner with non-left directions 1`] = `
 301 | ShallowWrapper {
 302 |   Symbol(enzyme.__root__): [Circular],
 303 |   Symbol(enzyme.__unrendered__): ,
 311 |   Symbol(enzyme.__renderer__): Object {
 312 |     "batchedUpdates": [Function],
 313 |     "getNode": [Function],
 314 |     "render": [Function],
 315 |     "simulateError": [Function],
 316 |     "simulateEvent": [Function],
 317 |     "unmount": [Function],
 318 |   },
 319 |   Symbol(enzyme.__node__): Object {
 320 |     "instance": null,
 321 |     "key": undefined,
 322 |     "nodeType": "host",
 323 |     "props": Object {
 324 |       "aria-label": "Open GitHub project",
 325 |       "children": 
 338 |         
 343 |         
 353 |         
 357 |       ,
 358 |       "className": "github-corner",
 359 |       "href": "/",
 360 |     },
 361 |     "ref": null,
 362 |     "rendered": Object {
 363 |       "instance": null,
 364 |       "key": undefined,
 365 |       "nodeType": "host",
 366 |       "props": Object {
 367 |         "children": Array [
 368 |           ,
 373 |           ,
 383 |           ,
 387 |         ],
 388 |         "height": 80,
 389 |         "style": Object {
 390 |           "fill": "#fff",
 391 |           "position": "absolute",
 392 |           "right": 0,
 393 |           "top": 0,
 394 |         },
 395 |         "viewBox": "0 0 250 250",
 396 |         "width": 80,
 397 |       },
 398 |       "ref": null,
 399 |       "rendered": Array [
 400 |         Object {
 401 |           "instance": null,
 402 |           "key": undefined,
 403 |           "nodeType": "host",
 404 |           "props": Object {
 405 |             "className": "octo-banner",
 406 |             "d": "M0 0l115 115h15l12 27 108 108V0z",
 407 |             "fill": "#151513",
 408 |           },
 409 |           "ref": null,
 410 |           "rendered": null,
 411 |           "type": "path",
 412 |         },
 413 |         Object {
 414 |           "instance": null,
 415 |           "key": undefined,
 416 |           "nodeType": "host",
 417 |           "props": Object {
 418 |             "className": "octo-arm",
 419 |             "d": "M128 109c-15-9-9-19-9-19 3-7 2-11 2-11-1-7 3-2 3-2 4 5 2 11 2 11-3 10 5 15 9 16",
 420 |             "style": Object {
 421 |               "WebkitTransformOrigin": "130px 106px",
 422 |               "transformOrigin": "130px 106px",
 423 |             },
 424 |           },
 425 |           "ref": null,
 426 |           "rendered": null,
 427 |           "type": "path",
 428 |         },
 429 |         Object {
 430 |           "instance": null,
 431 |           "key": undefined,
 432 |           "nodeType": "host",
 433 |           "props": Object {
 434 |             "className": "octo-body",
 435 |             "d": "M115 115s4 2 5 0l14-14c3-2 6-3 8-3-8-11-15-24 2-41 5-5 10-7 16-7 1-2 3-7 12-11 0 0 5 3 7 16 4 2 8 5 12 9s7 8 9 12c14 3 17 7 17 7-4 8-9 11-11 11 0 6-2 11-7 16-16 16-30 10-41 2 0 3-1 7-5 11l-12 11c-1 1 1 5 1 5z",
 436 |           },
 437 |           "ref": null,
 438 |           "rendered": null,
 439 |           "type": "path",
 440 |         },
 441 |       ],
 442 |       "type": "svg",
 443 |     },
 444 |     "type": "a",
 445 |   },
 446 |   Symbol(enzyme.__nodes__): Array [
 447 |     Object {
 448 |       "instance": null,
 449 |       "key": undefined,
 450 |       "nodeType": "host",
 451 |       "props": Object {
 452 |         "aria-label": "Open GitHub project",
 453 |         "children": 
 466 |           
 471 |           
 481 |           
 485 |         ,
 486 |         "className": "github-corner",
 487 |         "href": "/",
 488 |       },
 489 |       "ref": null,
 490 |       "rendered": Object {
 491 |         "instance": null,
 492 |         "key": undefined,
 493 |         "nodeType": "host",
 494 |         "props": Object {
 495 |           "children": Array [
 496 |             ,
 501 |             ,
 511 |             ,
 515 |           ],
 516 |           "height": 80,
 517 |           "style": Object {
 518 |             "fill": "#fff",
 519 |             "position": "absolute",
 520 |             "right": 0,
 521 |             "top": 0,
 522 |           },
 523 |           "viewBox": "0 0 250 250",
 524 |           "width": 80,
 525 |         },
 526 |         "ref": null,
 527 |         "rendered": Array [
 528 |           Object {
 529 |             "instance": null,
 530 |             "key": undefined,
 531 |             "nodeType": "host",
 532 |             "props": Object {
 533 |               "className": "octo-banner",
 534 |               "d": "M0 0l115 115h15l12 27 108 108V0z",
 535 |               "fill": "#151513",
 536 |             },
 537 |             "ref": null,
 538 |             "rendered": null,
 539 |             "type": "path",
 540 |           },
 541 |           Object {
 542 |             "instance": null,
 543 |             "key": undefined,
 544 |             "nodeType": "host",
 545 |             "props": Object {
 546 |               "className": "octo-arm",
 547 |               "d": "M128 109c-15-9-9-19-9-19 3-7 2-11 2-11-1-7 3-2 3-2 4 5 2 11 2 11-3 10 5 15 9 16",
 548 |               "style": Object {
 549 |                 "WebkitTransformOrigin": "130px 106px",
 550 |                 "transformOrigin": "130px 106px",
 551 |               },
 552 |             },
 553 |             "ref": null,
 554 |             "rendered": null,
 555 |             "type": "path",
 556 |           },
 557 |           Object {
 558 |             "instance": null,
 559 |             "key": undefined,
 560 |             "nodeType": "host",
 561 |             "props": Object {
 562 |               "className": "octo-body",
 563 |               "d": "M115 115s4 2 5 0l14-14c3-2 6-3 8-3-8-11-15-24 2-41 5-5 10-7 16-7 1-2 3-7 12-11 0 0 5 3 7 16 4 2 8 5 12 9s7 8 9 12c14 3 17 7 17 7-4 8-9 11-11 11 0 6-2 11-7 16-16 16-30 10-41 2 0 3-1 7-5 11l-12 11c-1 1 1 5 1 5z",
 564 |             },
 565 |             "ref": null,
 566 |             "rendered": null,
 567 |             "type": "path",
 568 |           },
 569 |         ],
 570 |         "type": "svg",
 571 |       },
 572 |       "type": "a",
 573 |     },
 574 |   ],
 575 |   Symbol(enzyme.__options__): Object {
 576 |     "adapter": ReactSixteenAdapter {
 577 |       "options": Object {
 578 |         "enableComponentDidUpdateOnSetState": true,
 579 |         "lifecycles": Object {
 580 |           "componentDidUpdate": Object {
 581 |             "onSetState": true,
 582 |           },
 583 |           "getDerivedStateFromProps": true,
 584 |           "getSnapshotBeforeUpdate": true,
 585 |           "setState": Object {
 586 |             "skipsComponentDidUpdateOnNullish": true,
 587 |           },
 588 |         },
 589 |       },
 590 |     },
 591 |     "attachTo": undefined,
 592 |     "hydrateIn": undefined,
 593 |   },
 594 | }
 595 | `;
 596 | 
 597 | exports[`GithubCorner with non-left directions 2`] = `
 598 | ShallowWrapper {
 599 |   Symbol(enzyme.__root__): [Circular],
 600 |   Symbol(enzyme.__unrendered__): ,
 608 |   Symbol(enzyme.__renderer__): Object {
 609 |     "batchedUpdates": [Function],
 610 |     "getNode": [Function],
 611 |     "render": [Function],
 612 |     "simulateError": [Function],
 613 |     "simulateEvent": [Function],
 614 |     "unmount": [Function],
 615 |   },
 616 |   Symbol(enzyme.__node__): Object {
 617 |     "instance": null,
 618 |     "key": undefined,
 619 |     "nodeType": "host",
 620 |     "props": Object {
 621 |       "aria-label": "Open GitHub project",
 622 |       "children": 
 635 |         
 640 |         
 650 |         
 654 |       ,
 655 |       "className": "github-corner",
 656 |       "href": "/",
 657 |     },
 658 |     "ref": null,
 659 |     "rendered": Object {
 660 |       "instance": null,
 661 |       "key": undefined,
 662 |       "nodeType": "host",
 663 |       "props": Object {
 664 |         "children": Array [
 665 |           ,
 670 |           ,
 680 |           ,
 684 |         ],
 685 |         "height": 80,
 686 |         "style": Object {
 687 |           "fill": "#fff",
 688 |           "position": "absolute",
 689 |           "right": 0,
 690 |           "top": 0,
 691 |         },
 692 |         "viewBox": "0 0 250 250",
 693 |         "width": 80,
 694 |       },
 695 |       "ref": null,
 696 |       "rendered": Array [
 697 |         Object {
 698 |           "instance": null,
 699 |           "key": undefined,
 700 |           "nodeType": "host",
 701 |           "props": Object {
 702 |             "className": "octo-banner",
 703 |             "d": "M0 0l115 115h15l12 27 108 108V0z",
 704 |             "fill": "#151513",
 705 |           },
 706 |           "ref": null,
 707 |           "rendered": null,
 708 |           "type": "path",
 709 |         },
 710 |         Object {
 711 |           "instance": null,
 712 |           "key": undefined,
 713 |           "nodeType": "host",
 714 |           "props": Object {
 715 |             "className": "octo-arm",
 716 |             "d": "M128 109c-15-9-9-19-9-19 3-7 2-11 2-11-1-7 3-2 3-2 4 5 2 11 2 11-3 10 5 15 9 16",
 717 |             "style": Object {
 718 |               "WebkitTransformOrigin": "130px 106px",
 719 |               "transformOrigin": "130px 106px",
 720 |             },
 721 |           },
 722 |           "ref": null,
 723 |           "rendered": null,
 724 |           "type": "path",
 725 |         },
 726 |         Object {
 727 |           "instance": null,
 728 |           "key": undefined,
 729 |           "nodeType": "host",
 730 |           "props": Object {
 731 |             "className": "octo-body",
 732 |             "d": "M115 115s4 2 5 0l14-14c3-2 6-3 8-3-8-11-15-24 2-41 5-5 10-7 16-7 1-2 3-7 12-11 0 0 5 3 7 16 4 2 8 5 12 9s7 8 9 12c14 3 17 7 17 7-4 8-9 11-11 11 0 6-2 11-7 16-16 16-30 10-41 2 0 3-1 7-5 11l-12 11c-1 1 1 5 1 5z",
 733 |           },
 734 |           "ref": null,
 735 |           "rendered": null,
 736 |           "type": "path",
 737 |         },
 738 |       ],
 739 |       "type": "svg",
 740 |     },
 741 |     "type": "a",
 742 |   },
 743 |   Symbol(enzyme.__nodes__): Array [
 744 |     Object {
 745 |       "instance": null,
 746 |       "key": undefined,
 747 |       "nodeType": "host",
 748 |       "props": Object {
 749 |         "aria-label": "Open GitHub project",
 750 |         "children": 
 763 |           
 768 |           
 778 |           
 782 |         ,
 783 |         "className": "github-corner",
 784 |         "href": "/",
 785 |       },
 786 |       "ref": null,
 787 |       "rendered": Object {
 788 |         "instance": null,
 789 |         "key": undefined,
 790 |         "nodeType": "host",
 791 |         "props": Object {
 792 |           "children": Array [
 793 |             ,
 798 |             ,
 808 |             ,
 812 |           ],
 813 |           "height": 80,
 814 |           "style": Object {
 815 |             "fill": "#fff",
 816 |             "position": "absolute",
 817 |             "right": 0,
 818 |             "top": 0,
 819 |           },
 820 |           "viewBox": "0 0 250 250",
 821 |           "width": 80,
 822 |         },
 823 |         "ref": null,
 824 |         "rendered": Array [
 825 |           Object {
 826 |             "instance": null,
 827 |             "key": undefined,
 828 |             "nodeType": "host",
 829 |             "props": Object {
 830 |               "className": "octo-banner",
 831 |               "d": "M0 0l115 115h15l12 27 108 108V0z",
 832 |               "fill": "#151513",
 833 |             },
 834 |             "ref": null,
 835 |             "rendered": null,
 836 |             "type": "path",
 837 |           },
 838 |           Object {
 839 |             "instance": null,
 840 |             "key": undefined,
 841 |             "nodeType": "host",
 842 |             "props": Object {
 843 |               "className": "octo-arm",
 844 |               "d": "M128 109c-15-9-9-19-9-19 3-7 2-11 2-11-1-7 3-2 3-2 4 5 2 11 2 11-3 10 5 15 9 16",
 845 |               "style": Object {
 846 |                 "WebkitTransformOrigin": "130px 106px",
 847 |                 "transformOrigin": "130px 106px",
 848 |               },
 849 |             },
 850 |             "ref": null,
 851 |             "rendered": null,
 852 |             "type": "path",
 853 |           },
 854 |           Object {
 855 |             "instance": null,
 856 |             "key": undefined,
 857 |             "nodeType": "host",
 858 |             "props": Object {
 859 |               "className": "octo-body",
 860 |               "d": "M115 115s4 2 5 0l14-14c3-2 6-3 8-3-8-11-15-24 2-41 5-5 10-7 16-7 1-2 3-7 12-11 0 0 5 3 7 16 4 2 8 5 12 9s7 8 9 12c14 3 17 7 17 7-4 8-9 11-11 11 0 6-2 11-7 16-16 16-30 10-41 2 0 3-1 7-5 11l-12 11c-1 1 1 5 1 5z",
 861 |             },
 862 |             "ref": null,
 863 |             "rendered": null,
 864 |             "type": "path",
 865 |           },
 866 |         ],
 867 |         "type": "svg",
 868 |       },
 869 |       "type": "a",
 870 |     },
 871 |   ],
 872 |   Symbol(enzyme.__options__): Object {
 873 |     "adapter": ReactSixteenAdapter {
 874 |       "options": Object {
 875 |         "enableComponentDidUpdateOnSetState": true,
 876 |         "lifecycles": Object {
 877 |           "componentDidUpdate": Object {
 878 |             "onSetState": true,
 879 |           },
 880 |           "getDerivedStateFromProps": true,
 881 |           "getSnapshotBeforeUpdate": true,
 882 |           "setState": Object {
 883 |             "skipsComponentDidUpdateOnNullish": true,
 884 |           },
 885 |         },
 886 |       },
 887 |     },
 888 |     "attachTo": undefined,
 889 |     "hydrateIn": undefined,
 890 |   },
 891 | }
 892 | `;
 893 | 
 894 | exports[`can use svgStyle prop 1`] = `
 895 | ShallowWrapper {
 896 |   Symbol(enzyme.__root__): [Circular],
 897 |   Symbol(enzyme.__unrendered__): ,
 910 |   Symbol(enzyme.__renderer__): Object {
 911 |     "batchedUpdates": [Function],
 912 |     "getNode": [Function],
 913 |     "render": [Function],
 914 |     "simulateError": [Function],
 915 |     "simulateEvent": [Function],
 916 |     "unmount": [Function],
 917 |   },
 918 |   Symbol(enzyme.__node__): Object {
 919 |     "instance": null,
 920 |     "key": undefined,
 921 |     "nodeType": "host",
 922 |     "props": Object {
 923 |       "aria-label": "Open GitHub project",
 924 |       "children": 
 938 |         
 943 |         
 953 |         
 957 |       ,
 958 |       "className": "github-corner",
 959 |       "href": "/",
 960 |     },
 961 |     "ref": null,
 962 |     "rendered": Object {
 963 |       "instance": null,
 964 |       "key": undefined,
 965 |       "nodeType": "host",
 966 |       "props": Object {
 967 |         "children": Array [
 968 |           ,
 973 |           ,
 983 |           ,
 987 |         ],
 988 |         "height": 80,
 989 |         "style": Object {
 990 |           "fill": "#fff",
 991 |           "mixBlendMode": "darken",
 992 |           "position": "absolute",
 993 |           "right": 0,
 994 |           "top": 0,
 995 |         },
 996 |         "viewBox": "0 0 250 250",
 997 |         "width": 80,
 998 |       },
 999 |       "ref": null,
1000 |       "rendered": Array [
1001 |         Object {
1002 |           "instance": null,
1003 |           "key": undefined,
1004 |           "nodeType": "host",
1005 |           "props": Object {
1006 |             "className": "octo-banner",
1007 |             "d": "M0 0l115 115h15l12 27 108 108V0z",
1008 |             "fill": "#151513",
1009 |           },
1010 |           "ref": null,
1011 |           "rendered": null,
1012 |           "type": "path",
1013 |         },
1014 |         Object {
1015 |           "instance": null,
1016 |           "key": undefined,
1017 |           "nodeType": "host",
1018 |           "props": Object {
1019 |             "className": "octo-arm",
1020 |             "d": "M128 109c-15-9-9-19-9-19 3-7 2-11 2-11-1-7 3-2 3-2 4 5 2 11 2 11-3 10 5 15 9 16",
1021 |             "style": Object {
1022 |               "WebkitTransformOrigin": "130px 106px",
1023 |               "transformOrigin": "130px 106px",
1024 |             },
1025 |           },
1026 |           "ref": null,
1027 |           "rendered": null,
1028 |           "type": "path",
1029 |         },
1030 |         Object {
1031 |           "instance": null,
1032 |           "key": undefined,
1033 |           "nodeType": "host",
1034 |           "props": Object {
1035 |             "className": "octo-body",
1036 |             "d": "M115 115s4 2 5 0l14-14c3-2 6-3 8-3-8-11-15-24 2-41 5-5 10-7 16-7 1-2 3-7 12-11 0 0 5 3 7 16 4 2 8 5 12 9s7 8 9 12c14 3 17 7 17 7-4 8-9 11-11 11 0 6-2 11-7 16-16 16-30 10-41 2 0 3-1 7-5 11l-12 11c-1 1 1 5 1 5z",
1037 |           },
1038 |           "ref": null,
1039 |           "rendered": null,
1040 |           "type": "path",
1041 |         },
1042 |       ],
1043 |       "type": "svg",
1044 |     },
1045 |     "type": "a",
1046 |   },
1047 |   Symbol(enzyme.__nodes__): Array [
1048 |     Object {
1049 |       "instance": null,
1050 |       "key": undefined,
1051 |       "nodeType": "host",
1052 |       "props": Object {
1053 |         "aria-label": "Open GitHub project",
1054 |         "children": 
1068 |           
1073 |           
1083 |           
1087 |         ,
1088 |         "className": "github-corner",
1089 |         "href": "/",
1090 |       },
1091 |       "ref": null,
1092 |       "rendered": Object {
1093 |         "instance": null,
1094 |         "key": undefined,
1095 |         "nodeType": "host",
1096 |         "props": Object {
1097 |           "children": Array [
1098 |             ,
1103 |             ,
1113 |             ,
1117 |           ],
1118 |           "height": 80,
1119 |           "style": Object {
1120 |             "fill": "#fff",
1121 |             "mixBlendMode": "darken",
1122 |             "position": "absolute",
1123 |             "right": 0,
1124 |             "top": 0,
1125 |           },
1126 |           "viewBox": "0 0 250 250",
1127 |           "width": 80,
1128 |         },
1129 |         "ref": null,
1130 |         "rendered": Array [
1131 |           Object {
1132 |             "instance": null,
1133 |             "key": undefined,
1134 |             "nodeType": "host",
1135 |             "props": Object {
1136 |               "className": "octo-banner",
1137 |               "d": "M0 0l115 115h15l12 27 108 108V0z",
1138 |               "fill": "#151513",
1139 |             },
1140 |             "ref": null,
1141 |             "rendered": null,
1142 |             "type": "path",
1143 |           },
1144 |           Object {
1145 |             "instance": null,
1146 |             "key": undefined,
1147 |             "nodeType": "host",
1148 |             "props": Object {
1149 |               "className": "octo-arm",
1150 |               "d": "M128 109c-15-9-9-19-9-19 3-7 2-11 2-11-1-7 3-2 3-2 4 5 2 11 2 11-3 10 5 15 9 16",
1151 |               "style": Object {
1152 |                 "WebkitTransformOrigin": "130px 106px",
1153 |                 "transformOrigin": "130px 106px",
1154 |               },
1155 |             },
1156 |             "ref": null,
1157 |             "rendered": null,
1158 |             "type": "path",
1159 |           },
1160 |           Object {
1161 |             "instance": null,
1162 |             "key": undefined,
1163 |             "nodeType": "host",
1164 |             "props": Object {
1165 |               "className": "octo-body",
1166 |               "d": "M115 115s4 2 5 0l14-14c3-2 6-3 8-3-8-11-15-24 2-41 5-5 10-7 16-7 1-2 3-7 12-11 0 0 5 3 7 16 4 2 8 5 12 9s7 8 9 12c14 3 17 7 17 7-4 8-9 11-11 11 0 6-2 11-7 16-16 16-30 10-41 2 0 3-1 7-5 11l-12 11c-1 1 1 5 1 5z",
1167 |             },
1168 |             "ref": null,
1169 |             "rendered": null,
1170 |             "type": "path",
1171 |           },
1172 |         ],
1173 |         "type": "svg",
1174 |       },
1175 |       "type": "a",
1176 |     },
1177 |   ],
1178 |   Symbol(enzyme.__options__): Object {
1179 |     "adapter": ReactSixteenAdapter {
1180 |       "options": Object {
1181 |         "enableComponentDidUpdateOnSetState": true,
1182 |         "lifecycles": Object {
1183 |           "componentDidUpdate": Object {
1184 |             "onSetState": true,
1185 |           },
1186 |           "getDerivedStateFromProps": true,
1187 |           "getSnapshotBeforeUpdate": true,
1188 |           "setState": Object {
1189 |             "skipsComponentDidUpdateOnNullish": true,
1190 |           },
1191 |         },
1192 |       },
1193 |     },
1194 |     "attachTo": undefined,
1195 |     "hydrateIn": undefined,
1196 |   },
1197 | }
1198 | `;
1199 | 
1200 | exports[`default  1`] = `
1201 | ShallowWrapper {
1202 |   Symbol(enzyme.__root__): [Circular],
1203 |   Symbol(enzyme.__unrendered__): ,
1211 |   Symbol(enzyme.__renderer__): Object {
1212 |     "batchedUpdates": [Function],
1213 |     "getNode": [Function],
1214 |     "render": [Function],
1215 |     "simulateError": [Function],
1216 |     "simulateEvent": [Function],
1217 |     "unmount": [Function],
1218 |   },
1219 |   Symbol(enzyme.__node__): Object {
1220 |     "instance": null,
1221 |     "key": undefined,
1222 |     "nodeType": "host",
1223 |     "props": Object {
1224 |       "aria-label": "Open GitHub project",
1225 |       "children": 
1238 |         
1243 |         
1253 |         
1257 |       ,
1258 |       "className": "github-corner",
1259 |       "href": "/",
1260 |     },
1261 |     "ref": null,
1262 |     "rendered": Object {
1263 |       "instance": null,
1264 |       "key": undefined,
1265 |       "nodeType": "host",
1266 |       "props": Object {
1267 |         "children": Array [
1268 |           ,
1273 |           ,
1283 |           ,
1287 |         ],
1288 |         "height": 80,
1289 |         "style": Object {
1290 |           "fill": "#fff",
1291 |           "position": "absolute",
1292 |           "right": 0,
1293 |           "top": 0,
1294 |         },
1295 |         "viewBox": "0 0 250 250",
1296 |         "width": 80,
1297 |       },
1298 |       "ref": null,
1299 |       "rendered": Array [
1300 |         Object {
1301 |           "instance": null,
1302 |           "key": undefined,
1303 |           "nodeType": "host",
1304 |           "props": Object {
1305 |             "className": "octo-banner",
1306 |             "d": "M0 0l115 115h15l12 27 108 108V0z",
1307 |             "fill": "#151513",
1308 |           },
1309 |           "ref": null,
1310 |           "rendered": null,
1311 |           "type": "path",
1312 |         },
1313 |         Object {
1314 |           "instance": null,
1315 |           "key": undefined,
1316 |           "nodeType": "host",
1317 |           "props": Object {
1318 |             "className": "octo-arm",
1319 |             "d": "M128 109c-15-9-9-19-9-19 3-7 2-11 2-11-1-7 3-2 3-2 4 5 2 11 2 11-3 10 5 15 9 16",
1320 |             "style": Object {
1321 |               "WebkitTransformOrigin": "130px 106px",
1322 |               "transformOrigin": "130px 106px",
1323 |             },
1324 |           },
1325 |           "ref": null,
1326 |           "rendered": null,
1327 |           "type": "path",
1328 |         },
1329 |         Object {
1330 |           "instance": null,
1331 |           "key": undefined,
1332 |           "nodeType": "host",
1333 |           "props": Object {
1334 |             "className": "octo-body",
1335 |             "d": "M115 115s4 2 5 0l14-14c3-2 6-3 8-3-8-11-15-24 2-41 5-5 10-7 16-7 1-2 3-7 12-11 0 0 5 3 7 16 4 2 8 5 12 9s7 8 9 12c14 3 17 7 17 7-4 8-9 11-11 11 0 6-2 11-7 16-16 16-30 10-41 2 0 3-1 7-5 11l-12 11c-1 1 1 5 1 5z",
1336 |           },
1337 |           "ref": null,
1338 |           "rendered": null,
1339 |           "type": "path",
1340 |         },
1341 |       ],
1342 |       "type": "svg",
1343 |     },
1344 |     "type": "a",
1345 |   },
1346 |   Symbol(enzyme.__nodes__): Array [
1347 |     Object {
1348 |       "instance": null,
1349 |       "key": undefined,
1350 |       "nodeType": "host",
1351 |       "props": Object {
1352 |         "aria-label": "Open GitHub project",
1353 |         "children": 
1366 |           
1371 |           
1381 |           
1385 |         ,
1386 |         "className": "github-corner",
1387 |         "href": "/",
1388 |       },
1389 |       "ref": null,
1390 |       "rendered": Object {
1391 |         "instance": null,
1392 |         "key": undefined,
1393 |         "nodeType": "host",
1394 |         "props": Object {
1395 |           "children": Array [
1396 |             ,
1401 |             ,
1411 |             ,
1415 |           ],
1416 |           "height": 80,
1417 |           "style": Object {
1418 |             "fill": "#fff",
1419 |             "position": "absolute",
1420 |             "right": 0,
1421 |             "top": 0,
1422 |           },
1423 |           "viewBox": "0 0 250 250",
1424 |           "width": 80,
1425 |         },
1426 |         "ref": null,
1427 |         "rendered": Array [
1428 |           Object {
1429 |             "instance": null,
1430 |             "key": undefined,
1431 |             "nodeType": "host",
1432 |             "props": Object {
1433 |               "className": "octo-banner",
1434 |               "d": "M0 0l115 115h15l12 27 108 108V0z",
1435 |               "fill": "#151513",
1436 |             },
1437 |             "ref": null,
1438 |             "rendered": null,
1439 |             "type": "path",
1440 |           },
1441 |           Object {
1442 |             "instance": null,
1443 |             "key": undefined,
1444 |             "nodeType": "host",
1445 |             "props": Object {
1446 |               "className": "octo-arm",
1447 |               "d": "M128 109c-15-9-9-19-9-19 3-7 2-11 2-11-1-7 3-2 3-2 4 5 2 11 2 11-3 10 5 15 9 16",
1448 |               "style": Object {
1449 |                 "WebkitTransformOrigin": "130px 106px",
1450 |                 "transformOrigin": "130px 106px",
1451 |               },
1452 |             },
1453 |             "ref": null,
1454 |             "rendered": null,
1455 |             "type": "path",
1456 |           },
1457 |           Object {
1458 |             "instance": null,
1459 |             "key": undefined,
1460 |             "nodeType": "host",
1461 |             "props": Object {
1462 |               "className": "octo-body",
1463 |               "d": "M115 115s4 2 5 0l14-14c3-2 6-3 8-3-8-11-15-24 2-41 5-5 10-7 16-7 1-2 3-7 12-11 0 0 5 3 7 16 4 2 8 5 12 9s7 8 9 12c14 3 17 7 17 7-4 8-9 11-11 11 0 6-2 11-7 16-16 16-30 10-41 2 0 3-1 7-5 11l-12 11c-1 1 1 5 1 5z",
1464 |             },
1465 |             "ref": null,
1466 |             "rendered": null,
1467 |             "type": "path",
1468 |           },
1469 |         ],
1470 |         "type": "svg",
1471 |       },
1472 |       "type": "a",
1473 |     },
1474 |   ],
1475 |   Symbol(enzyme.__options__): Object {
1476 |     "adapter": ReactSixteenAdapter {
1477 |       "options": Object {
1478 |         "enableComponentDidUpdateOnSetState": true,
1479 |         "lifecycles": Object {
1480 |           "componentDidUpdate": Object {
1481 |             "onSetState": true,
1482 |           },
1483 |           "getDerivedStateFromProps": true,
1484 |           "getSnapshotBeforeUpdate": true,
1485 |           "setState": Object {
1486 |             "skipsComponentDidUpdateOnNullish": true,
1487 |           },
1488 |         },
1489 |       },
1490 |     },
1491 |     "attachTo": undefined,
1492 |     "hydrateIn": undefined,
1493 |   },
1494 | }
1495 | `;
1496 | 
1497 | exports[`it mounts 1`] = `""`;
1498 | 
1499 | exports[`it mounts 2`] = `
1500 | Object {
1501 |   "headAfter": "",
1530 |   "headBefore": "",
1531 | }
1532 | `;
1533 | 
1534 | exports[`merge className attribute 1`] = `
1535 | ShallowWrapper {
1536 |   Symbol(enzyme.__root__): [Circular],
1537 |   Symbol(enzyme.__unrendered__): ,
1546 |   Symbol(enzyme.__renderer__): Object {
1547 |     "batchedUpdates": [Function],
1548 |     "getNode": [Function],
1549 |     "render": [Function],
1550 |     "simulateError": [Function],
1551 |     "simulateEvent": [Function],
1552 |     "unmount": [Function],
1553 |   },
1554 |   Symbol(enzyme.__node__): Object {
1555 |     "instance": null,
1556 |     "key": undefined,
1557 |     "nodeType": "host",
1558 |     "props": Object {
1559 |       "aria-label": "Open GitHub project",
1560 |       "children": 
1573 |         
1578 |         
1588 |         
1592 |       ,
1593 |       "className": "github-corner wow cool",
1594 |       "href": "/",
1595 |     },
1596 |     "ref": null,
1597 |     "rendered": Object {
1598 |       "instance": null,
1599 |       "key": undefined,
1600 |       "nodeType": "host",
1601 |       "props": Object {
1602 |         "children": Array [
1603 |           ,
1608 |           ,
1618 |           ,
1622 |         ],
1623 |         "height": 80,
1624 |         "style": Object {
1625 |           "fill": "#fff",
1626 |           "position": "absolute",
1627 |           "right": 0,
1628 |           "top": 0,
1629 |         },
1630 |         "viewBox": "0 0 250 250",
1631 |         "width": 80,
1632 |       },
1633 |       "ref": null,
1634 |       "rendered": Array [
1635 |         Object {
1636 |           "instance": null,
1637 |           "key": undefined,
1638 |           "nodeType": "host",
1639 |           "props": Object {
1640 |             "className": "octo-banner",
1641 |             "d": "M0 0l115 115h15l12 27 108 108V0z",
1642 |             "fill": "#151513",
1643 |           },
1644 |           "ref": null,
1645 |           "rendered": null,
1646 |           "type": "path",
1647 |         },
1648 |         Object {
1649 |           "instance": null,
1650 |           "key": undefined,
1651 |           "nodeType": "host",
1652 |           "props": Object {
1653 |             "className": "octo-arm",
1654 |             "d": "M128 109c-15-9-9-19-9-19 3-7 2-11 2-11-1-7 3-2 3-2 4 5 2 11 2 11-3 10 5 15 9 16",
1655 |             "style": Object {
1656 |               "WebkitTransformOrigin": "130px 106px",
1657 |               "transformOrigin": "130px 106px",
1658 |             },
1659 |           },
1660 |           "ref": null,
1661 |           "rendered": null,
1662 |           "type": "path",
1663 |         },
1664 |         Object {
1665 |           "instance": null,
1666 |           "key": undefined,
1667 |           "nodeType": "host",
1668 |           "props": Object {
1669 |             "className": "octo-body",
1670 |             "d": "M115 115s4 2 5 0l14-14c3-2 6-3 8-3-8-11-15-24 2-41 5-5 10-7 16-7 1-2 3-7 12-11 0 0 5 3 7 16 4 2 8 5 12 9s7 8 9 12c14 3 17 7 17 7-4 8-9 11-11 11 0 6-2 11-7 16-16 16-30 10-41 2 0 3-1 7-5 11l-12 11c-1 1 1 5 1 5z",
1671 |           },
1672 |           "ref": null,
1673 |           "rendered": null,
1674 |           "type": "path",
1675 |         },
1676 |       ],
1677 |       "type": "svg",
1678 |     },
1679 |     "type": "a",
1680 |   },
1681 |   Symbol(enzyme.__nodes__): Array [
1682 |     Object {
1683 |       "instance": null,
1684 |       "key": undefined,
1685 |       "nodeType": "host",
1686 |       "props": Object {
1687 |         "aria-label": "Open GitHub project",
1688 |         "children": 
1701 |           
1706 |           
1716 |           
1720 |         ,
1721 |         "className": "github-corner wow cool",
1722 |         "href": "/",
1723 |       },
1724 |       "ref": null,
1725 |       "rendered": Object {
1726 |         "instance": null,
1727 |         "key": undefined,
1728 |         "nodeType": "host",
1729 |         "props": Object {
1730 |           "children": Array [
1731 |             ,
1736 |             ,
1746 |             ,
1750 |           ],
1751 |           "height": 80,
1752 |           "style": Object {
1753 |             "fill": "#fff",
1754 |             "position": "absolute",
1755 |             "right": 0,
1756 |             "top": 0,
1757 |           },
1758 |           "viewBox": "0 0 250 250",
1759 |           "width": 80,
1760 |         },
1761 |         "ref": null,
1762 |         "rendered": Array [
1763 |           Object {
1764 |             "instance": null,
1765 |             "key": undefined,
1766 |             "nodeType": "host",
1767 |             "props": Object {
1768 |               "className": "octo-banner",
1769 |               "d": "M0 0l115 115h15l12 27 108 108V0z",
1770 |               "fill": "#151513",
1771 |             },
1772 |             "ref": null,
1773 |             "rendered": null,
1774 |             "type": "path",
1775 |           },
1776 |           Object {
1777 |             "instance": null,
1778 |             "key": undefined,
1779 |             "nodeType": "host",
1780 |             "props": Object {
1781 |               "className": "octo-arm",
1782 |               "d": "M128 109c-15-9-9-19-9-19 3-7 2-11 2-11-1-7 3-2 3-2 4 5 2 11 2 11-3 10 5 15 9 16",
1783 |               "style": Object {
1784 |                 "WebkitTransformOrigin": "130px 106px",
1785 |                 "transformOrigin": "130px 106px",
1786 |               },
1787 |             },
1788 |             "ref": null,
1789 |             "rendered": null,
1790 |             "type": "path",
1791 |           },
1792 |           Object {
1793 |             "instance": null,
1794 |             "key": undefined,
1795 |             "nodeType": "host",
1796 |             "props": Object {
1797 |               "className": "octo-body",
1798 |               "d": "M115 115s4 2 5 0l14-14c3-2 6-3 8-3-8-11-15-24 2-41 5-5 10-7 16-7 1-2 3-7 12-11 0 0 5 3 7 16 4 2 8 5 12 9s7 8 9 12c14 3 17 7 17 7-4 8-9 11-11 11 0 6-2 11-7 16-16 16-30 10-41 2 0 3-1 7-5 11l-12 11c-1 1 1 5 1 5z",
1799 |             },
1800 |             "ref": null,
1801 |             "rendered": null,
1802 |             "type": "path",
1803 |           },
1804 |         ],
1805 |         "type": "svg",
1806 |       },
1807 |       "type": "a",
1808 |     },
1809 |   ],
1810 |   Symbol(enzyme.__options__): Object {
1811 |     "adapter": ReactSixteenAdapter {
1812 |       "options": Object {
1813 |         "enableComponentDidUpdateOnSetState": true,
1814 |         "lifecycles": Object {
1815 |           "componentDidUpdate": Object {
1816 |             "onSetState": true,
1817 |           },
1818 |           "getDerivedStateFromProps": true,
1819 |           "getSnapshotBeforeUpdate": true,
1820 |           "setState": Object {
1821 |             "skipsComponentDidUpdateOnNullish": true,
1822 |           },
1823 |         },
1824 |       },
1825 |     },
1826 |     "attachTo": undefined,
1827 |     "hydrateIn": undefined,
1828 |   },
1829 | }
1830 | `;
1831 | 
1832 | exports[`styles have already been injected 1`] = `
1833 | Object {
1834 |   "headAfter": "",
1835 |   "headBefore": "",
1836 | }
1837 | `;
1838 | 
1839 | exports[`when document.head does not exist 1`] = `""`;
1840 | 
1841 | exports[`when document.head does not exist 2`] = `
1842 | Array [
1843 |   Array [
1844 |     ,
1878 |   ],
1879 | ]
1880 | `;
1881 | 
1882 | exports[`when style.stylesheet exists we use cssText 1`] = `
1883 | "
1884 | .github-corner:hover .octo-arm {
1885 |   animation: octocat-wave 560ms ease-in-out;
1886 | }
1887 | 
1888 | @keyframes octocat-wave {
1889 |   0%, 100% {
1890 |     transform: rotate(0deg);
1891 |   }
1892 | 
1893 |   20%, 60% {
1894 |     transform: rotate(-25deg);
1895 |   }
1896 | 
1897 |   40%, 80% {
1898 |     transform: rotate(10deg);
1899 |   }
1900 | }
1901 | 
1902 | @media (max-width: 500px) {
1903 |     .github-corner:hover .octo-arm {
1904 |         animation: none;
1905 |     }
1906 | 
1907 |     .github-corner .octo-arm {
1908 |         animation: octocat-wave 560ms ease-in-out;
1909 |     }
1910 | }
1911 | "
1912 | `;
1913 | 
1914 | exports[`with additional props 1`] = `
1915 | ShallowWrapper {
1916 |   Symbol(enzyme.__root__): [Circular],
1917 |   Symbol(enzyme.__unrendered__): ,
1926 |   Symbol(enzyme.__renderer__): Object {
1927 |     "batchedUpdates": [Function],
1928 |     "getNode": [Function],
1929 |     "render": [Function],
1930 |     "simulateError": [Function],
1931 |     "simulateEvent": [Function],
1932 |     "unmount": [Function],
1933 |   },
1934 |   Symbol(enzyme.__node__): Object {
1935 |     "instance": null,
1936 |     "key": undefined,
1937 |     "nodeType": "host",
1938 |     "props": Object {
1939 |       "aria-label": "Open GitHub project",
1940 |       "children": 
1953 |         
1958 |         
1968 |         
1972 |       ,
1973 |       "className": "github-corner",
1974 |       "href": "/",
1975 |       "style": "display:none",
1976 |     },
1977 |     "ref": null,
1978 |     "rendered": Object {
1979 |       "instance": null,
1980 |       "key": undefined,
1981 |       "nodeType": "host",
1982 |       "props": Object {
1983 |         "children": Array [
1984 |           ,
1989 |           ,
1999 |           ,
2003 |         ],
2004 |         "height": 80,
2005 |         "style": Object {
2006 |           "fill": "#fff",
2007 |           "position": "absolute",
2008 |           "right": 0,
2009 |           "top": 0,
2010 |         },
2011 |         "viewBox": "0 0 250 250",
2012 |         "width": 80,
2013 |       },
2014 |       "ref": null,
2015 |       "rendered": Array [
2016 |         Object {
2017 |           "instance": null,
2018 |           "key": undefined,
2019 |           "nodeType": "host",
2020 |           "props": Object {
2021 |             "className": "octo-banner",
2022 |             "d": "M0 0l115 115h15l12 27 108 108V0z",
2023 |             "fill": "#151513",
2024 |           },
2025 |           "ref": null,
2026 |           "rendered": null,
2027 |           "type": "path",
2028 |         },
2029 |         Object {
2030 |           "instance": null,
2031 |           "key": undefined,
2032 |           "nodeType": "host",
2033 |           "props": Object {
2034 |             "className": "octo-arm",
2035 |             "d": "M128 109c-15-9-9-19-9-19 3-7 2-11 2-11-1-7 3-2 3-2 4 5 2 11 2 11-3 10 5 15 9 16",
2036 |             "style": Object {
2037 |               "WebkitTransformOrigin": "130px 106px",
2038 |               "transformOrigin": "130px 106px",
2039 |             },
2040 |           },
2041 |           "ref": null,
2042 |           "rendered": null,
2043 |           "type": "path",
2044 |         },
2045 |         Object {
2046 |           "instance": null,
2047 |           "key": undefined,
2048 |           "nodeType": "host",
2049 |           "props": Object {
2050 |             "className": "octo-body",
2051 |             "d": "M115 115s4 2 5 0l14-14c3-2 6-3 8-3-8-11-15-24 2-41 5-5 10-7 16-7 1-2 3-7 12-11 0 0 5 3 7 16 4 2 8 5 12 9s7 8 9 12c14 3 17 7 17 7-4 8-9 11-11 11 0 6-2 11-7 16-16 16-30 10-41 2 0 3-1 7-5 11l-12 11c-1 1 1 5 1 5z",
2052 |           },
2053 |           "ref": null,
2054 |           "rendered": null,
2055 |           "type": "path",
2056 |         },
2057 |       ],
2058 |       "type": "svg",
2059 |     },
2060 |     "type": "a",
2061 |   },
2062 |   Symbol(enzyme.__nodes__): Array [
2063 |     Object {
2064 |       "instance": null,
2065 |       "key": undefined,
2066 |       "nodeType": "host",
2067 |       "props": Object {
2068 |         "aria-label": "Open GitHub project",
2069 |         "children": 
2082 |           
2087 |           
2097 |           
2101 |         ,
2102 |         "className": "github-corner",
2103 |         "href": "/",
2104 |         "style": "display:none",
2105 |       },
2106 |       "ref": null,
2107 |       "rendered": Object {
2108 |         "instance": null,
2109 |         "key": undefined,
2110 |         "nodeType": "host",
2111 |         "props": Object {
2112 |           "children": Array [
2113 |             ,
2118 |             ,
2128 |             ,
2132 |           ],
2133 |           "height": 80,
2134 |           "style": Object {
2135 |             "fill": "#fff",
2136 |             "position": "absolute",
2137 |             "right": 0,
2138 |             "top": 0,
2139 |           },
2140 |           "viewBox": "0 0 250 250",
2141 |           "width": 80,
2142 |         },
2143 |         "ref": null,
2144 |         "rendered": Array [
2145 |           Object {
2146 |             "instance": null,
2147 |             "key": undefined,
2148 |             "nodeType": "host",
2149 |             "props": Object {
2150 |               "className": "octo-banner",
2151 |               "d": "M0 0l115 115h15l12 27 108 108V0z",
2152 |               "fill": "#151513",
2153 |             },
2154 |             "ref": null,
2155 |             "rendered": null,
2156 |             "type": "path",
2157 |           },
2158 |           Object {
2159 |             "instance": null,
2160 |             "key": undefined,
2161 |             "nodeType": "host",
2162 |             "props": Object {
2163 |               "className": "octo-arm",
2164 |               "d": "M128 109c-15-9-9-19-9-19 3-7 2-11 2-11-1-7 3-2 3-2 4 5 2 11 2 11-3 10 5 15 9 16",
2165 |               "style": Object {
2166 |                 "WebkitTransformOrigin": "130px 106px",
2167 |                 "transformOrigin": "130px 106px",
2168 |               },
2169 |             },
2170 |             "ref": null,
2171 |             "rendered": null,
2172 |             "type": "path",
2173 |           },
2174 |           Object {
2175 |             "instance": null,
2176 |             "key": undefined,
2177 |             "nodeType": "host",
2178 |             "props": Object {
2179 |               "className": "octo-body",
2180 |               "d": "M115 115s4 2 5 0l14-14c3-2 6-3 8-3-8-11-15-24 2-41 5-5 10-7 16-7 1-2 3-7 12-11 0 0 5 3 7 16 4 2 8 5 12 9s7 8 9 12c14 3 17 7 17 7-4 8-9 11-11 11 0 6-2 11-7 16-16 16-30 10-41 2 0 3-1 7-5 11l-12 11c-1 1 1 5 1 5z",
2181 |             },
2182 |             "ref": null,
2183 |             "rendered": null,
2184 |             "type": "path",
2185 |           },
2186 |         ],
2187 |         "type": "svg",
2188 |       },
2189 |       "type": "a",
2190 |     },
2191 |   ],
2192 |   Symbol(enzyme.__options__): Object {
2193 |     "adapter": ReactSixteenAdapter {
2194 |       "options": Object {
2195 |         "enableComponentDidUpdateOnSetState": true,
2196 |         "lifecycles": Object {
2197 |           "componentDidUpdate": Object {
2198 |             "onSetState": true,
2199 |           },
2200 |           "getDerivedStateFromProps": true,
2201 |           "getSnapshotBeforeUpdate": true,
2202 |           "setState": Object {
2203 |             "skipsComponentDidUpdateOnNullish": true,
2204 |           },
2205 |         },
2206 |       },
2207 |     },
2208 |     "attachTo": undefined,
2209 |     "hydrateIn": undefined,
2210 |   },
2211 | }
2212 | `;
2213 | 


--------------------------------------------------------------------------------
/src/lib/__snapshots__/get-github-corner-styles.test.js.snap:
--------------------------------------------------------------------------------
 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP
 2 | 
 3 | exports[`get-github-corner-styles 1`] = `
 4 | "
 5 | .github-corner:hover .octo-arm {
 6 |   animation: octocat-wave 560ms ease-in-out;
 7 | }
 8 | 
 9 | @keyframes octocat-wave {
10 |   0%, 100% {
11 |     transform: rotate(0deg);
12 |   }
13 | 
14 |   20%, 60% {
15 |     transform: rotate(-25deg);
16 |   }
17 | 
18 |   40%, 80% {
19 |     transform: rotate(10deg);
20 |   }
21 | }
22 | 
23 | @media (max-width: 500px) {
24 |     .github-corner:hover .octo-arm {
25 |         animation: none;
26 |     }
27 | 
28 |     .github-corner .octo-arm {
29 |         animation: octocat-wave 560ms ease-in-out;
30 |     }
31 | }
32 | "
33 | `;
34 | 


--------------------------------------------------------------------------------
/src/lib/get-github-corner-styles.js:
--------------------------------------------------------------------------------
 1 | export default () => {
 2 |   return `
 3 | .github-corner:hover .octo-arm {
 4 |   animation: octocat-wave 560ms ease-in-out;
 5 | }
 6 | 
 7 | @keyframes octocat-wave {
 8 |   0%, 100% {
 9 |     transform: rotate(0deg);
10 |   }
11 | 
12 |   20%, 60% {
13 |     transform: rotate(-25deg);
14 |   }
15 | 
16 |   40%, 80% {
17 |     transform: rotate(10deg);
18 |   }
19 | }
20 | 
21 | @media (max-width: 500px) {
22 |     .github-corner:hover .octo-arm {
23 |         animation: none;
24 |     }
25 | 
26 |     .github-corner .octo-arm {
27 |         animation: octocat-wave 560ms ease-in-out;
28 |     }
29 | }
30 | `;
31 | };
32 | 


--------------------------------------------------------------------------------
/src/lib/get-github-corner-styles.test.js:
--------------------------------------------------------------------------------
1 | import getGithubCornerStyles from './get-github-corner-styles.js';
2 | test('get-github-corner-styles', () => {
3 |   expect(getGithubCornerStyles()).toMatchSnapshot();
4 | });
5 | 


--------------------------------------------------------------------------------
/src/plugins/remove-prop-types-import.js:
--------------------------------------------------------------------------------
 1 | 'use strict';
 2 | 
 3 | Object.defineProperty(exports, '__esModule', {
 4 |   value: true
 5 | });
 6 | 
 7 | exports.default = function() {
 8 |   return {
 9 |     visitor: {
10 |       ImportDeclaration: function ImportDeclaration(path) {
11 |         if (
12 |           path.node &&
13 |           path.node.source &&
14 |           path.node.source.value === 'prop-types'
15 |         ) {
16 |           path.remove();
17 |         }
18 |       }
19 |     }
20 |   };
21 | };
22 | 


--------------------------------------------------------------------------------
/webpack.config.js:
--------------------------------------------------------------------------------
  1 | const webpack = require('webpack');
  2 | const CopyWebpackPlugin = require('copy-webpack-plugin');
  3 | const ExtractTextPlugin = require('extract-text-webpack-plugin');
  4 | const packageInfo = require('./package.json');
  5 | 
  6 | const extractLess = new ExtractTextPlugin({
  7 |   filename: 'css/app.css'
  8 | });
  9 | 
 10 | module.exports = () => {
 11 |   const config = {
 12 |     context: `${__dirname}/src/app`,
 13 |     entry: {
 14 |       'js/app.js': ['./index.js'],
 15 |       'css/app.css': ['./styles/app.less']
 16 |     },
 17 |     output: {
 18 |       filename: '[name]',
 19 |       path: `${__dirname}/build/dev/${packageInfo.name}`
 20 |     },
 21 |     devtool: 'sourcemap',
 22 |     devServer: {
 23 |       //contentBase: path.join(__dirname, "dist"),
 24 |       publicPath: `/${packageInfo.name}/`,
 25 |       historyApiFallback: {
 26 |         index: `/${packageInfo.name}/index.html`
 27 |       },
 28 |       stats: {
 29 |         colors: true
 30 |       }
 31 |     },
 32 |     plugins: [
 33 |       extractLess,
 34 |       new CopyWebpackPlugin(
 35 |         [
 36 |           { from: '../../README.md', to: './README.md' },
 37 |           { from: './index.html', to: './index.html' },
 38 |           { from: './index.html', to: './404.html' },
 39 |           { from: './favicon.ico', to: './favicon.ico' }
 40 |         ],
 41 |         { copyUnmodified: true }
 42 |       ),
 43 |       new webpack.DefinePlugin({
 44 |         'process.env': {
 45 |           // This has effect on the react lib size
 46 |           NODE_ENV: JSON.stringify(process.env.NODE_ENV)
 47 |         }
 48 |       })
 49 |     ],
 50 |     module: {
 51 |       rules: [
 52 |         {
 53 |           test: /\.js$/,
 54 |           exclude: /(node_modules)/,
 55 |           use: {
 56 |             loader: 'babel-loader'
 57 |           }
 58 |         },
 59 |         {
 60 |           test: /\.md$/,
 61 |           use: [
 62 |             {
 63 |               loader: 'html-loader'
 64 |             },
 65 |             {
 66 |               loader: 'markdown-loader'
 67 |             }
 68 |           ]
 69 |         },
 70 |         {
 71 |           test: /\.less$/,
 72 |           use: extractLess.extract({
 73 |             use: [
 74 |               {
 75 |                 loader: 'css-loader'
 76 |               },
 77 |               {
 78 |                 loader: 'less-loader'
 79 |               }
 80 |             ]
 81 |           })
 82 |         },
 83 |         {
 84 |           test: /.*\/images\/.*/,
 85 |           use: [
 86 |             {
 87 |               loader: 'url-loader?name=./images/[name].[ext]'
 88 |             }
 89 |           ]
 90 |         },
 91 |         {
 92 |           test: /\.eot$|\.svg$|\.ttf$|\.woff$|\.woff2$/,
 93 |           use: [
 94 |             {
 95 |               loader: 'url-loader?name=./fonts/[name].[ext]'
 96 |             }
 97 |           ]
 98 |         }
 99 |       ]
100 |     }
101 |   };
102 | 
103 |   if (process.env.NODE_ENV === 'production') {
104 |     config.plugins.push(
105 |       new webpack.optimize.UglifyJsPlugin({
106 |         sourceMap: true
107 |       })
108 |     );
109 |     config.output.path = `${__dirname}/build/prod`;
110 |   }
111 | 
112 |   return config;
113 | };
114 | 


--------------------------------------------------------------------------------