{"version":3,"sources":["assets/img/portfolio/img1.jpg","assets/img/portfolio/img2.jpg","assets/img/portfolio/img3.jpg","assets/img/portfolio/img4.jpg","assets/img/portfolio/img5.jpg","assets/img/portfolio/img6.jpg","assets/img/loader.svg","assets/img/up-arrow-button-svgrepo-com.svg","store/Album.ts","store/index.ts","lib/constInfo.tsx","components/views/NavMenu.tsx","components/views/Layout.tsx","components/views/HeroArea.tsx","store/AlbumTag.ts","components/views/ServicesDescription.tsx","lib/gridify.ts","components/LightBoxWrapper.tsx","components/Album.tsx","components/views/Portfolio.tsx","components/views/Contacts.tsx","components/views/About.tsx","components/views/Home.tsx","components/views/SiteAlbum.tsx","App.tsx","registerServiceWorker.ts","index.tsx","store/configureStore.ts","assets/img/house.png","assets/img/furniture.png","assets/img/window1.png","assets/img/ceil.png","assets/img/laminat.png","assets/img/door.png","assets/img/malyar.png"],"names":["module","exports","unloadedState","postImageJson","isLoading","reducers","album","state","incomingAction","undefined","action","type","page","CompanyName","className","icon","faTools","NavMenu","props","sections","id","Icons","value","isOpen","this","setState","toggler","toggleMenu","bind","role","onClick","href","map","section","index","key","React","Layout","children","HeroArea","src","require","alt","AlbumTagController","_albumTags","_hashTable","tags","tag","i","tagId","ServicesDescription","_tags","localStorage","setItem","to","storeAlbumLink","albumTags","style","padding","Component","gridify","container","optionsInput","$this","options","indexOfSmallest","a","lowest","length","render","css","items","find","srcNode","transition","width","innerWidth","item_margin","parseInt","margin","item_width","max_width","column_count","Math","max","floor","left","columns","ceil","push","$item","$","idx","position","top","innerHeight","conatiner","cb","images","count","image","Image","onload","onerror","e","imagesLoaded","resizable","resize","window","on","unbind","LightboxWrapper","scrollPosition","pageXOffset","document","documentElement","scrollLeft","body","pageYOffset","scrollTop","html","data","scrollTo","Fragment","mainSrc","nextSrc","prevSrc","onCloseRequest","show","unlockScroll","reactModalStyle","content","imagePadding","wrapperClassName","onMovePrevRequest","onMoveNextRequest","hide","lockScroll","delay","ms","Promise","resolve","setTimeout","Album","_options","onGridify","lightBoxes","containerId","data-wow-delay","Portfolio","setRedirect","redirect","renderRedirect","textAlign","Contacts","_emptyState","email","name","message","phoneNumber","subject","toArray","forEach","element","val","preventDefault","isHoney","axios","post","origin","then","response","catch","reject","console","log","method","onSubmit","submit","placeholder","onChange","currentTarget","rows","color","About","Home","data-spy","data-offset","data-target","connect","PostImageJson","jsonProperty","Number","Array","Boolean","String","Serializable","AlbumPageController","offset","_currentAlbum","_currentAlbumPage","_handleScrollFunc","handleWindowScroll","_offset","_onScrollAction","storedTag","getItem","scrollHeight","clientHeight","scrollWindowEvent","isListening","addEventListener","removeEventListener","albumId","getTagByAlbumId","SiteAlbum","_albumPages","json","isTopBtn","addScrollAction","ensureDataFetched","event","scrollY","onScroll","activateButton","currentTag","get","parsed","fromJSON","jsonArray","concat","getImages","has_page_next","removeClass","addClass","reset","scroll","behavior","loadAlbum","tagName","renderTagsButtons","scrollToTop","WOW","App","wow","init","sync","exact","path","component","isLocalhost","location","hostname","match","registerValidSW","swUrl","navigator","serviceWorker","register","registration","onupdatefound","installingWorker","installing","onstatechange","controller","error","baseUrl","getElementsByTagName","getAttribute","history","createBrowserHistory","basename","store","initialState","middleware","thunk","routerMiddleware","rootReducer","combineReducers","router","connectRouter","enhancers","windowIfDefined","__REDUX_DEVTOOLS_EXTENSION__","createStore","compose","applyMiddleware","configureStore","ReactDOM","getElementById","URL","process","toString","fetch","contentType","headers","status","indexOf","ready","unregister","reload","checkValidServiceWorker","registerServiceWorker"],"mappings":"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","file":"static/js/main.b6986904.chunk.js","sourcesContent":["module.exports = __webpack_public_path__ + \"static/media/img1.f5bd5e7a.jpg\";","module.exports = __webpack_public_path__ + \"static/media/img2.ef25feff.jpg\";","module.exports = __webpack_public_path__ + \"static/media/img3.9e0cba60.jpg\";","module.exports = __webpack_public_path__ + \"static/media/img4.ef5d1257.jpg\";","module.exports = __webpack_public_path__ + \"static/media/img5.5e695039.jpg\";","module.exports = __webpack_public_path__ + \"static/media/img6.7f7ca3a2.jpg\";","module.exports = __webpack_public_path__ + \"static/media/loader.42102c94.svg\";","module.exports = __webpack_public_path__ + \"static/media/up-arrow-button-svgrepo-com.f2c9e009.svg\";","import { Action, Reducer } from 'redux';\r\nimport { AppThunkAction } from './';\r\n\r\nexport interface AlbumState {\r\n album?: string;\r\n page?: number;\r\n isLoading: boolean;\r\n postImageJson: string;\r\n}\r\n\r\ninterface RequestPhotoesAction {\r\n type: 'REQUEST_PHOTOES';\r\n page: number;\r\n album: string;\r\n}\r\n\r\ninterface ReceivePhotoesAction {\r\n type: 'RECEIVE_PHOTOES';\r\n page: number;\r\n album: string;\r\n postImageJson: string;\r\n}\r\n\r\ntype AlbumActions = RequestPhotoesAction | ReceivePhotoesAction;\r\n\r\nexport const actionCreators = {\r\n requestAlbum: (album: string, page: number): AppThunkAction => (dispatch, getState) => {\r\n // Only load data if it's something we don't already have (and are not already loading)\r\n const appState = getState();\r\n if (appState && appState.album && page !== appState.album.page) {\r\n fetch(`album`)\r\n .then(response =>\r\n response.json() as Promise)\r\n .then(data => {\r\n dispatch({ type: 'RECEIVE_PHOTOES', page: page, album: album, postImageJson: data });\r\n });\r\n\r\n dispatch({ type: 'REQUEST_PHOTOES', page: page, album: album });\r\n }\r\n }\r\n};\r\n\r\nconst unloadedState: AlbumState = { postImageJson: \"\", isLoading: false };\r\n\r\nexport const reducer: Reducer = (state: AlbumState | undefined, incomingAction: Action): AlbumState => {\r\n if (state === undefined)\r\n return unloadedState;\r\n\r\n const action = incomingAction as AlbumActions;\r\n switch (action.type) {\r\n case 'REQUEST_PHOTOES':\r\n return {\r\n page: action.page,\r\n album: action.album,\r\n postImageJson: state.postImageJson,\r\n isLoading: true\r\n };\r\n case 'RECEIVE_PHOTOES':\r\n // Only accept the incoming data if it matches the most recent request. This ensures we correctly\r\n // handle out-of-order responses.\r\n if (action.page === state.page)\r\n return {\r\n page: action.page,\r\n album: action.album,\r\n postImageJson: action.postImageJson,\r\n isLoading: false\r\n };\r\n break;\r\n }\r\n\r\n return state;\r\n};","import * as Album from './Album';\r\n\r\n// The top-level state object\r\nexport interface ApplicationState {\r\n album: Album.AlbumState;\r\n}\r\n\r\n// Whenever an action is dispatched, Redux will update each top-level application state property using\r\n// the reducer with the matching name. It's important that the names match exactly, and that the reducer\r\n// acts on the corresponding ApplicationState property type.\r\nexport const reducers = {\r\n album: Album.reducer\r\n};\r\n\r\n// This type can be used as a hint on action creators so that its 'dispatch' and 'getState' params are\r\n// correctly typed to match your store.\r\nexport interface AppThunkAction {\r\n (dispatch: (action: TAction) => void, getState: () => ApplicationState): void;\r\n}\r\n\r\n","import * as React from 'react';\r\nimport { faTools } from \"@fortawesome/free-solid-svg-icons\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\n\r\nexport const CompanyName = () =>\r\n (
Орёл57 {} Ремонт
);","import * as React from 'react';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { CompanyName } from '../../lib/constInfo';\r\nimport { ISectionInfo } from '../../lib/Section';\r\nimport * as Icons from '@fortawesome/free-solid-svg-icons';\r\n\r\nexport interface NavMenuProps {\r\n id: string;\r\n}\r\n\r\nexport interface NavMenuState {\r\n isOpen: boolean;\r\n}\r\n\r\nexport default class NavMenu extends React.Component {\r\n\r\n private readonly sections: ISectionInfo[] = [{ id: \"hero-area\", icon: Icons.faHome, value: \"Главная\" },\r\n { id: \"services\", icon: Icons.faCogs, value: \"Услуги\" },\r\n { id: \"portfolio\", icon: Icons.faImage, value: \"Фото\" },\r\n { id: \"about\", icon: Icons.faInfo, value: \"О нас\" },\r\n { id: \"contacts\", icon: Icons.faEnvelope, value: \"Контакты\" }\r\n ];\r\n\r\n public constructor(props: NavMenuProps) {\r\n super(props);\r\n this.state = {\r\n isOpen: false\r\n };\r\n }\r\n\r\n public componentDidMount() {\r\n this.setState({ isOpen: false });\r\n }\r\n\r\n private toggleMenu() {\r\n this.setState({ isOpen: !this.state.isOpen });\r\n }\r\n\r\n public render() {\r\n const toggler = this.toggleMenu.bind(this);\r\n return (\r\n
\r\n \r\n
\r\n );\r\n }\r\n\r\n\r\n}\r\n","import * as React from 'react';\r\nimport NavMenu from './NavMenu';\r\n\r\nclass Layout extends React.Component<{ children?: React.ReactNode }> {\r\n\r\n public constructor(props: { children?: React.ReactNode }) {\r\n super(props);\r\n }\r\n\r\n public render() {\r\n return (\r\n \r\n \r\n {this.props.children}\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default Layout;\r\n","import * as React from 'react';\r\nimport { CompanyName } from '../../lib/constInfo';\r\nimport { ISectionInfo } from '../../lib/Section';\r\n\r\n\r\nclass HeroArea extends React.Component {\r\n public render() {\r\n return (\r\n
\r\n
\r\n
\r\n
\r\n

\r\n

Ремонт жилых и нежилых помещений

\r\n\r\n \"\"\r\n\r\n
\r\n

\r\n Мы занимаемся множеством видов ремонтных работ, например:
\r\n • Установка окон и конструкций ПВХ
\r\n • Монтаж натяжных потолков
\r\n • Изготовление корпусной мебели и т.д.
\r\n

\r\n
\r\n
\r\n
\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default HeroArea;","import * as tags from \"../album-tags.json\";\r\n\r\nexport interface IAlbumTag {\r\n tagName: string;\r\n tagId: string;\r\n album: string;\r\n}\r\n\r\ninterface HashTable {\r\n [key: string]: T;\r\n}\r\n\r\nexport default class AlbumTagController {\r\n private _albumTags: IAlbumTag[];\r\n private _hashTable: HashTable;\r\n public constructor() {\r\n this._albumTags = tags.tags as IAlbumTag[];\r\n this._hashTable = {};\r\n this._albumTags.map((tag, i) => {\r\n this._hashTable[tag.album] = tag.tagId;\r\n });\r\n }\r\n\r\n public getTagByAlbumId(id: string) {\r\n return this._hashTable[id];\r\n }\r\n\r\n public get albumTags(): IAlbumTag[] {\r\n return this._albumTags;\r\n }\r\n}","import React from 'react';\r\nimport { Link } from 'react-router-dom';\r\nimport { ISectionInfo } from '../../lib/Section';\r\nimport AlbumTagController, { IAlbumTag } from '../../store/AlbumTag';\r\n\r\nclass ServicesDescription extends React.Component {\r\n\r\n private _tags: AlbumTagController;\r\n\r\n public constructor(props: {}) {\r\n super(props);\r\n this._tags = new AlbumTagController();\r\n }\r\n\r\n private storeAlbumLink(tag: IAlbumTag) {\r\n localStorage.setItem('albumTag', tag.album);\r\n }\r\n\r\n public render() {\r\n return (\r\n
\r\n
\r\n
\r\n

Чем мы занимаемся

\r\n

Основные виды работ

\r\n\r\n
\r\n
\r\n \r\n \"\"\r\n \r\n

Изготовление мебели

\r\n

Изготовление, сборка и монтаж мебели

\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n \"\"\r\n \r\n

Установка ПВХ окон

\r\n

Установка ПВХ окон, дверей и конкструкций

\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n \"\"\r\n \r\n

Натяжные потолки

\r\n

Монтаж многоуровневых натяжных потолков, фотопечать

\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n \r\n \"\"\r\n \r\n

Напольные покрытия

\r\n

Монтаж стяжки и напольных покрытий

\r\n
\r\n
\r\n
\r\n
\r\n \r\n \"\"\r\n \r\n

Установка дверей

\r\n

Установка межкомнатных дверей и дверей сейфов

\r\n
\r\n
\r\n
\r\n
\r\n \r\n \"\"\r\n \r\n

Штукатурно-малярные работы

\r\n

Штукатурка, шпатлевка, обои, потолочный плинтус

\r\n
\r\n
\r\n
\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default ServicesDescription;","import $ from 'jquery';\r\n\r\nconst imagesLoaded = function (conatiner: any, cb: any) {\r\n let images = conatiner.find(\"img\");\r\n let count = images.length;\r\n if (count == 0) cb();\r\n for (let i = 0, length = images.length; i < length; i++) {\r\n let image = new Image();\r\n image.onload = image.onerror = function (e) {\r\n count--;\r\n if (count == 0) cb();\r\n };\r\n image.src = images[i].src;\r\n }\r\n};\r\n// tslint:disable:variable-name\r\nexport function gridify(container: any, optionsInput: any) {\r\n let $this = container,\r\n options = optionsInput || {},\r\n indexOfSmallest = function (a: any) {\r\n let lowest = 0;\r\n for (let i = 1, length = a.length; i < length; i++) {\r\n if (a[i] < a[lowest]) lowest = i;\r\n }\r\n return lowest;\r\n },\r\n render = function () {\r\n $this.css('position', 'relative');\r\n let items = $this.find(options.srcNode),\r\n transition = (options.transition || 'all 0.5s ease') + ', height 0, width 0',\r\n width = $this.innerWidth(),\r\n item_margin = parseInt(options.margin || 0),\r\n item_width = parseInt(options.max_width || options.width || 220),\r\n column_count = Math.max(Math.floor(width! / (item_width + item_margin)), 1),\r\n left = column_count == 1 ? item_margin / 2 : (width! % (item_width + item_margin)) / 2,\r\n columns = [];\r\n\r\n if (options.max_width) {\r\n column_count = Math.ceil(width! / (item_width + item_margin));\r\n item_width = (width! - column_count * item_margin - item_margin) / column_count;\r\n left = item_margin / 2;\r\n }\r\n\r\n for (let i = 0; i < column_count; i++) {\r\n columns.push(0);\r\n }\r\n\r\n for (let i = 0, length = items.length; i < length; i++) {\r\n let $item = $(items[i]),\r\n idx = indexOfSmallest(columns);\r\n $item.css({\r\n width: item_width,\r\n position: 'absolute',\r\n margin: item_margin / 2,\r\n top: columns[idx] + item_margin / 2,\r\n left: (item_width + item_margin) * idx + left,\r\n transition: transition\r\n });\r\n columns[idx] += $item.innerHeight()! + item_margin;\r\n }\r\n };\r\n\r\n imagesLoaded(container, render);\r\n if (options.resizable) {\r\n let resize = $(window).bind(\"resize\", render);\r\n $this.on('remove', resize.unbind);\r\n }\r\n}","import React from 'react';\r\nimport Lightbox from 'react-image-lightbox';\r\nimport $ from 'jquery';\r\n\r\ntype LightboxWrapperProps = {\r\n index: number;\r\n images: Array;\r\n};\r\n\r\ninterface ILightboxWrapperState {\r\n isOpen: boolean;\r\n index: number;\r\n}\r\n\r\nexport class LightboxWrapper extends React.Component {\r\n public constructor(props: LightboxWrapperProps) {\r\n super(props);\r\n this.state = {\r\n isOpen: false,\r\n index: this.props.index\r\n };\r\n }\r\n\r\n private lockScroll(): void {\r\n let scrollPosition = [\r\n window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft,\r\n window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop\r\n ];\r\n let html = $('html'); // it would make more sense to apply this to body, but IE7 won't have that\r\n html.data('scroll-position', scrollPosition);\r\n html.data('previous-overflow', html.css('overflow'));\r\n html.css('overflow', 'hidden');\r\n window.scrollTo(scrollPosition[0], scrollPosition[1]);\r\n }\r\n\r\n private unlockScroll(): void {\r\n let html = $('html');\r\n let scrollPosition = html.data('scroll-position');\r\n html.css('overflow', html.data('previous-overflow'));\r\n window.scrollTo(scrollPosition[0], scrollPosition[1]);\r\n }\r\n\r\n public render() {\r\n return (\r\n \r\n \"\"\r\n {this.state.isOpen && (\r\n {\r\n $('.logo-menu').show();\r\n this.unlockScroll();\r\n this.setState({ isOpen: false });\r\n }}\r\n reactModalStyle={{ content: { margin: '0px' } }}\r\n imagePadding={20}\r\n wrapperClassName={\"lightbox-image-container\"}\r\n onMovePrevRequest={() =>\r\n this.setState({\r\n index: (this.state.index + this.props.images.length - 1) % this.props.images.length,\r\n })\r\n }\r\n onMoveNextRequest={() =>\r\n this.setState({\r\n index: (this.state.index + 1) % this.props.images.length,\r\n })\r\n } />)\r\n }\r\n \r\n \r\n );\r\n }\r\n}","import * as React from 'react';\r\nimport { gridify } from '../lib/gridify';\r\nimport { LightboxWrapper } from './LightBoxWrapper';\r\nimport $ from 'jquery';\r\n\r\nfunction delay(ms: number) {\r\n return new Promise(resolve => setTimeout(resolve, ms));\r\n}\r\n\r\nexport interface IAlbumProps {\r\n images: Array;\r\n containerId?: string;\r\n wrapperClassName?: string;\r\n}\r\n\r\nexport interface IAlbumState {\r\n index: number;\r\n}\r\n\r\nclass Album extends React.Component {\r\n\r\n private _options = {\r\n srcNode: '.portfolio-item', // grid items (class, node)\r\n margin: '20px', // margin in pixel, default: 0px\r\n width: '250px', // grid item width in pixel, default: 220px\r\n max_width: '350px', // dynamic gird item width if specified, (pixel)\r\n resizable: true, // re-layout if window resize\r\n transition: 'all 0.5s ease' // support transition for CSS3, default: all 0.5s ease\r\n };\r\n\r\n public constructor(props: IAlbumProps) {\r\n super(props);\r\n }\r\n\r\n public componentDidUpdate() {\r\n this.onGridify();\r\n }\r\n\r\n public componentDidMount() {\r\n this.onGridify();\r\n }\r\n\r\n private async onGridify() {\r\n gridify($(\"#portfolioItems\"), this._options);\r\n await delay(200); //resize bug here\r\n $('.portfolio-item').css('visibility', 'visible');\r\n }\r\n\r\n public render() {\r\n\r\n const lightBoxes: Array = [];\r\n for (let i = 0; i < this.props.images.length; i++)\r\n lightBoxes.push();\r\n\r\n return (\r\n
\r\n {lightBoxes.map((value, index) => {\r\n return
\r\n
\r\n {value}\r\n
\r\n
;\r\n })}\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default Album;","import React from 'react';\r\nimport { Redirect } from 'react-router-dom';\r\nimport Album from '../Album';\r\nimport { ISectionInfo } from '../../lib/Section';\r\n\r\n\r\nexport interface IPortfolioState {\r\n redirect: boolean;\r\n}\r\n\r\nclass Portfolio extends React.Component<{}, IPortfolioState> {\r\n\r\n private redirectToAlbum() {\r\n return ;\r\n }\r\n\r\n public constructor(props: {}) {\r\n super(props);\r\n this.state = {\r\n redirect: false\r\n };\r\n }\r\n\r\n private setRedirect = () => {\r\n this.setState({\r\n redirect: true\r\n });\r\n }\r\n private renderRedirect = () => {\r\n if (this.state.redirect)\r\n return ;\r\n }\r\n\r\n public render() {\r\n return (\r\n
\r\n
\r\n
\r\n

Альбом

\r\n

Фотографии с наших объектов

\r\n\r\n
\r\n\r\n \r\n {this.renderRedirect()}\r\n Показать все\r\n
\r\n
\r\n\r\n
\r\n\r\n
);\r\n }\r\n}\r\n\r\nexport default Portfolio;","import * as React from 'react';\r\nimport axios from 'axios';\r\nimport $ from 'jquery';\r\nimport { ISectionInfo } from '../../lib/Section';\r\n\r\ninterface ContactState {\r\n name: string;\r\n email: string;\r\n subject: string;\r\n message: string;\r\n phoneNumber: string;\r\n}\r\n\r\nclass Contacts extends React.Component<{}, ContactState> {\r\n\r\n private readonly _emptyState: ContactState;\r\n\r\n public constructor(props: {}) {\r\n super(props);\r\n this._emptyState = {\r\n email: \"\",\r\n name: \"\",\r\n message: \"\",\r\n phoneNumber: \"\",\r\n subject: \"\"\r\n };\r\n this.state = this._emptyState;\r\n }\r\n\r\n private isHoney(): boolean {\r\n $(\".honey input\").toArray().forEach(element => {\r\n if ($(element).val() !== \"\") return true;\r\n });\r\n return false;\r\n }\r\n\r\n private submit(e: React.FormEvent) {\r\n e.preventDefault();\r\n if (this.isHoney()) return;\r\n axios.post(`${window.origin}/email`, this.state).then((response) => {\r\n this.setState(this._emptyState);\r\n }).catch((reject) => console.log(reject));\r\n }\r\n\r\n public render() {\r\n return (\r\n
\r\n
\r\n
\r\n

Свяжитесь с нами

\r\n\r\n

Опишите Вашу проблему

\r\n\r\n
\r\n
\r\n
\r\n
\r\n this.setState({ name: e.currentTarget.value })} />\r\n
\r\n
\r\n
\r\n
\r\n this.setState({ email: e.currentTarget.value })} />\r\n
\r\n
\r\n
\r\n
\r\n this.setState({ phoneNumber: e.currentTarget.value })} />\r\n
\r\n
\r\n
\r\n
\r\n this.setState({ subject: e.currentTarget.value })} />\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n {/* honey-pot */}\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n\r\n
\r\n
\r\n\r\n
\r\n
\r\n\r\n\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default Contacts;","import React from 'react';\r\nimport { ISectionInfo } from '../../lib/Section';\r\n\r\nclass About extends React.Component {\r\n public render() {\r\n return (\r\n
\r\n
\r\n
\r\n

Немного о нас

\r\n

Виды работ

\r\n\r\n
\r\n

\r\n Мы выполняем множество видов строительно-ремонтных работ. Начиная от ремонта квартир и домов, заканчивая малоэтажным строительством с нуля под ключ!\r\n Имеем 20-ти летний опыт работы в данной сфере услуг и большое количество довольных клиентов.\r\n

\r\n
\r\n\r\n
\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default About;","import * as React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport HeroArea from './HeroArea';\r\nimport ServicesDescription from './ServicesDescription';\r\nimport Portfolio from './Portfolio';\r\nimport Contacts from './Contacts';\r\nimport About from './About';\r\nimport { FirstPageSections } from '../../lib/Section';\r\n\r\nclass Home extends React.Component {\r\n public render() {\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n

Кирюхин Сергей Владимирович

\r\n

Номер телефона: +7-910-747-06-38

\r\n
\r\n
\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default connect()(Home);\r\n","import React from 'react';\r\nimport Album from '../Album';\r\nimport axios from 'axios';\r\nimport { jsonProperty, Serializable } from 'ts-serializable';\r\nimport AlbumTagController from '../../store/AlbumTag';\r\nimport { IAlbumTag } from '../../store/AlbumTag';\r\nimport $ from 'jquery';\r\n\r\n// tslint:disable:variable-name\r\nexport class PostImageJson extends Serializable {\r\n @jsonProperty(Number)\r\n public status_code: string = \"\";\r\n @jsonProperty(Array)\r\n public images: Array> = [];\r\n @jsonProperty(Boolean)\r\n public has_page_next: boolean = false;\r\n @jsonProperty(String)\r\n public status_txt: string = \"\";\r\n\r\n public getImages(): string[] {\r\n return this.images.map((value, index) => 'https://i.postimg.cc/' + `${value[1]}/${value[2]}.${value[3]}`);\r\n }\r\n}\r\n\r\nclass AlbumPageController {\r\n private _currentAlbum: string;\r\n private _currentAlbumPage: number;\r\n private _albumTags: AlbumTagController;\r\n private _handleScrollFunc = this.handleWindowScroll.bind(this);\r\n private _offset: number;\r\n private _onScrollAction: Function;\r\n\r\n public constructor(offset: number) {\r\n this._offset = offset;\r\n this._albumTags = new AlbumTagController();\r\n this._currentAlbumPage = 1;\r\n let storedTag = localStorage.getItem('albumTag');\r\n this._onScrollAction = () => { };\r\n if (storedTag != '' && storedTag != undefined && storedTag != null)\r\n this._currentAlbum = storedTag;\r\n else this._currentAlbum = this._albumTags.albumTags[0].album;\r\n }\r\n\r\n public addScrollAction(action: Function) {\r\n this._onScrollAction = action;\r\n }\r\n\r\n private handleWindowScroll() {\r\n if (window.pageYOffset >= document.body.scrollHeight\r\n - document.documentElement.clientHeight\r\n - this._offset) {\r\n this.scrollWindowEvent(false);\r\n this._currentAlbumPage++;\r\n this._onScrollAction();\r\n }\r\n }\r\n\r\n public scrollWindowEvent(isListening: boolean) {\r\n if (isListening) window.addEventListener(\"scroll\", this._handleScrollFunc, true);\r\n else window.removeEventListener(\"scroll\", this._handleScrollFunc, true);\r\n }\r\n\r\n public get tags(): Array {\r\n return this._albumTags.albumTags;\r\n }\r\n\r\n public get currentTag(): string {\r\n return this._albumTags.getTagByAlbumId(this._currentAlbum);\r\n }\r\n\r\n public get page(): number {\r\n return this._currentAlbumPage;\r\n }\r\n\r\n public get id(): string {\r\n return this._currentAlbum;\r\n }\r\n\r\n public reset(albumId: string) {\r\n this._currentAlbumPage = 1;\r\n this._currentAlbum = this._albumTags.albumTags.find((e) => e.tagId === albumId)!.album;\r\n }\r\n}\r\n\r\nexport interface SiteAlbumState {\r\n json?: PostImageJson[];\r\n isLoading?: boolean;\r\n images?: Array;\r\n isTopBtn?: boolean;\r\n}\r\n\r\nclass SiteAlbum extends React.Component<{}, SiteAlbumState> {\r\n\r\n private _albumPages: AlbumPageController;\r\n\r\n public constructor(props: {}) {\r\n super(props);\r\n this.state = {\r\n isLoading: true,\r\n json: [],\r\n images: [],\r\n isTopBtn: false\r\n };\r\n this._albumPages = new AlbumPageController(2000);\r\n this._albumPages.addScrollAction(this.ensureDataFetched.bind(this));\r\n }\r\n\r\n private onScroll(event: any) {\r\n if (window.scrollY > 100)\r\n this.setState({ isTopBtn: true });\r\n else this.setState({ isTopBtn: false });\r\n }\r\n\r\n public async componentDidMount() {\r\n window.addEventListener('scroll', this.onScroll.bind(this));\r\n await this.ensureDataFetched();\r\n this.activateButton(this._albumPages.currentTag);\r\n }\r\n\r\n public componentWillUnmount() {\r\n this._albumPages.scrollWindowEvent(false);\r\n window.removeEventListener('scroll', this.onScroll.bind(this));\r\n }\r\n\r\n private async ensureDataFetched() {\r\n if (this._albumPages.id === undefined || this._albumPages.id === \"\") return;\r\n this.setState({ isLoading: true });\r\n axios.get(`${window.origin}/album/${this._albumPages.id}/${this._albumPages.page}`).then((response) => {\r\n const parsed = new PostImageJson().fromJSON(response.data);\r\n this.setState(state => {\r\n const jsonArray = state.json!.concat(parsed);\r\n const images = state.images!.concat(parsed.getImages());\r\n return { images: images, json: jsonArray, isLoading: false };\r\n });\r\n if (parsed.has_page_next)\r\n this._albumPages.scrollWindowEvent(true);\r\n });\r\n }\r\n\r\n private activateButton(tag: string) {\r\n $(`#${tag}`)\r\n .removeClass(\"btn-common\")\r\n .addClass(\"btn-primary\");\r\n }\r\n\r\n private loadAlbum(event: React.MouseEvent) {\r\n $('#tagButtonsContainer .btn-primary')\r\n .removeClass(\"btn-primary\")\r\n .addClass(\"btn-common\");\r\n this.activateButton(event.currentTarget.id);\r\n this.setState({ isLoading: true, json: [], images: [] });\r\n this._albumPages.reset(event.currentTarget.id);\r\n this.ensureDataFetched();\r\n }\r\n\r\n private scrollToTop() {\r\n window.scroll({\r\n behavior: \"smooth\",\r\n top: 0\r\n });\r\n }\r\n\r\n\r\n private renderTagsButtons() {\r\n return (\r\n
\r\n
\r\n {this._albumPages.tags.map((value, index) => {\r\n return {value.tagName};\r\n })}\r\n
\r\n
\r\n );\r\n }\r\n\r\n public render() {\r\n return (\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n

Альбом

\r\n

Фото работ с наших объектов

\r\n
\r\n
\r\n
\r\n
\r\n
\r\n {this.renderTagsButtons()}\r\n
\r\n ;\r\n
\r\n {this.state.isLoading &&\r\n
\r\n \"\"\r\n
\r\n }\r\n \r\n {this.state.isTopBtn ? < img src={require(\"../../assets/img/up-arrow-button-svgrepo-com.svg\")} alt=\"\" /> : null }\r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default SiteAlbum;","import './custom.css';\r\nimport * as React from 'react';\r\nimport { Route } from 'react-router';\r\nimport Layout from './components/views/Layout';\r\nimport Home from './components/views/Home';\r\nimport SiteAlbum from './components/views/SiteAlbum';\r\n\r\n\r\nconst WOW = require('wowjs');\r\n\r\nexport class App extends React.Component {\r\n private wow: any;\r\n public componentDidMount() {\r\n this.wow = new WOW.WOW().init();\r\n }\r\n\r\n public componentDidUpdate() {\r\n this.wow.sync();\r\n }\r\n\r\n public render() {\r\n return (\r\n // Go To Anchor\r\n \r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\n\r\n","// In production, we register a service worker to serve assets from local cache.\r\n\r\n// This lets the app load faster on subsequent visits in production, and gives\r\n// it offline capabilities. However, it also means that developers (and users)\r\n// will only see deployed updates on the \"N+1\" visit to a page, since previously\r\n// cached resources are updated in the background.\r\n\r\n// To learn more about the benefits of this model, read https://goo.gl/KwvDNy.\r\n// This link also includes instructions on opting out of this behavior.\r\n\r\nconst isLocalhost = Boolean(\r\n window.location.hostname === 'localhost' ||\r\n // [::1] is the IPv6 localhost address.\r\n window.location.hostname === '[::1]' ||\r\n // 127.0.0.1/8 is considered localhost for IPv4.\r\n window.location.hostname.match(\r\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\r\n )\r\n);\r\n\r\nexport default function register() {\r\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\r\n // The URL constructor is available in all browsers that support SW.\r\n const url = process.env.PUBLIC_URL as string;\r\n const publicUrl = new URL(url, window.location.toString());\r\n if (publicUrl.origin !== window.location.origin) {\r\n // Our service worker won't work if PUBLIC_URL is on a different origin\r\n // from what our page is served on. This might happen if a CDN is used to\r\n // serve assets; see https://github.com/facebookincubator/create-react-app/issues/2374\r\n return;\r\n }\r\n\r\n window.addEventListener('load', () => {\r\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\r\n\r\n if (isLocalhost) {\r\n // This is running on localhost. Lets check if a service worker still exists or not.\r\n checkValidServiceWorker(swUrl);\r\n } else {\r\n // Is not local host. Just register service worker\r\n registerValidSW(swUrl);\r\n }\r\n });\r\n }\r\n}\r\n\r\nfunction registerValidSW(swUrl: string) {\r\n navigator.serviceWorker\r\n .register(swUrl)\r\n .then(registration => {\r\n registration.onupdatefound = () => {\r\n const installingWorker = registration.installing as ServiceWorker;\r\n installingWorker.onstatechange = () => {\r\n if (installingWorker.state === 'installed') {\r\n if (navigator.serviceWorker.controller) {\r\n // At this point, the old content will have been purged and\r\n // the fresh content will have been added to the cache.\r\n // It's the perfect time to display a \"New content is\r\n // available; please refresh.\" message in your web app.\r\n console.log('New content is available; please refresh.');\r\n } else {\r\n // At this point, everything has been precached.\r\n // It's the perfect time to display a\r\n // \"Content is cached for offline use.\" message.\r\n console.log('Content is cached for offline use.');\r\n }\r\n }\r\n };\r\n };\r\n })\r\n .catch(error => {\r\n console.error('Error during service worker registration:', error);\r\n });\r\n}\r\n\r\nfunction checkValidServiceWorker(swUrl: string) {\r\n // Check if the service worker can be found. If it can't reload the page.\r\n fetch(swUrl)\r\n .then(response => {\r\n // Ensure service worker exists, and that we really are getting a JS file.\r\n const contentType = response.headers.get('content-type');\r\n if (response.status === 404 || (contentType && contentType.indexOf('javascript') === -1)) {\r\n // No service worker found. Probably a different app. Reload the page.\r\n navigator.serviceWorker.ready.then(registration => {\r\n registration.unregister().then(() => {\r\n window.location.reload();\r\n });\r\n });\r\n } else {\r\n // Service worker found. Proceed as normal.\r\n registerValidSW(swUrl);\r\n }\r\n })\r\n .catch(() => {\r\n console.log('No internet connection found. App is running in offline mode.');\r\n });\r\n}\r\n\r\nexport function unregister() {\r\n if ('serviceWorker' in navigator) {\r\n navigator.serviceWorker.ready.then(registration => {\r\n registration.unregister();\r\n });\r\n }\r\n}\r\n","import './assets/css/bootstrap.css';\r\nimport $ from 'jquery';\r\nimport 'popper.js';\r\nimport 'bootstrap/dist/js/bootstrap.bundle.min';\r\nimport './assets/css/animate.css';\r\nimport './assets/css/bootstrap-theme.min.css';\r\nimport './assets/css/lightbox.css';\r\nimport './assets/css/main.css';\r\nimport './assets/css/responsive.css';\r\nimport './assets/fonts/font-awesome/font-awesome.min.css';\r\nimport 'react-image-lightbox/style.css';\r\nimport 'reflect-metadata';\r\n\r\nimport * as React from 'react';\r\nimport * as ReactDOM from 'react-dom';\r\nimport { Provider } from 'react-redux';\r\nimport { ConnectedRouter } from 'connected-react-router';\r\nimport { createBrowserHistory } from 'history';\r\nimport configureStore from './store/configureStore';\r\nimport { App } from './App';\r\nimport registerServiceWorker from './registerServiceWorker';\r\n\r\n// Create browser history to use in the Redux store\r\nconst baseUrl = document.getElementsByTagName('base')[0].getAttribute('href') as string;\r\nconst history = createBrowserHistory({ basename: baseUrl });\r\n\r\n// Get the application-wide store instance, prepopulating with state from the server where available.\r\nconst store = configureStore(history);\r\n\r\nReactDOM.render(\r\n \r\n \r\n \r\n \r\n ,\r\n document.getElementById('root'));\r\n\r\nregisterServiceWorker();\r\n","import { applyMiddleware, combineReducers, compose, createStore } from 'redux';\r\nimport thunk from 'redux-thunk';\r\nimport { connectRouter, routerMiddleware } from 'connected-react-router';\r\nimport { History } from 'history';\r\nimport { ApplicationState, reducers } from './';\r\n\r\nexport default function configureStore(history: History, initialState?: ApplicationState) {\r\n const middleware = [\r\n thunk,\r\n routerMiddleware(history)\r\n ];\r\n\r\n const rootReducer = combineReducers({\r\n ...reducers,\r\n router: connectRouter(history)\r\n });\r\n\r\n const enhancers = [];\r\n const windowIfDefined = typeof window === 'undefined' ? null : window as any;\r\n if (windowIfDefined && windowIfDefined.__REDUX_DEVTOOLS_EXTENSION__)\r\n enhancers.push(windowIfDefined.__REDUX_DEVTOOLS_EXTENSION__());\r\n\r\n\r\n return createStore(\r\n rootReducer,\r\n initialState,\r\n compose(applyMiddleware(...middleware), ...enhancers)\r\n );\r\n}\r\n","module.exports = __webpack_public_path__ + \"static/media/house.92def3b5.png\";","module.exports = __webpack_public_path__ + \"static/media/furniture.970e9770.png\";","module.exports = __webpack_public_path__ + \"static/media/window1.43efa06e.png\";","module.exports = __webpack_public_path__ + \"static/media/ceil.88ac1fcd.png\";","module.exports = __webpack_public_path__ + \"static/media/laminat.3fe1ed8a.png\";","module.exports = __webpack_public_path__ + \"static/media/door.468fac87.png\";","module.exports = __webpack_public_path__ + \"static/media/malyar.b6b008c5.png\";"],"sourceRoot":""}