{"version":3,"sources":["webpack:///./src/components/non-panels/react-modal-video/modal-video.module.scss","webpack:///./src/images/hero-laptop-3.png","webpack:///./src/images/play-button-2138735_640.png","webpack:///./node_modules/react-transition-group/node_modules/dom-helpers/esm/removeClass.js","webpack:///./node_modules/react-transition-group/esm/CSSTransition.js","webpack:///./node_modules/react-transition-group/node_modules/dom-helpers/esm/addClass.js","webpack:///./node_modules/react-transition-group/node_modules/dom-helpers/esm/hasClass.js","webpack:///./src/components/non-panels/react-modal-video/modal-video.js"],"names":["module","exports","replaceClassName","origClass","classToRemove","replace","RegExp","node","classes","split","forEach","c","className","element","classList","remove","setAttribute","baseVal","_React$Component","CSSTransition","_this","_len","arguments","length","args","Array","_key","call","apply","this","concat","appliedClasses","appear","enter","exit","onEnter","maybeNode","maybeAppearing","_this$resolveArgument","resolveArguments","appearing","removeClasses","addClass","props","onEntering","_this$resolveArgument2","type","onEntered","_this$resolveArgument3","onExit","onExiting","onExited","nodeRef","current","getClassNames","classNames","isStringClassNames","baseClassName","activeClassName","doneClassName","_proto","prototype","phase","scrollTop","add","contains","indexOf","hasClass","_addClass","_this$appliedClasses$","base","active","done","render","_this$props","createElement","Transition","Component","defaultProps","propTypes","ModalVideo","state","isOpen","closeModal","bind","updateFocus","openModal","setState","onClose","keydownHandler","e","keyCode","componentDidMount","document","addEventListener","componentWillUnmount","removeEventListener","getDerivedStateFromProps","componentDidUpdate","modal","focus","preventDefault","stopPropagation","activeElement","modalbtn","getQueryString","obj","url","key","hasOwnProperty","substr","getYoutubeUrl","youtube","videoId","getVimeoUrl","vimeo","getYoukuUrl","youku","getVideoUrl","opt","channel","getPadding","ratio","arr","width","Number","style","paddingBottom","modalVideoEffect","timeout","animationSpeed","modalVideo","tabIndex","role","aria-label","aria","openMessage","onClick","ref","onKeyDown","modalVideoBody","modalVideoInner","modalVideoIframeWrap","modalVideoCloseBtn","dismissBtnMessage","height","src","frameBorder","allowFullScreen","React","autoplay","cc_load_policy","color","controls","disablekb","enablejsapi","end","fs","h1","iv_load_policy","list","listType","loop","modestbranding","origin","playlist","playsinline","rel","showinfo","start","wmode","theme","api","autopause","byline","callback","maxheight","maxwidth","player_id","portrait","title","xhtml","show_related","s","modalVideoClose","modalVideoMovieWrap"],"mappings":"gFACAA,EAAOC,QAAU,CAAC,WAAa,yCAAyC,qBAAuB,qDAAqD,oBAAsB,oDAAoD,eAAiB,8CAA8C,gBAAkB,+CAA+C,mBAAqB,qD,qBCDnXD,EAAOC,QAAU,IAA0B,6D,uBCA3CD,EAAOC,QAAU,IAA0B,uE,kHCG3C,SAASC,EAAiBC,EAAWC,GACnC,OAAOD,EAAUE,QAAQ,IAAIC,OAAO,UAAYF,EAAgB,YAAa,KAAM,MAAMC,QAAQ,OAAQ,KAAKA,QAAQ,aAAc,I,4BCalI,EAAc,SAAqBE,EAAMC,GAC3C,OAAOD,GAAQC,GAAWA,EAAQC,MAAM,KAAKC,SAAQ,SAAUC,GAC7D,ODZyCC,ECYbD,QDZIE,ECYVN,GDXZO,UACVD,EAAQC,UAAUC,OAAOH,GACa,iBAAtBC,EAAQD,UAExBC,EAAQD,UAAYV,EAAiBW,EAAQD,UAAWA,GAExDC,EAAQG,aAAa,QAASd,EAAiBW,EAAQD,WAAaC,EAAQD,UAAUK,SAAW,GAAIL,KAP1F,IAAqBC,EAASD,MCsFzC,EAA6B,SAAUM,GAGzC,SAASC,IAGP,IAFA,IAAIC,EAEKC,EAAOC,UAAUC,OAAQC,EAAO,IAAIC,MAAMJ,GAAOK,EAAO,EAAGA,EAAOL,EAAMK,IAC/EF,EAAKE,GAAQJ,UAAUI,GAgHzB,OA7GAN,EAAQF,EAAiBS,KAAKC,MAAMV,EAAkB,CAACW,MAAMC,OAAON,KAAUK,MACxEE,eAAiB,CACrBC,OAAQ,GACRC,MAAO,GACPC,KAAM,IAGRd,EAAMe,QAAU,SAAUC,EAAWC,GACnC,IAAIC,EAAwBlB,EAAMmB,iBAAiBH,EAAWC,GAC1D9B,EAAO+B,EAAsB,GAC7BE,EAAYF,EAAsB,GAEtClB,EAAMqB,cAAclC,EAAM,QAE1Ba,EAAMsB,SAASnC,EAAMiC,EAAY,SAAW,QAAS,QAEjDpB,EAAMuB,MAAMR,SACdf,EAAMuB,MAAMR,QAAQC,EAAWC,IAInCjB,EAAMwB,WAAa,SAAUR,EAAWC,GACtC,IAAIQ,EAAyBzB,EAAMmB,iBAAiBH,EAAWC,GAC3D9B,EAAOsC,EAAuB,GAG9BC,EAFYD,EAAuB,GAEhB,SAAW,QAElCzB,EAAMsB,SAASnC,EAAMuC,EAAM,UAEvB1B,EAAMuB,MAAMC,YACdxB,EAAMuB,MAAMC,WAAWR,EAAWC,IAItCjB,EAAM2B,UAAY,SAAUX,EAAWC,GACrC,IAAIW,EAAyB5B,EAAMmB,iBAAiBH,EAAWC,GAC3D9B,EAAOyC,EAAuB,GAG9BF,EAFYE,EAAuB,GAEhB,SAAW,QAElC5B,EAAMqB,cAAclC,EAAMuC,GAE1B1B,EAAMsB,SAASnC,EAAMuC,EAAM,QAEvB1B,EAAMuB,MAAMI,WACd3B,EAAMuB,MAAMI,UAAUX,EAAWC,IAIrCjB,EAAM6B,OAAS,SAAUb,GACvB,IACI7B,EADyBa,EAAMmB,iBAAiBH,GAClB,GAElChB,EAAMqB,cAAclC,EAAM,UAE1Ba,EAAMqB,cAAclC,EAAM,SAE1Ba,EAAMsB,SAASnC,EAAM,OAAQ,QAEzBa,EAAMuB,MAAMM,QACd7B,EAAMuB,MAAMM,OAAOb,IAIvBhB,EAAM8B,UAAY,SAAUd,GAC1B,IACI7B,EADyBa,EAAMmB,iBAAiBH,GAClB,GAElChB,EAAMsB,SAASnC,EAAM,OAAQ,UAEzBa,EAAMuB,MAAMO,WACd9B,EAAMuB,MAAMO,UAAUd,IAI1BhB,EAAM+B,SAAW,SAAUf,GACzB,IACI7B,EADyBa,EAAMmB,iBAAiBH,GAClB,GAElChB,EAAMqB,cAAclC,EAAM,QAE1Ba,EAAMsB,SAASnC,EAAM,OAAQ,QAEzBa,EAAMuB,MAAMQ,UACd/B,EAAMuB,MAAMQ,SAASf,IAIzBhB,EAAMmB,iBAAmB,SAAUH,EAAWC,GAC5C,OAAOjB,EAAMuB,MAAMS,QAAU,CAAChC,EAAMuB,MAAMS,QAAQC,QAASjB,GACzD,CAACA,EAAWC,IAGhBjB,EAAMkC,cAAgB,SAAUR,GAC9B,IAAIS,EAAanC,EAAMuB,MAAMY,WACzBC,EAA2C,iBAAfD,EAE5BE,EAAgBD,EAAqB,IAD5BA,GAAsBD,EAAaA,EAAa,IAAM,IACZT,EAAOS,EAAWT,GAGzE,MAAO,CACLW,cAAeA,EACfC,gBAJoBF,EAAqBC,EAAgB,UAAYF,EAAWT,EAAO,UAKvFa,cAJkBH,EAAqBC,EAAgB,QAAUF,EAAWT,EAAO,UAQhF1B,EAtHT,YAAeD,EAAeD,GAyH9B,IAAI0C,EAASzC,EAAc0C,UA6D3B,OA3DAD,EAAOlB,SAAW,SAAkBnC,EAAMuC,EAAMgB,GAC9C,IAAIlD,EAAYiB,KAAKyB,cAAcR,GAAMgB,EAAQ,aAG7CH,EADsB9B,KAAKyB,cAAc,SACLK,cAE3B,WAATb,GAA+B,SAAVgB,GAAoBH,IAC3C/C,GAAa,IAAM+C,GAKP,WAAVG,GAEFvD,GAAQA,EAAKwD,UAGXnD,IACFiB,KAAKE,eAAee,GAAMgB,GAASlD,EAhOzB,SAAkBL,EAAMC,GAC/BD,GAAQC,GAAWA,EAAQC,MAAM,KAAKC,SAAQ,SAAUC,GAC7D,OCZsCC,EDYbD,QCZIE,EDYVN,GCXTO,UAAWD,EAAQC,UAAUkD,IAAIpD,GCFhC,SAAkBC,EAASD,GACxC,OAAIC,EAAQC,YAAoBF,GAAaC,EAAQC,UAAUmD,SAASrD,IACkC,KAAlG,KAAOC,EAAQD,UAAUK,SAAWJ,EAAQD,WAAa,KAAKsD,QAAQ,IAAMtD,EAAY,KDA9BuD,CAAStD,EAASD,KAA6C,iBAAtBC,EAAQD,UAAwBC,EAAQD,UAAYC,EAAQD,UAAY,IAAMA,EAAeC,EAAQG,aAAa,SAAUH,EAAQD,WAAaC,EAAQD,UAAUK,SAAW,IAAM,IAAML,KADxR,IAAkBC,EAASD,KD4OpCwD,CAAU7D,EAAMK,KAIpBgD,EAAOnB,cAAgB,SAAuBlC,EAAMuC,GAClD,IAAIuB,EAAwBxC,KAAKE,eAAee,GAC5CW,EAAgBY,EAAsBC,KACtCZ,EAAkBW,EAAsBE,OACxCZ,EAAgBU,EAAsBG,KAC1C3C,KAAKE,eAAee,GAAQ,GAExBW,GACF,EAAYlD,EAAMkD,GAGhBC,GACF,EAAYnD,EAAMmD,GAGhBC,GACF,EAAYpD,EAAMoD,IAItBC,EAAOa,OAAS,WACd,IAAIC,EAAc7C,KAAKc,MAEnBA,GADI+B,EAAYnB,WACR,YAA8BmB,EAAa,CAAC,gBAExD,OAAoB,UAAMC,cAAcC,EAAA,EAAY,YAAS,GAAIjC,EAAO,CACtER,QAASN,KAAKM,QACdY,UAAWlB,KAAKkB,UAChBH,WAAYf,KAAKe,WACjBK,OAAQpB,KAAKoB,OACbC,UAAWrB,KAAKqB,UAChBC,SAAUtB,KAAKsB,aAIZhC,EAvLwB,CAwL/B,UAAM0D,WAER,EAAcC,aAAe,CAC3BvB,WAAY,IAEd,EAAcwB,UAiIT,GACU,O,sSGtZMC,E,qHAEjB,WAAYrC,GAAQ,IAAD,SACf,cAAMA,IAAN,MACKsC,MAAQ,CACTC,QAAQ,GAEZ,EAAKC,WAAa,EAAKA,WAAWC,KAAhB,MAClB,EAAKC,YAAc,EAAKA,YAAYD,KAAjB,MANJ,E,2BASnBE,UAAA,WACIzD,KAAK0D,SAAS,CAAEL,QAAQ,K,EAG5BC,WAAA,WACItD,KAAK0D,SAAS,CAAEL,QAAQ,IACU,mBAAvBrD,KAAKc,MAAM6C,SAClB3D,KAAKc,MAAM6C,W,EAInBC,eAAA,SAAeC,GACO,KAAdA,EAAEC,SACF9D,KAAKsD,c,EAIbS,kBAAA,WACIC,SAASC,iBAAiB,UAAWjE,KAAK4D,eAAeL,KAAKvD,Q,EAGlEkE,qBAAA,WACIF,SAASG,oBAAoB,UAAWnE,KAAK4D,eAAeL,KAAKvD,Q,EAG9DoE,yBAAP,SAAgCtD,GAC5B,MAAO,CAAEuC,OAAQvC,EAAMuC,S,EAG3BgB,mBAAA,WACQrE,KAAKoD,MAAMC,QAAUrD,KAAKsE,OAC1BtE,KAAKsE,MAAMC,S,EAInBf,YAAA,SAAYK,GACU,IAAdA,EAAEC,UACFD,EAAEW,iBACFX,EAAEY,kBACEzE,KAAKsE,QAAUN,SAASU,cACxB1E,KAAK2E,SAASJ,QAEdvE,KAAKsE,MAAMC,U,EAKvBK,eAAA,SAAeC,GACX,IAAIC,EAAM,GACV,IAAK,IAAIC,KAAOF,EACRA,EAAIG,eAAeD,IACF,OAAbF,EAAIE,KACJD,GAAOC,EAAM,IAAMF,EAAIE,GAAO,KAI1C,OAAOD,EAAIG,OAAO,EAAGH,EAAIpF,OAAS,I,EAGtCwF,cAAA,SAAcC,EAASC,GAEnB,MAAO,2BAA6BA,EAAU,IADhCpF,KAAK4E,eAAeO,I,EAItCE,YAAA,SAAYC,EAAOF,GAEf,MAAO,4BAA8BA,EAAU,IADjCpF,KAAK4E,eAAeU,I,EAItCC,YAAA,SAAYC,EAAOJ,GAEf,MAAO,4BAA8BA,EAAU,IADjCpF,KAAK4E,eAAeY,I,EAItCC,YAAA,SAAYC,EAAKN,GACb,MAAoB,YAAhBM,EAAIC,QACG3F,KAAKkF,cAAcQ,EAAIP,QAASC,GAChB,UAAhBM,EAAIC,QACJ3F,KAAKqF,YAAYK,EAAIJ,MAAOF,GACZ,UAAhBM,EAAIC,QACJ3F,KAAKuF,YAAYG,EAAIF,MAAOJ,GACZ,WAAhBM,EAAIC,QACJD,EAAIZ,SADR,G,EAKXc,WAAA,SAAWC,GACP,IAAMC,EAAMD,EAAMjH,MAAM,KAClBmH,EAAQC,OAAOF,EAAI,IAGzB,OADyB,IADVE,OAAOF,EAAI,IACKC,EACd,K,EAGrBnD,OAAA,WAAU,IAAD,OACCqD,EAAQ,CACVC,cAAelG,KAAK4F,WAAW5F,KAAKc,MAAM+E,QAG9C,OACI,wBAAC,IAAD,CACInE,WAAY1B,KAAKc,MAAMY,WAAWyE,iBAClCC,QAASpG,KAAKc,MAAMuF,iBAEnB,WACG,OAAK,EAAKjD,MAAMC,OAKZ,+BAAKtE,UAAW,EAAK+B,MAAMY,WAAW4E,WAAYC,SAAS,KAAKC,KAAK,SACjEC,aAAY,EAAK3F,MAAM4F,KAAKC,YAAaC,QAAS,EAAKtD,WAAYuD,IAAK,SAAAnI,GAAU,EAAK4F,MAAQ5F,GAASoI,UAAW,EAAKtD,aACxH,+BAAKzE,UAAW,EAAK+B,MAAMY,WAAWqF,gBAClC,+BAAKhI,UAAW,EAAK+B,MAAMY,WAAWsF,iBAClC,+BAAKjI,UAAW,EAAK+B,MAAMY,WAAWuF,qBAAsBhB,MAAOA,GAC/D,kCAAQlH,UAAW,EAAK+B,MAAMY,WAAWwF,mBAAoBT,aAAY,EAAK3F,MAAM4F,KAAKS,kBAAmBN,IAAK,SAAAnI,GAAU,EAAKiG,SAAWjG,GAASoI,UAAW,EAAKtD,cACpK,kCAAQuC,MAAM,MAAMqB,OAAO,MAAMC,IAAK,EAAK5B,YAAY,EAAK3E,MAAO,EAAKA,MAAMsE,SAAUkC,YAAY,IAAIC,gBAAiB,EAAKzG,MAAMyG,gBAAiBhB,SAAS,WAVvK,S,GArHSiB,UAAMxE,WA0I9CG,EAAWF,aAAe,CACtB0C,QAAS,UACTtC,QAAQ,EACR8B,QAAS,CACLsC,SAAU,EACVC,eAAgB,EAChBC,MAAO,KACPC,SAAU,EACVC,UAAW,EACXC,YAAa,EACbC,IAAK,KACLC,GAAI,EACJC,GAAI,KACJC,eAAgB,EAChBC,KAAM,KACNC,SAAU,KACVC,KAAM,EACNC,eAAgB,KAChBC,OAAQ,KACRC,SAAU,KACVC,YAAa,KACbC,IAAK,EACLC,SAAU,EACVC,MAAO,EACPC,MAAO,cACPC,MAAO,QAEXjD,MAAO,OACPP,MAAO,CACHyD,KAAK,EACLC,WAAW,EACXvB,UAAU,EACVwB,QAAQ,EACRC,SAAU,KACVvB,MAAO,KACPP,OAAQ,KACRiB,MAAM,EACNc,UAAW,KACXC,SAAU,KACVC,UAAW,KACXC,UAAU,EACVC,OAAO,EACPxD,MAAO,KACPyD,OAAO,GAEXhE,MAAO,CACHiC,SAAU,EACVgC,aAAc,GAElBlC,iBAAiB,EACjBlB,eAAgB,IAChB3E,WAAY,CACRyE,iBAAkBuD,IAAEvD,iBACpBG,WAAYoD,IAAEpD,WACdqD,gBAAiBD,IAAEC,gBACnB5C,eAAgB2C,IAAE3C,eAClBC,gBAAiB0C,IAAE1C,gBACnBC,qBAAsByC,IAAEE,oBACxB1C,mBAAoBwC,IAAExC,oBAE1BR,KAAM,CACFC,YAAa,mCACbQ,kBAAmB","file":"d89bddc89ef4cfedaefb9e361fd822c2b670061a-530c6c228622adfc9d0f.js","sourcesContent":["// extracted by mini-css-extract-plugin\nmodule.exports = {\"modalVideo\":\"modal-video-module--modal-video--P3mOt\",\"modalVideoEffectExit\":\"modal-video-module--modal-video-effect-exit--1lIBd\",\"modalVideoMovieWrap\":\"modal-video-module--modal-video-movie-wrap--3B6nV\",\"modalVideoBody\":\"modal-video-module--modal-video-body--c2CSQ\",\"modalVideoInner\":\"modal-video-module--modal-video-inner--2pFXH\",\"modalVideoCloseBtn\":\"modal-video-module--modal-video-close-btn--3iz7H\"};","module.exports = __webpack_public_path__ + \"static/hero-laptop-3-2e34a6c108d0f09aa41064a0aa74ef81.png\";","module.exports = __webpack_public_path__ + \"static/play-button-2138735_640-3b62c6ca4fbf30726f22fd05d6e6fde3.png\";","import \"core-js/modules/es6.regexp.constructor\";\nimport \"core-js/modules/es6.regexp.replace\";\n\nfunction replaceClassName(origClass, classToRemove) {\n return origClass.replace(new RegExp(\"(^|\\\\s)\" + classToRemove + \"(?:\\\\s|$)\", 'g'), '$1').replace(/\\s+/g, ' ').replace(/^\\s*|\\s*$/g, '');\n}\n\nexport default function removeClass(element, className) {\n if (element.classList) {\n element.classList.remove(className);\n } else if (typeof element.className === 'string') {\n ;\n element.className = replaceClassName(element.className, className);\n } else {\n element.setAttribute('class', replaceClassName(element.className && element.className.baseVal || '', className));\n }\n}","import \"core-js/modules/es6.regexp.split\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport PropTypes from 'prop-types';\nimport addOneClass from 'dom-helpers/addClass';\nimport removeOneClass from 'dom-helpers/removeClass';\nimport React from 'react';\nimport Transition from './Transition';\nimport { classNamesShape } from './utils/PropTypes';\n\nvar _addClass = function addClass(node, classes) {\n return node && classes && classes.split(' ').forEach(function (c) {\n return addOneClass(node, c);\n });\n};\n\nvar removeClass = function removeClass(node, classes) {\n return node && classes && classes.split(' ').forEach(function (c) {\n return removeOneClass(node, c);\n });\n};\n/**\n * A transition component inspired by the excellent\n * [ng-animate](https://docs.angularjs.org/api/ngAnimate) library, you should\n * use it if you're using CSS transitions or animations. It's built upon the\n * [`Transition`](https://reactcommunity.org/react-transition-group/transition)\n * component, so it inherits all of its props.\n *\n * `CSSTransition` applies a pair of class names during the `appear`, `enter`,\n * and `exit` states of the transition. The first class is applied and then a\n * second `*-active` class in order to activate the CSS transition. After the\n * transition, matching `*-done` class names are applied to persist the\n * transition state.\n *\n * ```jsx\n * function App() {\n * const [inProp, setInProp] = useState(false);\n * return (\n *
\n * \n *
\n * {\"I'll receive my-node-* classes\"}\n *
\n *
\n * \n *
\n * );\n * }\n * ```\n *\n * When the `in` prop is set to `true`, the child component will first receive\n * the class `example-enter`, then the `example-enter-active` will be added in\n * the next tick. `CSSTransition` [forces a\n * reflow](https://github.com/reactjs/react-transition-group/blob/5007303e729a74be66a21c3e2205e4916821524b/src/CSSTransition.js#L208-L215)\n * between before adding the `example-enter-active`. This is an important trick\n * because it allows us to transition between `example-enter` and\n * `example-enter-active` even though they were added immediately one after\n * another. Most notably, this is what makes it possible for us to animate\n * _appearance_.\n *\n * ```css\n * .my-node-enter {\n * opacity: 0;\n * }\n * .my-node-enter-active {\n * opacity: 1;\n * transition: opacity 200ms;\n * }\n * .my-node-exit {\n * opacity: 1;\n * }\n * .my-node-exit-active {\n * opacity: 0;\n * transition: opacity 200ms;\n * }\n * ```\n *\n * `*-active` classes represent which styles you want to animate **to**, so it's\n * important to add `transition` declaration only to them, otherwise transitions\n * might not behave as intended! This might not be obvious when the transitions\n * are symmetrical, i.e. when `*-enter-active` is the same as `*-exit`, like in\n * the example above (minus `transition`), but it becomes apparent in more\n * complex transitions.\n *\n * **Note**: If you're using the\n * [`appear`](http://reactcommunity.org/react-transition-group/transition#Transition-prop-appear)\n * prop, make sure to define styles for `.appear-*` classes as well.\n */\n\n\nvar CSSTransition = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(CSSTransition, _React$Component);\n\n function CSSTransition() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n _this.appliedClasses = {\n appear: {},\n enter: {},\n exit: {}\n };\n\n _this.onEnter = function (maybeNode, maybeAppearing) {\n var _this$resolveArgument = _this.resolveArguments(maybeNode, maybeAppearing),\n node = _this$resolveArgument[0],\n appearing = _this$resolveArgument[1];\n\n _this.removeClasses(node, 'exit');\n\n _this.addClass(node, appearing ? 'appear' : 'enter', 'base');\n\n if (_this.props.onEnter) {\n _this.props.onEnter(maybeNode, maybeAppearing);\n }\n };\n\n _this.onEntering = function (maybeNode, maybeAppearing) {\n var _this$resolveArgument2 = _this.resolveArguments(maybeNode, maybeAppearing),\n node = _this$resolveArgument2[0],\n appearing = _this$resolveArgument2[1];\n\n var type = appearing ? 'appear' : 'enter';\n\n _this.addClass(node, type, 'active');\n\n if (_this.props.onEntering) {\n _this.props.onEntering(maybeNode, maybeAppearing);\n }\n };\n\n _this.onEntered = function (maybeNode, maybeAppearing) {\n var _this$resolveArgument3 = _this.resolveArguments(maybeNode, maybeAppearing),\n node = _this$resolveArgument3[0],\n appearing = _this$resolveArgument3[1];\n\n var type = appearing ? 'appear' : 'enter';\n\n _this.removeClasses(node, type);\n\n _this.addClass(node, type, 'done');\n\n if (_this.props.onEntered) {\n _this.props.onEntered(maybeNode, maybeAppearing);\n }\n };\n\n _this.onExit = function (maybeNode) {\n var _this$resolveArgument4 = _this.resolveArguments(maybeNode),\n node = _this$resolveArgument4[0];\n\n _this.removeClasses(node, 'appear');\n\n _this.removeClasses(node, 'enter');\n\n _this.addClass(node, 'exit', 'base');\n\n if (_this.props.onExit) {\n _this.props.onExit(maybeNode);\n }\n };\n\n _this.onExiting = function (maybeNode) {\n var _this$resolveArgument5 = _this.resolveArguments(maybeNode),\n node = _this$resolveArgument5[0];\n\n _this.addClass(node, 'exit', 'active');\n\n if (_this.props.onExiting) {\n _this.props.onExiting(maybeNode);\n }\n };\n\n _this.onExited = function (maybeNode) {\n var _this$resolveArgument6 = _this.resolveArguments(maybeNode),\n node = _this$resolveArgument6[0];\n\n _this.removeClasses(node, 'exit');\n\n _this.addClass(node, 'exit', 'done');\n\n if (_this.props.onExited) {\n _this.props.onExited(maybeNode);\n }\n };\n\n _this.resolveArguments = function (maybeNode, maybeAppearing) {\n return _this.props.nodeRef ? [_this.props.nodeRef.current, maybeNode] // here `maybeNode` is actually `appearing`\n : [maybeNode, maybeAppearing];\n };\n\n _this.getClassNames = function (type) {\n var classNames = _this.props.classNames;\n var isStringClassNames = typeof classNames === 'string';\n var prefix = isStringClassNames && classNames ? classNames + \"-\" : '';\n var baseClassName = isStringClassNames ? \"\" + prefix + type : classNames[type];\n var activeClassName = isStringClassNames ? baseClassName + \"-active\" : classNames[type + \"Active\"];\n var doneClassName = isStringClassNames ? baseClassName + \"-done\" : classNames[type + \"Done\"];\n return {\n baseClassName: baseClassName,\n activeClassName: activeClassName,\n doneClassName: doneClassName\n };\n };\n\n return _this;\n }\n\n var _proto = CSSTransition.prototype;\n\n _proto.addClass = function addClass(node, type, phase) {\n var className = this.getClassNames(type)[phase + \"ClassName\"];\n\n var _this$getClassNames = this.getClassNames('enter'),\n doneClassName = _this$getClassNames.doneClassName;\n\n if (type === 'appear' && phase === 'done' && doneClassName) {\n className += \" \" + doneClassName;\n } // This is for to force a repaint,\n // which is necessary in order to transition styles when adding a class name.\n\n\n if (phase === 'active') {\n /* eslint-disable no-unused-expressions */\n node && node.scrollTop;\n }\n\n if (className) {\n this.appliedClasses[type][phase] = className;\n\n _addClass(node, className);\n }\n };\n\n _proto.removeClasses = function removeClasses(node, type) {\n var _this$appliedClasses$ = this.appliedClasses[type],\n baseClassName = _this$appliedClasses$.base,\n activeClassName = _this$appliedClasses$.active,\n doneClassName = _this$appliedClasses$.done;\n this.appliedClasses[type] = {};\n\n if (baseClassName) {\n removeClass(node, baseClassName);\n }\n\n if (activeClassName) {\n removeClass(node, activeClassName);\n }\n\n if (doneClassName) {\n removeClass(node, doneClassName);\n }\n };\n\n _proto.render = function render() {\n var _this$props = this.props,\n _ = _this$props.classNames,\n props = _objectWithoutPropertiesLoose(_this$props, [\"classNames\"]);\n\n return /*#__PURE__*/React.createElement(Transition, _extends({}, props, {\n onEnter: this.onEnter,\n onEntered: this.onEntered,\n onEntering: this.onEntering,\n onExit: this.onExit,\n onExiting: this.onExiting,\n onExited: this.onExited\n }));\n };\n\n return CSSTransition;\n}(React.Component);\n\nCSSTransition.defaultProps = {\n classNames: ''\n};\nCSSTransition.propTypes = process.env.NODE_ENV !== \"production\" ? _extends({}, Transition.propTypes, {\n /**\n * The animation classNames applied to the component as it appears, enters,\n * exits or has finished the transition. A single name can be provided, which\n * will be suffixed for each stage, e.g. `classNames=\"fade\"` applies:\n *\n * - `fade-appear`, `fade-appear-active`, `fade-appear-done`\n * - `fade-enter`, `fade-enter-active`, `fade-enter-done`\n * - `fade-exit`, `fade-exit-active`, `fade-exit-done`\n *\n * A few details to note about how these classes are applied:\n *\n * 1. They are _joined_ with the ones that are already defined on the child\n * component, so if you want to add some base styles, you can use\n * `className` without worrying that it will be overridden.\n *\n * 2. If the transition component mounts with `in={false}`, no classes are\n * applied yet. You might be expecting `*-exit-done`, but if you think\n * about it, a component cannot finish exiting if it hasn't entered yet.\n *\n * 2. `fade-appear-done` and `fade-enter-done` will _both_ be applied. This\n * allows you to define different behavior for when appearing is done and\n * when regular entering is done, using selectors like\n * `.fade-enter-done:not(.fade-appear-done)`. For example, you could apply\n * an epic entrance animation when element first appears in the DOM using\n * [Animate.css](https://daneden.github.io/animate.css/). Otherwise you can\n * simply use `fade-enter-done` for defining both cases.\n *\n * Each individual classNames can also be specified independently like:\n *\n * ```js\n * classNames={{\n * appear: 'my-appear',\n * appearActive: 'my-active-appear',\n * appearDone: 'my-done-appear',\n * enter: 'my-enter',\n * enterActive: 'my-active-enter',\n * enterDone: 'my-done-enter',\n * exit: 'my-exit',\n * exitActive: 'my-active-exit',\n * exitDone: 'my-done-exit',\n * }}\n * ```\n *\n * If you want to set these classes using CSS Modules:\n *\n * ```js\n * import styles from './styles.css';\n * ```\n *\n * you might want to use camelCase in your CSS file, that way could simply\n * spread them instead of listing them one by one:\n *\n * ```js\n * classNames={{ ...styles }}\n * ```\n *\n * @type {string | {\n * appear?: string,\n * appearActive?: string,\n * appearDone?: string,\n * enter?: string,\n * enterActive?: string,\n * enterDone?: string,\n * exit?: string,\n * exitActive?: string,\n * exitDone?: string,\n * }}\n */\n classNames: classNamesShape,\n\n /**\n * A `` callback fired immediately after the 'enter' or 'appear' class is\n * applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEnter: PropTypes.func,\n\n /**\n * A `` callback fired immediately after the 'enter-active' or\n * 'appear-active' class is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntering: PropTypes.func,\n\n /**\n * A `` callback fired immediately after the 'enter' or\n * 'appear' classes are **removed** and the `done` class is added to the DOM node.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntered: PropTypes.func,\n\n /**\n * A `` callback fired immediately after the 'exit' class is\n * applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed\n *\n * @type Function(node: HtmlElement)\n */\n onExit: PropTypes.func,\n\n /**\n * A `` callback fired immediately after the 'exit-active' is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed\n *\n * @type Function(node: HtmlElement)\n */\n onExiting: PropTypes.func,\n\n /**\n * A `` callback fired immediately after the 'exit' classes\n * are **removed** and the `exit-done` class is added to the DOM node.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed\n *\n * @type Function(node: HtmlElement)\n */\n onExited: PropTypes.func\n}) : {};\nexport default CSSTransition;","import hasClass from './hasClass';\nexport default function addClass(element, className) {\n if (element.classList) element.classList.add(className);else if (!hasClass(element, className)) if (typeof element.className === 'string') element.className = element.className + \" \" + className;else element.setAttribute('class', (element.className && element.className.baseVal || '') + \" \" + className);\n}","export default function hasClass(element, className) {\n if (element.classList) return !!className && element.classList.contains(className);\n return (\" \" + (element.className.baseVal || element.className) + \" \").indexOf(\" \" + className + \" \") !== -1;\n}","import React from 'react'\nimport CSSTransition from 'react-transition-group/CSSTransition';\n\n//styles\nimport s from \"./modal-video.module.scss\"\n\nexport default class ModalVideo extends React.Component {\n\n constructor(props) {\n super(props)\n this.state = {\n isOpen: false\n }\n this.closeModal = this.closeModal.bind(this)\n this.updateFocus = this.updateFocus.bind(this)\n }\n\n openModal() {\n this.setState({ isOpen: true })\n }\n\n closeModal() {\n this.setState({ isOpen: false })\n if (typeof this.props.onClose === 'function') {\n this.props.onClose();\n }\n }\n\n keydownHandler(e) {\n if (e.keyCode === 27) {\n this.closeModal();\n }\n }\n\n componentDidMount() {\n document.addEventListener('keydown', this.keydownHandler.bind(this));\n }\n\n componentWillUnmount() {\n document.removeEventListener('keydown', this.keydownHandler.bind(this));\n }\n\n static getDerivedStateFromProps(props) {\n return { isOpen: props.isOpen };\n }\n\n componentDidUpdate() {\n if (this.state.isOpen && this.modal) {\n this.modal.focus();\n }\n }\n\n updateFocus(e) {\n if (e.keyCode === 9) {\n e.preventDefault()\n e.stopPropagation()\n if (this.modal === document.activeElement) {\n this.modalbtn.focus()\n } else {\n this.modal.focus()\n }\n }\n }\n\n getQueryString(obj) {\n let url = ''\n for (var key in obj) {\n if (obj.hasOwnProperty(key)) {\n if (obj[key] !== null) {\n url += key + '=' + obj[key] + '&'\n }\n }\n }\n return url.substr(0, url.length - 1)\n }\n\n getYoutubeUrl(youtube, videoId) {\n const query = this.getQueryString(youtube)\n return '//www.youtube.com/embed/' + videoId + '?' + query\n }\n\n getVimeoUrl(vimeo, videoId) {\n const query = this.getQueryString(vimeo)\n return '//player.vimeo.com/video/' + videoId + '?' + query\n }\n\n getYoukuUrl(youku, videoId) {\n const query = this.getQueryString(youku)\n return '//player.youku.com/embed/' + videoId + '?' + query\n }\n\n getVideoUrl(opt, videoId) {\n if (opt.channel === 'youtube') {\n return this.getYoutubeUrl(opt.youtube, videoId)\n } else if (opt.channel === 'vimeo') {\n return this.getVimeoUrl(opt.vimeo, videoId)\n } else if (opt.channel === 'youku') {\n return this.getYoukuUrl(opt.youku, videoId)\n } else if (opt.channel === 'custom') {\n return opt.url;\n }\n }\n\n getPadding(ratio) {\n const arr = ratio.split(':')\n const width = Number(arr[0])\n const height = Number(arr[1])\n const padding = height * 100 / width\n return padding + '%'\n }\n\n render() {\n const style = {\n paddingBottom: this.getPadding(this.props.ratio)\n }\n\n return (\n \n {() => {\n if (!this.state.isOpen) {\n return null;\n }\n\n return (\n
{ this.modal = node; }} onKeyDown={this.updateFocus}>\n
\n
\n
\n