{"version":3,"sources":["../node_modules/react-modal-video/lib/index.js","assets/images/saas/home-shape.png","assets/images/home/rocket.svg","pages/Home/ScrollspyNav.js","pages/Home/Home.js"],"names":["Object","defineProperty","exports","value","_createClass","defineProperties","target","props","i","length","descriptor","enumerable","configurable","writable","key","Constructor","protoProps","staticProps","prototype","_react2","_interopRequireDefault","require","_CSSTransition2","obj","__esModule","default","ModalVideo","_React$Component","instance","TypeError","_classCallCheck","this","_this","self","call","ReferenceError","_possibleConstructorReturn","__proto__","getPrototypeOf","state","isOpen","closeModal","bind","updateFocus","subClass","superClass","create","constructor","setPrototypeOf","_inherits","setState","onClose","e","keyCode","document","addEventListener","keydownHandler","removeEventListener","modal","focus","preventDefault","stopPropagation","activeElement","modalbtn","url","hasOwnProperty","substr","youtube","videoId","getQueryString","vimeo","youku","opt","channel","getYoutubeUrl","getVimeoUrl","getYoukuUrl","ratio","arr","split","width","Number","_this2","style","paddingBottom","getPadding","createElement","classNames","modalVideoEffect","timeout","animationSpeed","className","modalVideo","tabIndex","role","aria","openMessage","onClick","ref","node","onKeyDown","modalVideoBody","modalVideoInner","modalVideoIframeWrap","modalVideoCloseBtn","dismissBtnMessage","height","src","getVideoUrl","frameBorder","allowFullScreen","Component","defaultProps","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","modalVideoClose","module","Home","openModal","Fragment","background","homeShape","backgroundPosition","id","Container","Row","Col","lg","md","href","rocket","alt"],"mappings":"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","file":"static/js/107.7d9ea81a.chunk.js","sourcesContent":["'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _CSSTransition = require('react-transition-group/CSSTransition');\n\nvar _CSSTransition2 = _interopRequireDefault(_CSSTransition);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar ModalVideo = function (_React$Component) {\n _inherits(ModalVideo, _React$Component);\n\n function ModalVideo(props) {\n _classCallCheck(this, ModalVideo);\n\n var _this = _possibleConstructorReturn(this, (ModalVideo.__proto__ || Object.getPrototypeOf(ModalVideo)).call(this, props));\n\n _this.state = {\n isOpen: false\n };\n _this.closeModal = _this.closeModal.bind(_this);\n _this.updateFocus = _this.updateFocus.bind(_this);\n return _this;\n }\n\n _createClass(ModalVideo, [{\n key: 'openModal',\n value: function openModal() {\n this.setState({ isOpen: true });\n }\n }, {\n key: 'closeModal',\n value: function closeModal() {\n this.setState({ isOpen: false });\n if (typeof this.props.onClose === 'function') {\n this.props.onClose();\n }\n }\n }, {\n key: 'keydownHandler',\n value: function keydownHandler(e) {\n if (e.keyCode === 27) {\n this.closeModal();\n }\n }\n }, {\n key: 'componentDidMount',\n value: function componentDidMount() {\n document.addEventListener('keydown', this.keydownHandler.bind(this));\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n document.removeEventListener('keydown', this.keydownHandler.bind(this));\n }\n }, {\n key: 'componentDidUpdate',\n value: function componentDidUpdate() {\n if (this.state.isOpen && this.modal) {\n this.modal.focus();\n }\n }\n }, {\n key: 'updateFocus',\n value: function 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 key: 'getQueryString',\n value: function getQueryString(obj) {\n var 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 key: 'getYoutubeUrl',\n value: function getYoutubeUrl(youtube, videoId) {\n var query = this.getQueryString(youtube);\n return '//www.youtube.com/embed/' + videoId + '?' + query;\n }\n }, {\n key: 'getVimeoUrl',\n value: function getVimeoUrl(vimeo, videoId) {\n var query = this.getQueryString(vimeo);\n return '//player.vimeo.com/video/' + videoId + '?' + query;\n }\n }, {\n key: 'getYoukuUrl',\n value: function getYoukuUrl(youku, videoId) {\n var query = this.getQueryString(youku);\n return '//player.youku.com/embed/' + videoId + '?' + query;\n }\n }, {\n key: 'getVideoUrl',\n value: function 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 }\n }\n }, {\n key: 'getPadding',\n value: function getPadding(ratio) {\n var arr = ratio.split(':');\n var width = Number(arr[0]);\n var height = Number(arr[1]);\n var padding = height * 100 / width;\n return padding + '%';\n }\n }, {\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n var style = {\n paddingBottom: this.getPadding(this.props.ratio)\n };\n\n return _react2.default.createElement(\n _CSSTransition2.default,\n {\n classNames: this.props.classNames.modalVideoEffect,\n timeout: this.props.animationSpeed\n },\n function () {\n if (!_this2.state.isOpen) {\n return null;\n }\n\n return _react2.default.createElement(\n 'div',\n { className: _this2.props.classNames.modalVideo, tabIndex: '-1', role: 'dialog',\n 'aria-label': _this2.props.aria.openMessage, onClick: _this2.closeModal, ref: function ref(node) {\n _this2.modal = node;\n }, onKeyDown: _this2.updateFocus },\n _react2.default.createElement(\n 'div',\n { className: _this2.props.classNames.modalVideoBody },\n _react2.default.createElement(\n 'div',\n { className: _this2.props.classNames.modalVideoInner },\n _react2.default.createElement(\n 'div',\n { className: _this2.props.classNames.modalVideoIframeWrap, style: style },\n _react2.default.createElement('button', { className: _this2.props.classNames.modalVideoCloseBtn, 'aria-label': _this2.props.aria.dismissBtnMessage, ref: function ref(node) {\n _this2.modalbtn = node;\n }, onKeyDown: _this2.updateFocus }),\n _react2.default.createElement('iframe', { width: '460', height: '230', src: _this2.getVideoUrl(_this2.props, _this2.props.videoId), frameBorder: '0', allowFullScreen: _this2.props.allowFullScreen, tabIndex: '-1' })\n )\n )\n )\n );\n }\n );\n }\n }], [{\n key: 'getDerivedStateFromProps',\n value: function getDerivedStateFromProps(props) {\n return { isOpen: props.isOpen };\n }\n }]);\n\n return ModalVideo;\n}(_react2.default.Component);\n\nexports.default = ModalVideo;\n\n\nModalVideo.defaultProps = {\n channel: 'youtube',\n isOpen: false,\n youtube: {\n autoplay: 1,\n cc_load_policy: 1,\n color: null,\n controls: 1,\n disablekb: 0,\n enablejsapi: 0,\n end: null,\n fs: 1,\n h1: null,\n iv_load_policy: 1,\n list: null,\n listType: null,\n loop: 0,\n modestbranding: null,\n origin: null,\n playlist: null,\n playsinline: null,\n rel: 0,\n showinfo: 1,\n start: 0,\n wmode: 'transparent',\n theme: 'dark'\n },\n ratio: '16:9',\n vimeo: {\n api: false,\n autopause: true,\n autoplay: true,\n byline: true,\n callback: null,\n color: null,\n height: null,\n loop: false,\n maxheight: null,\n maxwidth: null,\n player_id: null,\n portrait: true,\n title: true,\n width: null,\n xhtml: false\n },\n youku: {\n autoplay: 1,\n show_related: 0\n },\n allowFullScreen: true,\n animationSpeed: 300,\n classNames: {\n modalVideoEffect: 'modal-video-effect',\n modalVideo: 'modal-video',\n modalVideoClose: 'modal-video-close',\n modalVideoBody: 'modal-video-body',\n modalVideoInner: 'modal-video-inner',\n modalVideoIframeWrap: 'modal-video-movie-wrap',\n modalVideoCloseBtn: 'modal-video-close-btn'\n },\n aria: {\n openMessage: 'You just openned the modal video',\n dismissBtnMessage: 'Close the modal by clicking here'\n }\n};","module.exports = __webpack_public_path__ + \"static/media/home-shape.45b4533f.png\";","module.exports = __webpack_public_path__ + \"static/media/rocket.0c8d6aa7.svg\";","import React, { Component } from 'react';\r\n\r\nclass ScrollspyNav extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.props = props;\r\n this.scrollTargetIds = this.props.scrollTargetIds;\r\n this.activeNavClass = this.props.activeNavClass;\r\n this.scrollDuration = Number(this.props.scrollDuration) || 1000;\r\n this.headerBackground = this.props.headerBackground === \"true\" ? true : false;\r\n\r\n if (this.props.router && this.props.router === \"HashRouter\") {\r\n this.homeDefaultLink = \"#/\";\r\n this.hashIdentifier = \"#/#\";\r\n } else {\r\n this.homeDefaultLink = \"/\";\r\n this.hashIdentifier = \"#\";\r\n }\r\n }\r\n\r\n easeInOutQuad(current_time, start, change, duration) {\r\n current_time /= duration / 2;\r\n if (current_time < 1) return change / 2 * current_time * current_time + start;\r\n current_time--;\r\n return -change / 2 * (current_time * (current_time - 2) - 1) + start;\r\n };\r\n\r\n scrollTo(start, to, duration) {\r\n let change = to - start,\r\n currentTime = 0,\r\n increment = 10;\r\n\r\n let animateScroll = () => {\r\n currentTime += increment;\r\n let val = this.easeInOutQuad(currentTime, start, change, duration);\r\n window.scrollTo(0, val);\r\n if (currentTime < duration) {\r\n setTimeout(animateScroll, increment);\r\n }\r\n };\r\n animateScroll();\r\n }\r\n\r\n getNavLinkElement(sectionID) {\r\n return document.querySelector(`a[href='${this.hashIdentifier}${sectionID}']`);\r\n }\r\n\r\n getNavToSectionID(navHref) {\r\n return navHref.includes(this.hashIdentifier) ? navHref.replace(this.hashIdentifier, \"\") : \"\";\r\n }\r\n\r\n componentDidMount() {\r\n if (document.querySelector(`a[href='${this.homeDefaultLink}']`)) {\r\n document.querySelector(`a[href='${this.homeDefaultLink}']`).addEventListener(\"click\", (event) => {\r\n event.preventDefault();\r\n this.scrollTo(window.pageYOffset, 0, this.scrollDuration);\r\n window.location.hash = \"\";\r\n });\r\n }\r\n\r\n document.querySelector(\"div[data-nav='list']\").querySelectorAll(\"a\").forEach((navLink) => {\r\n navLink.addEventListener(\"click\", (event) => {\r\n event.preventDefault();\r\n let sectionID = this.getNavToSectionID(navLink.getAttribute(\"href\"));\r\n\r\n if (sectionID) {\r\n let scrollTargetPosition = document.getElementById(sectionID).offsetTop - (this.headerBackground ? document.querySelector(\"div[data-nav='list']\").scrollHeight : 0);\r\n this.scrollTo(window.pageYOffset, scrollTargetPosition, this.scrollDuration);\r\n } else {\r\n this.scrollTo(window.pageYOffset, 0, this.scrollDuration);\r\n }\r\n });\r\n })\r\n\r\n window.addEventListener(\"scroll\", () => {\r\n let scrollSectionOffsetTop;\r\n this.scrollTargetIds.forEach((sectionID, index) => {\r\n if(document.getElementById(sectionID)){\r\n scrollSectionOffsetTop = document.getElementById(sectionID).offsetTop - (this.headerBackground ? document.querySelector(\"div[data-nav='list']\").scrollHeight : 0);\r\n\r\n if (window.pageYOffset >= scrollSectionOffsetTop && window.pageYOffset < scrollSectionOffsetTop + document.getElementById(sectionID).scrollHeight) {\r\n this.getNavLinkElement(sectionID).classList.add(this.activeNavClass);\r\n this.getNavLinkElement(sectionID).parentNode.classList.add(this.activeNavClass);\r\n this.clearOtherNavLinkActiveStyle(sectionID)\r\n } else {\r\n this.getNavLinkElement(sectionID).classList.remove(this.activeNavClass);\r\n this.getNavLinkElement(sectionID).parentNode.classList.remove(this.activeNavClass);\r\n }\r\n\r\n if (window.innerHeight + window.pageYOffset >= document.body.scrollHeight && index === this.scrollTargetIds.length - 1) {\r\n this.getNavLinkElement(sectionID).classList.add(this.activeNavClass);\r\n this.getNavLinkElement(sectionID).parentNode.classList.add(this.activeNavClass);\r\n this.clearOtherNavLinkActiveStyle(sectionID);\r\n }\r\n }\r\n });\r\n });\r\n }\r\n\r\n clearOtherNavLinkActiveStyle(excludeSectionID) {\r\n this.scrollTargetIds.forEach((sectionID, index) => {\r\n if (sectionID !== excludeSectionID) {\r\n this.getNavLinkElement(sectionID).classList.remove(this.activeNavClass);\r\n this.getNavLinkElement(sectionID).parentNode.classList.remove(this.activeNavClass);\r\n }\r\n });\r\n }\r\n\r\n render() {\r\n return (\r\n
\r\n {this.props.children}\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default ScrollspyNav;","// React basic and bootstrap\r\nimport React, { Component } from 'react';\r\nimport Typist from 'react-typist';\r\nimport { Link } from 'react-router-dom';\r\nimport ScrollspyNav from './ScrollspyNav';\r\n\r\n// Modal Video \r\nimport ModalVideo from 'react-modal-video'\r\nimport '../../../node_modules/react-modal-video/scss/modal-video.scss';\r\n\r\n\r\n// Import Images \r\nimport rocket from '../../assets/images/home/rocket.svg';\r\nimport { Container, Row, Col, UncontrolledTooltip } from 'reactstrap';\r\n\r\n//Import Images\r\n\r\nimport homeShape from '../../assets/images/saas/home-shape.png';\r\n\r\nclass Home extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n isOpen: false\r\n }\r\n this.openModal = this.openModal.bind(this);\r\n } \r\n openModal() {\r\n this.setState({ isOpen: true })\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n\r\n
\r\n \r\n \r\n \r\n
\r\n

Welcome to

\r\n

Your New Pet HQ \r\n

\r\n
\r\n\t\t\t\t\t\t\t\t\tAward-winning software, PawsAdmin, powers your pet business. Easy, reliable, and affordable.
\r\n
\r\n Try it Free\r\n \r\n
\r\n {/**\r\n
\r\n \r\n \t\t\t\t\t\t \r\n Get it Free\r\n WATCH DEMO \r\n \r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n
\r\n */}\r\n
\r\n \r\n\r\n \r\n \"\"/\r\n \r\n
\r\n
\r\n\t\t\t\t\t this.setState({ isOpen: false })} />\r\n \r\n
\r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default Home;\r\n"],"sourceRoot":""}