{"version":3,"sources":["webpack://gatsby-starter-default/./node_modules/react-text-truncate/lib/index.js","webpack://gatsby-starter-default/./src/assets/images/reviews/programming1.png","webpack://gatsby-starter-default/./src/assets/images/reviews/programming2.png","webpack://gatsby-starter-default/./src/assets/images/reviews/programming3.png","webpack://gatsby-starter-default/./src/assets/images/reviews/programming4.png","webpack://gatsby-starter-default/./src/assets/images/reviews/chess1.png","webpack://gatsby-starter-default/./src/assets/images/reviews/chess2.png","webpack://gatsby-starter-default/./src/constants/reviews.ts","webpack://gatsby-starter-default/./src/containers/Modals/ReviewModal/index.tsx","webpack://gatsby-starter-default/./src/types/review.ts"],"names":["exports","_react","_propTypes","Object","defineProperty","value","default","undefined","_react2","_interopRequireDefault","_propTypes2","obj","__esModule","_typeof","Symbol","iterator","constructor","prototype","_objectWithoutProperties","source","excluded","key","i","target","_objectWithoutPropertiesLoose","getOwnPropertySymbols","sourceSymbolKeys","length","indexOf","propertyIsEnumerable","call","sourceKeys","keys","_classCallCheck","instance","Constructor","TypeError","_defineProperties","props","descriptor","enumerable","configurable","writable","_createClass","protoProps","staticProps","_possibleConstructorReturn","self","_assertThisInitialized","_getPrototypeOf","o","setPrototypeOf","getPrototypeOf","__proto__","ReferenceError","_inherits","subClass","superClass","create","_setPrototypeOf","p","_defineProperty","TextTruncate","_Component","_getPrototypeOf2","_this","this","_len","arguments","args","Array","_key","apply","concat","rafId","window","cancelAnimationFrame","requestAnimationFrame","update","bind","truncated","onToggled","setTimeout","onTruncated","onCalculated","style","getComputedStyle","scope","font","join","canvas","forceUpdate","document","createElement","docFragment","createDocumentFragment","appendChild","getContext","addEventListener","onResize","removeEventListener","text","Math","ceil","measureText","width","_this$props","line","containerClassName","element","textElement","textTruncateChild","truncateText","maxCalculateTimes","scopeWidth","getBoundingClientRect","measureWidth","childText","type","children","currentPos","maxTextLength","truncatedText","splitPos","startPos","displayLine","lastIsEng","isPrevLineWithoutSpace","lastPos","lastSpaceIndex","ext","loopCnt","substr","lastIndexOf","_this2","_this$props2","_this$props2$style","fontWeight","fontStyle","fontSize","fontFamily","renderText","getRenderText","rootProps","ref","el","className","overflow","Component","string","oneOfType","number","bool","func","node","module","reviews","courseId","CourseIds","name","social","SocialType","socialLink","photo","programming1Img","programming2Img","chess1Img","chess2Img","programming3Img","programming4Img","ReviewModal","isOpen","onClose","data","show","onHide","backdropClassName","centered","onClick","aria-label","aria-hidden","href","rel"],"mappings":"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","file":"830e3641b7865f211190e8dec6cd4265ea3e080c-cdf6dc10d435608fb25f.js","sourcesContent":["\"use strict\";\n\n(function (global, factory) {\n if (typeof define === \"function\" && define.amd) {\n define([\"exports\", \"react\", \"prop-types\"], factory);\n } else if (typeof exports !== \"undefined\") {\n factory(exports, require(\"react\"), require(\"prop-types\"));\n } else {\n var mod = {\n exports: {}\n };\n factory(mod.exports, global.React, global.propTypes);\n global.undefined = mod.exports;\n }\n})(void 0, function (exports, _react, _propTypes) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.default = undefined;\n\n var _react2 = _interopRequireDefault(_react);\n\n var _propTypes2 = _interopRequireDefault(_propTypes);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _typeof(obj) {\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n }\n\n function _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n\n var target = _objectWithoutPropertiesLoose(source, excluded);\n\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n }\n\n function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n }\n\n function _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return _assertThisInitialized(self);\n }\n\n function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n }\n\n function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n }\n\n function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n }\n\n function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n }\n\n var TextTruncate = function (_Component) {\n _inherits(TextTruncate, _Component);\n\n function TextTruncate() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, TextTruncate);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(TextTruncate)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_this), \"onResize\", function () {\n if (_this.rafId) {\n window.cancelAnimationFrame(_this.rafId);\n }\n\n _this.rafId = window.requestAnimationFrame(_this.update.bind(_assertThisInitialized(_this)));\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onToggled\", function (truncated) {\n typeof _this.props.onToggled === 'function' && setTimeout(function () {\n return _this.props.onToggled(truncated);\n }, 0);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onTruncated\", function () {\n typeof _this.props.onTruncated === 'function' && setTimeout(function () {\n return _this.props.onTruncated();\n }, 0);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onCalculated\", function () {\n typeof _this.props.onCalculated === 'function' && setTimeout(function () {\n return _this.props.onCalculated();\n }, 0);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"update\", function () {\n var style = window.getComputedStyle(_this.scope);\n var font = [style['font-weight'], style['font-style'], style['font-size'], style['font-family'], style['letter-spacing']].join(' ');\n _this.canvas.font = font;\n\n _this.forceUpdate();\n });\n\n return _this;\n }\n\n _createClass(TextTruncate, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n var canvas = document.createElement('canvas');\n var docFragment = document.createDocumentFragment();\n var style = window.getComputedStyle(this.scope);\n var font = [style['font-weight'], style['font-style'], style['font-size'], style['font-family']].join(' ');\n docFragment.appendChild(canvas);\n this.canvas = canvas.getContext('2d');\n this.canvas.font = font;\n this.forceUpdate();\n window.addEventListener('resize', this.onResize);\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n window.removeEventListener('resize', this.onResize);\n\n if (this.rafId) {\n window.cancelAnimationFrame(this.rafId);\n }\n }\n }, {\n key: \"measureWidth\",\n value: function measureWidth(text) {\n return Math.ceil(this.canvas.measureText(text).width);\n }\n }, {\n key: \"getRenderText\",\n value: function getRenderText() {\n var _this$props = this.props,\n containerClassName = _this$props.containerClassName,\n element = _this$props.element,\n line = _this$props.line,\n onCalculated = _this$props.onCalculated,\n onTruncated = _this$props.onTruncated,\n onToggled = _this$props.onToggled,\n text = _this$props.text,\n textElement = _this$props.textElement,\n textTruncateChild = _this$props.textTruncateChild,\n truncateText = _this$props.truncateText,\n maxCalculateTimes = _this$props.maxCalculateTimes,\n props = _objectWithoutProperties(_this$props, [\"containerClassName\", \"element\", \"line\", \"onCalculated\", \"onTruncated\", \"onToggled\", \"text\", \"textElement\", \"textTruncateChild\", \"truncateText\", \"maxCalculateTimes\"]);\n\n var scopeWidth = this.scope.getBoundingClientRect().width; // return if display:none\n\n if (scopeWidth === 0) {\n return null;\n } // return if all of text can be displayed\n\n\n if (scopeWidth >= this.measureWidth(text)) {\n this.onToggled(false);\n return (0, _react.createElement)(textElement, props, text);\n }\n\n var childText = '';\n\n if (textTruncateChild && typeof textTruncateChild.type === 'string') {\n var type = textTruncateChild.type;\n\n if (type.indexOf('span') >= 0 || type.indexOf('a') >= 0) {\n childText = textTruncateChild.props.children;\n }\n }\n\n var currentPos = 1;\n var maxTextLength = text.length;\n var truncatedText = '';\n var splitPos = 0;\n var startPos = 0;\n var displayLine = line;\n var width = 0;\n var lastIsEng = false;\n var isPrevLineWithoutSpace = false;\n var lastPos = 0;\n var lastSpaceIndex = -1;\n var ext = '';\n var loopCnt = 0;\n\n while (displayLine-- > 0) {\n ext = displayLine ? '' : truncateText + (childText ? ' ' + childText : '');\n\n while (currentPos <= maxTextLength) {\n truncatedText = text.substr(startPos, currentPos);\n width = this.measureWidth(truncatedText + ext);\n\n if (width < scopeWidth) {\n splitPos = text.indexOf(' ', currentPos + 1);\n\n if (splitPos === -1) {\n currentPos += 1;\n lastIsEng = false;\n } else {\n lastIsEng = true;\n currentPos = splitPos;\n }\n } else {\n do {\n if (loopCnt++ >= maxCalculateTimes) {\n break;\n }\n\n truncatedText = text.substr(startPos, currentPos);\n\n if (!displayLine) {\n currentPos--;\n }\n\n if (truncatedText[truncatedText.length - 1] === ' ') {\n truncatedText = text.substr(startPos, currentPos - 1);\n }\n\n if (lastIsEng) {\n lastSpaceIndex = truncatedText.lastIndexOf(' ');\n\n if (lastSpaceIndex > -1) {\n currentPos = lastSpaceIndex;\n\n if (displayLine) {\n currentPos++;\n }\n\n truncatedText = text.substr(startPos, currentPos);\n } else {\n currentPos--;\n truncatedText = text.substr(startPos, currentPos);\n }\n } else {\n currentPos--;\n truncatedText = text.substr(startPos, currentPos);\n }\n\n width = this.measureWidth(truncatedText + ext);\n } while (width >= scopeWidth && truncatedText.length > 0);\n\n startPos += currentPos;\n break;\n }\n }\n\n if (currentPos >= maxTextLength) {\n startPos = maxTextLength;\n break;\n }\n\n if (lastIsEng && !isPrevLineWithoutSpace && text.substr(lastPos, currentPos).indexOf(' ') === -1) {\n isPrevLineWithoutSpace = text.substr(lastPos, currentPos).indexOf(' ') === -1;\n displayLine--;\n }\n\n lastPos = currentPos + 1;\n }\n\n if (startPos === maxTextLength) {\n this.onToggled(false);\n return (0, _react.createElement)(textElement, props, text);\n }\n\n this.onTruncated();\n this.onToggled(true);\n return _react2[\"default\"].createElement(\"span\", props, (0, _react.createElement)(textElement, props, text.substr(0, startPos) + truncateText + ' '), textTruncateChild);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var _this$props2 = this.props,\n element = _this$props2.element,\n text = _this$props2.text,\n _this$props2$style = _this$props2.style,\n style = _this$props2$style === void 0 ? {} : _this$props2$style,\n containerClassName = _this$props2.containerClassName,\n line = _this$props2.line,\n onCalculated = _this$props2.onCalculated,\n onTruncated = _this$props2.onTruncated,\n onToggled = _this$props2.onToggled,\n textElement = _this$props2.textElement,\n textTruncateChild = _this$props2.textTruncateChild,\n truncateText = _this$props2.truncateText,\n maxCalculateTimes = _this$props2.maxCalculateTimes,\n props = _objectWithoutProperties(_this$props2, [\"element\", \"text\", \"style\", \"containerClassName\", \"line\", \"onCalculated\", \"onTruncated\", \"onToggled\", \"textElement\", \"textTruncateChild\", \"truncateText\", \"maxCalculateTimes\"]);\n\n var fontWeight = style.fontWeight,\n fontStyle = style.fontStyle,\n fontSize = style.fontSize,\n fontFamily = style.fontFamily;\n var renderText = this.scope && line ? this.getRenderText() : (0, _react.createElement)(textElement, props, text);\n ;\n var rootProps = {\n ref: function ref(el) {\n _this2.scope = el;\n },\n className: containerClassName,\n style: {\n overflow: 'hidden',\n fontWeight: fontWeight,\n fontStyle: fontStyle,\n fontSize: fontSize,\n fontFamily: fontFamily\n }\n };\n this.scope && this.onCalculated();\n return (0, _react.createElement)(element, rootProps, renderText);\n }\n }]);\n\n return TextTruncate;\n }(_react.Component);\n\n _defineProperty(TextTruncate, \"propTypes\", {\n containerClassName: _propTypes2[\"default\"].string,\n element: _propTypes2[\"default\"].string,\n line: _propTypes2[\"default\"].oneOfType([_propTypes2[\"default\"].number, _propTypes2[\"default\"].bool]),\n onCalculated: _propTypes2[\"default\"].func,\n onTruncated: _propTypes2[\"default\"].func,\n onToggled: _propTypes2[\"default\"].func,\n text: _propTypes2[\"default\"].string,\n textElement: _propTypes2[\"default\"].node,\n textTruncateChild: _propTypes2[\"default\"].node,\n truncateText: _propTypes2[\"default\"].string,\n maxCalculateTimes: _propTypes2[\"default\"].number\n });\n\n _defineProperty(TextTruncate, \"defaultProps\", {\n element: 'div',\n line: 1,\n text: '',\n textElement: 'span',\n truncateText: '…',\n maxCalculateTimes: 10\n });\n\n exports.default = TextTruncate;\n ;\n module.exports = exports.default;\n});","export default __webpack_public_path__ + \"static/programming1-a59efa45c343610b5e071b02f304c46e.png\";","export default __webpack_public_path__ + \"static/programming2-123baedbdd20af3b5de7540da00ac22b.png\";","export default __webpack_public_path__ + \"static/programming3-964e22ed5037872d73eaa207954b84ff.png\";","export default __webpack_public_path__ + \"static/programming4-ccf6b6321cb5ab065d13e7839676e7dd.png\";","export default __webpack_public_path__ + \"static/chess1-8e23fa301405046c2e7daacb455cf15b.png\";","export default __webpack_public_path__ + \"static/chess2-88c5f8248828e8d9bb709ff24e04976f.png\";","import { IReview, SocialType } from 'types/review';\nimport { CourseIds } from './courses';\nimport programming1Img from 'assets/images/reviews/programming1.png';\nimport programming2Img from 'assets/images/reviews/programming2.png';\nimport programming3Img from 'assets/images/reviews/programming3.png';\nimport programming4Img from 'assets/images/reviews/programming4.png';\nimport chess1Img from 'assets/images/reviews/chess1.png';\nimport chess2Img from 'assets/images/reviews/chess2.png';\n\nexport const reviews: IReview[] = [\n {\n courseId: CourseIds.PROGRAMMING,\n name: 'Елена',\n social: SocialType.FACEBOOK,\n socialLink: 'https://fb.me/elena.lavrentyeva.796',\n text: `Увидев рекламу на Файсбуке, решили попробовать что это - школа программирования для детей. Моему сыну 8 лет. Возраст не простой, много сомнений в себе. Мы занимаемся почти год. Ситуации были разные, но наш педагог терпеливо сумел найти подход и увлечь! В итоге , сынок с удовольствием занимается по два часа за занятие и мечтает стать программистом!`,\n photo: programming1Img,\n },\n {\n courseId: CourseIds.PROGRAMMING,\n name: 'Анастасия',\n social: SocialType.FACEBOOK,\n socialLink: 'https://fb.me/anastasia.melnik.144',\n text: `С первых дней Влад смог найти общий язык с моим сыном, я что более важное-заинтересовать его так,что у моего сына не возникает вопросов в стиле:\" почему я это должен сделать\", он ждёт каждое занятие с нетерпением, чтоб узнать какое новое задание ждёт его.`,\n photo: programming2Img,\n },\n {\n courseId: CourseIds.CHESS,\n name: 'Юлия',\n social: SocialType.INSTAGRAM,\n socialLink: 'https://instagram.com/khadasevichiuliia',\n text: `Здравствуйте!\\n\nНаш сын восьми лет начал заниматься шахматами по скайпу с нуля. Так как он новичок, необходимы ответы на многие вопросы и просто смотреть видео в YouTube и по ним заниматься совсем недостаточно. Ездить же в шахматный клуб сам он пока не может, возить же его не всегда получается из-за занятости нас взрослых. Нам предложили провести пробный урок. Он показал, что такая форма обучения ничуть не уступает занятиям в клубе, а даже имеет ряд преимуществ. Информация поступает в высокой концентрации без воды, учитель терпеливый, легко и интересно объясняет новую тему. Урок пролетает быстро и динамично в постоянном диалоге. А главное, сыну не надо никуда ехать, мы не зависим от погоды, выбираем удобное для нас время, занятия проходят в комфортной домашней обстановке! Спасибо за предоставление возможности такого обучения!\\n\nДовольны мы, и главное счастлив ребёнок! Он уже ставит перед собой высокие цели, а значит впереди большие победы!`,\n photo: chess1Img,\n },\n {\n courseId: CourseIds.CHESS,\n name: 'Надежда',\n social: SocialType.INSTAGRAM,\n socialLink: 'https://instagram.com/zagorskaianadezhda',\n text: `В современном ритме, жизни занятия которые проходят online - это просто спасение для занятых родителей!!! Ещё в начале учебного года моя дочь ОЧЕНЬ хотела заниматься шахматами, но то расписание, которое ей предлагали в различных шахмытных школах, нам совсем никак не подошло. Дочь конечно расстроилась, но согласилась подождать и начать заниматься через год. Меня же постоянно мучила совесть, что ребенок посещает навязанные мной занятия и не может заниматься тем, чем ей самой очень хочется.\\n\nИ вот, однажды, в Инстаграмме я наткнулась на эту школу! Позвонила и записалась на пробное занятие. После пробного занятия у моей дочери просто горели глаза, я поняла, что это как раз то, что мне надо.\nДля себя я нашла в этой ситуации много плюсов:\n1. Экономия своего времени, никуда не надо ехать, во время занятия ребенка я занимаюсь своими делами.\n2. Так как ехать никуда не надо - это ещё и экономия денег на топливо/такси/автобус.\n3. Занятия индивуальные, поэтому если не получается заниматься по расписанию, то по согласованию, занятие можно перенести, и периодичность занятий можно выбрать любую.\n4. Я всегда могу проследить за ходом занятий своего ребенка и вижу насколько она понимает изучаемый материал.\n5. Моей дочери досталась хорошая преподаватель - Каролина, дочке интересно с ней заниматься. Каролина нашла подход к моему ребенку, что тоже очень важно в процессе обучения!!!\nP.S. Занятия в данной школе для меня просто спасение: ребенок занят обучением, а я в это время свободна.\nИСКРЕННЕ РЕКОМЕНДУЮ ВСЕМ`,\n photo: chess2Img,\n },\n {\n courseId: CourseIds.PROGRAMMING,\n name: 'Ольга',\n social: SocialType.FACEBOOK,\n socialLink: 'https://fb.me/otroyans',\n text: `Владислав потрясающий преподаватель! Он не только знает программирование, но и понимает как объяснить даже самые сложные концепции детям. Он их поддерживает и направляет. Мой 9-ти летка который начинал с нуля, за несколько месяцев дошел до уровня программирования серьёзных игр в Скратч, и готовится питону. Как программист, я вижу что он понимает что делает, а как мама, я главное очень радуюсь что он обожает программировать. Занятия с Владиславом, это единственный класс из которого домашняя работа предпочитается моим ребенком игре и даже фильмам!`,\n photo: programming3Img,\n },\n {\n courseId: CourseIds.PROGRAMMING,\n name: 'Jane',\n social: SocialType.FACEBOOK,\n socialLink: 'https://fb.me/jane.loktionova',\n text: `Лерка начала заниматься Scratch в 6 лет. Когда малышка пробовала первые занятия, у нас не было больших ожиданий, т.к. она никогда не интересовалась математикой, однако занятия по скайпу оказались просто бомбой! Ребенок с большим нетерпением ждет каждый вечер пятницы, чтобы встретиться со своим учителем и продолжить проект или начать что-нибудь новенькое.\nХочу сказать большое спасибо преподавателям и всем, участвующим в деятельности школы, за терпение и организацию. Все-таки работа с детьми, да еще и удаленно - это очень сложный процесс. За долгое время обучения мой ребенок ни разу не сказал “Я не хочу сегодня заниматься!” А это очень о многом говорит!\nОтдельно хочу отметить то, что мой ребенок говорит на русском с некоторыми ограничениями, вперемешку с иностранным языком, т.к. мы живем в Канаде, но это никогда не было проблемой, потому что наш учитель хорошо говорит и понимает на английском. Между Леркой и преподавателем никогда не было недопониманий.\nJane`,\n photo: programming4Img,\n },\n];\n","import React from 'react';\nimport Modal from 'react-bootstrap/Modal';\nimport { IReview } from 'types/review';\nimport './styles.scss';\n\ninterface IProps {\n isOpen: boolean;\n onClose: () => void;\n data: IReview;\n}\n\nexport const ReviewModal = ({ isOpen, onClose, data }: IProps) => {\n return (\n \n \n \n {data.name}\n \n {data.socialLink}\n \n
{data.text}
\n
\n \n );\n};\n","import { CourseIds } from 'constants/courses';\n\nexport enum SocialType {\n INSTAGRAM = 'instagram',\n FACEBOOK = 'facebook',\n}\n\nexport interface IReview {\n courseId: CourseIds;\n name: string;\n text: string;\n social: SocialType;\n socialLink?: string;\n socialTag?: string;\n photo: string;\n}\n"],"sourceRoot":""}