{"version":3,"sources":["serviceWorker.js","components/editor-components/editor-map.js","components/editor-components/editor-autocomplete.js","components/geolocationComponent.js","api/timezonedb-api.js","components/editor-components/editor-datePicker.js","components/editor-components/editor-materials.js","utils/utils.js","components/editor-components/editor-sidebar.js","components/editor.js","components/audio-components/editor-map.js","components/audio-components/editor-materials.js","components/audio-components/editor-sidebar.js","components/audio-components/editor.js","components/cart-components/cart-form.js","components/header.js","components/footer.js","api/shipping-api.js","components/cart.js","components/completed.js","components/admin-components/admin-sky.js","components/admin-components/admin-city.js","components/admin-components/admin-fileLoader.js","components/admin-components/admin.js","components/login-components/backendLoginService.js","components/login-components/login.js","components/login-components/logout.js","api/promo-api.js","utils/toast.js","components/promo-components/promo-list.js","components/promo-components/promo-add.js","components/admin-components/admin-novaPoshta.js","components/promo-components/promo.js","i18n.js","index.js"],"names":["Boolean","window","location","hostname","match","Map","props","isSmallScreen","updateWindowDimensions","console","log","innerWidth","updateConfig","needChangeCanvasSize","config","getInitialCelestialConfig","redrawCelestialWhenRenderIsComplete","getUpdatedCelestialConfig","cel","apply","isRendering","setTimeout","display","updateMapPosition","that","skyview","date","latitude","longitude","getMapSize","width","_map","current","firstChild","offsetWidth","height","offsetHeight","containerWidth","_poster","containerHeight","_text1","getFixedText1","text1","React","createRef","img","Image","src","add","file","type","callback","error","json","warn","mw","Celestial","container","selectAll","data","features","enter","append","attr","redraw","mwStyle","fill","context","createPattern","opacity","each","d","setStyle","map","addEventListener","this","removeEventListener","DOMPurify","sanitize","replace","e","call","stack","nextProps","styleId","getAdditionalDividerByStyleId","nextState","text2","ratio","indexOf","sizeDivider","lang","i18n","language","isNamesEnabled","find","f","id","projection","adaptable","interactive","form","controls","culture","datapath","stars","show","limit","colors","style","designation","size","dsos","planets","constellations","names","isEnabled","namesType","nameStyle","align","baseline","stroke","background","font","lines","lineStyle","graticule","equatorial","ecliptic","galactic","supergalactic","horizon","daylight","class","ref","overflow","fontFamily","fontSize","bottom","process","dangerouslySetInnerHTML","__html","Component","whyDidYouRender","Autocomplete","handleAutocompleteSelect","address","geocodeByPlaceId","place_id","then","results","geometry","lat","getAddressAndCoordinates","place","description","onPlaceChanged","catch","onClear","_autocomplete","changeValue","_textInput","focus","renderInput","placeholder","onClick","state","ukraineBounds","west","east","north","south","city","country","idx","address_components","long_name","types","getLatLng","latLng","getAddress","lng","initialValue","autocompletionRequest","onSelect","suggestionsClassNames","suggestion","suggestionActive","api","axios","create","baseURL","apis","getTimeZoneOffset","time","get","headers","r","message","response","status","statusText","JSON","stringify","request","Error","EditorDatePicker","onChange","dateTime","hasTime","dateTimeSplit","item","length","slice","join","moment","isValid","isTimePickerAllowed","currentLocalDateTime","recalculateUtcOnDateUpdate","renderDateInput","openCalendar","closeCalendar","onFocus","onAllowTimePickerClick","set","hour","minute","second","millisecond","utcDateTime","getUtcTimeFromLocal","onDateChanged","setState","timeZoneResponse","currentUtcOffset","utcOffset","prevProps","recalculateUtcOnCoordinatesUpdate","Math","round","gmtOffset","utcDateTimeString","clone","format","utc","timeStamp","unix","timezoneDbApi","zoneName","raiseDateUpdate","zoneStart","zoneEnd","t","viewMode","locale","defaultValue","dateFormat","timeFormat","closeOnSelect","inputProps","inputMode","PureComponent","withTranslation","EditorMaterials","riseUpdate","material","materials","selectedMaterialId","sizes","selectedSizeId","price","hanger","hangers","h","selectedHangerId","proposalHangerName","proposalHangerPrice","frameHanger","inStock","name","onChanged","selectedMaterialName","selectedHangerName","proposalHangerId","onMaterialChanged","changeEvent","materialId","target","value","s","hangerId","sizeId","isDefault","onSizeChanged","onHangerChanged","onMaterialInfoClick","preventDefault","modalName","info","modalDescription","modalImages","images","isModalOpen","onHangerInfoClick","onModalClose","renderModalWindow","isOpen","requestClose","classes","contentClassName","closeIconClassName","wrapperClassName","whiteSpace","Carousel","index","Item","key","className","alt","renderSizesOld","checked","oldPrice","renderSizes","data-check-icon","data-uncheck-icon","renderHangers","Fragment","disabled","initialSelectedMaterialId","initialSelectedSizeId","initialSelectedHangerId","prevState","getPublicUrl","split","result","i","getUrlQuery","obj","printWidth","printHeight","centerLat","centerLon","mapWidth","mapHeight","isGridEnabled","isConstellationsEnabled","isMWEnabled","query","encodeURIComponent","getAllStyles","isTest","styles","push","getStyleSettingsByStyleId","EditorSidebar","_isSmallScreen","scrollToBottom","_bottom","scrollIntoView","behavior","block","inline","onChatClick","jivo_api","open","onSideBarMenuClick","sidebarMenuLinks","materialInfo","onMakeOrderClick","onAddFrameClick","materialAlterInfo","onContinueWithoutFrameClick","renderStyles","selectedStyleId","onStyleChanged","renderFeatures","feature","onFeatureChanged","proposedTextModalOpen","isProposedTextModalOpen","onProposedTextModalClose","onProposedTextSwitched","selectedIndex","_selectedProposedTextIndex","onProposedTextSelected","_proposedTexts","text","onText1Selected","createItem","icon","array","itemClass","classNames","active","role","href","renderSidebarMenu","rows","onText1Changed","onText2Changed","maxWidth","interval","slide","Caption","bsPrefix","EditorComponent","event","updatePlaceAndText2","startsWith","gtag","send_to","event_category","event_label","fbq","search_string","localDate","utcDate","isTimePicked","local","toDate","updateDateAndText2","featureId","el","applyStyle","materialUpdateInfo","store","Date","text2BeforeManualEdit","convertedMap","convertedDescription","product","productType","rest","redirect","initialPlace","initialDate","setHours","setMinutes","setSeconds","setMilliseconds","initialUtcDate","getTime","queryParams","queryString","parse","search","toLowerCase","getText2","editorStateDateString","editorStateDate","setDate","getDate","restoredState","content_name","momentDate","formatcoords","latLonSeparator","decimalPlaces","styleSettings","to","pathname","updatePosterSize","margin","_content","maxHeight","ratioSplit","ratioX","parseInt","ratioY","tempHeight","posterWidth","posterHeight","_posterWrapper","CartForm","memo","useTranslation","canShipFromFactory","isFreeShippingTurnedOn","needPrepayment","isLiqpayEnabled","isWayForPayEnabled","shippingDates","canPayByCash","enableReinitialize","initialValues","lastName","email","phone","paymentType","shippingType","warehouse","comment","subscribe","validate","values","errors","test","onSubmit","actions","setSubmitting","formikProps","touched","handleChange","handleBlur","handleSubmit","setFieldValue","shippingCost","trim","shippingDate","onShippingCostChanged","autoComplete","required","onBlur","aria-expanded","aria-controls","Collapse","in","Header","isProductTypeAudio","homeUrl","Footer","aria-hidden","data-toggle","data-placement","title","data-original-title","getShippingDates","getShippingDatesForVlad","canShipByVlad","Cart","onPomocodeChanged","promocode","onPomocodeApplied","superagent","basePrice","end","alert","isCorrect","newPrice","isNaN","priceWithoutShipping","isPromocodeFailed","succeededPromocode","getPrice","randomIntFromInterval","min","max","floor","random","isSubmitting","str","suffix","order","orderId","shipping","wayForPay","clientEmail","clientPhone","referral","Cookies","gTagId","currency","pixelId","post","send","_liqpayForm","submit","_wayForPayForm","history","fixMapLanguage","containsAny","cyrrilicRegex","areTextsInSameLanguage","ukChars","ruChars","substrings","substring","renderWayForPayProduct","productName","productCount","productPrice","readOnly","count","isTestActive","wayForPayId","getFullYear","toString","substr","getMonth","url","protocol","host","redirectUrl","serverUrl","note","canShipFromByVlad","buttonData","buttonSignature","updateWayForPayFormParameters","shippingApi","sum","isLoading","getWayForPayFormParameters","res","returnUrl","serviceUrl","orderReference","amount","getLiqpayFormParameters","signature","aria-multiselectable","data-parent","aria-labelledby","method","action","acceptCharset","merchantAccount","merchantDomainName","merchantSignature","orderDate","Completed","params","remove","version","xmlns","xmlnsXlink","x","y","viewBox","enableBackground","space","renderSendAudioButttons","AdminSky","onStyleChange","settings","urlQuery","onSettingsChanged","onSizeChange","onDateChange","dateUpdatedForOrderId","parsedUtcDate","formattedDate","isSubtitleRequiresChange","onInputChange","onUrlQueryInputChange","generateConfigFileFromState","stringResult","content","onSaveFile","sendToOrder","onSendFileToOrder","onAdditionalInfoClick","isAdditionalInfoOpen","copyRedHeart","navigator","clipboard","writeText","err","additionalStateValues","getAdditionalStateValues","stylesId","checkStyleIsCorrect","onShowError","formattedCoordinates","parseFloat","getFormattedCoordinates","isHangerNotValid","for","selected","readonly","subtitle","renderAdditionalInfo","AdminCity","styleSrc","styleSrcFolder","getMapSettingsByMaterialAndLabeStyle","labelStyle","padding","paddingInt","initialPadding","initialMapWidth","initialMapHeight","onMaterialChange","isMapDirty","mapSettings","onLabelStyleChange","onMarkersCoordinatesInputChange","markersCoordinates","Object","keys","validateForm","validateMarkers","coordinates","isChangingLocationNotAllowed","lastIndex","lastIndexOf","markersStyle","zoom","pitch","AdminFileLoader","fixStringBoolean","loweredValue","extractSettings","fileName","jsonContent","urlQueryParams","getUrlQueryParameters","raiseOnFileLoaded","onFileChangeHandler","files","processFile","onFilesSelected","readFromClipboard","readText","processContent","raiseOnFileException","reader","FileReader","readAsText","onload","fixedContent","rjson","transform","onerror","onFileLoaded","onFileException","pl","decode","decodeURIComponent","urlParams","exec","onDrop","multiple","accept","noClick","getRootProps","getInputProps","isDragActive","isDragAccept","Admin","fileKey","showError","blob","Blob","msSaveOrOpenBlob","msSaveBlob","elem","document","createElement","URL","createObjectURL","download","body","appendChild","click","removeChild","File","formData","FormData","showSuccess","errorMessage","onCloseToast","toast","isShow","alertType","Toast","onClose","delay","autohide","position","top","right","zIndex","Body","Spinner","animation","BackendLoginService","instance","isLoggedIn","createAuthProvider","accessTokenKey","customFetch","onUpdateToken","token","refreshToken","authFetch","loginInternal","logoutInternal","authGet","authPost","authPut","authDelete","login","googleResponse","logout","isLoggedInFun","getInstance","Login","clientId","onSuccess","profileObj","serverLoginFailed","from","serverEmail","onFailure","renderSuccessAccountInfo","renderFailedAccountInfo","renderAccountInfo","isSuccess","isServerLoginFailed","buttonText","cookiePolicy","marginTop","isSignedIn","Logout","onLogoutSuccess","insertPromo","payload","getAllPromos","updatePromo","deletePromoByCode","code","getPromoByCode","ToastFun","PromoList","componentDidMount","promos","showMessage","onAddClick","onEditClick","currentTarget","onDeleteClick","confirm","onLogoutClick","showTable","discount","expirationDate","PromoAdd","_isUpdatingMode","promo","isFailed","onCancelClick","startOf","expirationDateFormatted","expirationDateUtc","AdminNovaPoshta","onCopyClick","uk","onTypeheadChange","options","clearButton","highlightOnlyResult","labelKey","option","onSearch","fetch","resp","ru","use","Backend","LanguageDetector","initReactI18next","init","detection","lookupFromPathIndex","checkWhitelist","backend","loadPath","fallbackLng","debug","whitelist","load","interpolation","escapeValue","nsSeparator","keySeparator","pathSplit","baseName","ReactDOM","render","fallback","basename","path","component","exact","Editor","AudioEditor","getElementById","serviceWorker","ready","registration","unregister"],"mappings":"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","file":"static/js/main.ed144c13.chunk.js","sourcesContent":["// This optional code is used to register a service worker.\r\n// register() is not called by default.\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 subsequent visits to a page, after all the\r\n// existing tabs open on the page have been closed, since previously cached\r\n// resources are updated in the background.\r\n\r\n// To learn more about the benefits of this model and instructions on how to\r\n// opt-in, read https://bit.ly/CRA-PWA\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.0/8 are 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 function register(config) {\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 publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\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/facebook/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. Let's check if a service worker still exists or not.\r\n checkValidServiceWorker(swUrl, config);\r\n\r\n // Add some additional logging to localhost, pointing developers to the\r\n // service worker/PWA documentation.\r\n navigator.serviceWorker.ready.then(() => {\r\n console.log(\r\n 'This web app is being served cache-first by a service ' +\r\n 'worker. To learn more, visit https://bit.ly/CRA-PWA'\r\n );\r\n });\r\n } else {\r\n // Is not localhost. Just register service worker\r\n registerValidSW(swUrl, config);\r\n }\r\n });\r\n }\r\n}\r\n\r\nfunction registerValidSW(swUrl, config) {\r\n navigator.serviceWorker\r\n .register(swUrl)\r\n .then(registration => {\r\n registration.onupdatefound = () => {\r\n const installingWorker = registration.installing;\r\n if (installingWorker == null) {\r\n return;\r\n }\r\n installingWorker.onstatechange = () => {\r\n if (installingWorker.state === 'installed') {\r\n if (navigator.serviceWorker.controller) {\r\n // At this point, the updated precached content has been fetched,\r\n // but the previous service worker will still serve the older\r\n // content until all client tabs are closed.\r\n console.log(\r\n 'New content is available and will be used when all ' +\r\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\r\n );\r\n\r\n // Execute callback\r\n if (config && config.onUpdate) {\r\n config.onUpdate(registration);\r\n }\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 // Execute callback\r\n if (config && config.onSuccess) {\r\n config.onSuccess(registration);\r\n }\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, config) {\r\n // Check if the service worker can be found. If it can't reload the page.\r\n fetch(swUrl, {\r\n headers: { 'Service-Worker': 'script' },\r\n })\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 (\r\n response.status === 404 ||\r\n (contentType != null && contentType.indexOf('javascript') === -1)\r\n ) {\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, config);\r\n }\r\n })\r\n .catch(() => {\r\n console.log(\r\n 'No internet connection found. App is running in offline mode.'\r\n );\r\n });\r\n}\r\n\r\nexport function unregister() {\r\n if ('serviceWorker' in navigator) {\r\n navigator.serviceWorker.ready\r\n .then(registration => {\r\n registration.unregister();\r\n })\r\n .catch(error => {\r\n console.error(error.message);\r\n });\r\n }\r\n}\r\n","import React, { Component, PureComponent } from \"react\";\r\nimport * as cel from \"d3-celestial\";\r\nimport DOMPurify from \"dompurify\";\r\nimport \"d3-celestial/celestial.css\";\r\nimport \"./editor-map.css\";\r\nimport i18n from \"i18next\";\r\n\r\nexport default class Map extends Component {\r\n static whyDidYouRender = true;\r\n isSmallScreen = true;\r\n\r\n constructor(props) {\r\n super(props);\r\n this._text1 = this.getFixedText1(props.text1);\r\n this._poster = React.createRef();\r\n this._map = React.createRef();\r\n this.isRendering = false;\r\n }\r\n\r\n addMw() {\r\n //var img = document.getElementById(\"template\");\r\n var img = new Image();\r\n //https://yoksel.github.io/url-encoder/\r\n img.src =\r\n \"data:image/svg+xml,%3Csvg height='3' width='3' viewBox='0 0 3 3' xmlns='http://www.w3.org/2000/svg' version='1.1'%3E%3Ccircle cx='1' cy='1' r='1' fill='%23bbb' /%3E%3C/svg%3E\";\r\n\r\n cel.Celestial().add({\r\n file: \"/sky/data/mw2.json\",\r\n type: \"line\",\r\n\r\n callback: function (error, json) {\r\n if (error) return console.warn(error);\r\n // Load the geoJSON file and transform to correct coordinate system, if necessary\r\n var mw = json;\r\n\r\n var Celestial = cel.Celestial();\r\n\r\n //Celestial.getData(jsonLine, config.transform);\r\n\r\n // Add to celestial objects container in d3\r\n Celestial.container\r\n .selectAll(\".mway\")\r\n .data(mw.features)\r\n .enter()\r\n .append(\"path\")\r\n .attr(\"class\", \"mw2\");\r\n\r\n // Trigger redraw to display changes\r\n Celestial.redraw();\r\n },\r\n\r\n redraw: function () {\r\n var Celestial = cel.Celestial();\r\n\r\n var mwPattern = Celestial.context.createPattern(img, \"repeat\");\r\n\r\n var mwStyle = {\r\n fill: mwPattern,\r\n // fill: \"#bbbbbb\",\r\n opacity: \"0.7\",\r\n };\r\n\r\n Celestial.container.selectAll(\".mw2\").each(function (d) {\r\n Celestial.setStyle(mwStyle);\r\n Celestial.map(d);\r\n\r\n //Celestial.context.fillStyle = mwPattern;\r\n Celestial.context.fill();\r\n });\r\n },\r\n });\r\n }\r\n\r\n componentDidMount() {\r\n window.addEventListener(\"resize\", this.updateWindowDimensions);\r\n this.updateWindowDimensions();\r\n\r\n var config = this.getInitialCelestialConfig(this.props, this.isSmallScreen);\r\n\r\n //this.addMw();\r\n\r\n cel.Celestial().display(config);\r\n this.updateMapPosition(this.props);\r\n }\r\n\r\n componentWillUnmount() {\r\n window.removeEventListener(\"resize\", this.updateWindowDimensions);\r\n }\r\n\r\n updateWindowDimensions = () => {\r\n console.log(\"Calculating window size\");\r\n let width = window.innerWidth;\r\n let isSmallScreen = width < 768 ? true : false;\r\n this.isSmallScreen = isSmallScreen;\r\n };\r\n\r\n getFixedText1(text1) {\r\n if (text1) {\r\n try {\r\n return DOMPurify.sanitize(text1).replace(\r\n /❀️/g,\r\n ''\r\n );\r\n } catch (e) {\r\n (console.error || console.log).call(console, e.stack || e);\r\n }\r\n }\r\n return \"\";\r\n }\r\n // componentDidUpdate(prevProps, prevState) {\r\n // if (\r\n // prevProps.latitude !== this.props.latitude ||\r\n // prevProps.longitude !== this.props.longitude ||\r\n // prevProps.date !== this.props.date\r\n // ) {\r\n // this.updateMap();\r\n // }\r\n // if (prevProps.map != this.props.map) {\r\n // this.updateConfig();\r\n // }\r\n // }\r\n\r\n componentWillReceiveProps(nextProps) {\r\n this._text1 = this.getFixedText1(nextProps.text1);\r\n if (\r\n nextProps.latitude !== this.props.latitude ||\r\n nextProps.longitude !== this.props.longitude ||\r\n nextProps.date !== this.props.date\r\n ) {\r\n this.updateMapPosition(nextProps);\r\n }\r\n if (nextProps.map != this.props.map) {\r\n let needChangeCanvasSize = false;\r\n if (nextProps.styleId !== this.props.styleId) {\r\n var prevDivider = this.getAdditionalDividerByStyleId(\r\n this.props.styleId\r\n );\r\n var nextDivider = this.getAdditionalDividerByStyleId(nextProps.styleId);\r\n if (prevDivider !== nextDivider) {\r\n needChangeCanvasSize = true;\r\n }\r\n }\r\n this.updateConfig(nextProps, this.isSmallScreen, needChangeCanvasSize);\r\n }\r\n }\r\n\r\n shouldComponentUpdate(nextProps, nextState) {\r\n if (\r\n nextProps.text1 !== this.props.text1 ||\r\n nextProps.text2 !== this.props.text2 ||\r\n nextProps.ratio !== this.props.ratio ||\r\n nextProps.styleId !== this.props.styleId\r\n ) {\r\n console.log(\"map should update!\");\r\n return true;\r\n } else {\r\n console.log(\"map shouldn't update\");\r\n return false;\r\n }\r\n }\r\n\r\n getAdditionalDividerByStyleId(styleId) {\r\n if (styleId && styleId.indexOf(\"_clip_heart\") > 0) {\r\n return 1.5;\r\n } else {\r\n return 1;\r\n }\r\n }\r\n\r\n getInitialCelestialConfig(props, isSmallScreen) {\r\n let sizeDivider = 1;\r\n if (isSmallScreen) {\r\n sizeDivider = 2;\r\n }\r\n\r\n if (props) {\r\n sizeDivider =\r\n sizeDivider / this.getAdditionalDividerByStyleId(props.styleId);\r\n }\r\n\r\n var lang = i18n.language;\r\n\r\n var isNamesEnabled = props.map.features.find(\r\n (f) => f.id == \"isNamesEnabled\"\r\n );\r\n var config = {\r\n width: 500 / sizeDivider,\r\n projection: \"stereographic\",\r\n adaptable: false, // Sizes are increased with higher zoom-levels\r\n interactive: false, // Enable zooming and rotation with mousewheel and dragging\r\n form: false,\r\n controls: false, // Display zoom controls\r\n lang: \"\", // Global language override for names, any name setting that has the chosen language available\r\n // Default: desig or empty string for designations, other languages as used anywhere else\r\n culture: \"\", // Source of constellations and star names, default \"iau\", other: \"cn\" Traditional Chinese\r\n container: \"celestial-map\", // ID of parent element, e.g. div, null = html-body\r\n datapath: \"/sky/data/\", // Path/URL to data files, empty = subfolder 'data'\r\n stars: {\r\n show: true, // Show stars\r\n limit: 6, // Show only stars brighter than limit magnitude\r\n colors: false, // Show stars in spectral colors, if not use default color\r\n style: { fill: \"#ffffff\", opacity: 1 }, // Default style for stars\r\n designation: false, // Show star names (Bayer, Flamsteed, Variable star, Gliese or designation,\r\n size: 5 / sizeDivider, // Maximum size (radius) of star circle in pixels,\r\n },\r\n dsos: {\r\n show: false,\r\n },\r\n planets: {\r\n show: false,\r\n },\r\n constellations: {\r\n names: isNamesEnabled ? isNamesEnabled.isEnabled : false, // Show constellation names\r\n namesType: lang, // What kind of name to show (default 3 letter designations) all options: name, desig,\r\n // lat, en, ar, cn, cz, ee, fi, fr, de, gr, il, it, jp, kr, in, ir, ru, es, tr\r\n nameStyle: {\r\n fill: \"#ffffff\",\r\n align: \"center\",\r\n baseline: \"middle\",\r\n width: [0.5 / sizeDivider, 0.5 / sizeDivider, 0.5 / sizeDivider],\r\n stroke: [\r\n props.map.background,\r\n props.map.background,\r\n props.map.background,\r\n ],\r\n opacity: 1,\r\n font: [\r\n \"400 \" +\r\n (2.26 * 5) / sizeDivider +\r\n \"px 'Caveat', Arial, sans-serif\", // Style for constellations\r\n \"400 \" +\r\n (2.03 * 5) / sizeDivider +\r\n \"px 'Caveat', Arial, sans-serif\", // Different fonts for diff.\r\n \"400 \" +\r\n (1.69 * 5) / sizeDivider +\r\n \"px 'Caveat', Arial, sans-serif\",\r\n ], // ranked constellations\r\n },\r\n lines: props.map.features.find((f) => f.id == \"isConstellationsEnabled\")\r\n .isEnabled,\r\n lineStyle: {\r\n stroke: \"#dddddd\",\r\n width: 1.5 / sizeDivider,\r\n opacity: 0.7,\r\n },\r\n },\r\n mw: {\r\n show: props.map.features.find((f) => f.id == \"isMWEnabled\").isEnabled, // Show Milky Way as filled multi-polygon outlines\r\n // style: { fill: \"#ffffff\", opacity: 0.15 } // Style for MW layers\r\n },\r\n lines: {\r\n // Display & styles for graticule & some planes\r\n graticule: {\r\n show: props.map.features.find((f) => f.id == \"isGridEnabled\")\r\n .isEnabled,\r\n stroke: \"#cccccc\",\r\n width: 0.5 / sizeDivider,\r\n opacity: 0.8,\r\n },\r\n equatorial: {\r\n show: false,\r\n },\r\n ecliptic: {\r\n show: false,\r\n },\r\n galactic: {\r\n show: false,\r\n },\r\n supergalactic: {\r\n show: false,\r\n },\r\n },\r\n background: {\r\n fill: props.map.background,\r\n opacity: 1,\r\n stroke: props.map.stroke,\r\n width: 5 / sizeDivider,\r\n },\r\n horizon: {\r\n //Show horizon marker, if location is set and map projection is all-sky\r\n show: false,\r\n },\r\n daylight: {\r\n //Show day sky as a gradient, if location is set and map projection is hemispheric\r\n show: false,\r\n },\r\n };\r\n\r\n return config;\r\n }\r\n\r\n getUpdatedCelestialConfig(props, isSmallScreen) {\r\n let sizeDivider = 1;\r\n if (isSmallScreen) {\r\n sizeDivider = 2;\r\n }\r\n\r\n var isNamesEnabled = props.map.features.find(\r\n (f) => f.id == \"isNamesEnabled\"\r\n );\r\n var config = {\r\n constellations: {\r\n names: isNamesEnabled ? isNamesEnabled.isEnabled : false, // Show constellation names\r\n\r\n lines: props.map.features.find((f) => f.id == \"isConstellationsEnabled\")\r\n .isEnabled, // Show constellation lines, style below\r\n },\r\n mw: {\r\n show: props.map.features.find((f) => f.id == \"isMWEnabled\").isEnabled,\r\n },\r\n lines: {\r\n graticule: {\r\n show: props.map.features.find((f) => f.id == \"isGridEnabled\")\r\n .isEnabled,\r\n stroke: \"#cccccc\",\r\n width: 0.5 / sizeDivider,\r\n opacity: 0.8,\r\n },\r\n },\r\n background: {\r\n fill: props.map.background, // Area fill\r\n stroke: props.map.stroke, // Outline\r\n },\r\n };\r\n\r\n return config;\r\n }\r\n\r\n updateConfig = (props, isSmallScreen, needChangeCanvasSize) => {\r\n console.log(\"Updating celestial config\");\r\n\r\n if (needChangeCanvasSize) {\r\n var config = this.getInitialCelestialConfig(props, isSmallScreen);\r\n //Если ΠΌΠ΅Π½ΡΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ канваса Π΄ΠΎ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ закончится анимация вращСния, Ρ‚ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€ примСняСтся Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ\r\n this.redrawCelestialWhenRenderIsComplete(config);\r\n } else {\r\n var config = this.getUpdatedCelestialConfig(props, isSmallScreen);\r\n cel.Celestial().apply(config);\r\n }\r\n };\r\n\r\n redrawCelestialWhenRenderIsComplete = (config) => {\r\n if (this.isRendering) {\r\n console.log(\"Waiting till render is complete\");\r\n window.setTimeout(this.redrawCelestialWhenRenderIsComplete, 1000, config);\r\n } else {\r\n console.log(\"Render is complete\");\r\n cel.Celestial().display(config);\r\n }\r\n };\r\n\r\n updateMapPosition = (props) => {\r\n console.log(\"Updating celestial position\");\r\n\r\n this.isRendering = true;\r\n let that = this;\r\n setTimeout(() => {\r\n that.isRendering = false;\r\n }, 10000);\r\n cel.Celestial().skyview({\r\n date: props.date,\r\n location: [props.latitude, props.longitude],\r\n });\r\n };\r\n\r\n getMapSize = () => {\r\n //const { width, height } = cel.Celestial().metrics();\r\n\r\n return {\r\n width: this._map.current.firstChild.offsetWidth,\r\n height: this._map.current.firstChild.offsetHeight,\r\n containerWidth: this._poster.current.offsetWidth,\r\n containerHeight: this._poster.current.offsetHeight,\r\n };\r\n };\r\n\r\n render() {\r\n let renderOverlay = (styleId) => {\r\n if (styleId && styleId === \"simple_white_overlay_couple\") {\r\n return (\r\n \r\n \r\n \r\n );\r\n }\r\n return null;\r\n };\r\n console.log(\"Rendering editor-map\");\r\n return (\r\n
\r\n \r\n
\r\n
\r\n {/* Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° ΡˆΡ€ΠΈΡ„Ρ‚Π° */}\r\n \r\n \r\n font завантаТСння...\r\n \r\n
\r\n {/* \r\n \r\n \r\n \r\n \r\n \r\n */}\r\n\r\n \r\n 0\r\n ? \"celestial-map-square\"\r\n : \"\")\r\n }\r\n ref={this._map}\r\n >
\r\n\r\n 0\r\n ? \"clip clip-\" + this.props.styleId\r\n : \"d-none \")\r\n }\r\n >
\r\n\r\n {renderOverlay(this.props.styleId)}\r\n \r\n
\r\n
\r\n

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

{this.props.text2}

\r\n
\r\n \r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n","import React, { Component } from \"react\";\r\n\r\nimport GooglePlacesAutocomplete from \"react-google-places-autocomplete\";\r\nimport \"react-google-places-autocomplete/dist/assets/index.css\";\r\nimport { geocodeByPlaceId, getLatLng } from \"react-google-places-autocomplete\";\r\nimport \"./editor-autocomplete.css\";\r\n\r\nimport i18n from \"i18next\";\r\n\r\nexport default class Autocomplete extends Component {\r\n constructor(props) {\r\n super(props);\r\n this._autocomplete = React.createRef();\r\n this.state = {};\r\n this._textInput = React.createRef();\r\n this.ukraineBounds = {\r\n west: 22.13722,\r\n east: 40.22806,\r\n north: 52.37917,\r\n south: 44.38722,\r\n };\r\n }\r\n\r\n getAddress(place) {\r\n let idx = 0;\r\n let city;\r\n let country;\r\n\r\n for (let address of place.address_components) {\r\n idx++;\r\n if (idx === 1) {\r\n city = address.long_name;\r\n }\r\n\r\n if (address.types.indexOf(\"country\") > -1) {\r\n country = address.long_name;\r\n }\r\n }\r\n return {\r\n city,\r\n country,\r\n };\r\n }\r\n\r\n getAddressAndCoordinates(place) {\r\n return getLatLng(place).then((latLng) => {\r\n console.log(\"Got coordinates: \", latLng);\r\n var address = this.getAddress(place);\r\n console.log(\"Got address: \", address);\r\n if (!address.country) {\r\n if (\r\n latLng.lat <= this.ukraineBounds.north &&\r\n latLng.lat >= this.ukraineBounds.south &&\r\n latLng.lng <= this.ukraineBounds.east &&\r\n latLng.lng >= this.ukraineBounds.west\r\n ) {\r\n address.country = \"Π£ΠΊΡ€Π°Ρ—Π½Π°\";\r\n try {\r\n var lang = i18n.language;\r\n if (lang === \"ru\") {\r\n address.country = \"Π£ΠΊΡ€Π°ΠΈΠ½Π°\";\r\n }\r\n } catch (e) {\r\n (console.error || console.log).call(console, e.stack || e);\r\n }\r\n }\r\n }\r\n return {\r\n city: address.city,\r\n country: address.country,\r\n latitude: latLng.lat,\r\n longitude: latLng.lng,\r\n };\r\n });\r\n }\r\n handleAutocompleteSelect = (address) => {\r\n console.log(address);\r\n geocodeByPlaceId(address.place_id)\r\n .then((results) => {\r\n console.log(\"Got places:\", results);\r\n console.log(\"lat:\", results[0].geometry.location.lat());\r\n return this.getAddressAndCoordinates(results[0]);\r\n })\r\n .then((place) => {\r\n console.log(\"place:\", place);\r\n place.description = address.description;\r\n this.props.onPlaceChanged(place);\r\n })\r\n .catch((error) => console.error(\"Error\", error));\r\n };\r\n\r\n onClear = (e) => {\r\n try {\r\n this._autocomplete.current.changeValue(\"\");\r\n this._textInput.current.focus();\r\n } catch (e) {\r\n (console.error || console.log).call(console, e.stack || e);\r\n }\r\n };\r\n\r\n renderInput = (props) => {\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 render() {\r\n var autocompletionRequest = {\r\n types: [\"(cities)\"],\r\n };\r\n return (\r\n
\r\n
\r\n \r\n
\r\n
\r\n );\r\n }\r\n}\r\n","import React, { Component } from \"react\";\r\n\r\nimport Geolocation from \"react-geolocation\";\r\n\r\nexport default class GeolocationComponent extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {};\r\n }\r\n\r\n onSuccess = (position) => {\r\n console.log(\"Success\", position);\r\n var latitude = position.coords.latitude;\r\n var longitude = position.coords.longitude;\r\n this.props.onCoordinatesChanged(latitude, longitude);\r\n };\r\n\r\n render() {\r\n return ;\r\n }\r\n}\r\n","import axios from \"axios\";\r\nconst key = \"3PNMU6D0P7CK\";\r\nconst api = axios.create({\r\n baseURL: \"https://api.timezonedb.com/v2.1\",\r\n});\r\n\r\nexport const getTimeZoneOffset = (lat, lng, time) => {\r\n console.log(\"timestamp:\", time);\r\n return api\r\n .get(\r\n `/get-time-zone?format=json&by=position&key=${key}&lat=${lat}&lng=${lng}&time=${time}`,\r\n {\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n },\r\n }\r\n )\r\n .then((r) => {\r\n return r.data;\r\n })\r\n .catch((error) => {\r\n let message = \"\";\r\n if (error.response) {\r\n message = `${error.response.status} ${\r\n error.response.statusText\r\n }\\n${JSON.stringify(error.response.data)}`;\r\n // Request made and server responded\r\n console.log(error.response);\r\n } else if (error.request) {\r\n message = \"no response\";\r\n console.log(error.request);\r\n } else {\r\n message = error.message;\r\n console.log(\"Error\", error.message);\r\n }\r\n throw new Error(message);\r\n });\r\n};\r\n\r\nconst apis = {\r\n getTimeZoneOffset,\r\n};\r\n\r\nexport default apis;\r\n","import React, { PureComponent } from \"react\";\r\nimport Datetime from \"react-datetime\";\r\nimport \"react-datetime/css/react-datetime.css\";\r\nimport \"./editor-datePicker.css\";\r\nimport moment from \"moment\";\r\nimport \"moment/locale/uk.js\";\r\nimport \"moment/locale/ru.js\";\r\nimport { withTranslation } from \"react-i18next\";\r\nimport timezoneDbApi from \"../../api/timezonedb-api\";\r\n\r\nclass EditorDatePicker extends PureComponent {\r\n constructor(props) {\r\n super(props);\r\n //moment.locale('uk');\r\n this.state = {\r\n isTimePickerAllowed: false,\r\n };\r\n\r\n this.timeZoneResponse = null;\r\n this.hasTime = this.state.isTimePickerAllowed;\r\n try {\r\n this.currentLocalDateTime = moment(this.props.date);\r\n this.currentUtcOffset = this.currentLocalDateTime.utcOffset();\r\n } catch (e) {\r\n (console.error || console.log).call(console, e.stack || e);\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n this.recalculateUtcOnDateUpdate();\r\n }\r\n componentDidUpdate(prevProps) {\r\n console.log(\"latitude:\", this.props.latitude);\r\n\r\n console.log(\"longitude:\", this.props.longitude);\r\n\r\n if (\r\n prevProps.latitude !== this.props.latitude ||\r\n prevProps.longitude !== this.props.longitude\r\n ) {\r\n this.recalculateUtcOnCoordinatesUpdate();\r\n }\r\n }\r\n\r\n raiseDateUpdate(timeZoneResponse) {\r\n this.timeZoneResponse = timeZoneResponse;\r\n\r\n if (timeZoneResponse.status === \"FAILED\") {\r\n // Location at sea inferred from longitude\r\n this.currentUtcOffset = Math.round(this.props.longitude / 15) * 60;\r\n } else {\r\n this.currentUtcOffset = timeZoneResponse.gmtOffset / 60;\r\n }\r\n var utcDateTime = this.getUtcTimeFromLocal();\r\n this.props.onDateChanged(this.currentLocalDateTime, utcDateTime, this.hasTime);\r\n }\r\n\r\n getUtcTimeFromLocal() {\r\n console.log(\"timezone offset:\", this.currentUtcOffset);\r\n let utcDateTimeString = this.currentLocalDateTime.clone().add(- this.currentUtcOffset, 'minutes').format(\"YYYY-MM-DDTHH:mm:ss\");\r\n let utcDateTime = moment.utc(utcDateTimeString);\r\n console.log(\"utc time:\", utcDateTime);\r\n return utcDateTime;\r\n }\r\n \r\n recalculateUtcOnCoordinatesUpdate() {\r\n console.log(\"recalculateUtcOnCoordinatesUpdate\");\r\n var timeStamp = this.currentLocalDateTime.unix();\r\n\r\n timezoneDbApi\r\n .getTimeZoneOffset(this.props.latitude, this.props.longitude, timeStamp)\r\n .then((r) => {\r\n if (\r\n this.timeZoneResponse &&\r\n r &&\r\n this.timeZoneResponse.zoneName === r.zoneName\r\n ) {\r\n console.log(\r\n \"no need to raiseDateUpdate because timezone wasnt changed\"\r\n );\r\n } else {\r\n this.raiseDateUpdate(r);\r\n }\r\n })\r\n .catch((e) => {\r\n (console.error || console.log).call(console, e.stack || e);\r\n var utcDateTime = this.getUtcTimeFromLocal();\r\n this.props.onDateChanged(this.currentLocalDateTime, utcDateTime, this.hasTime);\r\n });\r\n }\r\n\r\n recalculateUtcOnDateUpdate() {\r\n console.log(\"recalculateUtcTime\");\r\n var timeStamp = this.currentLocalDateTime.unix();\r\n if (this.timeZoneResponse) {\r\n if (\r\n timeStamp >= this.timeZoneResponse.zoneStart &&\r\n timeStamp <= this.timeZoneResponse.zoneEnd\r\n ) {\r\n console.log(\"no need to get new timezone info\");\r\n this.raiseDateUpdate(this.timeZoneResponse);\r\n return;\r\n }\r\n }\r\n\r\n timezoneDbApi\r\n .getTimeZoneOffset(this.props.latitude, this.props.longitude, timeStamp)\r\n .then((r) => {\r\n this.raiseDateUpdate(r);\r\n })\r\n .catch((e) => {\r\n (console.error || console.log).call(console, e.stack || e);\r\n var utcDateTime = this.getUtcTimeFromLocal();\r\n this.props.onDateChanged(this.currentLocalDateTime, utcDateTime, this.hasTime);\r\n });\r\n }\r\n\r\n onChange = (dateTime) => {\r\n console.log(\"selected dateTime:\", dateTime);\r\n let hasTime = false;\r\n\r\n //date.utcOffset(0);\r\n try {\r\n if (dateTime && typeof dateTime === \"string\") {\r\n var dateTimeSplit = dateTime.match(\r\n /^\\s*(\\d{1,2})\\.(\\d{1,2})\\.(\\d{4})(?:\\s+(\\d{1,2})\\:(\\d{1,2}))?\\s*$/\r\n );\r\n\r\n if (dateTimeSplit) {\r\n dateTimeSplit = dateTimeSplit.map((item) => {\r\n if (item && item.length == 1) {\r\n item = \"0\" + item;\r\n }\r\n return item;\r\n });\r\n\r\n dateTime = dateTimeSplit.slice(1, 4).join(\".\");\r\n\r\n if (\r\n dateTimeSplit.length >= 6 &&\r\n dateTimeSplit[4] &&\r\n dateTimeSplit[5]\r\n ) {\r\n hasTime = true;\r\n dateTime += \" \" + dateTimeSplit.slice(4, 6).join(\":\");\r\n }\r\n console.log(\"fixedDate:\", dateTime);\r\n }\r\n\r\n dateTime = moment(dateTime, \"DD.MM.YYYY HH:mm\");\r\n if (!dateTime.isValid()) {\r\n throw \"invalid date: \" + dateTime;\r\n }\r\n } else {\r\n hasTime = this.state.isTimePickerAllowed;\r\n }\r\n\r\n // if (!this.state.isTimePickerAllowed) {\r\n // dateTime.set({ hour: 0, minute: 0, second: 0, millisecond: 0 });\r\n // }\r\n\r\n this.currentLocalDateTime = dateTime;\r\n this.hasTime = hasTime;\r\n\r\n this.recalculateUtcOnDateUpdate();\r\n } catch (e) {\r\n (console.error || console.log).call(console, e.stack || e);\r\n }\r\n };\r\n\r\n renderDateInput = (props, openCalendar, closeCalendar) => {\r\n return (\r\n
\r\n rest)(props)}\r\n class=\"form-control form-control-md u-datepicker-v1 rounded-0\"\r\n type=\"text\"\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 onAllowTimePickerClick = () => {\r\n try {\r\n if (this.state.isTimePickerAllowed) {\r\n if (this.currentLocalDateTime) {\r\n this.currentLocalDateTime.set({\r\n hour: 0,\r\n minute: 0,\r\n second: 0,\r\n millisecond: 0,\r\n });\r\n }\r\n }\r\n var utcDateTime = this.getUtcTimeFromLocal();\r\n this.props.onDateChanged(\r\n this.currentLocalDateTime, utcDateTime,\r\n !this.state.isTimePickerAllowed\r\n );\r\n } catch (e) {\r\n (console.error || console.log).call(console, e.stack || e);\r\n }\r\n this.setState({ isTimePickerAllowed: !this.state.isTimePickerAllowed });\r\n };\r\n\r\n render() {\r\n console.log(\"Rendering editor-datepicker\");\r\n const { t, i18n } = this.props;\r\n return (\r\n
\r\n
\r\n \r\n \r\n {t(\"Π― знаю Ρ‚ΠΎΡ‡Π½ΠΈΠΉ час\")}\r\n \r\n
\r\n\r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default withTranslation()(EditorDatePicker);\r\n","import React, { PureComponent } from 'react';\r\n\r\nimport Carousel from 'react-bootstrap/Carousel';\r\nimport './editor-materials.css';\r\nimport HyperModal from 'react-hyper-modal';\r\nimport { withTranslation } from 'react-i18next';\r\n\r\nclass EditorMaterials extends PureComponent {\r\n constructor(props) {\r\n super(props);\r\n const { t } = props;\r\n\r\n this.materials = [\r\n {\r\n id: 'Π‘ΡƒΠΌΠ°Π³Π°',\r\n name: t('ΠŸΠ°ΠΏΡ–Ρ€'),\r\n info: {\r\n name: t('Π”Ρ€ΡƒΠΊ Π½Π° ΠΏΠ°ΠΏΠ΅Ρ€Ρ–'),\r\n description: t(\r\n 'Ми використовуємо високоякісний ΠΊΠΎΠ»ΡŒΠΎΡ€ΠΎΠ²ΠΈΠΉ Π΄Ρ€ΡƒΠΊ Π½Π° ΠΌΠ°Ρ‚ΠΎΠ²ΠΎΠΌΡƒ ΠΏΠ°ΠΏΠ΅Ρ€Ρ– високої Ρ‰Ρ–Π»ΡŒΠ½ΠΎΡΡ‚Ρ–. Π’Π°ΠΊΠΈΠΉ Π΄Ρ€ΡƒΠΊ Π·Π°Π±Π΅Π·ΠΏΠ΅Ρ‡ΡƒΡ” Ρ„ΠΎΡ‚ΠΎΡ€Π΅Π°Π»Ρ–ΡΡ‚ΠΈΡ‡Π½Ρ–ΡΡ‚ΡŒ Ρ– високу Π΄Π΅Ρ‚Π°Π»Ρ–Π·Π°Ρ†Ρ–ΡŽ ΠΏΠ»Π°ΠΊΠ°Ρ‚Ρ–Π². ΠŸΠ»Π°ΠΊΠ°Ρ‚ΠΈ 30*40 пСрСсилаємо Π² захисній ΠΏΠ°ΠΏΡ†Ρ–, 40*50см Ρ– 50*70см - Ρƒ Ρ‚Ρ€ΠΈΠΊΡƒΡ‚Π½ΠΎΠΌΡƒ тубусі.'\r\n ),\r\n images: [\r\n process.env.PUBLIC_URL + '/assets/img/paper1.jpg',\r\n process.env.PUBLIC_URL + '/assets/img/paper2.jpg',\r\n process.env.PUBLIC_URL + '/assets/img/paper3.jpg',\r\n ],\r\n },\r\n sizes: [\r\n {\r\n id: '21Ρ…30 см',\r\n name: '21Ρ…30 см',\r\n width: 210,\r\n height: 300,\r\n ratio: '7-10',\r\n price: 330,\r\n oldPrice: 410,\r\n hangers: [\r\n { id: 'НСт', name: t('НСмає'), price: 0 },\r\n {\r\n id: 'Π Π°ΠΌΠΊΠ°',\r\n name: t('Π Π°ΠΌΠΊΠ°'),\r\n price: 230,\r\n inStock: false,\r\n info: {\r\n name: t('Π Π°ΠΌΠΊΠ° для ΠΏΠ»Π°ΠΊΠ°Ρ‚Ρƒ'),\r\n description: t(\r\n 'Ми використовуємо якісні Ρ‚ΠΎΠ½ΠΊΡ– пластикові Ρ€Π°ΠΌΠΊΠΈ Ρ‡ΠΎΡ€Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ»ΡŒΠΎΡ€Ρƒ Π·Ρ– склом (Π½Π°Ρ‚ΡƒΡ€Π°Π»ΡŒΠ½ΠΈΠΌ Π°Π±ΠΎ Π°ΠΊΡ€ΠΈΠ»ΠΎΠ²ΠΈΠΌ) Ρ‚Π° Π·Ρ€ΡƒΡ‡Π½ΠΈΠΌ підвісом. Π’Π°ΠΊΡ– Ρ€Π°ΠΌΠΊΠΈ Π΄ΠΎΠ±Ρ€Π΅ ΠΏΡ–Π΄Ρ…ΠΎΠ΄ΡΡ‚ΡŒ Π΄ΠΎ Π±ΡƒΠ΄ΡŒ-якого ΡΡ‚ΠΈΠ»ΡŽ інтСр’єру. Задня стінка - Π”Π’ΠŸ Π· Π³Π°Ρ‡ΠΊΠ°ΠΌΠΈ'\r\n ),\r\n images: [\r\n process.env.PUBLIC_URL + '/assets/img/frame1.png',\r\n process.env.PUBLIC_URL + '/assets/img/frame2.jpg',\r\n process.env.PUBLIC_URL + '/assets/img/frame3.jpg',\r\n process.env.PUBLIC_URL + '/assets/img/frame4.jpg',\r\n process.env.PUBLIC_URL + '/assets/img/frame5.jpg',\r\n ],\r\n },\r\n },\r\n ],\r\n },\r\n {\r\n id: '30Ρ…40 см',\r\n name: '30Ρ…40 см',\r\n width: 300,\r\n height: 400,\r\n ratio: '3-4',\r\n price: 430,\r\n oldPrice: 540,\r\n hangers: [\r\n { id: 'НСт', name: t('НСмає'), price: 0 },\r\n {\r\n id: 'Π Π°ΠΌΠΊΠ°',\r\n name: t('Π Π°ΠΌΠΊΠ°'),\r\n price: 260,\r\n inStock: false,\r\n info: {\r\n name: t('Π Π°ΠΌΠΊΠ° для ΠΏΠ»Π°ΠΊΠ°Ρ‚Ρƒ'),\r\n description: t(\r\n 'Ми використовуємо якісні Ρ‚ΠΎΠ½ΠΊΡ– пластикові Ρ€Π°ΠΌΠΊΠΈ Ρ‡ΠΎΡ€Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ»ΡŒΠΎΡ€Ρƒ Π·Ρ– склом (Π½Π°Ρ‚ΡƒΡ€Π°Π»ΡŒΠ½ΠΈΠΌ Π°Π±ΠΎ Π°ΠΊΡ€ΠΈΠ»ΠΎΠ²ΠΈΠΌ) Ρ‚Π° Π·Ρ€ΡƒΡ‡Π½ΠΈΠΌ підвісом. Π’Π°ΠΊΡ– Ρ€Π°ΠΌΠΊΠΈ Π΄ΠΎΠ±Ρ€Π΅ ΠΏΡ–Π΄Ρ…ΠΎΠ΄ΡΡ‚ΡŒ Π΄ΠΎ Π±ΡƒΠ΄ΡŒ-якого ΡΡ‚ΠΈΠ»ΡŽ інтСр’єру. Задня стінка - Π”Π’ΠŸ Π· Π³Π°Ρ‡ΠΊΠ°ΠΌΠΈ'\r\n ),\r\n images: [\r\n process.env.PUBLIC_URL + '/assets/img/frame1.png',\r\n process.env.PUBLIC_URL + '/assets/img/frame2.jpg',\r\n process.env.PUBLIC_URL + '/assets/img/frame3.jpg',\r\n process.env.PUBLIC_URL + '/assets/img/frame4.jpg',\r\n process.env.PUBLIC_URL + '/assets/img/frame5.jpg',\r\n ],\r\n },\r\n },\r\n ],\r\n },\r\n {\r\n id: '40Ρ…50 см',\r\n name: '40Ρ…50 см',\r\n width: 400,\r\n height: 500,\r\n ratio: '4-5',\r\n price: 570,\r\n oldPrice: 710,\r\n hangers: [\r\n { id: 'НСт', name: t('НСмає'), price: 0 },\r\n {\r\n id: 'Π Π°ΠΌΠΊΠ°',\r\n name: t('Π Π°ΠΌΠΊΠ°'),\r\n price: 360,\r\n inStock: false,\r\n info: {\r\n name: t('Π Π°ΠΌΠΊΠ° для ΠΏΠ»Π°ΠΊΠ°Ρ‚Ρƒ'),\r\n description: t(\r\n 'Ми використовуємо якісні Ρ‚ΠΎΠ½ΠΊΡ– пластикові Ρ€Π°ΠΌΠΊΠΈ Ρ‡ΠΎΡ€Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ»ΡŒΠΎΡ€Ρƒ Π·Ρ– склом (Π½Π°Ρ‚ΡƒΡ€Π°Π»ΡŒΠ½ΠΈΠΌ Π°Π±ΠΎ Π°ΠΊΡ€ΠΈΠ»ΠΎΠ²ΠΈΠΌ) Ρ‚Π° Π·Ρ€ΡƒΡ‡Π½ΠΈΠΌ підвісом. Π’Π°ΠΊΡ– Ρ€Π°ΠΌΠΊΠΈ Π΄ΠΎΠ±Ρ€Π΅ ΠΏΡ–Π΄Ρ…ΠΎΠ΄ΡΡ‚ΡŒ Π΄ΠΎ Π±ΡƒΠ΄ΡŒ-якого ΡΡ‚ΠΈΠ»ΡŽ інтСр’єру. Задня стінка - Π”Π’ΠŸ Π· Π³Π°Ρ‡ΠΊΠ°ΠΌΠΈ'\r\n ),\r\n images: [\r\n process.env.PUBLIC_URL + '/assets/img/frame1.png',\r\n process.env.PUBLIC_URL + '/assets/img/frame2.jpg',\r\n process.env.PUBLIC_URL + '/assets/img/frame3.jpg',\r\n process.env.PUBLIC_URL + '/assets/img/frame4.jpg',\r\n process.env.PUBLIC_URL + '/assets/img/frame5.jpg',\r\n ],\r\n },\r\n },\r\n ],\r\n },\r\n {\r\n id: '50Ρ…70 см',\r\n name: '50Ρ…70 см',\r\n width: 500,\r\n height: 700,\r\n ratio: '5-7',\r\n price: 770,\r\n oldPrice: 960,\r\n hangers: [\r\n { id: 'НСт', name: t('НСмає'), price: 0 },\r\n {\r\n id: 'Π Π°ΠΌΠΊΠ°',\r\n name: t('Π Π°ΠΌΠΊΠ°'),\r\n price: 560,\r\n inStock: false,\r\n info: {\r\n name: t('Π Π°ΠΌΠΊΠ° для ΠΏΠ»Π°ΠΊΠ°Ρ‚Ρƒ'),\r\n description: t(\r\n 'Ми використовуємо якісні Ρ‚ΠΎΠ½ΠΊΡ– пластикові Ρ€Π°ΠΌΠΊΠΈ Ρ‡ΠΎΡ€Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ»ΡŒΠΎΡ€Ρƒ Π·Ρ– склом (Π½Π°Ρ‚ΡƒΡ€Π°Π»ΡŒΠ½ΠΈΠΌ Π°Π±ΠΎ Π°ΠΊΡ€ΠΈΠ»ΠΎΠ²ΠΈΠΌ) Ρ‚Π° Π·Ρ€ΡƒΡ‡Π½ΠΈΠΌ підвісом. Π’Π°ΠΊΡ– Ρ€Π°ΠΌΠΊΠΈ Π΄ΠΎΠ±Ρ€Π΅ ΠΏΡ–Π΄Ρ…ΠΎΠ΄ΡΡ‚ΡŒ Π΄ΠΎ Π±ΡƒΠ΄ΡŒ-якого ΡΡ‚ΠΈΠ»ΡŽ інтСр’єру. Задня стінка - Π”Π’ΠŸ Π· Π³Π°Ρ‡ΠΊΠ°ΠΌΠΈ'\r\n ),\r\n images: [\r\n process.env.PUBLIC_URL + '/assets/img/frame1.png',\r\n process.env.PUBLIC_URL + '/assets/img/frame2.jpg',\r\n process.env.PUBLIC_URL + '/assets/img/frame3.jpg',\r\n process.env.PUBLIC_URL + '/assets/img/frame4.jpg',\r\n process.env.PUBLIC_URL + '/assets/img/frame5.jpg',\r\n ],\r\n },\r\n },\r\n ],\r\n },\r\n ],\r\n },\r\n {\r\n id: 'ΠŸΠ’Π₯',\r\n name: t('ΠŸΠ»Π°ΡΡ‚ΠΈΠΊ'),\r\n info: {\r\n name: t('Π”Ρ€ΡƒΠΊ Π½Π° ΠŸΠ’Π₯'),\r\n description: t(\r\n 'ΠŸΠ’Π₯ - лСгковісний лист пластику Π·Ρ– Π²ΡΠΏΡ–Π½Π΅Π½ΠΎΡŽ ΡΡ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€ΠΎΡŽ. Π™ΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½Π° ΠΏΡ–Π΄Π²Ρ–ΡˆΡƒΠ²Π°Ρ‚ΠΈ Π±Π΅Π· Ρ€Π°ΠΌΠΈ, ΠΎΡΠΊΡ–Π»ΡŒΠΊΠΈ Π²Ρ–Π½ Π΄ΠΎΡΡ‚Π°Ρ‚Π½ΡŒΠΎ Ρ‰Ρ–Π»ΡŒΠ½ΠΈΠΉ Ρ– Π½Π΅ ΡΠΊΡ€ΡƒΡ‡ΡƒΡ”Ρ‚ΡŒΡΡ. Π‘Π΅Π·ΠΊΠΎΡˆΡ‚ΠΎΠ²Π½ΠΎ ΠΌΠΎΠΆΠ΅ΠΌΠΎ Π½Π°ΠΊΠ»Π΅Ρ—Ρ‚ΠΈ двосторонній скотч, Ρ‰ΠΎΠ± ΠΊΡ€Ρ–ΠΏΠΈΡ‚ΠΈ Π΄ΠΎ стіни. Π’ΠΎΠ²Ρ‰ΠΈΠ½Π° - 3ΠΌΠΌ, Π°Π±ΠΎ 1ΠΌΠΌ (якщо Π² ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡ‚Ρ– Π· Ρ€Π°ΠΌΠΊΠΎΡŽ).\\nΠ‘Π΅Π·ΠΏΠ΅Ρ‡Π½ΠΈΠΉ для людини Ρ‚Π° навколишнього сСрСдовища'\r\n ),\r\n images: [\r\n process.env.PUBLIC_URL + '/assets/img/plastic1.jpg',\r\n process.env.PUBLIC_URL + '/assets/img/plastic2.jpg',\r\n process.env.PUBLIC_URL + '/assets/img/plastic3.jpg',\r\n ],\r\n },\r\n sizes: [\r\n {\r\n id: '30Ρ…40 см',\r\n name: '30Ρ…40 см',\r\n width: 300,\r\n height: 400,\r\n ratio: '3-4',\r\n price: 590,\r\n oldPrice: 740,\r\n hangers: [\r\n { id: 'НСт', name: t('НСмає'), price: 0 },\r\n {\r\n id: 'Π›Π΅Π½Ρ‚Π°',\r\n name: t('КлСйка стрічка'),\r\n price: 0,\r\n isDefault: true,\r\n info: {\r\n name: t('КлСйка стрічка'),\r\n description: t(\r\n 'Π§Ρ–ΠΏΠΊΠΈΠΉ скотч ΠΏΠΎ ΠΏΠ΅Ρ€ΠΈΠΌΠ΅Ρ‚Ρ€Ρƒ Π·Π²ΠΎΡ€ΠΎΡ‚Π½ΠΎΡ— сторони. Π”ΠΎΠ±Ρ€Π΅ Ρ‚Ρ€ΠΈΠΌΠ°Ρ” Π²Π°Π³Ρƒ, якщо повСрхня Π½Π΅ ΠΌΠ°Ρ” Π½Π°Π΄Ρ‚ΠΎ Π²ΠΈΡ€Π°Π·Π½ΠΎΡ— Ρ„Π°ΠΊΡ‚ΡƒΡ€ΠΈ.'\r\n ),\r\n images: [process.env.PUBLIC_URL + '/assets/img/plastic3.jpg'],\r\n },\r\n },\r\n {\r\n id: 'Π Π°ΠΌΠΊΠ°',\r\n name: t('Π Π°ΠΌΠΊΠ°'),\r\n price: 200,\r\n inStock: false,\r\n info: {\r\n name: t('Π Π°ΠΌΠΊΠ° для ΠΏΠ»Π°ΠΊΠ°Ρ‚Ρƒ'),\r\n description: t(\r\n 'Ми використовуємо якісні Ρ‚ΠΎΠ½ΠΊΡ– пластикові Ρ€Π°ΠΌΠΊΠΈ Ρ‡ΠΎΡ€Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ»ΡŒΠΎΡ€Ρƒ Π·Ρ– склом (Π½Π°Ρ‚ΡƒΡ€Π°Π»ΡŒΠ½ΠΈΠΌ Π°Π±ΠΎ Π°ΠΊΡ€ΠΈΠ»ΠΎΠ²ΠΈΠΌ) Ρ‚Π° Π·Ρ€ΡƒΡ‡Π½ΠΈΠΌ підвісом. Π’Π°ΠΊΡ– Ρ€Π°ΠΌΠΊΠΈ Π΄ΠΎΠ±Ρ€Π΅ ΠΏΡ–Π΄Ρ…ΠΎΠ΄ΡΡ‚ΡŒ Π΄ΠΎ Π±ΡƒΠ΄ΡŒ-якого ΡΡ‚ΠΈΠ»ΡŽ інтСр’єру. Задня стінка - Π”Π’ΠŸ Π· Π³Π°Ρ‡ΠΊΠ°ΠΌΠΈ'\r\n ),\r\n images: [\r\n process.env.PUBLIC_URL + '/assets/img/frame1.png',\r\n process.env.PUBLIC_URL + '/assets/img/frame2.jpg',\r\n process.env.PUBLIC_URL + '/assets/img/frame3.jpg',\r\n process.env.PUBLIC_URL + '/assets/img/frame4.jpg',\r\n process.env.PUBLIC_URL + '/assets/img/frame5.jpg',\r\n ],\r\n },\r\n },\r\n /*{\r\n id: \"ΠšΡ€ΡŽΡ‡ΠΊΠΈ\",\r\n name: \"Π“Π°Ρ‡ΠΊΠΈ\",\r\n price: 30,\r\n info: {\r\n name: \"Π“Π°Ρ‡ΠΊΠΈ\",\r\n description:\r\n \"Π“Π°Ρ‡ΠΊΠΈ Π½Π° Π·Π²ΠΎΡ€ΠΎΡ‚Π½Ρ–ΠΉ стороні. На Π²ΠΈΠΏΠ°Π΄ΠΎΠΊ, якщо ΠΌΠ°Ρ”Ρ‚Π΅ Π΄ΡƒΠΆΠ΅ Ρ„Π°ΠΊΡ‚ΡƒΡ€Π½Ρƒ ΠΏΠΎΠ²Π΅Ρ€Ρ…Π½ΡŽ Ρ– Π΄Π²ΠΎΡΡ‚ΠΎΡ€ΠΎΠ½Π½ΡŒΠΎΠ³ΠΎ скотча Π½Π΅Π΄ΠΎΡΡ‚Π°Ρ‚Π½ΡŒΠΎ.\",\r\n images: [\"assets/img/plastic_hooks.jpg\"],\r\n },\r\n },*/\r\n ],\r\n },\r\n {\r\n id: '40Ρ…50 см',\r\n name: '40Ρ…50 см',\r\n width: 400,\r\n height: 500,\r\n ratio: '4-5',\r\n price: 790,\r\n oldPrice: 990,\r\n hangers: [\r\n { id: 'НСт', name: t('НСмає'), price: 0 },\r\n {\r\n id: 'Π›Π΅Π½Ρ‚Π°',\r\n name: t('КлСйка стрічка'),\r\n price: 0,\r\n isDefault: true,\r\n info: {\r\n name: t('КлСйка стрічка'),\r\n description: t(\r\n 'Π§Ρ–ΠΏΠΊΠΈΠΉ скотч ΠΏΠΎ ΠΏΠ΅Ρ€ΠΈΠΌΠ΅Ρ‚Ρ€Ρƒ Π·Π²ΠΎΡ€ΠΎΡ‚Π½ΠΎΡ— сторони. Π”ΠΎΠ±Ρ€Π΅ Ρ‚Ρ€ΠΈΠΌΠ°Ρ” Π²Π°Π³Ρƒ, якщо повСрхня Π½Π΅ ΠΌΠ°Ρ” Π½Π°Π΄Ρ‚ΠΎ Π²ΠΈΡ€Π°Π·Π½ΠΎΡ— Ρ„Π°ΠΊΡ‚ΡƒΡ€ΠΈ.'\r\n ),\r\n images: [process.env.PUBLIC_URL + '/assets/img/plastic3.jpg'],\r\n },\r\n },\r\n {\r\n id: 'Π Π°ΠΌΠΊΠ°',\r\n name: t('Π Π°ΠΌΠΊΠ°'),\r\n price: 300,\r\n inStock: false,\r\n info: {\r\n name: t('Π Π°ΠΌΠΊΠ° для ΠΏΠ»Π°ΠΊΠ°Ρ‚Ρƒ'),\r\n description: t(\r\n 'Ми використовуємо якісні Ρ‚ΠΎΠ½ΠΊΡ– пластикові Ρ€Π°ΠΌΠΊΠΈ Ρ‡ΠΎΡ€Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ»ΡŒΠΎΡ€Ρƒ Π·Ρ– склом (Π½Π°Ρ‚ΡƒΡ€Π°Π»ΡŒΠ½ΠΈΠΌ Π°Π±ΠΎ Π°ΠΊΡ€ΠΈΠ»ΠΎΠ²ΠΈΠΌ) Ρ‚Π° Π·Ρ€ΡƒΡ‡Π½ΠΈΠΌ підвісом. Π’Π°ΠΊΡ– Ρ€Π°ΠΌΠΊΠΈ Π΄ΠΎΠ±Ρ€Π΅ ΠΏΡ–Π΄Ρ…ΠΎΠ΄ΡΡ‚ΡŒ Π΄ΠΎ Π±ΡƒΠ΄ΡŒ-якого ΡΡ‚ΠΈΠ»ΡŽ інтСр’єру. Задня стінка - Π”Π’ΠŸ Π· Π³Π°Ρ‡ΠΊΠ°ΠΌΠΈ'\r\n ),\r\n images: [\r\n process.env.PUBLIC_URL + '/assets/img/frame1.png',\r\n process.env.PUBLIC_URL + '/assets/img/frame2.jpg',\r\n process.env.PUBLIC_URL + '/assets/img/frame3.jpg',\r\n process.env.PUBLIC_URL + '/assets/img/frame4.jpg',\r\n process.env.PUBLIC_URL + '/assets/img/frame5.jpg',\r\n ],\r\n },\r\n },\r\n // {\r\n // id: \"ΠšΡ€ΡŽΡ‡ΠΊΠΈ\",\r\n // name: \"Π“Π°Ρ‡ΠΊΠΈ\",\r\n // price: 30,\r\n // info: {\r\n // name: \"Π“Π°Ρ‡ΠΊΠΈ\",\r\n // description:\r\n // \"Π“Π°Ρ‡ΠΊΠΈ Π½Π° Π·Π²ΠΎΡ€ΠΎΡ‚Π½Ρ–ΠΉ стороні. На Π²ΠΈΠΏΠ°Π΄ΠΎΠΊ, якщо ΠΌΠ°Ρ”Ρ‚Π΅ Π΄ΡƒΠΆΠ΅ Ρ„Π°ΠΊΡ‚ΡƒΡ€Π½Ρƒ ΠΏΠΎΠ²Π΅Ρ€Ρ…Π½ΡŽ Ρ– Π΄Π²ΠΎΡΡ‚ΠΎΡ€ΠΎΠ½Π½ΡŒΠΎΠ³ΠΎ скотча Π½Π΅Π΄ΠΎΡΡ‚Π°Ρ‚Π½ΡŒΠΎ.\",\r\n // images: [\"assets/img/plastic_hooks.jpg\"],\r\n // },\r\n // },\r\n ],\r\n },\r\n {\r\n id: '50Ρ…70 см',\r\n name: '50Ρ…70 см',\r\n width: 500,\r\n height: 700,\r\n ratio: '5-7',\r\n price: 1150,\r\n oldPrice: 1440,\r\n hangers: [\r\n { id: 'НСт', name: 'НСмає', price: 0 },\r\n {\r\n id: t('Π›Π΅Π½Ρ‚Π°'),\r\n name: t('КлСйка стрічка'),\r\n price: 0,\r\n isDefault: true,\r\n info: {\r\n name: t('КлСйка стрічка'),\r\n description: t(\r\n 'Π§Ρ–ΠΏΠΊΠΈΠΉ скотч ΠΏΠΎ ΠΏΠ΅Ρ€ΠΈΠΌΠ΅Ρ‚Ρ€Ρƒ Π·Π²ΠΎΡ€ΠΎΡ‚Π½ΠΎΡ— сторони. Π”ΠΎΠ±Ρ€Π΅ Ρ‚Ρ€ΠΈΠΌΠ°Ρ” Π²Π°Π³Ρƒ, якщо повСрхня Π½Π΅ ΠΌΠ°Ρ” Π½Π°Π΄Ρ‚ΠΎ Π²ΠΈΡ€Π°Π·Π½ΠΎΡ— Ρ„Π°ΠΊΡ‚ΡƒΡ€ΠΈ.'\r\n ),\r\n images: [process.env.PUBLIC_URL + '/assets/img/plastic3.jpg'],\r\n },\r\n },\r\n {\r\n id: 'Π Π°ΠΌΠΊΠ°',\r\n name: t('Π Π°ΠΌΠΊΠ°'),\r\n price: 400,\r\n inStock: false,\r\n info: {\r\n name: t('Π Π°ΠΌΠΊΠ° для ΠΏΠ»Π°ΠΊΠ°Ρ‚Ρƒ'),\r\n description: t(\r\n 'Ми використовуємо якісні Ρ‚ΠΎΠ½ΠΊΡ– пластикові Ρ€Π°ΠΌΠΊΠΈ Ρ‡ΠΎΡ€Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ»ΡŒΠΎΡ€Ρƒ Π·Ρ– склом (Π½Π°Ρ‚ΡƒΡ€Π°Π»ΡŒΠ½ΠΈΠΌ Π°Π±ΠΎ Π°ΠΊΡ€ΠΈΠ»ΠΎΠ²ΠΈΠΌ) Ρ‚Π° Π·Ρ€ΡƒΡ‡Π½ΠΈΠΌ підвісом. Π’Π°ΠΊΡ– Ρ€Π°ΠΌΠΊΠΈ Π΄ΠΎΠ±Ρ€Π΅ ΠΏΡ–Π΄Ρ…ΠΎΠ΄ΡΡ‚ΡŒ Π΄ΠΎ Π±ΡƒΠ΄ΡŒ-якого ΡΡ‚ΠΈΠ»ΡŽ інтСр’єру. Задня стінка - Π”Π’ΠŸ Π· Π³Π°Ρ‡ΠΊΠ°ΠΌΠΈ'\r\n ),\r\n images: [\r\n process.env.PUBLIC_URL + '/assets/img/frame1.png',\r\n process.env.PUBLIC_URL + '/assets/img/frame2.jpg',\r\n process.env.PUBLIC_URL + '/assets/img/frame3.jpg',\r\n process.env.PUBLIC_URL + '/assets/img/frame4.jpg',\r\n process.env.PUBLIC_URL + '/assets/img/frame5.jpg',\r\n ],\r\n },\r\n },\r\n // {\r\n // id: \"ΠšΡ€ΡŽΡ‡ΠΊΠΈ\",\r\n // name: \"Π“Π°Ρ‡ΠΊΠΈ\",\r\n // price: 30,\r\n // info: {\r\n // name: \"Π“Π°Ρ‡ΠΊΠΈ\",\r\n // description:\r\n // \"Π“Π°Ρ‡ΠΊΠΈ Π½Π° Π·Π²ΠΎΡ€ΠΎΡ‚Π½Ρ–ΠΉ стороні. На Π²ΠΈΠΏΠ°Π΄ΠΎΠΊ, якщо ΠΌΠ°Ρ”Ρ‚Π΅ Π΄ΡƒΠΆΠ΅ Ρ„Π°ΠΊΡ‚ΡƒΡ€Π½Ρƒ ΠΏΠΎΠ²Π΅Ρ€Ρ…Π½ΡŽ Ρ– Π΄Π²ΠΎΡΡ‚ΠΎΡ€ΠΎΠ½Π½ΡŒΠΎΠ³ΠΎ скотча Π½Π΅Π΄ΠΎΡΡ‚Π°Ρ‚Π½ΡŒΠΎ.\",\r\n // images: [\"assets/img/plastic_hooks.jpg\"],\r\n // },\r\n // },\r\n ],\r\n },\r\n ],\r\n },\r\n {\r\n id: 'Π₯олст',\r\n name: t('Π₯олст'),\r\n info: {\r\n name: t('Π”Ρ€ΡƒΠΊ Π½Π° холсті'),\r\n description: t(\r\n 'Ми Π΄Ρ€ΡƒΠΊΡƒΡ”ΠΌΠΎ Π½Π° Π½Π°Ρ‚ΡƒΡ€Π°Π»ΡŒΠ½ΠΎΠΌΡƒ холсті Ρ– використовуємо Π³Π°Π»Π΅Ρ€Π΅ΠΉΠ½Ρƒ натяТку Π½Π° дСрСв’яний ΠΏΡ–Π΄Ρ€Π°ΠΌΠ½ΠΈΠΊ. ΠŸΡ€ΠΈ Ρ‚Π°ΠΊΡ–ΠΉ натяТці зобраТСння Π·Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ Π½Π° Π±ΠΎΠΊΠΎΠ²Ρ– сторони холсту Ρ– Π·Π°Π³ΠΈΠ½Π°Ρ”Ρ‚ΡŒΡΡ ΠΏΡ–Π΄ ΠΏΡ–Π΄Ρ€Π°ΠΌΠ½ΠΈΠΊ. Π’Π°ΠΊΠΈΠΌ Ρ‡ΠΈΠ½ΠΎΠΌ холст Ρ‡ΡƒΠ΄ΠΎΠ²ΠΎ виглядає Π½Π° стіні Ρ– Π½Π΅ ΠΏΠΎΡ‚Ρ€Π΅Π±ΡƒΡ” Π΄ΠΎΠ΄Π°Ρ‚ΠΊΠΎΠ²ΠΎΡ— Ρ€Π°ΠΌΠΈ.'\r\n ),\r\n images: [\r\n process.env.PUBLIC_URL + '/assets/img/canvas1.jpg',\r\n process.env.PUBLIC_URL + '/assets/img/canvas2.jpg',\r\n process.env.PUBLIC_URL + '/assets/img/canvas3.jpg',\r\n ],\r\n },\r\n sizes: [\r\n {\r\n id: '30Ρ…40 см',\r\n name: '30Ρ…40 см',\r\n width: 300,\r\n height: 400,\r\n ratio: '3-4',\r\n price: 890,\r\n oldPrice: 1110,\r\n hangers: [\r\n {\r\n id: 'ДСрСвянный ΠΏΠΎΠ΄Ρ€Π°ΠΌΠ½ΠΈΠΊ',\r\n name: t('ДСрСв’яний ΠΏΡ–Π΄Ρ€Π°ΠΌΠ½ΠΈΠΊ'),\r\n price: 0,\r\n isDefault: true,\r\n },\r\n ],\r\n },\r\n {\r\n id: '40Ρ…50 см',\r\n name: '40Ρ…50 см',\r\n width: 400,\r\n height: 500,\r\n ratio: '4-5',\r\n price: 1190,\r\n oldPrice: 1490,\r\n hangers: [\r\n {\r\n id: 'ДСрСвянный ΠΏΠΎΠ΄Ρ€Π°ΠΌΠ½ΠΈΠΊ',\r\n name: t('ДСрСв’яний ΠΏΡ–Π΄Ρ€Π°ΠΌΠ½ΠΈΠΊ'),\r\n price: 0,\r\n isDefault: true,\r\n },\r\n ],\r\n },\r\n {\r\n id: '50Ρ…70 см',\r\n name: '50Ρ…70 см',\r\n width: 500,\r\n height: 700,\r\n ratio: '5-7',\r\n price: 1490,\r\n oldPrice: 1860,\r\n hangers: [\r\n {\r\n id: 'ДСрСвянный ΠΏΠΎΠ΄Ρ€Π°ΠΌΠ½ΠΈΠΊ',\r\n name: t('ДСрСв’яний ΠΏΡ–Π΄Ρ€Π°ΠΌΠ½ΠΈΠΊ'),\r\n price: 0,\r\n isDefault: true,\r\n },\r\n ],\r\n },\r\n ],\r\n },\r\n ];\r\n\r\n this.state = {\r\n selectedMaterialId: props.initialSelectedMaterialId,\r\n selectedSizeId: props.initialSelectedSizeId,\r\n selectedHangerId: props.initialSelectedHangerId,\r\n isModalOpen: false,\r\n modalName: '',\r\n modalDescription: '',\r\n modalImages: [],\r\n };\r\n }\r\n\r\n riseUpdate = () => {\r\n console.log('recalculate price');\r\n\r\n try {\r\n var material = this.materials.find((material) => {\r\n return material.id === this.state.selectedMaterialId;\r\n });\r\n\r\n var size = material.sizes.find((size) => {\r\n return size.id === this.state.selectedSizeId;\r\n });\r\n\r\n let { price, ratio, width, height } = size;\r\n\r\n var hanger = size.hangers.find((h) => {\r\n return h.id === this.state.selectedHangerId;\r\n });\r\n\r\n price += hanger.price;\r\n\r\n var proposalHangerId = 'Π Π°ΠΌΠΊΠ°';\r\n var proposalHangerName = '';\r\n var proposalHangerPrice = 0;\r\n if (\r\n this.state.selectedMaterialId === 'Π‘ΡƒΠΌΠ°Π³Π°' &&\r\n this.state.selectedHangerId == 'НСт'\r\n ) {\r\n var frameHanger = size.hangers.find((h) => {\r\n return h.id === proposalHangerId && h.inStock !== false;\r\n });\r\n if (frameHanger) {\r\n proposalHangerName = frameHanger.name;\r\n proposalHangerPrice = frameHanger.price;\r\n }\r\n }\r\n\r\n this.props.onChanged({\r\n selectedMaterialId: this.state.selectedMaterialId,\r\n selectedSizeId: this.state.selectedSizeId,\r\n selectedHangerId: this.state.selectedHangerId,\r\n selectedMaterialName: material.name,\r\n selectedHangerName: hanger.name,\r\n price,\r\n ratio,\r\n width,\r\n height,\r\n proposalHangerId,\r\n proposalHangerName,\r\n proposalHangerPrice,\r\n });\r\n } catch (e) {\r\n (console.error || console.log).call(console, e.stack || e);\r\n }\r\n };\r\n\r\n componentDidUpdate(prevProps, prevState) {\r\n if (\r\n this.state.selectedMaterialId !== prevState.selectedMaterialId ||\r\n this.state.selectedSizeId !== prevState.selectedSizeId ||\r\n this.state.selectedHangerId !== prevState.selectedHangerId\r\n ) {\r\n this.riseUpdate();\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n this.riseUpdate();\r\n }\r\n\r\n // useEffect(() => {\r\n // riseUpdate();\r\n // }, [selectedMaterialId, selectedSizeId, selectedHangerId]);\r\n\r\n onMaterialChanged = (changeEvent) => {\r\n var materialId = changeEvent.target.value;\r\n var material = this.materials.find((s) => s.id === materialId);\r\n if (material) {\r\n var size = material.sizes.find((s) => s.id === this.state.selectedSizeId);\r\n if (!size) {\r\n size = material.sizes[1];\r\n }\r\n var sizeId = size.id;\r\n\r\n var hangerId = '',\r\n hanger = null;\r\n if (\r\n this.state.selectedHangerId !== 'НСт' &&\r\n this.state.selectedMaterialId !== 'ΠŸΠ’Π₯'\r\n ) {\r\n hanger = size.hangers.find((s) => s.id === this.state.selectedHangerId);\r\n }\r\n if (!hanger) {\r\n hanger = size.hangers.find((s) => s.isDefault);\r\n if (!hanger && size.hangers.length > 0) {\r\n hanger = size.hangers[0];\r\n }\r\n }\r\n\r\n hangerId = hanger.id;\r\n\r\n this.setState({\r\n selectedMaterialId: materialId,\r\n selectedSizeId: sizeId,\r\n selectedHangerId: hangerId,\r\n });\r\n }\r\n };\r\n\r\n onSizeChanged = (changeEvent) => {\r\n var material = this.materials.find(\r\n (s) => s.id === this.state.selectedMaterialId\r\n );\r\n if (material) {\r\n var sizeId = changeEvent.target.value;\r\n var size = material.sizes.find((s) => s.id === sizeId);\r\n\r\n if (size) {\r\n var hangerId = '',\r\n hanger = null;\r\n if (\r\n this.state.selectedHangerId !== 'НСт' &&\r\n this.state.selectedMaterialId !== 'ΠŸΠ’Π₯'\r\n ) {\r\n hanger = size.hangers.find(\r\n (s) => s.id === this.state.selectedHangerId\r\n );\r\n }\r\n\r\n if (!hanger) {\r\n var hanger = size.hangers.find((s) => s.isDefault);\r\n if (!hanger && size.hangers.length > 0) {\r\n hanger = size.hangers[0];\r\n }\r\n }\r\n\r\n hangerId = hanger.id;\r\n\r\n this.setState({\r\n selectedSizeId: sizeId,\r\n selectedHangerId: hangerId,\r\n });\r\n }\r\n }\r\n };\r\n\r\n onHangerChanged = (changeEvent) => {\r\n var material = this.materials.find(\r\n (s) => s.id === this.state.selectedMaterialId\r\n );\r\n if (material) {\r\n var size = material.sizes.find((s) => s.id === this.state.selectedSizeId);\r\n if (size) {\r\n var hangerId = changeEvent.target.value;\r\n var hanger = size.hangers.find((s) => s.id === hangerId);\r\n if (!hanger) {\r\n hanger = size.hangers.find((s) => s.isDefault);\r\n }\r\n hangerId = hanger.id;\r\n\r\n this.setState({\r\n selectedHangerId: hangerId,\r\n });\r\n }\r\n }\r\n };\r\n\r\n onMaterialInfoClick = (e, material) => {\r\n e.preventDefault();\r\n\r\n if (material) {\r\n this.setState({\r\n modalName: material.info.name,\r\n modalDescription: material.info.description,\r\n modalImages: material.info.images,\r\n isModalOpen: true,\r\n });\r\n }\r\n };\r\n\r\n onHangerInfoClick = (e, hanger) => {\r\n e.preventDefault();\r\n\r\n if (hanger) {\r\n this.setState({\r\n modalName: hanger.info.name,\r\n modalDescription: hanger.info.description,\r\n modalImages: hanger.info.images,\r\n isModalOpen: true,\r\n });\r\n }\r\n };\r\n\r\n onModalClose = (e) => {\r\n this.setState({\r\n isModalOpen: false,\r\n });\r\n };\r\n\r\n renderModalWindow = (props) => {\r\n return (\r\n \r\n
\r\n
{props.name}
\r\n
\r\n
\r\n

{props.description}

\r\n \r\n {props.images &&\r\n props.images.map((src, index) => {\r\n return (\r\n \r\n {props.name}\r\n \r\n );\r\n })}\r\n \r\n
\r\n \r\n );\r\n };\r\n\r\n renderSizesOld = (props) => {\r\n const { t } = this.props;\r\n return (\r\n
\r\n {this.materials\r\n .find((material) => {\r\n return material.id === this.state.selectedMaterialId;\r\n })\r\n .sizes.map((size, index) => {\r\n return (\r\n \r\n );\r\n })}\r\n
\r\n );\r\n };\r\n\r\n renderSizes = (props) => {\r\n const { t } = this.props;\r\n return (\r\n
\r\n {this.materials\r\n .find((material) => {\r\n return material.id === this.state.selectedMaterialId;\r\n })\r\n .sizes.map((size, index) => {\r\n return (\r\n
\r\n \r\n
\r\n );\r\n })}\r\n
\r\n );\r\n };\r\n\r\n renderHangers = (props) => {\r\n const { t } = this.props;\r\n const hangers = props.hangers;\r\n if (!hangers || hangers.length <= 0) {\r\n return null;\r\n }\r\n return (\r\n \r\n

\r\n {t('ΠšΡ€Ρ–ΠΏΠ»Π΅Π½Π½Ρ')}\r\n

\r\n
\r\n {hangers.map((hanger, index) => {\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 render() {\r\n console.log('rendering: editor-materials');\r\n const { t } = this.props;\r\n let size = this.materials\r\n .find((material) => {\r\n return material.id === this.state.selectedMaterialId;\r\n })\r\n .sizes.find((size) => {\r\n return size.id === this.state.selectedSizeId;\r\n });\r\n let hangers = null;\r\n if (size) {\r\n hangers = size.hangers;\r\n }\r\n\r\n return (\r\n \r\n

ΠœΠ°Ρ‚Π΅Ρ€Ρ–Π°Π»

\r\n
\r\n {this.materials.map((material, index) => {\r\n return (\r\n \r\n );\r\n })}\r\n
\r\n
\r\n
\r\n

\r\n {t('Π ΠΎΠ·ΠΌΡ–Ρ€')}\r\n

\r\n
\r\n
\r\n \r\n {t('Акційна Ρ†Ρ–Π½Π°!')}\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 withTranslation()(EditorMaterials);\r\n","export const getPublicUrl = (i18n) => {\r\n try {\r\n var split = process.env.PUBLIC_URL.split(\"/\");\r\n let result = split[0];\r\n\r\n if (i18n.language !== \"uk\") {\r\n result += \"/\" + i18n.language;\r\n }\r\n\r\n for (let i = 1; i < split.length; i++) {\r\n result += \"/\" + split[i];\r\n }\r\n\r\n return result;\r\n } catch (e) {\r\n (console.error || console.log).call(console, e.stack || e);\r\n return process.env.PUBLIC_URL;\r\n }\r\n};\r\n\r\nexport const getUrlQuery = (obj) => {\r\n try {\r\n const {\r\n date,\r\n printWidth,\r\n printHeight,\r\n style,\r\n centerLat,\r\n centerLon,\r\n mapWidth,\r\n mapHeight,\r\n containerWidth,\r\n containerHeight,\r\n background,\r\n stroke,\r\n isGridEnabled,\r\n isConstellationsEnabled,\r\n isMWEnabled,\r\n isNamesEnabled,\r\n language,\r\n } = obj;\r\n\r\n let query = \"?\";\r\n query += `centerLat=${centerLat}¢erLon=${centerLon}&date=${date}&mapWidth=${mapWidth}&mapHeight=${mapHeight}&containerWidth=${containerWidth}&containerHeight=${containerHeight}&background=${encodeURIComponent(\r\n background\r\n )}&stroke=${encodeURIComponent(\r\n stroke\r\n )}&isGridEnabled=${isGridEnabled}&isConstellationsEnabled=${isConstellationsEnabled}&isMWEnabled=${isMWEnabled}&isNamesEnabled=${isNamesEnabled}&language=${language}&printWidth=${printWidth}&printHeight=${printHeight}&style=${style}`;\r\n return query;\r\n } catch (e) {\r\n (console.error || console.log).call(console, e.stack || e);\r\n return null;\r\n }\r\n};\r\n\r\nexport const getAllStyles = (isTest) => {\r\n let styles = [\r\n {\r\n id: \"simple_white\",\r\n name: \"white\",\r\n },\r\n {\r\n id: \"simple_black\",\r\n name: \"black\",\r\n },\r\n {\r\n id: \"peak\",\r\n name: \"peak\",\r\n },\r\n {\r\n id: \"simple_white_overlay_couple\",\r\n name: \"couple\",\r\n },\r\n ];\r\n\r\n if (isTest) {\r\n styles.push({\r\n id: \"simple_white_clip_heart\",\r\n name: \"white heart\",\r\n });\r\n styles.push({\r\n id: \"simple_black_clip_heart\",\r\n name: \"black heart\",\r\n });\r\n }\r\n return styles;\r\n};\r\nexport const getStyleSettingsByStyleId = (styleId) => {\r\n try {\r\n let background = \"\";\r\n let stroke = \"\";\r\n\r\n switch (styleId) {\r\n case \"simple_black\":\r\n background = \"#000000\";\r\n stroke = \"#ffffff\";\r\n\r\n break;\r\n case \"simple_white\":\r\n background = \"#000000\";\r\n stroke = \"#000000\";\r\n\r\n break;\r\n\r\n case \"peak\":\r\n background = \"#09242E\";\r\n stroke = \"#ffffff\";\r\n break;\r\n case \"simple_white_overlay_couple\":\r\n background = \"#000000\";\r\n stroke = \"#000000\";\r\n\r\n break;\r\n case \"simple_white_clip_heart\":\r\n background = \"#000000\";\r\n stroke = \"#000000\";\r\n\r\n break;\r\n case \"simple_black_clip_heart\":\r\n background = \"#000000\";\r\n stroke = \"#ffffff\";\r\n\r\n break;\r\n default:\r\n throw \"НС ΠΌΠΎΠ³Ρƒ Π½Π°ΠΉΡ‚ΠΈ ΡΡ‚ΠΈΠ»ΡŒ: \" + styleId;\r\n }\r\n return {\r\n background,\r\n stroke,\r\n };\r\n } catch (e) {\r\n (console.error || console.log).call(console, e.stack || e);\r\n }\r\n};\r\n","import React, { PureComponent } from \"react\";\r\n\r\nimport Autocomplete from \"./editor-autocomplete\";\r\nimport GeolocationComponent from \"../geolocationComponent\";\r\nimport EditorDatePicker from \"./editor-datePicker\";\r\n\r\nimport \"./editor-sidebar.css\";\r\nimport classNames from \"classnames\";\r\n\r\nimport Materials from \"./editor-materials\";\r\n\r\nimport ErrorBoundary from \"react-error-boundary\";\r\nimport HyperModal from \"react-hyper-modal\";\r\nimport Carousel from \"react-bootstrap/Carousel\";\r\nimport { withTranslation } from \"react-i18next\";\r\nimport { getPublicUrl, getAllStyles } from \"../../utils/utils\";\r\n\r\nclass EditorSidebar extends PureComponent {\r\n constructor(props) {\r\n super(props);\r\n\r\n const { t } = props;\r\n\r\n this._bottom = React.createRef();\r\n this.materialInfo = null;\r\n this.styles = getAllStyles(true);\r\n\r\n this.state = {\r\n sidebarMenuLinks: [true, false, false, false, false],\r\n isModalOpen: false,\r\n isProposedTextModalOpen: false,\r\n proposalHangerPrice: 0,\r\n };\r\n\r\n this._proposedTexts = [\r\n t(\"Π—ΠΎΡ€Ρ–, ΠΏΡ–Π΄ якими\\nпочалася наша історія\\n❀️\"),\r\n t(\"Π”Π΅Π½ΡŒ, ΠΊΠΎΠ»ΠΈ\\nпочалася наша ΠΏΡ€ΠΈΠ³ΠΎΠ΄Π°\\n❀️\"),\r\n t(\"Казкова ΠΌΠΈΡ‚ΡŒ\\n❀️\"),\r\n t(\"ΠœΠΎΡ— щасливі Π·ΠΎΡ€Ρ–\"),\r\n t(\"Найкращий дСнь ΠΌΠΎΠ³ΠΎ Тиття\\n❀️\"),\r\n t(\"Π’ΠΎΡ‡ΠΊΠ° Π²Ρ–Π΄Π»Ρ–ΠΊΡƒ\"),\r\n t(\"ΠŸΠΎΡ‡Π°Ρ‚ΠΎΠΊ Π²Π΅Π»ΠΈΠΊΠΎΡ— ΠΏΠΎΠ΄ΠΎΡ€ΠΎΠΆΡ–\"),\r\n t(\"Π’ΠΈ з’явився Π² ΠΌΠΎΡ”ΠΌΡƒ ΠΆΠΈΡ‚Ρ‚Ρ–\\n❀️\"),\r\n t(\"Ми Π·ΡƒΡΡ‚Ρ€Ρ–Π»ΠΈΡΡŒ ΠΏΡ–Π΄ Ρ†ΠΈΠΌΠΈ зорями\\n❀️\"),\r\n t(\"Π’ΠΈ народилася, Ρ‰ΠΎΠ± Π·Π°ΠΏΠ°Π»ΠΈΡ‚ΠΈ Ρ†Π΅ΠΉ світ\"),\r\n ];\r\n this._selectedProposedTextIndex = 0;\r\n this._isSmallScreen = true;\r\n }\r\n\r\n componentDidMount() {\r\n window.addEventListener(\"resize\", this.updateWindowDimensions);\r\n this.updateWindowDimensions();\r\n }\r\n\r\n componentWillUnmount() {\r\n window.removeEventListener(\"resize\", this.updateWindowDimensions);\r\n }\r\n\r\n updateWindowDimensions = () => {\r\n console.log(\"Calculating window size\");\r\n let width = window.innerWidth;\r\n this._isSmallScreen = width < 768 ? true : false;\r\n };\r\n\r\n scrollToBottom = () => {\r\n console.log(\"scrolling\");\r\n try {\r\n this._bottom.current.scrollIntoView({\r\n behavior: \"smooth\",\r\n block: \"end\",\r\n inline: \"nearest\",\r\n });\r\n } catch (e) {\r\n (console.error || console.log).call(console, e.stack || e);\r\n }\r\n };\r\n\r\n onChatClick = (e) => {\r\n e.preventDefault();\r\n try {\r\n window.jivo_api.open();\r\n } catch (e) {\r\n (console.error || console.log).call(console, e.stack || e);\r\n }\r\n };\r\n\r\n onSideBarMenuClick = (e, index) => {\r\n e.preventDefault();\r\n\r\n var sidebarMenuLinks = [...this.state.sidebarMenuLinks];\r\n\r\n for (var i = 0; i < sidebarMenuLinks.length; i++) {\r\n if (i === index) {\r\n sidebarMenuLinks[i] = true;\r\n } else {\r\n sidebarMenuLinks[i] = false;\r\n }\r\n }\r\n if (this._isSmallScreen) {\r\n this.setState(\r\n { sidebarMenuLinks: sidebarMenuLinks },\r\n this.scrollToBottom\r\n );\r\n } else {\r\n this.setState({ sidebarMenuLinks: sidebarMenuLinks });\r\n }\r\n };\r\n\r\n onMaterialChanged = (info) => {\r\n this.materialInfo = info;\r\n this.props.onMaterialChanged(info);\r\n };\r\n\r\n onMakeOrderClick = (e) => {\r\n e.preventDefault();\r\n if (this.materialInfo && this.materialInfo.proposalHangerPrice > 0) {\r\n this.setState({\r\n isModalOpen: true,\r\n proposalHangerPrice: this.materialInfo.proposalHangerPrice,\r\n });\r\n } else {\r\n this.props.onMakeOrderClick();\r\n }\r\n };\r\n\r\n onAddFrameClick = (e) => {\r\n e.preventDefault();\r\n var materialAlterInfo = {\r\n selectedHangerId: this.materialInfo.proposalHangerId,\r\n selectedHangerName: this.materialInfo.proposalHangerName,\r\n price: this.materialInfo.price + this.materialInfo.proposalHangerPrice,\r\n };\r\n this.props.onMakeOrderClick(materialAlterInfo);\r\n };\r\n\r\n onContinueWithoutFrameClick = (e) => {\r\n e.preventDefault();\r\n this.props.onMakeOrderClick();\r\n };\r\n\r\n renderSidebarMenu({ t }) {\r\n var createItem = (name, icon) => {\r\n return { name: name, icon: icon };\r\n };\r\n\r\n var items = [\r\n createItem(t(\"ΠŸΠΎΠ΄Ρ–Ρ\"), \"fa-map-marker\"),\r\n createItem(t(\"Π‘Ρ‚ΠΈΠ»ΡŒ\"), \"fa-paint-brush\"),\r\n createItem(t(\"ΠœΠ°Ρ‚Π΅Ρ€Ρ–Π°Π»\"), \"fa-map\"),\r\n createItem(t(\"Написи\"), \"fa-pencil\"),\r\n ];\r\n\r\n return items.map((item, index, array) => {\r\n var itemClass = classNames(\r\n \"h-100 g-color-white-opacity-0_6 g-color-primary--hover g-text-underline--none--hover g-font-weight-400\",\r\n {\r\n active: this.state.sidebarMenuLinks[index],\r\n }\r\n );\r\n return (\r\n
  • \r\n this.onSideBarMenuClick(e, index)}\r\n >\r\n \r\n
    \r\n {item.name}\r\n \r\n
  • \r\n );\r\n });\r\n }\r\n\r\n renderStyles = () => {\r\n const { t } = this.props;\r\n\r\n return (\r\n
    \r\n {this.styles.map((style, index) => {\r\n return (\r\n
    \r\n

    \r\n {style.name}\r\n

    \r\n \r\n );\r\n })}\r\n \r\n );\r\n };\r\n\r\n // renderStyles = () => {\r\n // const { t } = this.props;\r\n\r\n // return (
    \r\n //
    \r\n // {this.styles.map((style, index) => {\r\n // return (\r\n //
    \r\n //
    \r\n //

    \r\n // {style.name}\r\n //

    \r\n // \r\n // );\r\n // })}\r\n // \r\n // \r\n // )\r\n // };\r\n\r\n renderFeatures = () => {\r\n const { t } = this.props;\r\n\r\n return (\r\n
    \r\n {this.props.features.map((feature, index) => {\r\n return (\r\n
    \r\n

    \r\n {t(feature.name)}\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 onModalClose = (e) => {\r\n this.setState({\r\n isModalOpen: false,\r\n });\r\n };\r\n\r\n proposedTextModalOpen = (e) => {\r\n e.preventDefault();\r\n this.setState({\r\n isProposedTextModalOpen: true,\r\n });\r\n };\r\n\r\n onProposedTextModalClose = (e) => {\r\n this.setState({\r\n isProposedTextModalOpen: false,\r\n });\r\n };\r\n\r\n onProposedTextSwitched = (selectedIndex, e) => {\r\n this._selectedProposedTextIndex = selectedIndex;\r\n };\r\n\r\n onProposedTextSelected = (e) => {\r\n if (this._selectedProposedTextIndex >= this._proposedTexts.length) {\r\n this._selectedProposedTextIndex = this._proposedTexts.length - 1;\r\n }\r\n var text = this._proposedTexts[this._selectedProposedTextIndex];\r\n\r\n this.onProposedTextModalClose();\r\n this.props.onText1Selected(text);\r\n };\r\n\r\n render() {\r\n console.log(\"rendering editor-sidebar\");\r\n const { t, i18n } = this.props;\r\n\r\n return (\r\n \r\n
    \r\n
      \r\n \r\n {this.renderSidebarMenu(this.props)}\r\n
    \r\n
    \r\n \r\n
    \r\n \r\n \r\n
    \r\n

    {t(\"ΠŸΠΎΠ΄Ρ–Ρ\")}

    \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 this.onSideBarMenuClick(e, 1)}\r\n >\r\n {t(\"ΠšΡ€ΠΎΠΊ 2: Π‘Ρ‚ΠΈΠ»ΡŒ\")} \r\n \r\n
    \r\n \r\n

    Π‘Ρ‚ΠΈΠ»ΡŒ

    \r\n {this.renderStyles()}\r\n {/* \r\n
    \r\n
    \r\n {this.styles.map((style, index) => {\r\n return (\r\n \r\n
    \r\n \r\n this.props.onStyleChanged(e, style.id)\r\n }\r\n />\r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n

    {style.id}

    \r\n \r\n );\r\n })}\r\n
    \r\n */}\r\n

    {t(\"Π•Π»Π΅ΠΌΠ΅Π½Ρ‚ΠΈ\")}

    \r\n {this.renderFeatures()}\r\n this.onSideBarMenuClick(e, 2)}\r\n >\r\n {t(\"ΠšΡ€ΠΎΠΊ 3: ΠœΠ°Ρ‚Π΅Ρ€Ρ–Π°Π»\")} \r\n \r\n \r\n \r\n \r\n\r\n this.onSideBarMenuClick(e, 3)}\r\n >\r\n {t(\"ΠšΡ€ΠΎΠΊ 4: Написи\")} \r\n \r\n \r\n \r\n

    {t(\"Написи\")}

    \r\n\r\n
    \r\n
    \r\n \r\n \r\n {t(\"Π†Π½ΡˆΡ– Π²Π°Ρ€Ρ–Π°Π½Ρ‚ΠΈ\")}\r\n \r\n
    \r\n\r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n \r\n {t(\"ΠšΡ€ΠΎΠΊ 5: ΠšΡƒΠΏΠΈΡ‚ΠΈ\")} \r\n \r\n \r\n \r\n\r\n
    \r\n
    \r\n
      \r\n
    • \r\n \r\n \r\n
      \r\n {t(\"Π’Ρ–Π΄ΠΊΡ€ΠΈΡ‚ΠΈ Ρ‡Π°Ρ‚\")}\r\n \r\n
    • \r\n
    • \r\n \r\n \r\n
      \r\n {t(\"ΠšΡƒΠΏΠΈΡ‚ΠΈ\")}{\" \"}\r\n \r\n {\" \"}\r\n {this.props.price} {t(\"Π³Ρ€Π½\")}\r\n \r\n \r\n
    • \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n {t(\"Π’Ρ–Π΄ΠΊΡ€ΠΈΡ‚ΠΈ Ρ‡Π°Ρ‚\")}\r\n \r\n \r\n\r\n \r\n \r\n {this.props.price}{\" \"}\r\n {t(\"Π³Ρ€Π½\")}\r\n \r\n \r\n {t(\"ΠšΡƒΠΏΠΈΡ‚ΠΈ\")} \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    {t(\"Π§ΡƒΠ΄ΠΎΠ²ΠΈΠΉ Π²ΠΈΠ±Ρ–Ρ€!\")}
    \r\n
    \r\n
    \r\n
    \r\n {t(\"ΠŸΠ»Π°ΠΊΠ°Ρ‚ΠΈ Ρƒ Ρ€Π°ΠΌΠΊΠ°Ρ… Π²ΠΈΠ³Π»ΡΠ΄Π°ΡŽΡ‚ΡŒ Ρ‰Π΅ ΠΊΡ€Π°Ρ‰Π΅. Π‘Π°ΠΆΠ°Ρ”Ρ‚Π΅ Π΄ΠΎΠ΄Π°Ρ‚ΠΈ Ρ€Π°ΠΌΠΊΡƒ?\")}\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    {t(\"Π Π°ΠΌΠΊΠ°\")}
    \r\n

    \r\n {t(\r\n \"Π’ΠΎΠ½ΠΊΠ° пластикова Ρ€Π°ΠΌΠΊΠ° Ρ‡ΠΎΡ€Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ»ΡŒΠΎΡ€Ρƒ Π·Ρ– склом (Π½Π°Ρ‚ΡƒΡ€Π°Π»ΡŒΠ½ΠΈΠΌ Π°Π±ΠΎ Π°ΠΊΡ€ΠΈΠ»ΠΎΠ²ΠΈΠΌ) Ρ– Π·Ρ€ΡƒΡ‡Π½ΠΈΠΌ підвісом. Π’Π°ΠΊΡ– Ρ€Π°ΠΌΠΊΠΈ Π΄ΠΎΠ±Ρ€Π΅ ΠΏΡ–Π΄Ρ…ΠΎΠ΄ΡΡ‚ΡŒ Π΄ΠΎ Π±ΡƒΠ΄ΡŒ-якого ΡΡ‚ΠΈΠ»ΡŽ інтСр’єру.\"\r\n )}\r\n

    \r\n
    \r\n
    \r\n \r\n {t(\"Π”ΠΎΠ΄Π°Ρ‚ΠΈ\")}\r\n \r\n
    \r\n \r\n +{this.state.proposalHangerPrice} {t(\"Π³Ρ€Π½\")}\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n {t(\"ΠŸΡ€ΠΎΠ΄ΠΎΠ²ΠΆΠΈΡ‚ΠΈ Π±Π΅Π· Ρ€Π°ΠΌΠΊΠΈ\")}\r\n \r\n
    \r\n \r\n \r\n
    \r\n
    {t(\"ΠžΠ±Π΅Ρ€Ρ–Ρ‚ΡŒ напис\")}
    \r\n
    \r\n
    \r\n \r\n {this._proposedTexts.map((text, index) => {\r\n return (\r\n \r\n \r\n \r\n
    \r\n

    \r\n {text}\r\n

    \r\n
    \r\n
    \r\n
    \r\n );\r\n })}\r\n \r\n
    \r\n
    \r\n \r\n {t(\"ΠžΠ±Ρ€Π°Ρ‚ΠΈ Ρ†Π΅ΠΉ Π²Π°Ρ€Ρ–Π°Π½Ρ‚\")}\r\n \r\n
    \r\n \r\n
    \r\n );\r\n }\r\n}\r\nexport default withTranslation()(EditorSidebar);\r\n","import React, { Component, Suspense } from \"react\";\r\nimport Map from \"./editor-components/editor-map\";\r\nimport classNames from \"classnames\";\r\nimport moment from \"moment\";\r\nimport formatcoords from \"formatcoords\";\r\nimport { Redirect } from \"react-router-dom\";\r\nimport store from \"store\";\r\nimport EditorSidebar from \"./editor-components/editor-sidebar\";\r\nimport queryString from \"query-string\";\r\nimport { withTranslation } from \"react-i18next\";\r\nimport i18n from \"i18next\";\r\nimport { getStyleSettingsByStyleId } from \"../utils/utils\";\r\n\r\nclass EditorComponent extends Component {\r\n static whyDidYouRender = true;\r\n\r\n constructor(props) {\r\n super(props);\r\n this._map = React.createRef();\r\n\r\n const { t } = props;\r\n var initialPlace = {\r\n city: t(\"ΠšΠΈΡ—Π²\"),\r\n description: t(\"ΠšΠΈΡ—Π²\"),\r\n country: t(\"Π£ΠΊΡ€Π°Ρ—Π½Π°\"),\r\n latitude: 50.45466,\r\n longitude: 30.5238,\r\n };\r\n\r\n var initialDate = new Date();\r\n initialDate.setHours(0);\r\n initialDate.setMinutes(0);\r\n initialDate.setSeconds(0);\r\n initialDate.setMilliseconds(0);\r\n\r\n //todo: respect DST\r\n var initialUtcDate = new Date(initialDate.getTime() + (-120) * 60000);\r\n\r\n let style = \"simple_white\";\r\n let size = {\r\n selectedSizeId: \"30Ρ…40 см\",\r\n ratio: \"3-4\",\r\n printWidth: 300,\r\n printHeight: 400,\r\n };\r\n let isTest = false;\r\n\r\n const queryParams = queryString.parse(props.location.search);\r\n if (queryParams) {\r\n if (queryParams.style) {\r\n style = queryParams.style;\r\n }\r\n if (queryParams.size) {\r\n console.log(\"size:\", queryParams.size);\r\n switch (queryParams.size) {\r\n case \"30\":\r\n size = {\r\n selectedSizeId: \"30Ρ…40 см\",\r\n ratio: \"3-4\",\r\n printWidth: 300,\r\n printHeight: 400,\r\n };\r\n break;\r\n case \"40\":\r\n size = {\r\n selectedSizeId: \"40Ρ…50 см\",\r\n ratio: \"4-5\",\r\n printWidth: 400,\r\n printHeight: 500,\r\n };\r\n break;\r\n case \"50\":\r\n size = {\r\n selectedSizeId: \"50Ρ…70 см\",\r\n ratio: \"5-7\",\r\n printWidth: 500,\r\n printHeight: 700,\r\n };\r\n break;\r\n case \"70\":\r\n size = {\r\n selectedSizeId: \"70Ρ…100 см\",\r\n ratio: \"7-10\",\r\n printWidth: 700,\r\n printHeight: 1000,\r\n };\r\n break;\r\n }\r\n }\r\n if (queryParams.isTest) {\r\n if (queryParams.isTest.toLowerCase() === \"true\") {\r\n isTest = true;\r\n }\r\n }\r\n }\r\n var text2 = this.getText2(initialPlace, initialDate, false);\r\n var state = {\r\n redirect: null,\r\n isSmallScreen: true,\r\n isTest: isTest,\r\n\r\n map: {\r\n background: \"#000000\",\r\n stroke: \"#ffffff\",\r\n features: [\r\n {\r\n id: \"isConstellationsEnabled\",\r\n name: t(\"Π‘ΡƒΠ·Ρ–Ρ€'я\"),\r\n isEnabled: true,\r\n },\r\n {\r\n id: \"isGridEnabled\",\r\n name: t(\"Π‘Ρ–Ρ‚ΠΊΠ°\"),\r\n isEnabled: false,\r\n },\r\n\r\n {\r\n id: \"isMWEnabled\",\r\n name: t(\"Π§ΡƒΠΌΠ°Ρ†ΡŒΠΊΠΈΠΉ ΡˆΠ»ΡΡ…\"),\r\n isEnabled: false,\r\n },\r\n\r\n {\r\n id: \"isNamesEnabled\",\r\n name: t(\"Назви сузір'Ρ—Π²\"),\r\n isEnabled: false,\r\n },\r\n ],\r\n },\r\n place: initialPlace,\r\n localDate: initialDate,\r\n utcDate: initialUtcDate,\r\n isTimePicked: false,\r\n //text1: \"Наш особливий дСнь\\nβ™‘\",\r\n text1: t(\"Π—ΠΎΡ€Ρ–, ΠΏΡ–Π΄ якими\\nпочалася наша історія\\n❀️\"),\r\n //text1: \"ЗорянС Π½Π΅Π±ΠΎ Π² Ρ†Π΅ΠΉ дСнь\\nβ™‘\",\r\n text2: text2,\r\n text2BeforeManualEdit: text2,\r\n price: 0,\r\n selectedMaterialId: \"Π‘ΡƒΠΌΠ°Π³Π°\",\r\n selectedHangerId: \"НСт\",\r\n selectedMaterialName: \"ΠŸΠ°ΠΏΡ–Ρ€\",\r\n selectedHangerName: \"НСмає\",\r\n selectedStyleId: style,\r\n ...size,\r\n };\r\n\r\n try {\r\n var editorStateDateString = store.get(\"editorStateDate\");\r\n if (editorStateDateString) {\r\n var editorStateDate = new Date(editorStateDateString);\r\n //addDays(1)\r\n editorStateDate.setDate(editorStateDate.getDate() + 1);\r\n if (new Date() < editorStateDate) {\r\n console.log(\"restoring state...\");\r\n var restoredState = store.get(\"editorState\");\r\n if (restoredState) {\r\n restoredState.date = new Date(restoredState.date);\r\n\r\n state = { ...state, ...restoredState };\r\n console.log(\"state restored\");\r\n }\r\n }\r\n }\r\n } catch (e) {\r\n (console.error || console.log).call(console, e.stack || e);\r\n }\r\n\r\n state.initialSelectedMaterialId = state.selectedMaterialId;\r\n state.initialSelectedSizeId = state.selectedSizeId;\r\n state.initialSelectedHangerId = state.selectedHangerId;\r\n this.state = state;\r\n //console.log(this.state);\r\n }\r\n\r\n\r\n\r\n\r\n componentDidMount() {\r\n try {\r\n var host = window.location.hostname;\r\n if (!host.startsWith(\"localhost\")) {\r\n window.fbq(\"trackSingle\", \"532340200777420\", \"Lead\", {\r\n content_name: \"Editor\",\r\n });\r\n\r\n window.gtag(\"event\", \"lead\", {\r\n send_to: \"UA-119404542-2\",\r\n event_category: \"main\",\r\n });\r\n }\r\n } catch (e) {\r\n (console.error || console.log).call(console, e.stack || e);\r\n }\r\n }\r\n\r\n onText1Changed = (event) => {\r\n try {\r\n this.setState({ text1: event.target.value });\r\n } catch (e) {\r\n (console.error || console.log).call(console, e.stack || e);\r\n }\r\n };\r\n\r\n onText1Selected = (text) => {\r\n try {\r\n this.setState({ text1: text });\r\n } catch (e) {\r\n (console.error || console.log).call(console, e.stack || e);\r\n }\r\n };\r\n\r\n onText2Changed = (event) => {\r\n try {\r\n this.setState({ text2: event.target.value });\r\n } catch (e) {\r\n (console.error || console.log).call(console, e.stack || e);\r\n }\r\n };\r\n\r\n onPlaceChanged = (place) => {\r\n try {\r\n this.updatePlaceAndText2(place);\r\n\r\n if (place && place.city) {\r\n var host = window.location.hostname;\r\n if (!host.startsWith(\"localhost\")) {\r\n window.gtag(\"event\", \"search\", {\r\n send_to: \"UA-119404542-2\",\r\n event_category: \"main\",\r\n event_label: place.city,\r\n });\r\n window.fbq(\"trackSingle\", \"532340200777420\", \"Search\", {\r\n search_string: place.city,\r\n });\r\n }\r\n }\r\n } catch (e) {\r\n (console.error || console.log).call(console, e.stack || e);\r\n }\r\n };\r\n\r\n onDateChanged = (localDate, utcDate, isTimePicked) => {\r\n try {\r\n var local = localDate.toDate();\r\n console.log(\"local date:\", local);\r\n var utc = utcDate.toDate();\r\n console.log(\"utc date:\", utc);\r\n this.updateDateAndText2(local, utc, isTimePicked);\r\n } catch (e) {\r\n (console.error || console.log).call(console, e.stack || e);\r\n }\r\n };\r\n\r\n getText2(place, date, isTimePicked) {\r\n try {\r\n const { city, country, latitude, longitude } = place;\r\n var momentDate = new moment(date);\r\n return (\r\n city +\r\n \", \" +\r\n country +\r\n \"\\n\" +\r\n (isTimePicked\r\n ? momentDate.format(\"DD.MM.YYYY HH:mm\")\r\n : momentDate.format(\"DD.MM.YYYY\")) +\r\n \"\\n\" +\r\n //\"DDMMssX\"\r\n formatcoords(latitude, longitude).format(\"DΒ°M's\\\"X\", {\r\n latLonSeparator: \" \",\r\n decimalPlaces: 2,\r\n })\r\n );\r\n } catch (e) {\r\n (console.error || console.log).call(console, e.stack || e);\r\n }\r\n }\r\n\r\n updateDateAndText2(localDate, utcDate, isTimePicked) {\r\n var text2 = this.getText2(this.state.place, localDate, isTimePicked);\r\n this.setState({ utcDate: utcDate, localDate: localDate, text2, isTimePicked, text2BeforeManualEdit: text2 });\r\n }\r\n\r\n updatePlaceAndText2(place) {\r\n var text2 = this.getText2(place, this.state.localDate, this.state.isTimePicked);\r\n this.setState({ place, text2, text2BeforeManualEdit: text2 });\r\n }\r\n\r\n onFeatureChanged = (event, featureId) => {\r\n const target = event.target;\r\n const value = target.checked;\r\n\r\n this.setState((prevState) => ({\r\n map: {\r\n ...prevState.map,\r\n features: prevState.map.features.map((el) =>\r\n el.id === featureId ? { ...el, isEnabled: value } : el\r\n ),\r\n },\r\n }));\r\n };\r\n\r\n onStyleChanged = (e, styleId) => {\r\n const target = e.target;\r\n const value = target.checked;\r\n if (value) {\r\n this.applyStyle(styleId);\r\n }\r\n };\r\n\r\n applyStyle(styleId) {\r\n let styleSettings = getStyleSettingsByStyleId(styleId);\r\n\r\n this.setState((prevState) => ({\r\n map: {\r\n ...prevState.map,\r\n ...styleSettings,\r\n },\r\n selectedStyleId: styleId,\r\n }));\r\n }\r\n\r\n onMaterialChanged = (info) => {\r\n const {\r\n price,\r\n ratio,\r\n selectedMaterialId,\r\n selectedSizeId,\r\n selectedHangerId,\r\n selectedMaterialName,\r\n selectedHangerName,\r\n width: printWidth,\r\n height: printHeight,\r\n } = info;\r\n this.setState({\r\n price,\r\n ratio,\r\n selectedMaterialId,\r\n selectedSizeId,\r\n selectedHangerId,\r\n selectedMaterialName,\r\n selectedHangerName,\r\n printWidth,\r\n printHeight,\r\n });\r\n };\r\n\r\n onMakeOrderClick = (materialUpdateInfo) => {\r\n var state = null;\r\n if (materialUpdateInfo) {\r\n state = { ...this.state, ...materialUpdateInfo };\r\n } else {\r\n state = { ...this.state };\r\n }\r\n store.set(\"editorStateDate\", new Date());\r\n store.set(\"editorState\", state);\r\n\r\n const {\r\n utcDate,\r\n text1,\r\n text2,\r\n text2BeforeManualEdit,\r\n price,\r\n selectedMaterialId,\r\n selectedSizeId,\r\n selectedHangerId,\r\n selectedMaterialName,\r\n selectedHangerName,\r\n selectedStyleId,\r\n place,\r\n map,\r\n printWidth,\r\n printHeight,\r\n } = state;\r\n\r\n const {\r\n width: mapWidth,\r\n height: mapHeight,\r\n containerWidth,\r\n containerHeight,\r\n } = this._map.current.getMapSize();\r\n\r\n const isNamesEnabled = map.features.find((f) => f.id === \"isNamesEnabled\");\r\n const convertedMap = {\r\n mapWidth,\r\n mapHeight,\r\n containerWidth,\r\n containerHeight,\r\n background: map.background,\r\n stroke: map.stroke,\r\n isGridEnabled: map.features.find((f) => f.id === \"isGridEnabled\")\r\n .isEnabled,\r\n isConstellationsEnabled: map.features.find(\r\n (f) => f.id === \"isConstellationsEnabled\"\r\n ).isEnabled,\r\n isMWEnabled: map.features.find((f) => f.id === \"isMWEnabled\").isEnabled,\r\n isNamesEnabled: isNamesEnabled ? isNamesEnabled.isEnabled : false,\r\n language: i18n.language,\r\n };\r\n\r\n const convertedDescription = {\r\n material: selectedMaterialName,\r\n size: selectedSizeId,\r\n hanger: selectedHangerName,\r\n style: selectedStyleId,\r\n };\r\n\r\n const product = {\r\n productType: \"sky\",\r\n date: utcDate,\r\n text1,\r\n text2,\r\n text2BeforeManualEdit,\r\n price,\r\n material: selectedMaterialId,\r\n size: selectedSizeId,\r\n hanger: selectedHangerId,\r\n style: selectedStyleId,\r\n printWidth,\r\n printHeight,\r\n place: (({ latitude, longitude, ...rest }) => ({\r\n centerLat: latitude,\r\n centerLon: longitude,\r\n ...rest,\r\n }))(place),\r\n map: convertedMap,\r\n description: convertedDescription,\r\n };\r\n store.set(\"product\", product);\r\n\r\n this.setState({ redirect: \"cart\" });\r\n };\r\n\r\n render() {\r\n if (this.state.redirect) {\r\n return (\r\n \r\n );\r\n }\r\n console.log(\"rendering: editor\");\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\nexport default withTranslation()(EditorComponent);\r\n","import React, { Component, PureComponent } from \"react\";\r\nimport \"./editor-map.css\";\r\nimport i18n from \"i18next\";\r\n\r\nimport DOMPurify from \"dompurify\";\r\n\r\nexport default class Map extends Component {\r\n static whyDidYouRender = true;\r\n isSmallScreen = true;\r\n\r\n constructor(props) {\r\n super(props);\r\n this._poster = React.createRef();\r\n this._posterWrapper = React.createRef();\r\n this._content = React.createRef();\r\n this._map = React.createRef();\r\n\r\n this.state = {\r\n posterWidth: \"-1\",\r\n posterHeight: \"-1\",\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n window.addEventListener(\"resize\", this.updateWindowDimensions);\r\n this.updateWindowDimensions();\r\n }\r\n\r\n componentWillUnmount() {\r\n window.removeEventListener(\"resize\", this.updateWindowDimensions);\r\n }\r\n\r\n updateWindowDimensions = () => {\r\n console.log(\"Calculating window size\");\r\n let windowWidth = window.innerWidth;\r\n let isSmallScreen = windowWidth < 768 ? true : false;\r\n this.isSmallScreen = isSmallScreen;\r\n\r\n this.updatePosterSize(this.props.ratio);\r\n //var styleWidth = width === -1 ? \"auto\" : `${width}px`;\r\n //var styleHeight = height === -1 ? \"auto\" : `${height}px`;\r\n\r\n //this._posterWrapper.current.style.width = styleWidth;\r\n //this._posterWrapper.current.style.height = styleHeight;\r\n };\r\n\r\n updatePosterSize = (ratio) => {\r\n var margin = 2 * 20;\r\n if (!this.isSmallScreen) {\r\n margin = 2 * 100;\r\n }\r\n var maxWidth = this._content.current.offsetWidth - margin;\r\n var maxHeight = this._content.current.offsetHeight - margin;\r\n var ratioSplit = ratio.split(\"-\");\r\n var ratioX = parseInt(ratioSplit[0]);\r\n var ratioY = parseInt(ratioSplit[1]);\r\n var width = -1;\r\n var height = -1;\r\n var tempHeight = (maxWidth * ratioX) / ratioY;\r\n if (tempHeight > maxHeight) {\r\n width = (maxHeight * ratioY) / ratioX;\r\n } else {\r\n height = tempHeight;\r\n }\r\n\r\n this.setState({\r\n posterWidth: width,\r\n posterHeight: height,\r\n });\r\n };\r\n\r\n getFixedText1(text1) {\r\n if (text1) {\r\n try {\r\n return DOMPurify.sanitize(text1).replace(\r\n /❀️/g,\r\n ''\r\n );\r\n } catch (e) {\r\n (console.error || console.log).call(console, e.stack || e);\r\n }\r\n }\r\n return \"\";\r\n }\r\n\r\n componentWillReceiveProps(nextProps) {\r\n this.setState({\r\n text1: this.getFixedText1(nextProps.text1),\r\n });\r\n\r\n if (nextProps.ratio !== this.props.ratio) {\r\n this.updatePosterSize(nextProps.ratio);\r\n }\r\n }\r\n\r\n // shouldComponentUpdate(nextProps, nextState) {\r\n // if (\r\n // nextProps.text1 !== this.props.text1 ||\r\n // nextProps.text2 !== this.props.text2 ||\r\n // nextProps.ratio !== this.props.ratio ||\r\n // nextProps.styleId !== this.props.styleId\r\n // ) {\r\n // console.log(\"map should update!\");\r\n // return true;\r\n // } else {\r\n // console.log(\"map shouldn't update\");\r\n // return false;\r\n // }\r\n // }\r\n\r\n render() {\r\n console.log(\"Rendering editor-map\");\r\n return (\r\n \r\n {/* Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° ΡˆΡ€ΠΈΡ„Ρ‚Π° */}\r\n \r\n \r\n font завантаТСння...\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

    {this.props.text2}

    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n","import React, { PureComponent } from \"react\";\r\n\r\nimport Carousel from \"react-bootstrap/Carousel\";\r\nimport HyperModal from \"react-hyper-modal\";\r\nimport { withTranslation } from \"react-i18next\";\r\n\r\nclass EditorMaterials extends PureComponent {\r\n constructor(props) {\r\n super(props);\r\n const { t } = props;\r\n\r\n this.materials = [\r\n {\r\n id: \"Π‘ΡƒΠΌΠ°Π³Π°\",\r\n name: t(\"ΠŸΠ°ΠΏΡ–Ρ€\"),\r\n info: {\r\n name: t(\"Π”Ρ€ΡƒΠΊ Π½Π° ΠΏΠ°ΠΏΠ΅Ρ€Ρ–\"),\r\n description: t(\r\n \"Ми використовуємо високоякісний ΠΊΠΎΠ»ΡŒΠΎΡ€ΠΎΠ²ΠΈΠΉ Π΄Ρ€ΡƒΠΊ Π½Π° ΠΌΠ°Ρ‚ΠΎΠ²ΠΎΠΌΡƒ ΠΏΠ°ΠΏΠ΅Ρ€Ρ– високої Ρ‰Ρ–Π»ΡŒΠ½ΠΎΡΡ‚Ρ–. Π’Π°ΠΊΠΈΠΉ Π΄Ρ€ΡƒΠΊ Π·Π°Π±Π΅Π·ΠΏΠ΅Ρ‡ΡƒΡ” Ρ„ΠΎΡ‚ΠΎΡ€Π΅Π°Π»Ρ–ΡΡ‚ΠΈΡ‡Π½Ρ–ΡΡ‚ΡŒ Ρ– високу Π΄Π΅Ρ‚Π°Π»Ρ–Π·Π°Ρ†Ρ–ΡŽ ΠΏΠ»Π°ΠΊΠ°Ρ‚Ρ–Π². ΠŸΠ»Π°ΠΊΠ°Ρ‚ΠΈ 30*40 пСрСсилаємо Π² захисній ΠΏΠ°ΠΏΡ†Ρ–, 40*50см Ρ– 50*70см - Ρƒ Ρ‚Ρ€ΠΈΠΊΡƒΡ‚Π½ΠΎΠΌΡƒ тубусі.\"\r\n ),\r\n images: [\r\n process.env.PUBLIC_URL + \"/assets/img/paper1.jpg\",\r\n process.env.PUBLIC_URL + \"/assets/img/paper2.jpg\",\r\n process.env.PUBLIC_URL + \"/assets/img/paper3.jpg\",\r\n ],\r\n },\r\n sizes: [\r\n {\r\n id: \"30Ρ…40 см\",\r\n name: \"30Ρ…40 см\",\r\n width: 400,\r\n height: 300,\r\n ratio: \"3-4\",\r\n price: 390,\r\n oldPrice: 440,\r\n hangers: [\r\n { id: \"НСт\", name: t(\"НСмає\"), price: 0 },\r\n {\r\n id: \"Π Π°ΠΌΠΊΠ°\",\r\n name: t(\"Π Π°ΠΌΠΊΠ°\"),\r\n price: 260,\r\n info: {\r\n name: t(\"Π Π°ΠΌΠΊΠ° для ΠΏΠ»Π°ΠΊΠ°Ρ‚Ρƒ\"),\r\n description: t(\r\n \"Ми використовуємо якісні Ρ‚ΠΎΠ½ΠΊΡ– пластикові Ρ€Π°ΠΌΠΊΠΈ Ρ‡ΠΎΡ€Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ»ΡŒΠΎΡ€Ρƒ Π·Ρ– Π·Ρ€ΡƒΡ‡Π½ΠΈΠΌ підвісом. Π’Π°ΠΊΡ– Ρ€Π°ΠΌΠΊΠΈ Π΄ΠΎΠ±Ρ€Π΅ ΠΏΡ–Π΄Ρ…ΠΎΠ΄ΡΡ‚ΡŒ Π΄ΠΎ Π±ΡƒΠ΄ΡŒ-якого ΡΡ‚ΠΈΠ»ΡŽ інтСр’єру.\\nЗадня стінка - Π”Π’ΠŸ Π· Π³Π°Ρ‡ΠΊΠ°ΠΌΠΈ\"\r\n ),\r\n images: [\r\n process.env.PUBLIC_URL + \"/assets/img/frame1.png\",\r\n process.env.PUBLIC_URL + \"/assets/img/frame2.jpg\",\r\n process.env.PUBLIC_URL + \"/assets/img/frame3.jpg\",\r\n process.env.PUBLIC_URL + \"/assets/img/frame4.jpg\",\r\n process.env.PUBLIC_URL + \"/assets/img/frame5.jpg\",\r\n ],\r\n },\r\n },\r\n ],\r\n },\r\n {\r\n id: \"40Ρ…50 см\",\r\n name: \"40Ρ…50 см\",\r\n width: 400,\r\n height: 500,\r\n ratio: \"4-5\",\r\n price: 490,\r\n oldPrice: 640,\r\n hangers: [\r\n { id: \"НСт\", name: t(\"НСмає\"), price: 0 },\r\n {\r\n id: \"Π Π°ΠΌΠΊΠ°\",\r\n name: t(\"Π Π°ΠΌΠΊΠ°\"),\r\n price: 360,\r\n info: {\r\n name: t(\"Π Π°ΠΌΠΊΠ° для ΠΏΠ»Π°ΠΊΠ°Ρ‚Ρƒ\"),\r\n description: t(\r\n \"Ми використовуємо якісні Ρ‚ΠΎΠ½ΠΊΡ– пластикові Ρ€Π°ΠΌΠΊΠΈ Ρ‡ΠΎΡ€Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ»ΡŒΠΎΡ€Ρƒ Π·Ρ– Π·Ρ€ΡƒΡ‡Π½ΠΈΠΌ підвісом. Π’Π°ΠΊΡ– Ρ€Π°ΠΌΠΊΠΈ Π΄ΠΎΠ±Ρ€Π΅ ΠΏΡ–Π΄Ρ…ΠΎΠ΄ΡΡ‚ΡŒ Π΄ΠΎ Π±ΡƒΠ΄ΡŒ-якого ΡΡ‚ΠΈΠ»ΡŽ інтСр’єру.\\nЗадня стінка - Π”Π’ΠŸ Π· Π³Π°Ρ‡ΠΊΠ°ΠΌΠΈ\"\r\n ),\r\n images: [\r\n process.env.PUBLIC_URL + \"/assets/img/frame1.png\",\r\n process.env.PUBLIC_URL + \"/assets/img/frame2.jpg\",\r\n process.env.PUBLIC_URL + \"/assets/img/frame3.jpg\",\r\n process.env.PUBLIC_URL + \"/assets/img/frame4.jpg\",\r\n process.env.PUBLIC_URL + \"/assets/img/frame5.jpg\",\r\n ],\r\n },\r\n },\r\n ],\r\n },\r\n {\r\n id: \"50Ρ…70 см\",\r\n name: \"50Ρ…70 см\",\r\n width: 500,\r\n height: 700,\r\n ratio: \"5-7\",\r\n price: 590,\r\n oldPrice: 720,\r\n hangers: [\r\n { id: \"НСт\", name: t(\"НСмає\"), price: 0 },\r\n {\r\n id: \"Π Π°ΠΌΠΊΠ°\",\r\n name: t(\"Π Π°ΠΌΠΊΠ°\"),\r\n price: 560,\r\n info: {\r\n name: t(\"Π Π°ΠΌΠΊΠ° для ΠΏΠ»Π°ΠΊΠ°Ρ‚Ρƒ\"),\r\n description: t(\r\n \"Ми використовуємо якісні Ρ‚ΠΎΠ½ΠΊΡ– пластикові Ρ€Π°ΠΌΠΊΠΈ Ρ‡ΠΎΡ€Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ»ΡŒΠΎΡ€Ρƒ Π·Ρ– Π·Ρ€ΡƒΡ‡Π½ΠΈΠΌ підвісом. Π’Π°ΠΊΡ– Ρ€Π°ΠΌΠΊΠΈ Π΄ΠΎΠ±Ρ€Π΅ ΠΏΡ–Π΄Ρ…ΠΎΠ΄ΡΡ‚ΡŒ Π΄ΠΎ Π±ΡƒΠ΄ΡŒ-якого ΡΡ‚ΠΈΠ»ΡŽ інтСр’єру.\\nЗадня стінка - Π”Π’ΠŸ Π· Π³Π°Ρ‡ΠΊΠ°ΠΌΠΈ\"\r\n ),\r\n images: [\r\n process.env.PUBLIC_URL + \"/assets/img/frame1.png\",\r\n process.env.PUBLIC_URL + \"/assets/img/frame2.jpg\",\r\n process.env.PUBLIC_URL + \"/assets/img/frame3.jpg\",\r\n process.env.PUBLIC_URL + \"/assets/img/frame4.jpg\",\r\n process.env.PUBLIC_URL + \"/assets/img/frame5.jpg\",\r\n ],\r\n },\r\n },\r\n ],\r\n },\r\n ],\r\n },\r\n {\r\n id: \"ΠŸΠ’Π₯\",\r\n name: t(\"ΠŸΠ»Π°ΡΡ‚ΠΈΠΊ\"),\r\n info: {\r\n name: t(\"Π”Ρ€ΡƒΠΊ Π½Π° ΠŸΠ’Π₯\"),\r\n description: t(\r\n \"ΠŸΠ’Π₯ - лСгковісний лист пластику Π·Ρ– Π²ΡΠΏΡ–Π½Π΅Π½ΠΎΡŽ ΡΡ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€ΠΎΡŽ. Π™ΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½Π° ΠΏΡ–Π΄Π²Ρ–ΡˆΡƒΠ²Π°Ρ‚ΠΈ Π±Π΅Π· Ρ€Π°ΠΌΠΈ, ΠΎΡΠΊΡ–Π»ΡŒΠΊΠΈ Π²Ρ–Π½ Π΄ΠΎΡΡ‚Π°Ρ‚Π½ΡŒΠΎ Ρ‰Ρ–Π»ΡŒΠ½ΠΈΠΉ Ρ– Π½Π΅ ΡΠΊΡ€ΡƒΡ‡ΡƒΡ”Ρ‚ΡŒΡΡ. Π‘Π΅Π·ΠΊΠΎΡˆΡ‚ΠΎΠ²Π½ΠΎ ΠΌΠΎΠΆΠ΅ΠΌΠΎ Π½Π°ΠΊΠ»Π΅Ρ—Ρ‚ΠΈ двосторонній скотч, Ρ‰ΠΎΠ± ΠΊΡ€Ρ–ΠΏΠΈΡ‚ΠΈ Π΄ΠΎ стіни. Π’ΠΎΠ²Ρ‰ΠΈΠ½Π° - 3ΠΌΠΌ, Π°Π±ΠΎ 1ΠΌΠΌ (якщо Π² ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡ‚Ρ– Π· Ρ€Π°ΠΌΠΊΠΎΡŽ).\\nΠ‘Π΅Π·ΠΏΠ΅Ρ‡Π½ΠΈΠΉ для людини Ρ‚Π° навколишнього сСрСдовища\"\r\n ),\r\n images: [\r\n process.env.PUBLIC_URL + \"/assets/img/plastic1.jpg\",\r\n process.env.PUBLIC_URL + \"/assets/img/plastic2.jpg\",\r\n process.env.PUBLIC_URL + \"/assets/img/plastic3.jpg\",\r\n ],\r\n },\r\n sizes: [\r\n {\r\n id: \"30Ρ…40 см\",\r\n name: \"30Ρ…40 см\",\r\n width: 300,\r\n height: 400,\r\n ratio: \"3-4\",\r\n price: 550,\r\n oldPrice: 690,\r\n hangers: [\r\n { id: \"НСт\", name: t(\"НСмає\"), price: 0 },\r\n {\r\n id: \"Π›Π΅Π½Ρ‚Π°\",\r\n name: t(\"КлСйка стрічка\"),\r\n price: 0,\r\n isDefault: true,\r\n info: {\r\n name: t(\"КлСйка стрічка\"),\r\n description: t(\r\n \"Π§Ρ–ΠΏΠΊΠΈΠΉ скотч ΠΏΠΎ ΠΏΠ΅Ρ€ΠΈΠΌΠ΅Ρ‚Ρ€Ρƒ Π·Π²ΠΎΡ€ΠΎΡ‚Π½ΠΎΡ— сторони. Π”ΠΎΠ±Ρ€Π΅ Ρ‚Ρ€ΠΈΠΌΠ°Ρ” Π²Π°Π³Ρƒ, якщо повСрхня Π½Π΅ ΠΌΠ°Ρ” Π½Π°Π΄Ρ‚ΠΎ Π²ΠΈΡ€Π°Π·Π½ΠΎΡ— Ρ„Π°ΠΊΡ‚ΡƒΡ€ΠΈ.\"\r\n ),\r\n images: [process.env.PUBLIC_URL + \"/assets/img/plastic3.jpg\"],\r\n },\r\n },\r\n {\r\n id: \"Π Π°ΠΌΠΊΠ°\",\r\n name: t(\"Π Π°ΠΌΠΊΠ°\"),\r\n price: 200,\r\n info: {\r\n name: t(\"Π Π°ΠΌΠΊΠ° для ΠΏΠ»Π°ΠΊΠ°Ρ‚Ρƒ\"),\r\n description: t(\r\n \"Ми використовуємо якісні Ρ‚ΠΎΠ½ΠΊΡ– пластикові Ρ€Π°ΠΌΠΊΠΈ Ρ‡ΠΎΡ€Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ»ΡŒΠΎΡ€Ρƒ Π·Ρ– Π·Ρ€ΡƒΡ‡Π½ΠΈΠΌ підвісом. Π’Π°ΠΊΡ– Ρ€Π°ΠΌΠΊΠΈ Π΄ΠΎΠ±Ρ€Π΅ ΠΏΡ–Π΄Ρ…ΠΎΠ΄ΡΡ‚ΡŒ Π΄ΠΎ Π±ΡƒΠ΄ΡŒ-якого ΡΡ‚ΠΈΠ»ΡŽ інтСр’єру.\\nЗадня стінка - Π”Π’ΠŸ Π· Π³Π°Ρ‡ΠΊΠ°ΠΌΠΈ\"\r\n ),\r\n images: [\r\n process.env.PUBLIC_URL + \"/assets/img/frame1.png\",\r\n process.env.PUBLIC_URL + \"/assets/img/frame2.jpg\",\r\n process.env.PUBLIC_URL + \"/assets/img/frame3.jpg\",\r\n process.env.PUBLIC_URL + \"/assets/img/frame4.jpg\",\r\n process.env.PUBLIC_URL + \"/assets/img/frame5.jpg\",\r\n ],\r\n },\r\n },\r\n /*{\r\n id: \"ΠšΡ€ΡŽΡ‡ΠΊΠΈ\",\r\n name: \"Π“Π°Ρ‡ΠΊΠΈ\",\r\n price: 30,\r\n info: {\r\n name: \"Π“Π°Ρ‡ΠΊΠΈ\",\r\n description:\r\n \"Π“Π°Ρ‡ΠΊΠΈ Π½Π° Π·Π²ΠΎΡ€ΠΎΡ‚Π½Ρ–ΠΉ стороні. На Π²ΠΈΠΏΠ°Π΄ΠΎΠΊ, якщо ΠΌΠ°Ρ”Ρ‚Π΅ Π΄ΡƒΠΆΠ΅ Ρ„Π°ΠΊΡ‚ΡƒΡ€Π½Ρƒ ΠΏΠΎΠ²Π΅Ρ€Ρ…Π½ΡŽ Ρ– Π΄Π²ΠΎΡΡ‚ΠΎΡ€ΠΎΠ½Π½ΡŒΠΎΠ³ΠΎ скотча Π½Π΅Π΄ΠΎΡΡ‚Π°Ρ‚Π½ΡŒΠΎ.\",\r\n images: [\"assets/img/plastic_hooks.jpg\"],\r\n },\r\n },*/\r\n ],\r\n },\r\n {\r\n id: \"40Ρ…50 см\",\r\n name: \"40Ρ…50 см\",\r\n width: 400,\r\n height: 500,\r\n ratio: \"4-5\",\r\n price: 700,\r\n oldPrice: 880,\r\n hangers: [\r\n { id: \"НСт\", name: t(\"НСмає\"), price: 0 },\r\n {\r\n id: \"Π›Π΅Π½Ρ‚Π°\",\r\n name: t(\"КлСйка стрічка\"),\r\n price: 0,\r\n isDefault: true,\r\n info: {\r\n name: t(\"КлСйка стрічка\"),\r\n description: t(\r\n \"Π§Ρ–ΠΏΠΊΠΈΠΉ скотч ΠΏΠΎ ΠΏΠ΅Ρ€ΠΈΠΌΠ΅Ρ‚Ρ€Ρƒ Π·Π²ΠΎΡ€ΠΎΡ‚Π½ΠΎΡ— сторони. Π”ΠΎΠ±Ρ€Π΅ Ρ‚Ρ€ΠΈΠΌΠ°Ρ” Π²Π°Π³Ρƒ, якщо повСрхня Π½Π΅ ΠΌΠ°Ρ” Π½Π°Π΄Ρ‚ΠΎ Π²ΠΈΡ€Π°Π·Π½ΠΎΡ— Ρ„Π°ΠΊΡ‚ΡƒΡ€ΠΈ.\"\r\n ),\r\n images: [process.env.PUBLIC_URL + \"/assets/img/plastic3.jpg\"],\r\n },\r\n },\r\n {\r\n id: \"Π Π°ΠΌΠΊΠ°\",\r\n name: t(\"Π Π°ΠΌΠΊΠ°\"),\r\n price: 300,\r\n info: {\r\n name: t(\"Π Π°ΠΌΠΊΠ° для ΠΏΠ»Π°ΠΊΠ°Ρ‚Ρƒ\"),\r\n description: t(\r\n \"Ми використовуємо якісні Ρ‚ΠΎΠ½ΠΊΡ– пластикові Ρ€Π°ΠΌΠΊΠΈ Ρ‡ΠΎΡ€Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ»ΡŒΠΎΡ€Ρƒ Π·Ρ– Π·Ρ€ΡƒΡ‡Π½ΠΈΠΌ підвісом. Π’Π°ΠΊΡ– Ρ€Π°ΠΌΠΊΠΈ Π΄ΠΎΠ±Ρ€Π΅ ΠΏΡ–Π΄Ρ…ΠΎΠ΄ΡΡ‚ΡŒ Π΄ΠΎ Π±ΡƒΠ΄ΡŒ-якого ΡΡ‚ΠΈΠ»ΡŽ інтСр’єру.\\nЗадня стінка - Π”Π’ΠŸ Π· Π³Π°Ρ‡ΠΊΠ°ΠΌΠΈ\"\r\n ),\r\n images: [\r\n process.env.PUBLIC_URL + \"/assets/img/frame1.png\",\r\n process.env.PUBLIC_URL + \"/assets/img/frame2.jpg\",\r\n process.env.PUBLIC_URL + \"/assets/img/frame3.jpg\",\r\n process.env.PUBLIC_URL + \"/assets/img/frame4.jpg\",\r\n process.env.PUBLIC_URL + \"/assets/img/frame5.jpg\",\r\n ],\r\n },\r\n },\r\n // {\r\n // id: \"ΠšΡ€ΡŽΡ‡ΠΊΠΈ\",\r\n // name: \"Π“Π°Ρ‡ΠΊΠΈ\",\r\n // price: 30,\r\n // info: {\r\n // name: \"Π“Π°Ρ‡ΠΊΠΈ\",\r\n // description:\r\n // \"Π“Π°Ρ‡ΠΊΠΈ Π½Π° Π·Π²ΠΎΡ€ΠΎΡ‚Π½Ρ–ΠΉ стороні. На Π²ΠΈΠΏΠ°Π΄ΠΎΠΊ, якщо ΠΌΠ°Ρ”Ρ‚Π΅ Π΄ΡƒΠΆΠ΅ Ρ„Π°ΠΊΡ‚ΡƒΡ€Π½Ρƒ ΠΏΠΎΠ²Π΅Ρ€Ρ…Π½ΡŽ Ρ– Π΄Π²ΠΎΡΡ‚ΠΎΡ€ΠΎΠ½Π½ΡŒΠΎΠ³ΠΎ скотча Π½Π΅Π΄ΠΎΡΡ‚Π°Ρ‚Π½ΡŒΠΎ.\",\r\n // images: [\"assets/img/plastic_hooks.jpg\"],\r\n // },\r\n // },\r\n ],\r\n },\r\n {\r\n id: \"50Ρ…70 см\",\r\n name: \"50Ρ…70 см\",\r\n width: 500,\r\n height: 700,\r\n ratio: \"5-7\",\r\n price: 950,\r\n oldPrice: 1200,\r\n hangers: [\r\n { id: \"НСт\", name: \"НСмає\", price: 0 },\r\n {\r\n id: t(\"Π›Π΅Π½Ρ‚Π°\"),\r\n name: t(\"КлСйка стрічка\"),\r\n price: 0,\r\n isDefault: true,\r\n info: {\r\n name: t(\"КлСйка стрічка\"),\r\n description: t(\r\n \"Π§Ρ–ΠΏΠΊΠΈΠΉ скотч ΠΏΠΎ ΠΏΠ΅Ρ€ΠΈΠΌΠ΅Ρ‚Ρ€Ρƒ Π·Π²ΠΎΡ€ΠΎΡ‚Π½ΠΎΡ— сторони. Π”ΠΎΠ±Ρ€Π΅ Ρ‚Ρ€ΠΈΠΌΠ°Ρ” Π²Π°Π³Ρƒ, якщо повСрхня Π½Π΅ ΠΌΠ°Ρ” Π½Π°Π΄Ρ‚ΠΎ Π²ΠΈΡ€Π°Π·Π½ΠΎΡ— Ρ„Π°ΠΊΡ‚ΡƒΡ€ΠΈ.\"\r\n ),\r\n images: [process.env.PUBLIC_URL + \"/assets/img/plastic3.jpg\"],\r\n },\r\n },\r\n {\r\n id: \"Π Π°ΠΌΠΊΠ°\",\r\n name: t(\"Π Π°ΠΌΠΊΠ°\"),\r\n price: 400,\r\n info: {\r\n name: t(\"Π Π°ΠΌΠΊΠ° для ΠΏΠ»Π°ΠΊΠ°Ρ‚Ρƒ\"),\r\n description: t(\r\n \"Ми використовуємо якісні Ρ‚ΠΎΠ½ΠΊΡ– пластикові Ρ€Π°ΠΌΠΊΠΈ Ρ‡ΠΎΡ€Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ»ΡŒΠΎΡ€Ρƒ Π·Ρ– Π·Ρ€ΡƒΡ‡Π½ΠΈΠΌ підвісом. Π’Π°ΠΊΡ– Ρ€Π°ΠΌΠΊΠΈ Π΄ΠΎΠ±Ρ€Π΅ ΠΏΡ–Π΄Ρ…ΠΎΠ΄ΡΡ‚ΡŒ Π΄ΠΎ Π±ΡƒΠ΄ΡŒ-якого ΡΡ‚ΠΈΠ»ΡŽ інтСр’єру.\\nЗадня стінка - Π”Π’ΠŸ Π· Π³Π°Ρ‡ΠΊΠ°ΠΌΠΈ\"\r\n ),\r\n images: [\r\n process.env.PUBLIC_URL + \"/assets/img/frame1.png\",\r\n process.env.PUBLIC_URL + \"/assets/img/frame2.jpg\",\r\n process.env.PUBLIC_URL + \"/assets/img/frame3.jpg\",\r\n process.env.PUBLIC_URL + \"/assets/img/frame4.jpg\",\r\n process.env.PUBLIC_URL + \"/assets/img/frame5.jpg\",\r\n ],\r\n },\r\n },\r\n // {\r\n // id: \"ΠšΡ€ΡŽΡ‡ΠΊΠΈ\",\r\n // name: \"Π“Π°Ρ‡ΠΊΠΈ\",\r\n // price: 30,\r\n // info: {\r\n // name: \"Π“Π°Ρ‡ΠΊΠΈ\",\r\n // description:\r\n // \"Π“Π°Ρ‡ΠΊΠΈ Π½Π° Π·Π²ΠΎΡ€ΠΎΡ‚Π½Ρ–ΠΉ стороні. На Π²ΠΈΠΏΠ°Π΄ΠΎΠΊ, якщо ΠΌΠ°Ρ”Ρ‚Π΅ Π΄ΡƒΠΆΠ΅ Ρ„Π°ΠΊΡ‚ΡƒΡ€Π½Ρƒ ΠΏΠΎΠ²Π΅Ρ€Ρ…Π½ΡŽ Ρ– Π΄Π²ΠΎΡΡ‚ΠΎΡ€ΠΎΠ½Π½ΡŒΠΎΠ³ΠΎ скотча Π½Π΅Π΄ΠΎΡΡ‚Π°Ρ‚Π½ΡŒΠΎ.\",\r\n // images: [\"assets/img/plastic_hooks.jpg\"],\r\n // },\r\n // },\r\n ],\r\n },\r\n ],\r\n },\r\n {\r\n id: \"Π₯олст\",\r\n name: t(\"Π₯олст\"),\r\n info: {\r\n name: t(\"Π”Ρ€ΡƒΠΊ Π½Π° холсті\"),\r\n description: t(\r\n \"Ми Π΄Ρ€ΡƒΠΊΡƒΡ”ΠΌΠΎ Π½Π° Π½Π°Ρ‚ΡƒΡ€Π°Π»ΡŒΠ½ΠΎΠΌΡƒ холсті Ρ– використовуємо Π³Π°Π»Π΅Ρ€Π΅ΠΉΠ½Ρƒ натяТку Π½Π° дСрСв’яний ΠΏΡ–Π΄Ρ€Π°ΠΌΠ½ΠΈΠΊ. ΠŸΡ€ΠΈ Ρ‚Π°ΠΊΡ–ΠΉ натяТці зобраТСння Π·Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ Π½Π° Π±ΠΎΠΊΠΎΠ²Ρ– сторони холсту Ρ– Π·Π°Π³ΠΈΠ½Π°Ρ”Ρ‚ΡŒΡΡ ΠΏΡ–Π΄ ΠΏΡ–Π΄Ρ€Π°ΠΌΠ½ΠΈΠΊ. Π’Π°ΠΊΠΈΠΌ Ρ‡ΠΈΠ½ΠΎΠΌ холст Ρ‡ΡƒΠ΄ΠΎΠ²ΠΎ виглядає Π½Π° стіні Ρ– Π½Π΅ ΠΏΠΎΡ‚Ρ€Π΅Π±ΡƒΡ” Π΄ΠΎΠ΄Π°Ρ‚ΠΊΠΎΠ²ΠΎΡ— Ρ€Π°ΠΌΠΈ.\"\r\n ),\r\n images: [\r\n process.env.PUBLIC_URL + \"/assets/img/canvas1.jpg\",\r\n process.env.PUBLIC_URL + \"/assets/img/canvas2.jpg\",\r\n process.env.PUBLIC_URL + \"/assets/img/canvas3.jpg\",\r\n ],\r\n },\r\n sizes: [\r\n {\r\n id: \"30Ρ…40 см\",\r\n name: \"30Ρ…40 см\",\r\n width: 300,\r\n height: 400,\r\n ratio: \"3-4\",\r\n price: 890,\r\n oldPrice: 1130,\r\n hangers: [{ id: \"ΠšΡ€ΡŽΡ‡ΠΊΠΈ\", name: t(\"Π“Π°Ρ‡ΠΊΠΈ\"), price: 0 }],\r\n },\r\n {\r\n id: \"40Ρ…50 см\",\r\n name: \"40Ρ…50 см\",\r\n width: 400,\r\n height: 500,\r\n ratio: \"4-5\",\r\n price: 1090,\r\n oldPrice: 1400,\r\n hangers: [{ id: \"ΠšΡ€ΡŽΡ‡ΠΊΠΈ\", name: t(\"Π“Π°Ρ‡ΠΊΠΈ\"), price: 0 }],\r\n },\r\n {\r\n id: \"50Ρ…70 см\",\r\n name: \"50Ρ…70 см\",\r\n width: 500,\r\n height: 700,\r\n ratio: \"5-7\",\r\n price: 1290,\r\n oldPrice: 1700,\r\n hangers: [{ id: \"ΠšΡ€ΡŽΡ‡ΠΊΠΈ\", name: t(\"Π“Π°Ρ‡ΠΊΠΈ\"), price: 0 }],\r\n },\r\n ],\r\n },\r\n ];\r\n\r\n this.state = {\r\n selectedMaterialId: props.initialSelectedMaterialId,\r\n selectedSizeId: props.initialSelectedSizeId,\r\n selectedHangerId: props.initialSelectedHangerId,\r\n isModalOpen: false,\r\n modalName: \"\",\r\n modalDescription: \"\",\r\n modalImages: [],\r\n };\r\n }\r\n\r\n riseUpdate = () => {\r\n console.log(\"recalculate price\");\r\n\r\n try {\r\n var material = this.materials.find((material) => {\r\n return material.id === this.state.selectedMaterialId;\r\n });\r\n\r\n var size = material.sizes.find((size) => {\r\n return size.id === this.state.selectedSizeId;\r\n });\r\n\r\n let { price, ratio, width, height } = size;\r\n\r\n var hanger = size.hangers.find((h) => {\r\n return h.id === this.state.selectedHangerId;\r\n });\r\n\r\n price += hanger.price;\r\n\r\n var proposalHangerId = \"Π Π°ΠΌΠΊΠ°\";\r\n var proposalHangerName = \"\";\r\n var proposalHangerPrice = 0;\r\n if (\r\n this.state.selectedMaterialId === \"Π‘ΡƒΠΌΠ°Π³Π°\" &&\r\n this.state.selectedHangerId == \"НСт\"\r\n ) {\r\n var frameHanger = size.hangers.find((h) => {\r\n return h.id === proposalHangerId;\r\n });\r\n if (frameHanger) {\r\n proposalHangerName = frameHanger.name;\r\n proposalHangerPrice = frameHanger.price;\r\n }\r\n }\r\n\r\n this.props.onChanged({\r\n selectedMaterialId: this.state.selectedMaterialId,\r\n selectedSizeId: this.state.selectedSizeId,\r\n selectedHangerId: this.state.selectedHangerId,\r\n selectedMaterialName: material.name,\r\n selectedHangerName: hanger.name,\r\n price,\r\n ratio,\r\n width,\r\n height,\r\n proposalHangerId,\r\n proposalHangerName,\r\n proposalHangerPrice,\r\n });\r\n } catch (e) {\r\n (console.error || console.log).call(console, e.stack || e);\r\n }\r\n };\r\n\r\n componentDidUpdate(prevProps, prevState) {\r\n if (\r\n this.state.selectedMaterialId !== prevState.selectedMaterialId ||\r\n this.state.selectedSizeId !== prevState.selectedSizeId ||\r\n this.state.selectedHangerId !== prevState.selectedHangerId\r\n ) {\r\n this.riseUpdate();\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n this.riseUpdate();\r\n }\r\n\r\n // useEffect(() => {\r\n // riseUpdate();\r\n // }, [selectedMaterialId, selectedSizeId, selectedHangerId]);\r\n\r\n onMaterialChanged = (changeEvent) => {\r\n var materialId = changeEvent.target.value;\r\n var material = this.materials.find((s) => s.id === materialId);\r\n if (material) {\r\n var size = material.sizes.find((s) => s.id === this.state.selectedSizeId);\r\n if (!size) {\r\n size = material.sizes[1];\r\n }\r\n var sizeId = size.id;\r\n\r\n var hangerId = \"\",\r\n hanger = null;\r\n if (\r\n this.state.selectedHangerId !== \"НСт\" &&\r\n this.state.selectedMaterialId !== \"ΠŸΠ’Π₯\"\r\n ) {\r\n hanger = size.hangers.find((s) => s.id === this.state.selectedHangerId);\r\n }\r\n if (!hanger) {\r\n hanger = size.hangers.find((s) => s.isDefault);\r\n if (!hanger && size.hangers.length > 0) {\r\n hanger = size.hangers[0];\r\n }\r\n }\r\n\r\n hangerId = hanger.id;\r\n\r\n this.setState({\r\n selectedMaterialId: materialId,\r\n selectedSizeId: sizeId,\r\n selectedHangerId: hangerId,\r\n });\r\n }\r\n };\r\n\r\n onSizeChanged = (changeEvent) => {\r\n var material = this.materials.find(\r\n (s) => s.id === this.state.selectedMaterialId\r\n );\r\n if (material) {\r\n var sizeId = changeEvent.target.value;\r\n var size = material.sizes.find((s) => s.id === sizeId);\r\n\r\n if (size) {\r\n var hangerId = \"\",\r\n hanger = null;\r\n if (\r\n this.state.selectedHangerId !== \"НСт\" &&\r\n this.state.selectedMaterialId !== \"ΠŸΠ’Π₯\"\r\n ) {\r\n hanger = size.hangers.find(\r\n (s) => s.id === this.state.selectedHangerId\r\n );\r\n }\r\n\r\n if (!hanger) {\r\n var hanger = size.hangers.find((s) => s.isDefault);\r\n if (!hanger && size.hangers.length > 0) {\r\n hanger = size.hangers[0];\r\n }\r\n }\r\n\r\n hangerId = hanger.id;\r\n\r\n this.setState({\r\n selectedSizeId: sizeId,\r\n selectedHangerId: hangerId,\r\n });\r\n }\r\n }\r\n };\r\n\r\n onHangerChanged = (changeEvent) => {\r\n var material = this.materials.find(\r\n (s) => s.id === this.state.selectedMaterialId\r\n );\r\n if (material) {\r\n var size = material.sizes.find((s) => s.id === this.state.selectedSizeId);\r\n if (size) {\r\n var hangerId = changeEvent.target.value;\r\n var hanger = size.hangers.find((s) => s.id === hangerId);\r\n if (!hanger) {\r\n hanger = size.hangers.find((s) => s.isDefault);\r\n }\r\n hangerId = hanger.id;\r\n\r\n this.setState({\r\n selectedHangerId: hangerId,\r\n });\r\n }\r\n }\r\n };\r\n\r\n onMaterialInfoClick = (e, material) => {\r\n e.preventDefault();\r\n\r\n if (material) {\r\n this.setState({\r\n modalName: material.info.name,\r\n modalDescription: material.info.description,\r\n modalImages: material.info.images,\r\n isModalOpen: true,\r\n });\r\n }\r\n };\r\n\r\n onHangerInfoClick = (e, hanger) => {\r\n e.preventDefault();\r\n\r\n if (hanger) {\r\n this.setState({\r\n modalName: hanger.info.name,\r\n modalDescription: hanger.info.description,\r\n modalImages: hanger.info.images,\r\n isModalOpen: true,\r\n });\r\n }\r\n };\r\n\r\n onModalClose = (e) => {\r\n this.setState({\r\n isModalOpen: false,\r\n });\r\n };\r\n\r\n renderModalWindow = (props) => {\r\n return (\r\n \r\n
    \r\n
    {props.name}
    \r\n
    \r\n
    \r\n

    {props.description}

    \r\n \r\n {props.images &&\r\n props.images.map((src, index) => {\r\n return (\r\n \r\n {props.name}\r\n \r\n );\r\n })}\r\n \r\n
    \r\n \r\n );\r\n };\r\n\r\n renderHangers = (props) => {\r\n const { t } = this.props;\r\n const hangers = props.hangers;\r\n if (!hangers || hangers.length <= 1) {\r\n return null;\r\n }\r\n return (\r\n \r\n

    \r\n {t(\"ΠšΡ€Ρ–ΠΏΠ»Π΅Π½Π½Ρ\")}\r\n

    \r\n
    \r\n {hangers.map((hanger, index) => {\r\n return (\r\n \r\n );\r\n })}\r\n
    \r\n
    \r\n );\r\n };\r\n\r\n render() {\r\n console.log(\"rendering: editor-materials\");\r\n const { t } = this.props;\r\n let size = this.materials\r\n .find((material) => {\r\n return material.id === this.state.selectedMaterialId;\r\n })\r\n .sizes.find((size) => {\r\n return size.id === this.state.selectedSizeId;\r\n });\r\n let hangers = null;\r\n if (size) {\r\n hangers = size.hangers;\r\n }\r\n\r\n return (\r\n \r\n

    ΠœΠ°Ρ‚Π΅Ρ€Ρ–Π°Π»

    \r\n
    \r\n {this.materials.map((material, index) => {\r\n return (\r\n \r\n );\r\n })}\r\n
    \r\n
    \r\n
    \r\n

    \r\n {t(\"Π ΠΎΠ·ΠΌΡ–Ρ€\")}\r\n

    \r\n
    \r\n
    \r\n \r\n {t(\"Акційна Ρ†Ρ–Π½Π°!\")}\r\n \r\n
    \r\n
    \r\n
    \r\n {this.materials\r\n .find((material) => {\r\n return material.id === this.state.selectedMaterialId;\r\n })\r\n .sizes.map((size, index) => {\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\nexport default withTranslation()(EditorMaterials);\r\n","import React, { PureComponent } from \"react\";\r\n\r\nimport classNames from \"classnames\";\r\n\r\nimport Materials from \"./editor-materials\";\r\n\r\nimport HyperModal from \"react-hyper-modal\";\r\nimport Carousel from \"react-bootstrap/Carousel\";\r\nimport { withTranslation } from \"react-i18next\";\r\nimport { getPublicUrl } from \"../../utils/utils\";\r\n\r\nclass EditorSidebar extends PureComponent {\r\n constructor(props) {\r\n super(props);\r\n\r\n const { t } = props;\r\n\r\n this._bottom = React.createRef();\r\n this.materialInfo = null;\r\n this.styles = [\r\n {\r\n id: \"simple_white\",\r\n name: \"white\",\r\n },\r\n {\r\n id: \"simple_black\",\r\n name: \"black\",\r\n },\r\n ];\r\n\r\n this.state = {\r\n sidebarMenuLinks: [true, false, false, false],\r\n isModalOpen: false,\r\n isProposedTextModalOpen: false,\r\n proposalHangerPrice: 0,\r\n };\r\n\r\n this._proposedTexts = [\r\n t(\"Π—ΠΎΡ€Ρ–, ΠΏΡ–Π΄ якими\\nпочалася наша історія\\n❀️\"),\r\n t(\"Π”Π΅Π½ΡŒ, ΠΊΠΎΠ»ΠΈ\\nпочалася наша ΠΏΡ€ΠΈΠ³ΠΎΠ΄Π°\\n❀️\"),\r\n t(\"Казкова ΠΌΠΈΡ‚ΡŒ\\n❀️\"),\r\n t(\"ΠœΠΎΡ— щасливі Π·ΠΎΡ€Ρ–\"),\r\n t(\"Найкращий дСнь ΠΌΠΎΠ³ΠΎ Тиття\\n❀️\"),\r\n t(\"Π’ΠΎΡ‡ΠΊΠ° Π²Ρ–Π΄Π»Ρ–ΠΊΡƒ\"),\r\n t(\"ΠŸΠΎΡ‡Π°Ρ‚ΠΎΠΊ Π²Π΅Π»ΠΈΠΊΠΎΡ— ΠΏΠΎΠ΄ΠΎΡ€ΠΎΠΆΡ–\"),\r\n t(\"Π’ΠΈ з’явився Π² ΠΌΠΎΡ”ΠΌΡƒ ΠΆΠΈΡ‚Ρ‚Ρ–\\n❀️\"),\r\n t(\"Ми Π·ΡƒΡΡ‚Ρ€Ρ–Π»ΠΈΡΡŒ ΠΏΡ–Π΄ Ρ†ΠΈΠΌΠΈ зорями\\n❀️\"),\r\n t(\"Π’ΠΈ народилася, Ρ‰ΠΎΠ± Π·Π°ΠΏΠ°Π»ΠΈΡ‚ΠΈ Ρ†Π΅ΠΉ світ\"),\r\n ];\r\n this._selectedProposedTextIndex = 0;\r\n this._isSmallScreen = true;\r\n }\r\n\r\n componentDidMount() {\r\n window.addEventListener(\"resize\", this.updateWindowDimensions);\r\n this.updateWindowDimensions();\r\n }\r\n\r\n componentWillUnmount() {\r\n window.removeEventListener(\"resize\", this.updateWindowDimensions);\r\n }\r\n\r\n updateWindowDimensions = () => {\r\n console.log(\"Calculating window size\");\r\n let width = window.innerWidth;\r\n this._isSmallScreen = width < 768 ? true : false;\r\n };\r\n\r\n scrollToBottom = () => {\r\n console.log(\"scrolling\");\r\n try {\r\n this._bottom.current.scrollIntoView({\r\n behavior: \"smooth\",\r\n block: \"end\",\r\n inline: \"nearest\",\r\n });\r\n } catch (e) {\r\n (console.error || console.log).call(console, e.stack || e);\r\n }\r\n };\r\n\r\n onChatClick = (e) => {\r\n e.preventDefault();\r\n try {\r\n window.jivo_api.open();\r\n } catch (e) {\r\n (console.error || console.log).call(console, e.stack || e);\r\n }\r\n };\r\n\r\n onSideBarMenuClick = (e, index) => {\r\n e.preventDefault();\r\n\r\n var sidebarMenuLinks = [...this.state.sidebarMenuLinks];\r\n\r\n for (var i = 0; i < sidebarMenuLinks.length; i++) {\r\n if (i === index) {\r\n sidebarMenuLinks[i] = true;\r\n } else {\r\n sidebarMenuLinks[i] = false;\r\n }\r\n }\r\n if (this._isSmallScreen) {\r\n this.setState(\r\n { sidebarMenuLinks: sidebarMenuLinks },\r\n this.scrollToBottom\r\n );\r\n } else {\r\n this.setState({ sidebarMenuLinks: sidebarMenuLinks });\r\n }\r\n };\r\n\r\n onMaterialChanged = (info) => {\r\n this.materialInfo = info;\r\n this.props.onMaterialChanged(info);\r\n };\r\n\r\n onMakeOrderClick = (e) => {\r\n e.preventDefault();\r\n if (this.materialInfo && this.materialInfo.proposalHangerPrice > 0) {\r\n this.setState({\r\n isModalOpen: true,\r\n proposalHangerPrice: this.materialInfo.proposalHangerPrice,\r\n });\r\n } else {\r\n this.props.onMakeOrderClick();\r\n }\r\n };\r\n\r\n onAddFrameClick = (e) => {\r\n e.preventDefault();\r\n var materialAlterInfo = {\r\n selectedHangerId: this.materialInfo.proposalHangerId,\r\n selectedHangerName: this.materialInfo.proposalHangerName,\r\n price: this.materialInfo.price + this.materialInfo.proposalHangerPrice,\r\n };\r\n this.props.onMakeOrderClick(materialAlterInfo);\r\n };\r\n\r\n onContinueWithoutFrameClick = (e) => {\r\n e.preventDefault();\r\n this.props.onMakeOrderClick();\r\n };\r\n\r\n renderSidebarMenu({ t }) {\r\n var createItem = (name, icon) => {\r\n return { name: name, icon: icon };\r\n };\r\n\r\n var items = [\r\n createItem(t(\"Π‘Ρ‚ΠΈΠ»ΡŒ\"), \"fa-paint-brush\"),\r\n createItem(t(\"ΠœΠ°Ρ‚Π΅Ρ€Ρ–Π°Π»\"), \"fa-map\"),\r\n createItem(t(\"Написи\"), \"fa-pencil\"),\r\n createItem(t(\"Аудіо\"), \"fa-microphone\"),\r\n ];\r\n\r\n return items.map((item, index, array) => {\r\n var itemClass = classNames(\r\n \"h-100 g-color-white-opacity-0_6 g-color-primary--hover g-text-underline--none--hover g-font-weight-400\",\r\n {\r\n active: this.state.sidebarMenuLinks[index],\r\n }\r\n );\r\n return (\r\n
  • \r\n this.onSideBarMenuClick(e, index)}\r\n >\r\n \r\n
    \r\n {item.name}\r\n \r\n
  • \r\n );\r\n });\r\n }\r\n\r\n renderStyles = () => {\r\n const { t } = this.props;\r\n\r\n return (\r\n
    \r\n {this.styles.map((style, index) => {\r\n return (\r\n
    \r\n

    \r\n {style.name}\r\n

    \r\n \r\n );\r\n })}\r\n \r\n );\r\n };\r\n\r\n // renderStyles = () => {\r\n // const { t } = this.props;\r\n\r\n // return (
    \r\n //
    \r\n // {this.styles.map((style, index) => {\r\n // return (\r\n //
    \r\n //
    \r\n //

    \r\n // {style.name}\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 onModalClose = (e) => {\r\n this.setState({\r\n isModalOpen: false,\r\n });\r\n };\r\n\r\n proposedTextModalOpen = (e) => {\r\n e.preventDefault();\r\n this.setState({\r\n isProposedTextModalOpen: true,\r\n });\r\n };\r\n\r\n onProposedTextModalClose = (e) => {\r\n this.setState({\r\n isProposedTextModalOpen: false,\r\n });\r\n };\r\n\r\n onProposedTextSwitched = (selectedIndex, e) => {\r\n this._selectedProposedTextIndex = selectedIndex;\r\n };\r\n\r\n onProposedTextSelected = (e) => {\r\n if (this._selectedProposedTextIndex >= this._proposedTexts.length) {\r\n this._selectedProposedTextIndex = this._proposedTexts.length - 1;\r\n }\r\n var text = this._proposedTexts[this._selectedProposedTextIndex];\r\n\r\n this.onProposedTextModalClose();\r\n this.props.onText1Selected(text);\r\n };\r\n\r\n render() {\r\n console.log(\"rendering editor-sidebar\");\r\n const { t, i18n } = this.props;\r\n\r\n return (\r\n \r\n
    \r\n
      \r\n \r\n {this.renderSidebarMenu(this.props)}\r\n
    \r\n
    \r\n \r\n
    \r\n \r\n \r\n

    Π‘Ρ‚ΠΈΠ»ΡŒ

    \r\n {this.renderStyles()}\r\n {/* \r\n
    \r\n
    \r\n {this.styles.map((style, index) => {\r\n return (\r\n \r\n
    \r\n \r\n this.props.onStyleChanged(e, style.id)\r\n }\r\n />\r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n

    {style.id}

    \r\n \r\n );\r\n })}\r\n
    \r\n
    */}\r\n\r\n this.onSideBarMenuClick(e, 1)}\r\n >\r\n {t(\"ΠšΡ€ΠΎΠΊ 2: ΠœΠ°Ρ‚Π΅Ρ€Ρ–Π°Π»\")} \r\n \r\n \r\n \r\n \r\n\r\n this.onSideBarMenuClick(e, 2)}\r\n >\r\n {t(\"ΠšΡ€ΠΎΠΊ 3: Написи\")} \r\n \r\n \r\n \r\n

    {t(\"Написи\")}

    \r\n\r\n
    \r\n
    \r\n \r\n {/* \r\n {t(\"Π†Π½ΡˆΡ– Π²Π°Ρ€Ρ–Π°Π½Ρ‚ΠΈ\")}\r\n */}\r\n
    \r\n\r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n this.onSideBarMenuClick(e, 3)}\r\n >\r\n {t(\"ΠšΡ€ΠΎΠΊ 4: Аудіо\")} \r\n \r\n \r\n \r\n {/*

    Аудіо

    */}\r\n \r\n

    \r\n \r\n  Π—апис Π°ΡƒΠ΄Ρ–ΠΎ\r\n

    \r\n

    \r\n Π’ΠΈ Π·ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ–Π΄ΠΏΡ€Π°Π²ΠΈΡ‚ΠΈ запис вашого голосу ΠΏΡ–Π·Π½Ρ–ΡˆΠ΅.\r\n Наприклад, Ρƒ вигляді голосового повідомлСння Ρƒ Viber Ρ‡ΠΈ\r\n Telegram. Посилання Π·'ΡΠ²ΠΈΡ‚ΡŒΡΡ після оформлСння замовлСння.\r\n

    \r\n \r\n \r\n {t(\"ΠšΡ€ΠΎΠΊ 5: ΠšΡƒΠΏΠΈΡ‚ΠΈ\")} \r\n \r\n \r\n \r\n\r\n
    \r\n
    \r\n
      \r\n
    • \r\n \r\n \r\n
      \r\n {t(\"Π’Ρ–Π΄ΠΊΡ€ΠΈΡ‚ΠΈ Ρ‡Π°Ρ‚\")}\r\n \r\n
    • \r\n
    • \r\n \r\n \r\n
      \r\n {t(\"ΠšΡƒΠΏΠΈΡ‚ΠΈ\")}{\" \"}\r\n \r\n {\" \"}\r\n {this.props.price} {t(\"Π³Ρ€Π½\")}\r\n \r\n \r\n
    • \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n {t(\"Π’Ρ–Π΄ΠΊΡ€ΠΈΡ‚ΠΈ Ρ‡Π°Ρ‚\")}\r\n \r\n \r\n\r\n \r\n \r\n {this.props.price}{\" \"}\r\n {t(\"Π³Ρ€Π½\")}\r\n \r\n \r\n {t(\"ΠšΡƒΠΏΠΈΡ‚ΠΈ\")} \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    {t(\"Π§ΡƒΠ΄ΠΎΠ²ΠΈΠΉ Π²ΠΈΠ±Ρ–Ρ€!\")}
    \r\n
    \r\n
    \r\n
    \r\n {t(\"ΠŸΠ»Π°ΠΊΠ°Ρ‚ΠΈ Ρƒ Ρ€Π°ΠΌΠΊΠ°Ρ… Π²ΠΈΠ³Π»ΡΠ΄Π°ΡŽΡ‚ΡŒ Ρ‰Π΅ ΠΊΡ€Π°Ρ‰Π΅. Π‘Π°ΠΆΠ°Ρ”Ρ‚Π΅ Π΄ΠΎΠ΄Π°Ρ‚ΠΈ Ρ€Π°ΠΌΠΊΡƒ?\")}\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    {t(\"Π Π°ΠΌΠΊΠ°\")}
    \r\n

    \r\n {t(\r\n \"Π’ΠΎΠ½ΠΊΠ° пластикова Ρ€Π°ΠΌΠΊΠ° Ρ‡ΠΎΡ€Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ»ΡŒΠΎΡ€Ρƒ Π·Ρ– Π·Ρ€ΡƒΡ‡Π½ΠΈΠΌ підвісом. Π’Π°ΠΊΡ– Ρ€Π°ΠΌΠΊΠΈ Π΄ΠΎΠ±Ρ€Π΅ ΠΏΡ–Π΄Ρ…ΠΎΠ΄ΡΡ‚ΡŒ Π΄ΠΎ Π±ΡƒΠ΄ΡŒ-якого ΡΡ‚ΠΈΠ»ΡŽ інтСр’єру.\"\r\n )}\r\n

    \r\n
    \r\n
    \r\n \r\n {t(\"Π”ΠΎΠ΄Π°Ρ‚ΠΈ\")}\r\n \r\n
    \r\n \r\n +{this.state.proposalHangerPrice} {t(\"Π³Ρ€Π½\")}\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n {t(\"ΠŸΡ€ΠΎΠ΄ΠΎΠ²ΠΆΠΈΡ‚ΠΈ Π±Π΅Π· Ρ€Π°ΠΌΠΊΠΈ\")}\r\n \r\n
    \r\n \r\n \r\n
    \r\n
    {t(\"ΠžΠ±Π΅Ρ€Ρ–Ρ‚ΡŒ напис\")}
    \r\n
    \r\n
    \r\n \r\n {this._proposedTexts.map((text, index) => {\r\n return (\r\n \r\n \r\n \r\n
    \r\n

    \r\n {text}\r\n

    \r\n
    \r\n
    \r\n
    \r\n );\r\n })}\r\n \r\n
    \r\n
    \r\n \r\n {t(\"ΠžΠ±Ρ€Π°Ρ‚ΠΈ Ρ†Π΅ΠΉ Π²Π°Ρ€Ρ–Π°Π½Ρ‚\")}\r\n \r\n
    \r\n \r\n
    \r\n );\r\n }\r\n}\r\nexport default withTranslation()(EditorSidebar);\r\n","import React, { Component, Suspense } from \"react\";\r\nimport Map from \"./editor-map\";\r\nimport classNames from \"classnames\";\r\nimport { Redirect } from \"react-router-dom\";\r\nimport store from \"store\";\r\nimport EditorSidebar from \"./editor-sidebar\";\r\nimport queryString from \"query-string\";\r\nimport { withTranslation } from \"react-i18next\";\r\nimport i18n from \"i18next\";\r\n\r\nclass EditorComponent extends Component {\r\n static whyDidYouRender = true;\r\n\r\n constructor(props) {\r\n super(props);\r\n this._map = React.createRef();\r\n\r\n const { t } = props;\r\n\r\n let style = \"simple_black\";\r\n let size = {\r\n selectedSizeId: \"50Ρ…70 см\",\r\n ratio: \"5-7\",\r\n printWidth: 500,\r\n printHeight: 700,\r\n };\r\n\r\n const queryParams = queryString.parse(props.location.search);\r\n if (queryParams) {\r\n if (queryParams.style) {\r\n style = queryParams.style;\r\n }\r\n if (queryParams.size) {\r\n console.log(\"size:\", queryParams.size);\r\n switch (queryParams.size) {\r\n case \"30\":\r\n size = {\r\n selectedSizeId: \"30Ρ…40 см\",\r\n ratio: \"3-4\",\r\n printWidth: 300,\r\n printHeight: 400,\r\n };\r\n break;\r\n case \"40\":\r\n size = {\r\n selectedSizeId: \"40Ρ…50 см\",\r\n ratio: \"4-5\",\r\n printWidth: 400,\r\n printHeight: 500,\r\n };\r\n break;\r\n case \"50\":\r\n size = {\r\n selectedSizeId: \"50Ρ…70 см\",\r\n ratio: \"5-7\",\r\n printWidth: 500,\r\n printHeight: 700,\r\n };\r\n break;\r\n case \"70\":\r\n size = {\r\n selectedSizeId: \"70Ρ…100 см\",\r\n ratio: \"7-10\",\r\n printWidth: 700,\r\n printHeight: 1000,\r\n };\r\n break;\r\n }\r\n }\r\n }\r\n var state = {\r\n redirect: null,\r\n isSmallScreen: true,\r\n\r\n text1: t(\"\"),\r\n text2: t(\"\"),\r\n price: 0,\r\n selectedMaterialId: \"Π‘ΡƒΠΌΠ°Π³Π°\",\r\n selectedHangerId: \"НСт\",\r\n selectedMaterialName: \"ΠŸΠ°ΠΏΡ–Ρ€\",\r\n selectedHangerName: \"НСмає\",\r\n selectedStyleId: style,\r\n ...size,\r\n };\r\n\r\n try {\r\n var editorStateDateString = store.get(\"audioEditorStateDate\");\r\n if (editorStateDateString) {\r\n var editorStateDate = new Date(editorStateDateString);\r\n //addDays(1)\r\n editorStateDate.setDate(editorStateDate.getDate() + 1);\r\n if (new Date() < editorStateDate) {\r\n console.log(\"restoring state...\");\r\n var restoredState = store.get(\"audioEditorState\");\r\n if (restoredState) {\r\n restoredState.date = new Date(restoredState.date);\r\n\r\n state = { ...state, ...restoredState };\r\n console.log(\"state restored\");\r\n }\r\n }\r\n }\r\n } catch (e) {\r\n (console.error || console.log).call(console, e.stack || e);\r\n }\r\n\r\n state.initialSelectedMaterialId = state.selectedMaterialId;\r\n state.initialSelectedSizeId = state.selectedSizeId;\r\n state.initialSelectedHangerId = state.selectedHangerId;\r\n this.state = state;\r\n //console.log(this.state);\r\n }\r\n\r\n componentDidMount() {\r\n try {\r\n var host = window.location.hostname;\r\n if (!host.startsWith(\"localhost\")) {\r\n window.fbq(\"trackSingle\", \"832974670888918\", \"Lead\", {\r\n content_name: \"Editor\",\r\n });\r\n\r\n window.gtag(\"event\", \"lead\", {\r\n send_to: \"UA-119404542-5\",\r\n event_category: \"main\",\r\n });\r\n }\r\n } catch (e) {\r\n (console.error || console.log).call(console, e.stack || e);\r\n }\r\n }\r\n\r\n onText1Changed = (event) => {\r\n try {\r\n this.setState({ text1: event.target.value });\r\n } catch (e) {\r\n (console.error || console.log).call(console, e.stack || e);\r\n }\r\n };\r\n\r\n onText1Selected = (text) => {\r\n try {\r\n this.setState({ text1: text });\r\n } catch (e) {\r\n (console.error || console.log).call(console, e.stack || e);\r\n }\r\n };\r\n\r\n onText2Changed = (event) => {\r\n try {\r\n this.setState({ text2: event.target.value });\r\n } catch (e) {\r\n (console.error || console.log).call(console, e.stack || e);\r\n }\r\n };\r\n\r\n onStyleChanged = (e, styleId) => {\r\n const target = e.target;\r\n const value = target.checked;\r\n if (value) {\r\n this.setState({\r\n ...this.state,\r\n selectedStyleId: styleId,\r\n });\r\n }\r\n };\r\n\r\n onMaterialChanged = (info) => {\r\n const {\r\n price,\r\n ratio,\r\n selectedMaterialId,\r\n selectedSizeId,\r\n selectedHangerId,\r\n selectedMaterialName,\r\n selectedHangerName,\r\n width: printWidth,\r\n height: printHeight,\r\n } = info;\r\n this.setState({\r\n price,\r\n ratio,\r\n selectedMaterialId,\r\n selectedSizeId,\r\n selectedHangerId,\r\n selectedMaterialName,\r\n selectedHangerName,\r\n printWidth,\r\n printHeight,\r\n });\r\n };\r\n\r\n onMakeOrderClick = (materialUpdateInfo) => {\r\n var state = null;\r\n if (materialUpdateInfo) {\r\n state = { ...this.state, ...materialUpdateInfo };\r\n } else {\r\n state = { ...this.state };\r\n }\r\n store.set(\"audioEditorStateDate\", new Date());\r\n store.set(\"audioEditorState\", state);\r\n\r\n const {\r\n text1,\r\n text2,\r\n price,\r\n selectedMaterialId,\r\n selectedSizeId,\r\n selectedHangerId,\r\n selectedMaterialName,\r\n selectedHangerName,\r\n selectedStyleId,\r\n printWidth,\r\n printHeight,\r\n } = state;\r\n\r\n const convertedDescription = {\r\n material: selectedMaterialName,\r\n size: selectedSizeId,\r\n hanger: selectedHangerName,\r\n style: selectedStyleId,\r\n };\r\n\r\n const product = {\r\n productType: \"audio\",\r\n text1,\r\n text2,\r\n price,\r\n material: selectedMaterialId,\r\n size: selectedSizeId,\r\n hanger: selectedHangerId,\r\n style: selectedStyleId,\r\n printWidth,\r\n printHeight,\r\n description: convertedDescription,\r\n };\r\n store.set(\"product\", product);\r\n\r\n this.setState({ redirect: \"cart\" });\r\n };\r\n\r\n render() {\r\n if (this.state.redirect) {\r\n return (\r\n \r\n );\r\n }\r\n console.log(\"rendering: editor\");\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\nexport default withTranslation()(EditorComponent);\r\n","import React from 'react';\r\nimport { withFormik } from 'formik';\r\nimport Collapse from 'react-bootstrap/Collapse';\r\nimport './cart-form.css';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { Formik } from 'formik';\r\n\r\nconst CartForm = React.memo((props) => {\r\n const { t } = useTranslation();\r\n\r\n const paymentTypePrivat24 = 'privat24';\r\n const paymentTypeCash = 'cash';\r\n const paymentTypeLiqpay = 'liqpay';\r\n const paymentTypeWayForPay = 'wayforpay';\r\n\r\n const shippingTypeNovaPoshta = 'nova poshta';\r\n const shippingTypeCourier = 'courier';\r\n const canShipFromFactory = props.canShipFromFactory;\r\n const needPrepayment = props.needPrepayment;\r\n const isFreeShippingTurnedOn = props.isFreeShippingTurnedOn;\r\n const isLiqpayEnabled = props.isLiqpayEnabled;\r\n const isWayForPayEnabled = props.isWayForPayEnabled;\r\n const canPayByCash = props.canPayByCash;\r\n // const initialPaymentType = isWayForPayEnabled\r\n // ? paymentTypeWayForPay\r\n // : paymentTypePrivat24;\r\n\r\n const initialPaymentType = paymentTypePrivat24;\r\n const shippingDates = props.shippingDates;\r\n return (\r\n {\r\n const errors = {};\r\n\r\n //console.log(\"validating!\");\r\n if (!values.name) {\r\n errors.name = t(\"Π’Π²Π΅Π΄Ρ–Ρ‚ΡŒ Π†ΠΌ'я\");\r\n }\r\n\r\n if (!values.lastName) {\r\n errors.lastName = t('Π’Π²Π΅Π΄Ρ–Ρ‚ΡŒ ΠŸΡ€Ρ–Π·Π²ΠΈΡ‰Π΅');\r\n }\r\n\r\n if (!values.email) {\r\n errors.email = t('Π’Π²Π΅Π΄Ρ–Ρ‚ΡŒ Email');\r\n } else if (\r\n !/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,4}$/i.test(values.email)\r\n ) {\r\n errors.email = t('НСкорСктний Email');\r\n }\r\n\r\n if (!values.phone) {\r\n errors.phone = t('Π’Π²Π΅Π΄Ρ–Ρ‚ΡŒ Π’Π΅Π»Π΅Ρ„ΠΎΠ½');\r\n }\r\n\r\n if (!values.city) {\r\n errors.city = t('Π’Π²Π΅Π΄Ρ–Ρ‚ΡŒ ΠœΡ–ΡΡ‚ΠΎ');\r\n }\r\n\r\n if (values.shippingType === 'nova poshta') {\r\n if (!values.warehouse) {\r\n errors.warehouse = t('Π’Π²Π΅Π΄Ρ–Ρ‚ΡŒ НомСр відділСня');\r\n }\r\n } else if (values.shippingType === 'courier') {\r\n if (!values.address) {\r\n errors.address = t('Π’Π²Π΅Π΄Ρ–Ρ‚ΡŒ ΠŸΠΎΠ²Π½Ρƒ адрСсу');\r\n }\r\n }\r\n\r\n return errors;\r\n }}\r\n onSubmit={(values, actions) => {\r\n function submitCallback() {\r\n actions.setSubmitting(false);\r\n }\r\n\r\n props.onSubmit(values, submitCallback);\r\n }}\r\n >\r\n {(formikProps) => {\r\n const {\r\n values,\r\n touched,\r\n errors,\r\n handleChange,\r\n handleBlur,\r\n handleSubmit,\r\n setFieldValue,\r\n } = formikProps;\r\n\r\n let liqpayLabel = null;\r\n if (isLiqpayEnabled) {\r\n liqpayLabel = (\r\n \r\n setFieldValue('paymentType', e.target.value)}\r\n disabled={isLiqpayEnabled ? false : true}\r\n />\r\n
    \r\n \r\n
    \r\n \r\n {t('ΠžΠΏΠ»Π°Ρ‚Π° Ρ‡Π΅Ρ€Π΅Π·')}\r\n \r\n \r\n );\r\n }\r\n\r\n let wayForPayLabel = null;\r\n if (isWayForPayEnabled) {\r\n wayForPayLabel = (\r\n \r\n setFieldValue('paymentType', e.target.value)}\r\n disabled={isWayForPayEnabled ? false : true}\r\n />\r\n
    \r\n \r\n
    \r\n \r\n {t('ΠžΠΏΠ»Π°Ρ‚Π° Ρ‡Π΅Ρ€Π΅Π·')}\r\n \r\n \r\n );\r\n }\r\n\r\n var shippingCost = null;\r\n if (values.paymentType !== 'cash') {\r\n if (values.shippingType === 'courier') {\r\n if (canShipFromFactory) {\r\n if (values.city) {\r\n var city = values.city.toLowerCase().trim();\r\n if (\r\n city === 'ΠΊΠΈΠ΅Π²' ||\r\n city === 'kyiv' ||\r\n city === 'ΠΊΠΈΡ—Π²' ||\r\n city === 'kiev'\r\n ) {\r\n shippingCost = 150;\r\n } else {\r\n //shippingCost = 90;\r\n }\r\n } else {\r\n //shippingCost = 70;\r\n }\r\n }\r\n } else if (\r\n values.shippingType === 'nova poshta' &&\r\n canShipFromFactory &&\r\n isFreeShippingTurnedOn\r\n ) {\r\n shippingCost = 0;\r\n }\r\n }\r\n\r\n var shippingDate = null;\r\n if (shippingDates) {\r\n shippingDate = shippingDates.find(\r\n (d) => d.paymentType === values.paymentType\r\n )?.date;\r\n }\r\n\r\n props.onShippingCostChanged(shippingCost);\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {' '}\r\n {t(\r\n 'Π©ΠΎΠ± ΠΊΡƒΠΏΠΈΡ‚ΠΈ Π΄Π΅ΠΊΡ–Π»ΡŒΠΊΠ° Ρ‚ΠΎΠ²Π°Ρ€Ρ–Π², Π²ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Ρ€ΠΎΠ±ΠΈΡ‚ΠΈ Π΄Π΅ΠΊΡ–Π»ΡŒΠΊΠ° замовлСнь. Ми об’єднаємо Ρ—Ρ… Π² ΠΎΠ΄Π½Π΅.'\r\n )}\r\n
    \r\n
    \r\n {t(\r\n \"Π―ΠΊΡ‰ΠΎ вас Ρ†Ρ–ΠΊΠ°Π²ΠΈΡ‚ΡŒ нСстандартний Ρ€ΠΎΠ·ΠΌΡ–Ρ€ Π°Π±ΠΎ Π±Π°ΠΆΠ°Ρ”Ρ‚Π΅ внСсти Π·ΠΌΡ–Π½ΠΈ - Π·Π²'ΡΠΆΡ–Ρ‚ΡŒΡΡ Π· Π½Π°ΠΌΠΈ, Π½Π°ΠΏΡ€ΠΈΠΊΠ»Π°Π΄, Ρ‡Π΅Ρ€Π΅Π· Viber \"\r\n )}\r\n \r\n +380665444363\r\n \r\n
    \r\n\r\n

    {t('ΠŸΠΎΠΊΡƒΠΏΠ΅Ρ†ΡŒ')}

    \r\n
    \r\n
    \r\n \r\n \r\n \r\n {errors.name && touched.name ? (\r\n \r\n {errors.name}\r\n \r\n ) : null}\r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n {errors.lastName && touched.lastName ? (\r\n \r\n {errors.lastName}\r\n \r\n ) : null}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n {errors.email && touched.email ? (\r\n \r\n {errors.email}\r\n \r\n ) : null}\r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n {errors.phone && touched.phone ? (\r\n \r\n {errors.phone}\r\n \r\n ) : null}\r\n
    \r\n
    \r\n
    \r\n {/*

    {t(\"Бпосіб ΠΎΠΏΠ»Π°Ρ‚ΠΈ\")}

    \r\n \r\n\r\n {wayForPayLabel}\r\n \r\n {\r\n setFieldValue(\"paymentType\", e.target.value);\r\n setFieldValue(\"shippingType\", shippingTypeNovaPoshta);\r\n }}\r\n />\r\n
    \r\n \r\n
    \r\n \r\n {t(\"ΠžΠΏΠ»Π°Ρ‚Π° ΠΏΡ€ΠΈ ΠΎΡ‚Ρ€ΠΈΠΌΠ°Π½Π½Ρ– Π½Π° \")}\r\n \r\n {canPayByCash ? null : (\r\n {t(\"(НСдоступно для ΠΎΠ±Ρ€Π°Π½ΠΎΠ³ΠΎ Ρ€ΠΎΠ·ΠΌΡ–Ρ€Ρƒ)\")}\r\n )}\r\n
    \r\n \r\n {needPrepayment ? (\r\n <>\r\n Β·{\" \"}\r\n \r\n {t(\r\n \"Для замовлСнь Π΄ΠΎΡ€ΠΎΠΆΡ‡Π΅ 1500 Π³Ρ€Π½ Π½Π΅ΠΎΠ±Ρ…Ρ–Π΄Π½Π° 50% ΠΏΠ΅Ρ€Π΅Π΄ΠΎΠΏΠ»Π°Ρ‚Π°\"\r\n )}\r\n \r\n
    \r\n \r\n ) : null}\r\n {isFreeShippingTurnedOn && canShipFromFactory ? (\r\n \r\n Β· {t(\"Π‘ΠΏΠ»Π°Ρ‚Π° ΠΏΠΎΠΊΡƒΠΏΡ†Π΅ΠΌ доставки\")}\r\n
    \r\n
    \r\n ) : null}\r\n Β· {t(\"Π‘ΠΏΠ»Π°Ρ‚Π° ΠΏΠΎΠΊΡƒΠΏΡ†Π΅ΠΌ комісії Π·Π° Π½Π°ΠΊΠ»Π°Π΄. ΠΏΠ»Π°Ρ‚Ρ–ΠΆ\")}\r\n
    \r\n
    \r\n */}\r\n\r\n

    {t('Бпосіб доставки')}

    \r\n\r\n \r\n\r\n \r\n \r\n setFieldValue('shippingType', e.target.value)\r\n }\r\n disabled={\r\n values.paymentType === paymentTypeCash ? true : false\r\n }\r\n aria-expanded={\r\n values.shippingType === shippingTypeCourier\r\n }\r\n aria-controls=\"collapse_shippingTypeCourier\"\r\n />\r\n
    \r\n \r\n
    \r\n \r\n {' '}\r\n {t('Доставка ΠΊΡƒΡ€`Ρ”Ρ€ΠΎΠΌ (ΠšΠΈΡ—Π² Ρ– вся Π£ΠΊΡ€Π°Ρ—Π½Π°)')}\r\n
    \r\n {shippingDate ? (\r\n \r\n Β· {t('Π‘ΡƒΠ΄Π΅ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½ΠΎ Π΄ΠΎ слуТби доставки')}{' '}\r\n {shippingDate}\r\n \r\n ) : null}\r\n
    \r\n \r\n Β·{' '}\r\n {canShipFromFactory\r\n ? t(\r\n 'Π’Π°Ρ€Ρ‚Ρ–ΡΡ‚ΡŒ доставки ΠΊΡƒΡ€`Ρ”Ρ€ΠΎΠΌ: ΠšΠΈΡ—Π² - 150β€Ž Π³Ρ€Π½, Π£ΠΊΡ€Π°Ρ—Π½Π° - Π·Π³Ρ–Π΄Π½ΠΎ Π· Ρ‚Π°Ρ€ΠΈΡ„Π°ΠΌΠΈ Нової ΠŸΠΎΡˆΡ‚ΠΈ'\r\n )\r\n : t(\r\n 'Π’Π°Ρ€Ρ‚Ρ–ΡΡ‚ΡŒ доставки Π·Π³Ρ–Π΄Π½ΠΎ Π· Ρ‚Π°Ρ€ΠΈΡ„Π°ΠΌΠΈ Нової ΠŸΠΎΡˆΡ‚ΠΈ'\r\n )}\r\n \r\n
    \r\n \r\n Β· {t('ΠŸΠ°ΠΊΡƒΠ²Π°Π½Π½Ρ для транспортування Π·Π° наш Ρ€Π°Ρ…ΡƒΠ½ΠΎΠΊ')}\r\n \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n {t(\r\n \"Π―ΠΊΡ‰ΠΎ Π½Π΅ΠΎΠ±Ρ…Ρ–Π΄Π½ΠΎ Π²ΠΈΠΊΠΎΠ½Π°Ρ‚ΠΈ замовлСння Ρ‰Π΅ швидшС Π°Π±ΠΎ Ρ‰ΠΎΡΡŒ Π·ΠΌΡ–Π½ΠΈΡ‚ΠΈ, Π·Π²'ΡΠΆΡ–Ρ‚ΡŒΡΡ Π· Π½Π°ΠΌΠΈ, Π½Π°ΠΏΡ€ΠΈΠΊΠ»Π°Π΄, Ρ‡Π΅Ρ€Π΅Π· Viber \"\r\n )}\r\n \r\n +380665444363\r\n \r\n
    \r\n {canShipFromFactory &&\r\n (values.paymentType === paymentTypePrivat24 ||\r\n values.paymentType === paymentTypeWayForPay) ? (\r\n <>\r\n
    \r\n {t(\r\n 'ВідправлСння Π·Π±Π΅Ρ€Ρ–Π³Π°Ρ”Ρ‚ΡŒΡΡ Ρƒ Π²Ρ–Π΄Π΄Ρ–Π»Π΅Π½Π½Ρ– Нової ΠŸΠΎΡˆΡ‚ΠΈ Π½Π΅ Π±Ρ–Π»ΡŒΡˆΠ΅ 5 Π΄Π½Ρ–Π². ΠŸΠΎΡ‚Ρ–ΠΌ Π²Ρ–Π΄ΠΏΡ€Π°Π²Π»ΡΡ”Ρ‚ΡŒΡΡ Π½Π°Π·Π°Π΄.'\r\n )}\r\n
    \r\n \r\n ) : null}\r\n
    \r\n
    \r\n \r\n \r\n \r\n {errors.city && touched.city ? (\r\n \r\n {errors.city}\r\n \r\n ) : null}\r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n {errors.warehouse && touched.warehouse ? (\r\n \r\n {errors.warehouse}\r\n \r\n ) : null}\r\n
    \r\n \r\n {t('ΠŸΠΎΡˆΡƒΠΊ Π½Π°ΠΉΠ±Π»ΠΈΠΆΡ‡ΠΎΠ³ΠΎ відділСння')}\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n {errors.comment && touched.comment ? (\r\n \r\n {errors.comment}\r\n \r\n ) : null}\r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n {t(\r\n \"Π―ΠΊΡ‰ΠΎ Π½Π΅ΠΎΠ±Ρ…Ρ–Π΄Π½ΠΎ Π²ΠΈΠΊΠΎΠ½Π°Ρ‚ΠΈ замовлСння Ρ‰Π΅ швидшС Π°Π±ΠΎ Ρ‰ΠΎΡΡŒ Π·ΠΌΡ–Π½ΠΈΡ‚ΠΈ, Π·Π²'ΡΠΆΡ–Ρ‚ΡŒΡΡ Π· Π½Π°ΠΌΠΈ, Π½Π°ΠΏΡ€ΠΈΠΊΠ»Π°Π΄, Ρ‡Π΅Ρ€Π΅Π· Viber \"\r\n )}\r\n \r\n +380665444363\r\n \r\n
    \r\n {canShipFromFactory &&\r\n (values.paymentType === paymentTypePrivat24 ||\r\n values.paymentType === paymentTypeWayForPay) ? (\r\n <>\r\n
    \r\n {t(\r\n 'ВідправлСння Π·Π±Π΅Ρ€Ρ–Π³Π°Ρ”Ρ‚ΡŒΡΡ Ρƒ Π²Ρ–Π΄Π΄Ρ–Π»Π΅Π½Π½Ρ– Нової ΠŸΠΎΡˆΡ‚ΠΈ Π½Π΅ Π±Ρ–Π»ΡŒΡˆΠ΅ 5 Π΄Π½Ρ–Π². ΠŸΠΎΡ‚Ρ–ΠΌ Π²Ρ–Π΄ΠΏΡ€Π°Π²Π»ΡΡ”Ρ‚ΡŒΡΡ Π½Π°Π·Π°Π΄.'\r\n )}\r\n
    \r\n \r\n ) : null}\r\n
    \r\n
    \r\n \r\n \r\n \r\n {errors.city && touched.city ? (\r\n \r\n {errors.city}\r\n \r\n ) : null}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n {errors.address && touched.address ? (\r\n \r\n {errors.address}\r\n \r\n ) : null}\r\n
    \r\n
    \r\n\r\n
    \r\n \r\n \r\n \r\n {errors.comment && touched.comment ? (\r\n \r\n {errors.comment}\r\n \r\n ) : null}\r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n\r\n \r\n {t('ΠŸΡ–Π΄Ρ‚Π²Π΅Ρ€Π΄ΠΈΡ‚ΠΈ замовлСння')}{' '}\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 CartForm;\r\n","import React, { Component } from \"react\";\r\nimport { withTranslation } from \"react-i18next\";\r\nimport { getPublicUrl } from \"../utils/utils\";\r\nimport store from \"store\";\r\n\r\nclass Header extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n try {\r\n this.isProductTypeAudio = false;\r\n this.product = store.get(\"product\");\r\n if (this.product && this.product.productType === \"audio\") {\r\n this.isProductTypeAudio = true;\r\n }\r\n } catch (e) {\r\n (console.error || console.log).call(console, e.stack || e);\r\n }\r\n }\r\n\r\n render() {\r\n const { t, i18n } = this.props;\r\n let homeUrl = getPublicUrl(i18n);\r\n if (this.isProductTypeAudio) {\r\n homeUrl = \"/audio\";\r\n }\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\nexport default withTranslation()(Header);\r\n","import React, { Component } from \"react\";\r\nimport { withTranslation } from \"react-i18next\";\r\n\r\nclass Footer extends Component {\r\n render() {\r\n const { t } = this.props;\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n 2019 © mimiMaps\r\n \r\n
    \r\n\r\n
    \r\n \r\n |\r\n \r\n \r\n \r\n \r\n info@mimimaps.com.ua\r\n \r\n
    \r\n \r\n \r\n +380665444363\r\n \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n \r\n |\r\n \r\n \r\n Пн-ΠŸΡ‚: 11:00 – 19:00\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n |\r\n \r\n \r\n \r\n {t(\"Π”ΠΎΠ³ΠΎΠ²Ρ–Ρ€ ΠΎΡ„Π΅Ρ€Ρ‚ΠΈ\")}\r\n \r\n
    \r\n \r\n {t(\"ΠžΠ±ΠΌΡ–Π½ Ρ‚Π° повСрнСння\")}\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 withTranslation()(Footer);\r\n","import axios from \"axios\";\r\n\r\nconst api = axios.create({\r\n baseURL: \"/api/shipping\",\r\n});\r\n\r\nexport const getShippingDates = (canShipFromFactory) => {\r\n return api\r\n .get(`/date/${canShipFromFactory}`, {\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n },\r\n })\r\n .then((r) => {\r\n return r.data;\r\n })\r\n .catch((error) => {\r\n let message = \"\";\r\n if (error.response) {\r\n message = `${error.response.status} ${\r\n error.response.statusText\r\n }\\n${JSON.stringify(error.response.data)}`;\r\n // Request made and server responded\r\n console.log(error.response);\r\n } else if (error.request) {\r\n message = \"no response\";\r\n console.log(error.request);\r\n } else {\r\n message = error.message;\r\n console.log(\"Error\", error.message);\r\n }\r\n throw new Error(message);\r\n });\r\n};\r\n\r\nexport const getShippingDatesForVlad = (canShipFromFactory, canShipByVlad) => {\r\n return api\r\n .get(`/date/${canShipFromFactory}/${canShipByVlad}`, {\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n },\r\n })\r\n .then((r) => {\r\n return r.data;\r\n })\r\n .catch((error) => {\r\n let message = \"\";\r\n if (error.response) {\r\n message = `${error.response.status} ${\r\n error.response.statusText\r\n }\\n${JSON.stringify(error.response.data)}`;\r\n // Request made and server responded\r\n console.log(error.response);\r\n } else if (error.request) {\r\n message = \"no response\";\r\n console.log(error.request);\r\n } else {\r\n message = error.message;\r\n console.log(\"Error\", error.message);\r\n }\r\n throw new Error(message);\r\n });\r\n};\r\n\r\nconst apis = {\r\n getShippingDates,\r\n getShippingDatesForVlad,\r\n};\r\n\r\nexport default apis;\r\n","import React, { Component } from 'react';\r\nimport CartFormWithValidation from './cart-components/cart-form';\r\nimport Header from './header';\r\nimport Footer from './footer';\r\nimport store from 'store';\r\nimport superagent from 'superagent';\r\nimport './cart.css';\r\nimport { withTranslation } from 'react-i18next';\r\nimport Cookies from 'js-cookie';\r\nimport { getUrlQuery, getPublicUrl } from '../utils/utils';\r\nimport i18n from 'i18next';\r\nimport axios from 'axios';\r\nimport queryString from 'query-string';\r\nimport shippingApi from '../api/shipping-api';\r\n\r\nclass Cart extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.api = axios.create({\r\n baseURL: '/api',\r\n });\r\n\r\n this._liqpayForm = React.createRef();\r\n this._wayForPayForm = React.createRef();\r\n\r\n this.isTestActive = false;\r\n const queryParams = queryString.parse(props.location.search);\r\n if (queryParams) {\r\n if (queryParams.test) {\r\n this.isTestActive = true;\r\n }\r\n }\r\n\r\n var d = new Date();\r\n this.orderId = this.randomIntFromInterval(1000, 9999);\r\n this.wayForPayId =\r\n d.getFullYear().toString().substr(-2) +\r\n '_' +\r\n `0${d.getMonth() + 1}`.slice(-2) +\r\n '_' +\r\n `0${d.getDate()}`.slice(-2) +\r\n '_' +\r\n this.orderId;\r\n\r\n var url = '';\r\n try {\r\n url = window.location.protocol + '//' + window.location.host;\r\n } catch (e) {\r\n (console.error || console.log).call(console, e.stack || e);\r\n }\r\n this.redirectUrl = url + getPublicUrl(i18n) + '/completed/' + this.orderId;\r\n this.serverUrl = url + '/api/wayforpay/confirm';\r\n\r\n this.product = store.get('product');\r\n\r\n if (!this.product) {\r\n this.product = {\r\n description: {},\r\n };\r\n }\r\n\r\n const { productType, material, hanger, price, size } = this.product;\r\n\r\n this.product.note = '';\r\n if (productType && productType === 'sky') {\r\n if (this.product.text2 != this.product.text2BeforeManualEdit) {\r\n this.product.note += 'ВСкст2 Π±Ρ‹Π» ΠΈΠ·ΠΌΠ΅Π½Ρ‘Π½ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠΌ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ. ';\r\n //Если измСнилась Π΄Π°Ρ‚Π° Π² тСкстС, Ρ‚ΠΎ Π½Π°Π΄ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΈ Π΄Π°Ρ‚Ρƒ Π² Π·Π²Ρ‘Π΄Π½ΠΎΠΌ Π½Π΅Π±Π΅.\r\n }\r\n }\r\n\r\n if (!this.areTextsInSameLanguage(this.product.text1, this.product.text2)) {\r\n this.product.note += 'ВСкст1 ΠΈ ВСкст2 ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Ρ€Π°Π·Π½Ρ‹Π΅ языки. ';\r\n }\r\n\r\n if (productType && productType === 'audio') {\r\n this.productName = `ΠŸΠ»Π°ΠΊΠ°Ρ‚ Аудіохвиля ${size}`;\r\n this.pixelId = '832974670888918';\r\n this.gTagId = 'UA-119404542-5';\r\n } else {\r\n this.productName = `ΠŸΠ»Π°ΠΊΠ°Ρ‚ ЗорянС Π½Π΅Π±ΠΎ ${size}`;\r\n this.pixelId = '532340200777420';\r\n this.gTagId = 'UA-119404542-2';\r\n }\r\n\r\n this.canShipFromFactory = false;\r\n if (\r\n material === 'Π₯олст' ||\r\n (material === 'Π‘ΡƒΠΌΠ°Π³Π°' && hanger === 'НСт') ||\r\n (material === 'ΠŸΠ’Π₯' && (hanger === 'НСт' || hanger === 'Π›Π΅Π½Ρ‚Π°'))\r\n ) {\r\n this.canShipFromFactory = true;\r\n }\r\n\r\n this.canPayByCash = false;\r\n if (size === '70Ρ…100 см' && !(material === 'Π‘ΡƒΠΌΠ°Π³Π°' && hanger === 'НСт')) {\r\n this.canPayByCash = false;\r\n }\r\n\r\n this.canShipFromByVlad = true;\r\n if (hanger === 'Π Π°ΠΌΠΊΠ°' && (size === '40Ρ…50 см' || size === '50Ρ…70 см')) {\r\n this.canShipFromByVlad = false;\r\n }\r\n\r\n this.isFreeShippingTurnedOn = false;\r\n this.needPrepayment = false;\r\n if (price > 1500) {\r\n this.needPrepayment = true;\r\n }\r\n\r\n this.state = {\r\n redirect: null,\r\n isSubmitting: false,\r\n basePrice: price,\r\n priceWithoutShipping: price,\r\n promocode: '',\r\n succeededPromocode: '',\r\n isPromocodeFailed: false,\r\n shippingCost: null,\r\n price: price,\r\n buttonData: '',\r\n buttonSignature: '',\r\n wayForPay: {},\r\n isWayForPayEnabled: false,\r\n shippingDates: null,\r\n };\r\n\r\n if (this.product.map) {\r\n this.product.map.language = this.fixMapLanguage(\r\n this.product.map.language,\r\n this.product.text1,\r\n this.product.text2\r\n );\r\n }\r\n\r\n console.log('getUrlQuery');\r\n window.getUrlQuery = () => {\r\n const {\r\n date,\r\n printWidth,\r\n printHeight,\r\n style,\r\n place: { centerLat, centerLon },\r\n map: {\r\n mapWidth,\r\n mapHeight,\r\n containerWidth,\r\n containerHeight,\r\n background,\r\n stroke,\r\n isGridEnabled,\r\n isConstellationsEnabled,\r\n isMWEnabled,\r\n isNamesEnabled,\r\n language,\r\n },\r\n } = this.product;\r\n\r\n var obj = {\r\n date,\r\n printWidth,\r\n printHeight,\r\n style,\r\n centerLat,\r\n centerLon,\r\n mapWidth,\r\n mapHeight,\r\n containerWidth,\r\n containerHeight,\r\n background,\r\n stroke,\r\n isGridEnabled,\r\n isConstellationsEnabled,\r\n isMWEnabled,\r\n isNamesEnabled,\r\n language,\r\n };\r\n const query = getUrlQuery(obj);\r\n\r\n console.log(query);\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n try {\r\n const host = window.location.hostname;\r\n if (host.indexOf('localhost') !== 0) {\r\n window.gtag('event', 'cart', {\r\n send_to: this.gTagId,\r\n event_category: 'main',\r\n });\r\n\r\n window.fbq('trackSingle', this.pixelId, 'AddToCart');\r\n }\r\n } catch (e) {\r\n (console.error || console.log).call(console, e.stack || e);\r\n }\r\n\r\n if (this.state.isWayForPayEnabled) {\r\n this.updateWayForPayFormParameters(\r\n this.wayForPayId,\r\n this.state.price,\r\n this.productName\r\n );\r\n }\r\n\r\n try {\r\n shippingApi\r\n .getShippingDates(this.canShipFromFactory)\r\n .then((r) => {\r\n this.setState({\r\n shippingDates: r,\r\n });\r\n })\r\n .catch((e) => {\r\n this.setState({\r\n shippingDates: null,\r\n });\r\n (console.error || console.log).call(console, e.stack || e);\r\n });\r\n } catch (e) {\r\n (console.error || console.log).call(console, e.stack || e);\r\n }\r\n }\r\n\r\n componentDidUpdate(prevProps, prevState) {\r\n //if (prevState.price !== this.state.price && this.isTestActive) {\r\n if (\r\n prevState.price !== this.state.price\r\n //&& (!isNaN(prevState.price) || !isNaN(this.state.price))\r\n ) {\r\n //this.setState({ price: 50 });\r\n if (this.state.isWayForPayEnabled) {\r\n this.updateWayForPayFormParameters(\r\n this.wayForPayId,\r\n this.state.price,\r\n this.productName\r\n );\r\n }\r\n }\r\n }\r\n\r\n getPrice(priceWithoutShipping, shippingCost) {\r\n if (priceWithoutShipping == null) return undefined;\r\n if (shippingCost == null) return priceWithoutShipping;\r\n return priceWithoutShipping + shippingCost;\r\n }\r\n\r\n updateWayForPayFormParameters(wayForPayId, sum, productName) {\r\n this.setState({ isLoading: true, wayForPay: {} });\r\n this.getWayForPayFormParameters(wayForPayId, sum, productName)\r\n .then((res) => {\r\n console.log('received wayForPay form parameters', res);\r\n this.setState({\r\n isLoading: false,\r\n wayForPay: {\r\n returnUrl: this.redirectUrl,\r\n serviceUrl: this.serverUrl,\r\n ...res,\r\n },\r\n isWayForPayEnabled: true,\r\n });\r\n })\r\n .catch((e) => {\r\n this.setState({ isLoading: false, isWayForPayEnabled: false });\r\n (console.error || console.log).call(console, e.stack || e);\r\n });\r\n }\r\n\r\n getWayForPayFormParameters(wayForPayId, sum, productName) {\r\n const request = {\r\n orderReference: wayForPayId,\r\n amount: sum,\r\n productName: productName,\r\n };\r\n\r\n return this.api\r\n .post('/wayforpay/sign', JSON.stringify(request), {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n })\r\n .then((r) => {\r\n return r.data;\r\n })\r\n .catch((error) => {\r\n let message = '';\r\n if (error.response) {\r\n message = `${error.response.status} ${\r\n error.response.statusText\r\n }\\n${JSON.stringify(error.response.data)}`;\r\n // Request made and server responded\r\n console.log(error.response);\r\n } else if (error.request) {\r\n message = 'no response';\r\n console.log(error.request);\r\n } else {\r\n message = error.message;\r\n console.log('Error', error.message);\r\n }\r\n throw new Error(message);\r\n });\r\n }\r\n\r\n updateLiqpayFormParameters(orderId, sum, redirectUrl) {\r\n this.setState({ isLoading: true, buttonData: '', buttonSignature: '' });\r\n this.getLiqpayFormParameters(orderId, sum, redirectUrl)\r\n .then((res) => {\r\n console.log('received liqpay form parameters', res.data);\r\n this.setState({\r\n isLoading: false,\r\n buttonData: res.data,\r\n buttonSignature: res.signature,\r\n });\r\n })\r\n .catch((e) => {\r\n this.setState({ isLoading: false });\r\n (console.error || console.log).call(console, e.stack || e);\r\n });\r\n }\r\n\r\n getLiqpayFormParameters(orderId, sum, redirectUrl) {\r\n const request = {\r\n orderId: orderId,\r\n sum: sum,\r\n redirectUrl: redirectUrl,\r\n };\r\n\r\n return this.api\r\n .post('/liqpay', JSON.stringify(request), {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n })\r\n .then((r) => {\r\n return r.data;\r\n })\r\n .catch((error) => {\r\n let message = '';\r\n if (error.response) {\r\n message = `${error.response.status} ${\r\n error.response.statusText\r\n }\\n${JSON.stringify(error.response.data)}`;\r\n // Request made and server responded\r\n console.log(error.response);\r\n } else if (error.request) {\r\n message = 'no response';\r\n console.log(error.request);\r\n } else {\r\n message = error.message;\r\n console.log('Error', error.message);\r\n }\r\n throw new Error(message);\r\n });\r\n }\r\n\r\n onPomocodeChanged = (e) => {\r\n this.setState({ promocode: e.target.value });\r\n };\r\n\r\n onPomocodeApplied = (e) => {\r\n e.preventDefault();\r\n\r\n const { t } = this.props;\r\n\r\n superagent\r\n .get(`/api/Price/${this.state.promocode}/${this.state.basePrice}`)\r\n .end((error, result) => {\r\n if (error) {\r\n console.log(error);\r\n alert(\r\n t(\r\n 'Π’ΠΎΠ·Π½ΠΈΠΊΠ»Π° ошибка ΠΏΡ€ΠΈ ΠΎΡ„ΠΎΡ€ΠΌΠ»Π΅Π½ΠΈΠΈ Π·Π°ΠΊΠ°Π·Π°.\\r\\nΠŸΠΎΠΆΠ°Π»ΡƒΠΉΡΡ‚Π°, ΡΠ²ΡΠΆΠΈΡ‚Π΅ΡΡŒ с Π½Π°ΠΌΠΈ ΠΏΠΎ Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Ρƒ ΠΈ ΠΌΡ‹ ΠΎΡ„ΠΎΡ€ΠΌΠΈΠΌ Π·Π°ΠΊΠ°Π· Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ.\\r\\n'\r\n ) + error\r\n );\r\n } else {\r\n let isCorrect = false;\r\n try {\r\n const newPrice = parseInt(result.text);\r\n if (!isNaN(newPrice) && this.state.basePrice !== newPrice) {\r\n isCorrect = true;\r\n this.setState({\r\n priceWithoutShipping: newPrice,\r\n isPromocodeFailed: false,\r\n succeededPromocode: this.state.promocode,\r\n price: this.getPrice(newPrice, this.state.shippingCost),\r\n });\r\n }\r\n } catch (e) {\r\n (console.error || console.log).call(console, e.stack || e);\r\n }\r\n\r\n if (!isCorrect) {\r\n this.setState({\r\n isPromocodeFailed: true,\r\n succeededPromocode: '',\r\n priceWithoutShipping: this.state.basePrice,\r\n price: this.getPrice(\r\n this.state.basePrice,\r\n this.state.shippingCost\r\n ),\r\n });\r\n }\r\n }\r\n });\r\n };\r\n\r\n randomIntFromInterval = (min, max) => {\r\n return Math.floor(Math.random() * (max - min + 1) + min);\r\n };\r\n\r\n onSubmit = (e, callback) => {\r\n this.setState({\r\n isSubmitting: true,\r\n });\r\n\r\n this.product.price = this.state.price;\r\n this.product.basePrice = this.state.basePrice;\r\n this.product.promocode = this.state.promocode;\r\n this.product.shippingCost = this.state.shippingCost;\r\n const { productType } = this.product;\r\n const order = {\r\n id: this.orderId,\r\n product: this.product,\r\n shipping: e,\r\n canShipFromFactory: this.canShipFromFactory,\r\n };\r\n\r\n this.setState({\r\n wayForPay: {\r\n ...this.state.wayForPay,\r\n clientEmail: order.shipping?.email,\r\n clientPhone: order.shipping?.phone,\r\n },\r\n });\r\n\r\n try {\r\n const referral = Cookies.get('referral');\r\n order.shipping.referral = referral;\r\n } catch (e) {\r\n (console.error || console.log).call(console, e.stack || e);\r\n }\r\n\r\n try {\r\n const host = window.location.hostname;\r\n\r\n function endsWith(str, suffix) {\r\n return str.indexOf(suffix, str.length - suffix.length) !== -1;\r\n }\r\n\r\n if (host.indexOf('localhost') !== 0) {\r\n if (\r\n !order ||\r\n !order.shipping ||\r\n !endsWith(order.shipping.email, '@test.com')\r\n ) {\r\n window.gtag('event', 'order', {\r\n send_to: this.gTagId,\r\n event_category: 'main',\r\n value: this.product.price,\r\n currency: 'UAH',\r\n });\r\n\r\n window.fbq('trackSingle', this.pixelId, 'Purchase', {\r\n value: this.product.price,\r\n currency: 'UAH',\r\n });\r\n }\r\n }\r\n } catch (e) {\r\n (console.error || console.log).call(console, e.stack || e);\r\n }\r\n\r\n superagent\r\n .post(`/api/SkyOrder/create`)\r\n .send(order)\r\n .end((error, result) => {\r\n let isCorrect = false;\r\n this.setState({\r\n isSubmitting: false,\r\n });\r\n callback();\r\n\r\n if (!error) {\r\n try {\r\n const receivedOrderId = parseInt(result.text);\r\n if (receivedOrderId === order.id) {\r\n isCorrect = true;\r\n\r\n if (order?.shipping?.paymentType === 'liqpay') {\r\n this._liqpayForm.current.submit();\r\n } else if (order?.shipping?.paymentType === 'wayforpay') {\r\n this._wayForPayForm.current.submit();\r\n } else {\r\n this.props.history.push({\r\n pathname: `/completed/${order.id}`,\r\n //state: { orderId: order.id },\r\n });\r\n }\r\n } else {\r\n error = 'Received incorrect order id';\r\n }\r\n } catch (e) {\r\n error = e;\r\n (console.error || console.log).call(console, e.stack || e);\r\n }\r\n }\r\n\r\n if (!isCorrect) {\r\n alert(\r\n `Π’ΠΎΠ·Π½ΠΈΠΊΠ»Π° ошибка ΠΏΡ€ΠΈ ΠΎΡ„ΠΎΡ€ΠΌΠ»Π΅Π½ΠΈΠΈ Π·Π°ΠΊΠ°Π·Π°.\\r\\nΠŸΠΎΠΆΠ°Π»ΡƒΠΉΡΡ‚Π°, ΡΠ²ΡΠΆΠΈΡ‚Π΅ΡΡŒ с Π½Π°ΠΌΠΈ ΠΏΠΎ Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Ρƒ ΠΈ ΠΌΡ‹ ΠΎΡ„ΠΎΡ€ΠΌΠΈΠΌ Π·Π°ΠΊΠ°Π· Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ.\\r\\n${error}`\r\n );\r\n }\r\n });\r\n };\r\n\r\n fixMapLanguage = (language, text1, text2) => {\r\n if (!text1) return language;\r\n const ukChars = ['Ρ”', 'Ρ–', 'Ρ—'];\r\n const ruChars = ['Ρ‘', 'ъ', 'Ρ‹', 'э'];\r\n\r\n if (language === 'uk' && this.containsAny(text1, ruChars)) {\r\n return 'ru';\r\n } else if (language === 'ru' && this.containsAny(text1, ukChars)) {\r\n return 'uk';\r\n }\r\n const cyrrilicRegex = /[Π°-яА-ЯЁёІіЇїЄє]/;\r\n if (!cyrrilicRegex.test(text1)) {\r\n if (!text2 || !cyrrilicRegex.test(text2)) {\r\n return 'en';\r\n }\r\n }\r\n\r\n return language;\r\n };\r\n\r\n areTextsInSameLanguage = (text1, text2) => {\r\n const ukChars = ['Ρ”', 'Ρ–', 'Ρ—'];\r\n const ruChars = ['Ρ‘', 'ъ', 'Ρ‹', 'э'];\r\n const cyrrilicRegex = /[Π°-яА-ЯЁёІіЇїЄє]/;\r\n\r\n if (this.containsAny(text1, ruChars)) {\r\n if (\r\n this.containsAny(text2, ukChars) ||\r\n (text2 && !cyrrilicRegex.test(text2))\r\n ) {\r\n return false;\r\n }\r\n } else if (this.containsAny(text1, ukChars)) {\r\n if (\r\n this.containsAny(text2, ruChars) ||\r\n (text2 && !cyrrilicRegex.test(text2))\r\n ) {\r\n return false;\r\n }\r\n } else if (text1 && !cyrrilicRegex.test(text1)) {\r\n if (text2 && cyrrilicRegex.test(text2)) {\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n };\r\n\r\n containsAny = (str, substrings) => {\r\n if (!str) {\r\n return null;\r\n }\r\n for (let i = 0; i != substrings.length; i++) {\r\n const substring = substrings[i];\r\n if (str.indexOf(substring) != -1) {\r\n return substring;\r\n }\r\n }\r\n return null;\r\n };\r\n\r\n onShippingCostChanged = (value) => {\r\n this.setState({\r\n shippingCost: value,\r\n price: this.getPrice(this.state.priceWithoutShipping, value),\r\n });\r\n };\r\n\r\n renderWayForPayProduct = (props) => {\r\n var productName = null;\r\n var productCount = null;\r\n var productPrice = null;\r\n if (props.productName) {\r\n productName = props.productName.map((name, index) => {\r\n return (\r\n \r\n );\r\n });\r\n }\r\n if (props.productCount) {\r\n productCount = props.productCount.map((count, index) => {\r\n return (\r\n \r\n );\r\n });\r\n }\r\n if (props.productPrice) {\r\n productPrice = props.productPrice.map((price, index) => {\r\n return (\r\n \r\n );\r\n });\r\n }\r\n return (\r\n <>\r\n {productName}\r\n {productCount}\r\n {productPrice}\r\n \r\n );\r\n };\r\n\r\n render() {\r\n console.log('Rendering Cart');\r\n\r\n const { t } = this.props;\r\n\r\n const {\r\n city,\r\n description: { material, size, hanger, style },\r\n } = this.product;\r\n return (\r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n

    {t('ΠžΡ„ΠΎΡ€ΠΌΠ»Π΅Π½Π½Ρ замовлСння')}

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

    \r\n {t('Інформація ΠΏΡ€ΠΎ замовлСння')}\r\n

    \r\n\r\n \r\n \r\n
    \r\n \r\n {t('1 Ρ‚ΠΎΠ²Π°Ρ€(Ρ–Π²) Π² Π·Π°ΠΌΠΎΠ²Π»Π΅Π½Π½Ρ–')}\r\n \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
      \r\n
    • \r\n
      \r\n

      \r\n {t('ΠŸΠ»Π°ΠΊΠ°Ρ‚')} {city}\r\n

      \r\n
        \r\n
      • \r\n {t('ΠœΠ°Ρ‚Π΅Ρ€Ρ–Π°Π»')}: {material}{' '}\r\n
      • \r\n
      • \r\n {t('Π ΠΎΠ·ΠΌΡ–Ρ€')}: {size}\r\n
      • \r\n
      • \r\n {t('Π Π°ΠΌΠΊΠ°/Π’Ρ€ΠΈΠΌΠ°Ρ‡')}: {hanger}\r\n
      • \r\n
      • \r\n {t('Π‘Ρ‚ΠΈΠ»ΡŒ')}: {style}{' '}\r\n
      • \r\n
      \r\n \r\n {this.state.price} {t('Π³Ρ€Π½')}\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 {t('ΠŸΡ€ΠΎΠΌΠΎΠΊΠΎΠ΄')}\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 {t('Застосувати')}\r\n \r\n
    \r\n
    \r\n {this.state.isPromocodeFailed ? (\r\n
    \r\n \r\n {t(\r\n 'Π¦Π΅ΠΉ ΠΏΡ€ΠΎΠΌΠΎΠΊΠΎΠ΄ нСдійсний, Π°Π±ΠΎ Π½Π΅ Π·Π°ΡΡ‚ΠΎΡΠΎΠ²ΡƒΡ”Ρ‚ΡŒΡΡ для Π΄Π°Π½ΠΎΠ³ΠΎ Ρ‚ΠΎΠ²Π°Ρ€Ρƒ'\r\n )}\r\n \r\n
    \r\n ) : null}\r\n\r\n {this.state.succeededPromocode ? (\r\n
    \r\n \r\n {t('ΠŸΡ€ΠΎΠΌΠΎΠΊΠΎΠ΄')} {this.state.succeededPromocode}{' '}\r\n {t('застосований')}\r\n \r\n
    \r\n ) : null}\r\n
    \r\n \r\n \r\n {' '}\r\n {t('ΠžΠ±ΠΌΡ–Π½ Ρ‚Π° повСрнСння')}\r\n \r\n
    \r\n \r\n {t('Π’Π°Ρ€Ρ‚Ρ–ΡΡ‚ΡŒ Π±Π΅Π· доставки')}\r\n \r\n \r\n {this.state.succeededPromocode ? (\r\n \r\n \r\n {this.state.basePrice}{' '}\r\n \r\n \r\n ) : null}\r\n\r\n \r\n {this.state.priceWithoutShipping} {t('Π³Ρ€Π½')}\r\n \r\n \r\n
    \r\n {this.state.shippingCost != null ? (\r\n
    \r\n
    \r\n {t('Доставка')}\r\n \r\n \r\n {this.state.shippingCost === 0 ? (\r\n <>{t('Π±Π΅Π·ΠΊΠΎΡˆΡ‚ΠΎΠ²Π½ΠΎ')}\r\n ) : (\r\n <>\r\n {this.state.shippingCost} {t('Π³Ρ€Π½')}\r\n \r\n )}\r\n \r\n \r\n
    \r\n
    \r\n {t('Π”ΠΎ сплати')}\r\n \r\n \r\n {this.state.price} {t('Π³Ρ€Π½')}\r\n \r\n \r\n
    \r\n
    \r\n ) : null}\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 {this.renderWayForPayProduct(this.state.wayForPay)}\r\n \r\n \r\n \r\n \r\n \r\n\r\n {this.state.isSubmitting ? (\r\n
    \r\n
    \r\n
    \r\n ) : null}\r\n\r\n
    \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default withTranslation()(Cart);\r\n","import React, { Component } from \"react\";\r\nimport Header from \"./header\";\r\nimport Footer from \"./footer\";\r\nimport { withTranslation } from \"react-i18next\";\r\nimport { getPublicUrl } from \"../utils/utils\";\r\nimport store from \"store\";\r\n\r\nclass Completed extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n try {\r\n //this.id = props.location.state.orderId;\r\n this.id = props.match?.params?.orderId;\r\n this.isProductTypeAudio = false;\r\n this.product = store.get(\"product\");\r\n if (this.product && this.product.productType === \"audio\") {\r\n this.isProductTypeAudio = true;\r\n }\r\n store.remove(\"product\");\r\n store.remove(\"editorState\");\r\n store.remove(\"editorStateDate\");\r\n store.remove(\"audioEditorState\");\r\n store.remove(\"audioEditorStateDate\");\r\n } catch (e) {\r\n (console.error || console.log).call(console, e.stack || e);\r\n }\r\n }\r\n\r\n renderSendAudioButttons() {\r\n if (!this.isProductTypeAudio) {\r\n return null;\r\n }\r\n\r\n return (\r\n
    \r\n

    \r\n Π’ΠΈΠΌ часом Π²ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ–Π΄ΠΏΡ€Π°Π²ΠΈΡ‚ΠΈ запис\r\n вашого голосу Ρƒ вигляді голосового повідомлСння Ρƒ Viber Ρ‡ΠΈ Telegram\r\n

    \r\n
    \r\n \r\n \r\n {/* */}\r\n Viber\r\n \r\n \r\n \r\n {/* */}\r\n Telegram\r\n \r\n
    \r\n
    \r\n );\r\n }\r\n\r\n render() {\r\n const { t, i18n } = this.props;\r\n const homeUrl =\r\n getPublicUrl(i18n) + (this.isProductTypeAudio ? \"/audio\" : \"\");\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

    {t(\"Π’Π°ΡˆΠ΅ замовлСння прийнятС!\")}

    \r\n

    \r\n {t(\"НомСр замовлСння:\")} {this.id}\r\n

    \r\n

    \r\n {t(\r\n \"Ми Π·Π²'яТСмося Π· Π’Π°ΠΌΠΈ Π½Π°ΠΉΠ±Π»ΠΈΠΆΡ‡ΠΈΠΌ часом, Π·Π° Π²ΠΊΠ°Π·Π°Π½ΠΈΠΌ Π½ΠΎΠΌΠ΅Ρ€ΠΎΠΌ Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Ρƒ, для підтвСрдТСння Π΄Π΅Ρ‚Π°Π»Π΅ΠΉ замовлСння.\"\r\n )}\r\n

    \r\n {this.renderSendAudioButttons()}\r\n

    \r\n {t(\r\n \"Π―ΠΊΡ‰ΠΎ Ρƒ вас Ρ” питання, Π·Π²Π΅Ρ€Π½Ρ–Ρ‚ΡŒΡΡ Π΄ΠΎ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Π° Π·Π° Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½ΠΎΠΌ +380665444363, Π°Π±ΠΎ Π·Π° email: info@mimimaps.com.ua\"\r\n )}\r\n

    \r\n
    \r\n
    \r\n \r\n {\" \"}\r\n {t(\"ΠŸΠΎΠ²Π΅Ρ€Π½ΡƒΡ‚ΠΈΡΡ Π½Π° Π³ΠΎΠ»ΠΎΠ²Π½Ρƒ\")}\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 withTranslation()(Completed);\r\n","import React, { Component } from 'react';\r\nimport {\r\n getUrlQuery,\r\n getStyleSettingsByStyleId,\r\n getAllStyles,\r\n} from '../../utils/utils';\r\nimport moment from 'moment';\r\nimport './admin.css';\r\nimport formatcoords from 'formatcoords';\r\n\r\nexport default class AdminSky extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n var additionalStateValues = this.getAdditionalStateValues(\r\n this.props.settings\r\n );\r\n\r\n let stylesId = getAllStyles(true).map((s) => s.id);\r\n\r\n this.state = {\r\n isSubtitleRequiresChange: false,\r\n isAdditionalInfoOpen: false,\r\n stylesId,\r\n ...additionalStateValues,\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.checkStyleIsCorrect();\r\n }\r\n\r\n checkStyleIsCorrect() {\r\n if (this.props.settings) {\r\n let styleId = this.props.settings.style;\r\n if (this.state.stylesId.indexOf(styleId) < 0) {\r\n this.props.onShowError(`НС Π½Π°ΠΉΠ΄Π΅Π½ ΡΡ‚ΠΈΠ»ΡŒ ${styleId}`);\r\n }\r\n }\r\n }\r\n\r\n getAdditionalStateValues(settings) {\r\n let formattedDate = null;\r\n if (settings && settings.urlQuery) {\r\n if (settings.urlQuery.date) {\r\n var m = moment.utc(settings.urlQuery.date).local();\r\n formattedDate = m.format('DD.MM.YYYY HH:mm');\r\n }\r\n }\r\n\r\n return {\r\n formattedDate,\r\n };\r\n }\r\n\r\n onStyleChange = (event) => {\r\n var value = event.target.value;\r\n var settings = { ...this.props.settings };\r\n var urlQuery = { ...this.props.settings.urlQuery };\r\n var styleSettings = getStyleSettingsByStyleId(value);\r\n\r\n this.props.onSettingsChanged({\r\n ...settings,\r\n style: value,\r\n urlQuery: {\r\n ...urlQuery,\r\n style: value,\r\n ...styleSettings,\r\n },\r\n });\r\n };\r\n\r\n onSizeChange = (event) => {\r\n var value = event.target.value;\r\n\r\n let split = value.split(/[\\sxXΡ…Π₯]+/);\r\n let width = parseInt(split[0], 10) * 10;\r\n let height = parseInt(split[1], 10) * 10;\r\n\r\n var settings = { ...this.props.settings };\r\n var urlQuery = { ...this.props.settings.urlQuery };\r\n\r\n this.props.onSettingsChanged({\r\n ...settings,\r\n size: value,\r\n urlQuery: {\r\n ...urlQuery,\r\n printWidth: width,\r\n printHeight: height,\r\n },\r\n });\r\n };\r\n\r\n onDateChange = (event) => {\r\n this.dateUpdatedForOrderId = this.props.settings.orderId;\r\n\r\n var value = event.target.value;\r\n var parsedUtcDate = null;\r\n\r\n var parsedLocalDate = moment(value, 'DD.MM.YYYY HH:mm');\r\n parsedUtcDate = parsedLocalDate.utc().format();\r\n\r\n var settings = { ...this.props.settings };\r\n var urlQuery = { ...this.props.settings.urlQuery };\r\n\r\n this.setState({\r\n formattedDate: value,\r\n isSubtitleRequiresChange: true,\r\n });\r\n\r\n this.props.onSettingsChanged({\r\n ...settings,\r\n urlQuery: {\r\n ...urlQuery,\r\n date: parsedUtcDate,\r\n },\r\n });\r\n };\r\n\r\n onInputChange = (event) => {\r\n const target = event.target;\r\n const name = target.name;\r\n const type = target.type;\r\n let value = null;\r\n\r\n if (type == 'checkbox') {\r\n value = target.checked;\r\n } else {\r\n value = target.value;\r\n }\r\n\r\n var settings = { ...this.props.settings };\r\n\r\n this.props.onSettingsChanged({\r\n ...settings,\r\n [name]: value,\r\n });\r\n };\r\n\r\n onUrlQueryInputChange = (event) => {\r\n const target = event.target;\r\n const name = target.name;\r\n const type = target.type;\r\n let value = null;\r\n\r\n if (type == 'checkbox') {\r\n value = target.checked;\r\n } else {\r\n value = target.value;\r\n }\r\n\r\n var settings = { ...this.props.settings };\r\n var urlQuery = { ...this.props.settings.urlQuery };\r\n\r\n if (name === 'centerLon' || name === 'centerLat') {\r\n this.setState({\r\n isSubtitleRequiresChange: true,\r\n });\r\n }\r\n this.props.onSettingsChanged({\r\n ...settings,\r\n urlQuery: {\r\n ...urlQuery,\r\n [name]: value,\r\n },\r\n });\r\n };\r\n\r\n generateConfigFileFromState = () => {\r\n let query = getUrlQuery(this.props.settings.urlQuery);\r\n\r\n var result = {\r\n ...this.props.settings,\r\n urlQuery: query,\r\n };\r\n\r\n var stringResult = JSON.stringify(result, null, 2);\r\n\r\n console.log(stringResult);\r\n return stringResult;\r\n };\r\n\r\n handleSubmit = (event) => {\r\n event.preventDefault();\r\n var content = this.generateConfigFileFromState();\r\n this.props.onSaveFile(content);\r\n };\r\n\r\n sendToOrder = (event) => {\r\n event.preventDefault();\r\n var content = this.generateConfigFileFromState();\r\n this.props.onSendFileToOrder(content);\r\n };\r\n\r\n onAdditionalInfoClick = (event) => {\r\n event.preventDefault();\r\n this.setState({ isAdditionalInfoOpen: !this.state.isAdditionalInfoOpen });\r\n };\r\n\r\n copyRedHeart = (event) => {\r\n event.preventDefault();\r\n const text = '❀️';\r\n navigator.clipboard.writeText(text).then(\r\n () => {\r\n console.log('Async: Copying to clipboard was successful!');\r\n },\r\n (err) => {\r\n console.error('Async: Could not copy text: ', err);\r\n }\r\n );\r\n };\r\n\r\n getFormattedCoordinates() {\r\n let formattedCoordinates = '';\r\n if (\r\n this.props.settings &&\r\n this.props.settings.urlQuery &&\r\n this.props.settings.urlQuery.centerLat\r\n ) {\r\n let urlQuery = this.props.settings.urlQuery;\r\n let latitude = parseFloat(urlQuery.centerLat);\r\n let longitude = parseFloat(urlQuery.centerLon);\r\n formattedCoordinates = formatcoords(latitude, longitude).format(\r\n 'DΒ°M\\'s\"X',\r\n {\r\n latLonSeparator: ' ',\r\n decimalPlaces: 2,\r\n }\r\n );\r\n }\r\n return formattedCoordinates;\r\n }\r\n\r\n renderAdditionalInfo() {\r\n if (!this.state.isAdditionalInfoOpen) return null;\r\n return (\r\n
    \r\n
      \r\n
    • \r\n
      \r\n
      \r\n Π‘Π΅Ρ€Π΄Ρ†Π΅ для копирования\r\n
      \r\n {/* \r\n Htmlstream\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 9+\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 render() {\r\n let formattedCoordinates = this.getFormattedCoordinates();\r\n let hangerOptions = [\r\n 'НСт',\r\n 'Π Π°ΠΌΠΊΠ°',\r\n 'Π›Π΅Π½Ρ‚Π°',\r\n 'ΠšΡ€ΡŽΡ‡ΠΊΠΈ',\r\n 'ДСрСвянный ΠΏΠΎΠ΄Ρ€Π°ΠΌΠ½ΠΈΠΊ',\r\n ];\r\n let isHangerNotValid = false;\r\n let material = this.props?.settings?.material;\r\n let hanger = this.props?.settings?.hanger;\r\n if (material === 'Π‘ΡƒΠΌΠ°Π³Π°') {\r\n if (hanger !== 'НСт' && hanger !== 'Π Π°ΠΌΠΊΠ°') {\r\n isHangerNotValid = true;\r\n }\r\n } else if (material === 'ΠŸΠ’Π₯') {\r\n if (hanger !== 'НСт' && hanger !== 'Π Π°ΠΌΠΊΠ°' && hanger !== 'Π›Π΅Π½Ρ‚Π°') {\r\n isHangerNotValid = true;\r\n }\r\n } else if (material === 'Π₯олст') {\r\n if (hanger !== 'ΠšΡ€ΡŽΡ‡ΠΊΠΈ' && hanger !== 'ДСрСвянный ΠΏΠΎΠ΄Ρ€Π°ΠΌΠ½ΠΈΠΊ') {\r\n isHangerNotValid = true;\r\n }\r\n }\r\n\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 {this.state.stylesId.map((s) => {\r\n return ;\r\n })}\r\n \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n \r\n \r\n {hangerOptions.map((s) => {\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\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n\r\n {this.renderAdditionalInfo()}\r\n\r\n \r\n ΠžΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ Π½Π° order\r\n \r\n \r\n Π‘ΠΊΠ°Ρ‡Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ»\r\n \r\n \r\n Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ\r\n \r\n \r\n );\r\n }\r\n}\r\n","import React, { Component } from 'react';\r\nimport './admin.css';\r\n\r\nexport default class AdminCity extends Component {\r\n constructor(props) {\r\n super(props);\r\n var additionalStateValues = this.getAdditionalStateValues(\r\n this.props.settings\r\n );\r\n\r\n let coordinates = JSON.stringify(props.settings.markersCoordinates);\r\n this.state = {\r\n markersCoordinates: coordinates,\r\n isSubtitleRequiresChange: false,\r\n isMapDirty: false,\r\n isChangingLocationNotAllowed: false,\r\n ...additionalStateValues,\r\n };\r\n }\r\n\r\n getAdditionalStateValues(settings) {\r\n let styleSrcFolder = null;\r\n let initialMapWidth = null;\r\n let initialMapHeight = null;\r\n let initialPadding = null;\r\n if (settings && settings.urlQuery) {\r\n if (settings.urlQuery.styleSrc) {\r\n let lastIndex = settings.urlQuery.styleSrc.lastIndexOf('/');\r\n styleSrcFolder = settings.urlQuery.styleSrc.substring(0, lastIndex + 1);\r\n }\r\n initialMapWidth = settings.urlQuery.mapWidth;\r\n initialMapHeight = settings.urlQuery.mapHeight;\r\n initialPadding = settings.urlQuery.padding;\r\n }\r\n return {\r\n styleSrcFolder,\r\n initialMapWidth,\r\n initialMapHeight,\r\n initialPadding,\r\n };\r\n }\r\n\r\n getStyleSettingsByStyleId = (styleId) => {\r\n try {\r\n let styleSrc = this.state.styleSrcFolder;\r\n\r\n switch (styleId) {\r\n case 'modern':\r\n styleSrc += 'oModern2.json';\r\n break;\r\n case 'simple':\r\n styleSrc += 'oSimple.json';\r\n break;\r\n case 'blue':\r\n styleSrc += 'oBlue.json';\r\n break;\r\n case 'tender':\r\n styleSrc += 'oTender.json';\r\n break;\r\n case 'black':\r\n styleSrc += 'oBlack2.json';\r\n break;\r\n case 'vintage':\r\n styleSrc += 'oVintage.json';\r\n break;\r\n case 'red':\r\n styleSrc += 'oRed.json';\r\n break;\r\n case 'paste':\r\n styleSrc += 'oPaste.json';\r\n break;\r\n case 'harvest':\r\n styleSrc += 'oHarvest.json';\r\n break;\r\n case 'bayside':\r\n styleSrc += 'oBayside.json';\r\n break;\r\n case 'plum':\r\n styleSrc += 'oPlum2.json';\r\n break;\r\n case 'leaf':\r\n styleSrc += 'oLeaf.json';\r\n break;\r\n case 'leaf2':\r\n styleSrc += 'oLeaf.json';\r\n break;\r\n default:\r\n throw 'НС ΠΌΠΎΠ³Ρƒ Π½Π°ΠΉΡ‚ΠΈ ΡΡ‚ΠΈΠ»ΡŒ: ' + styleId;\r\n }\r\n return {\r\n styleSrc,\r\n };\r\n } catch (e) {\r\n (console.error || console.log).call(console, e.stack || e);\r\n }\r\n };\r\n\r\n onStyleChange = (event) => {\r\n var value = event.target.value;\r\n var settings = { ...this.props.settings };\r\n var urlQuery = { ...this.props.settings.urlQuery };\r\n var styleSettings = this.getStyleSettingsByStyleId(value);\r\n\r\n this.props.onSettingsChanged({\r\n ...settings,\r\n styleId: value,\r\n urlQuery: {\r\n ...urlQuery,\r\n style: value,\r\n ...styleSettings,\r\n },\r\n });\r\n };\r\n\r\n getMapSettingsByMaterialAndLabeStyle = (material, labelStyle) => {\r\n try {\r\n let padding = '';\r\n let mapWidth = '';\r\n let mapHeight = '';\r\n\r\n if (\r\n labelStyle === 'center' ||\r\n labelStyle === 'none' ||\r\n material === 'Π₯олст'\r\n ) {\r\n padding = 0;\r\n mapWidth = this.props.settings.urlQuery.containerWidth;\r\n mapHeight = this.props.settings.urlQuery.containerHeight;\r\n } else {\r\n var paddingInt = 24;\r\n if (this.state.initialPadding && this.state.initialPadding !== '0') {\r\n paddingInt = parseInt(this.state.initialPadding);\r\n }\r\n\r\n padding = paddingInt + '';\r\n mapWidth = (\r\n parseInt(this.state.initialMapWidth) -\r\n 2 * paddingInt\r\n ).toString();\r\n mapHeight = (\r\n parseInt(this.state.initialMapHeight) -\r\n 2 * paddingInt\r\n ).toString();\r\n }\r\n return {\r\n padding,\r\n mapWidth,\r\n mapHeight,\r\n };\r\n } catch (e) {\r\n (console.error || console.log).call(console, e.stack || e);\r\n }\r\n };\r\n\r\n onMaterialChange = (event) => {\r\n var value = event.target.value;\r\n var settings = { ...this.props.settings };\r\n var urlQuery = { ...this.props.settings.urlQuery };\r\n\r\n this.setState({ isMapDirty: true });\r\n\r\n var mapSettings = this.getMapSettingsByMaterialAndLabeStyle(\r\n value,\r\n this.props.settings.labelStyle\r\n );\r\n\r\n this.props.onSettingsChanged({\r\n ...settings,\r\n material: value,\r\n urlQuery: {\r\n ...urlQuery,\r\n ...mapSettings,\r\n },\r\n });\r\n };\r\n\r\n onSizeChange = (event) => {\r\n var value = event.target.value;\r\n\r\n let split = value.split(/[\\sxXΡ…Π₯]+/);\r\n let width = parseInt(split[0], 10) * 10;\r\n let height = parseInt(split[1], 10) * 10;\r\n\r\n this.setState({ isMapDirty: true });\r\n\r\n var settings = { ...this.props.settings };\r\n var urlQuery = { ...this.props.settings.urlQuery };\r\n\r\n this.props.onSettingsChanged({\r\n ...settings,\r\n size: value,\r\n urlQuery: {\r\n ...urlQuery,\r\n printWidth: width,\r\n printHeight: height,\r\n },\r\n });\r\n };\r\n\r\n onLabelStyleChange = (event) => {\r\n var value = event.target.value;\r\n\r\n this.setState({ isMapDirty: true });\r\n\r\n var settings = { ...this.props.settings };\r\n var urlQuery = { ...this.props.settings.urlQuery };\r\n\r\n var mapSettings = this.getMapSettingsByMaterialAndLabeStyle(\r\n this.props.settings.material,\r\n value\r\n );\r\n\r\n this.props.onSettingsChanged({\r\n ...settings,\r\n labelStyle: value,\r\n urlQuery: {\r\n ...urlQuery,\r\n ...mapSettings,\r\n },\r\n });\r\n };\r\n\r\n onInputChange = (event) => {\r\n const target = event.target;\r\n const name = target.name;\r\n const type = target.type;\r\n let value = null;\r\n\r\n if (type == 'checkbox') {\r\n value = target.checked;\r\n } else {\r\n value = target.value;\r\n }\r\n\r\n var settings = { ...this.props.settings };\r\n this.props.onSettingsChanged({\r\n ...settings,\r\n [name]: value,\r\n });\r\n };\r\n\r\n onMarkersCoordinatesInputChange = (event) => {\r\n var value = event.target.value;\r\n\r\n this.setState({\r\n markersCoordinates: value,\r\n });\r\n };\r\n\r\n onUrlQueryInputChange = (event) => {\r\n const target = event.target;\r\n const name = target.name;\r\n const type = target.type;\r\n let value = null;\r\n\r\n if (type == 'checkbox') {\r\n value = target.checked;\r\n } else {\r\n value = target.value;\r\n }\r\n\r\n var settings = { ...this.props.settings };\r\n var urlQuery = { ...this.props.settings.urlQuery };\r\n\r\n var isSubtitleRequiresChange = false;\r\n var isMapDirty = false;\r\n if (name === 'centerLon' || name === 'centerLat') {\r\n isSubtitleRequiresChange = true;\r\n isMapDirty = true;\r\n } else if (name === 'zoom') {\r\n isMapDirty = true;\r\n }\r\n\r\n this.setState({\r\n isSubtitleRequiresChange,\r\n isMapDirty,\r\n });\r\n\r\n this.props.onSettingsChanged({\r\n ...settings,\r\n urlQuery: {\r\n ...urlQuery,\r\n [name]: value,\r\n },\r\n });\r\n };\r\n\r\n getUrlQuery = (obj) => {\r\n let query = '?';\r\n query += Object.keys(obj)\r\n .map(function (key) {\r\n return `${key}=${obj[key]}`;\r\n })\r\n .join('&');\r\n\r\n return query;\r\n };\r\n\r\n generateConfigFileFromState = () => {\r\n let query = this.getUrlQuery(this.props.settings.urlQuery);\r\n\r\n var result = {\r\n ...this.props.settings,\r\n urlQuery: query,\r\n };\r\n\r\n var stringResult = JSON.stringify(result, null, 2);\r\n\r\n console.log(stringResult);\r\n return stringResult;\r\n };\r\n\r\n handleSubmit = (event) => {\r\n event.preventDefault();\r\n let that = this;\r\n this.validateForm(() => {\r\n var content = that.generateConfigFileFromState();\r\n that.props.onSaveFile(content);\r\n });\r\n };\r\n\r\n sendToOrder = (event) => {\r\n event.preventDefault();\r\n this.validateForm(() => {\r\n var content = this.generateConfigFileFromState();\r\n this.props.onSendFileToOrder(content);\r\n });\r\n };\r\n\r\n validateMarkers = () => {\r\n //if (this.props.settings.)\r\n };\r\n\r\n validateForm(callback) {\r\n try {\r\n var obj = JSON.parse(this.state.markersCoordinates);\r\n var settings = { ...this.props.settings };\r\n this.props.onSettingsChanged(\r\n {\r\n ...settings,\r\n markersCoordinates: obj,\r\n },\r\n callback\r\n );\r\n } catch (e) {\r\n this.props.onShowError(\r\n `НСвСрный Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚. НСобходим [[lat,lng],[lat,lng]...]`\r\n );\r\n }\r\n }\r\n\r\n render() {\r\n let hangerOptions = [\r\n 'НСт',\r\n 'Π Π°ΠΌΠΊΠ°',\r\n 'Π›Π΅Π½Ρ‚Π°',\r\n 'ΠšΡ€ΡŽΡ‡ΠΊΠΈ',\r\n 'ДСрСвянный ΠΏΠΎΠ΄Ρ€Π°ΠΌΠ½ΠΈΠΊ',\r\n ];\r\n let isHangerNotValid = false;\r\n let material = this.props?.settings?.material;\r\n let hanger = this.props?.settings?.hanger;\r\n if (material === 'Π‘ΡƒΠΌΠ°Π³Π°') {\r\n if (hanger !== 'НСт' && hanger !== 'Π Π°ΠΌΠΊΠ°') {\r\n isHangerNotValid = true;\r\n }\r\n } else if (material === 'ΠŸΠ’Π₯') {\r\n if (hanger !== 'НСт' && hanger !== 'Π Π°ΠΌΠΊΠ°' && hanger !== 'Π›Π΅Π½Ρ‚Π°') {\r\n isHangerNotValid = true;\r\n }\r\n } else if (material === 'Π₯олст') {\r\n if (hanger !== 'ΠšΡ€ΡŽΡ‡ΠΊΠΈ' && hanger !== 'ДСрСвянный ΠΏΠΎΠ΄Ρ€Π°ΠΌΠ½ΠΈΠΊ') {\r\n isHangerNotValid = true;\r\n }\r\n }\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 {hangerOptions.map((s) => {\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\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 ΠžΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ Π½Π° order\r\n \r\n \r\n Π‘ΠΊΠ°Ρ‡Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ»\r\n \r\n \r\n );\r\n }\r\n}\r\n","import React, { Component } from \"react\";\r\nimport rjson from \"relaxed-json\";\r\nimport Dropzone from \"react-dropzone\";\r\nimport Toast from \"react-bootstrap/Toast\";\r\nimport Spinner from \"react-bootstrap/Spinner\";\r\nimport superagent from \"superagent\";\r\nimport \"./admin.css\";\r\n\r\nexport default class AdminFileLoader extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n fileName: null,\r\n };\r\n }\r\n\r\n getUrlQueryParameters(queryString) {\r\n var match,\r\n pl = /\\+/g, // Regex for replacing addition symbol with a space\r\n search = /([^&=]+)=?([^&]*)/g,\r\n decode = function (s) {\r\n return decodeURIComponent(s.replace(pl, \" \"));\r\n },\r\n query = queryString.substring(1);\r\n\r\n var urlParams = {};\r\n while ((match = search.exec(query))) {\r\n let value = decode(match[2]);\r\n value = this.fixStringBoolean(value);\r\n urlParams[decode(match[1])] = value;\r\n }\r\n\r\n return urlParams;\r\n }\r\n\r\n fixStringBoolean = (value) => {\r\n if (value == null) return null;\r\n var loweredValue = value.toLowerCase();\r\n return loweredValue === \"true\"\r\n ? true\r\n : loweredValue === \"false\"\r\n ? false\r\n : value;\r\n };\r\n\r\n extractSettings = (fileName, jsonContent) => {\r\n let urlQueryParams = this.getUrlQueryParameters(jsonContent.urlQuery);\r\n this.setState({\r\n fileName,\r\n });\r\n this.raiseOnFileLoaded(fileName, jsonContent, {\r\n ...jsonContent,\r\n urlQuery: { ...urlQueryParams },\r\n });\r\n };\r\n\r\n onFileChangeHandler = (event) => {\r\n var file = event.target.files[0];\r\n this.processFile(file);\r\n };\r\n\r\n onFilesSelected = (files) => {\r\n var file = files[0];\r\n this.processFile(file);\r\n };\r\n\r\n readFromClipboard = (e) => {\r\n navigator.clipboard\r\n .readText()\r\n .then((text) => {\r\n console.log(\"Pasted content: \", text);\r\n this.processContent(text);\r\n })\r\n .catch((err) => {\r\n console.error(\"Failed to read clipboard contents: \", err);\r\n this.raiseOnFileException(err);\r\n });\r\n e.preventDefault();\r\n };\r\n\r\n processFile = (file) => {\r\n if (file) {\r\n let reader = new FileReader();\r\n\r\n reader.readAsText(file);\r\n\r\n var that = this;\r\n reader.onload = function () {\r\n try {\r\n var content = reader.result;\r\n console.log(content);\r\n var fixedContent = rjson.transform(content);\r\n var jsonContent = JSON.parse(fixedContent);\r\n console.log(jsonContent);\r\n that.extractSettings(file.name, jsonContent);\r\n } catch (e) {\r\n (console.error || console.log).call(console, e.stack || e);\r\n that.raiseOnFileException(e);\r\n }\r\n };\r\n\r\n reader.onerror = function () {\r\n console.log(reader.error);\r\n that.raiseOnFileException(reader.error);\r\n };\r\n }\r\n };\r\n\r\n processContent = (content) => {\r\n if (content) {\r\n try {\r\n console.log(content);\r\n var fixedContent = rjson.transform(content);\r\n var jsonContent = JSON.parse(fixedContent);\r\n console.log(jsonContent);\r\n var d = new Date();\r\n\r\n var fileName =\r\n d.getFullYear().toString().substr(-2) +\r\n \"_\" +\r\n (\"0\" + (d.getMonth() + 1)).slice(-2) +\r\n \"_\" +\r\n (\"0\" + d.getDate()).slice(-2) +\r\n \"_\" +\r\n jsonContent.orderId +\r\n \".txt\";\r\n\r\n this.extractSettings(fileName, jsonContent);\r\n } catch (e) {\r\n (console.error || console.log).call(console, e.stack || e);\r\n this.raiseOnFileException(e);\r\n }\r\n }\r\n };\r\n\r\n raiseOnFileLoaded = (fileName, file, settings) => {\r\n this.props.onFileLoaded(fileName, file, settings);\r\n };\r\n\r\n raiseOnFileException = (message) => {\r\n this.props.onFileException(message);\r\n };\r\n\r\n render() {\r\n return (\r\n \r\n {({\r\n getRootProps,\r\n getInputProps,\r\n isDragActive,\r\n isDragAccept,\r\n open,\r\n }) => (\r\n \r\n
    \r\n \r\n \r\n \r\n \r\n ΠŸΠ΅Ρ€Π΅Ρ‚Π°Ρ‰ΠΈΡ‚Π΅ Ρ„Π°ΠΉΠ» сюда\r\n ΠΈΠ»ΠΈ\r\n

    {this.state.fileName}

    \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","import React, { Component } from \"react\";\r\nimport rjson from \"relaxed-json\";\r\nimport Dropzone from \"react-dropzone\";\r\nimport Toast from \"react-bootstrap/Toast\";\r\nimport Spinner from \"react-bootstrap/Spinner\";\r\nimport superagent from \"superagent\";\r\nimport \"./admin.css\";\r\nimport AdminSky from \"./admin-sky\";\r\nimport AdminCity from \"./admin-city\";\r\nimport AdminFileLoader from \"./admin-fileLoader\";\r\n\r\nexport default class Admin extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n file: null,\r\n fileName: null,\r\n fileKey: null,\r\n settings: null,\r\n toast: {\r\n isShow: false,\r\n alertType: null,\r\n message: null,\r\n },\r\n isLoading: false,\r\n };\r\n }\r\n\r\n onFileLoaded = (fileName, file, settings) => {\r\n this.setState({\r\n fileName,\r\n file,\r\n settings,\r\n fileKey: new Date().getTime().toString(),\r\n });\r\n };\r\n\r\n onFileException = (message) => {\r\n this.showError(message);\r\n };\r\n\r\n onSaveFile = (data) => {\r\n var fileName = this.state.fileName;\r\n var blob = new Blob([data], { type: \"text/plain\" });\r\n if (window.navigator.msSaveOrOpenBlob) {\r\n window.navigator.msSaveBlob(blob, fileName);\r\n } else {\r\n var elem = window.document.createElement(\"a\");\r\n elem.href = window.URL.createObjectURL(blob);\r\n elem.download = fileName;\r\n document.body.appendChild(elem);\r\n elem.click();\r\n document.body.removeChild(elem);\r\n }\r\n };\r\n\r\n onSendFileToOrder = (data) => {\r\n this.setState({\r\n isLoading: true,\r\n });\r\n\r\n //var blob = new Blob([data], { type: \"text/plain\" });\r\n var file = new File([data], this.state.fileName, { type: \"text/plain\" });\r\n\r\n var formData = new FormData();\r\n formData.append(\"file\", file);\r\n // formData.append(\"file\", file);\r\n\r\n let that = this;\r\n superagent\r\n .post(`/api/Email/SendFileToOrder`)\r\n .send(formData)\r\n .end((error, result) => {\r\n that.setState({\r\n isLoading: false,\r\n });\r\n console.log(error);\r\n console.log(result);\r\n\r\n if (!error && result && result.text === \"Ok\") {\r\n that.showSuccess(\"Π€Π°ΠΉΠ» ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½\");\r\n } else {\r\n var errorMessage = \"\";\r\n if (error) {\r\n if (error.message) {\r\n errorMessage += error.message;\r\n }\r\n if (error.response && error.response.text) {\r\n errorMessage += \": \" + error.response.text;\r\n }\r\n } else {\r\n errorMessage += \"ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ Π½Π΅ΠΏΠ²Π΅Ρ€Π½Ρ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‚ ΠΎΡ‚ сСрвСра\";\r\n }\r\n that.showError(errorMessage);\r\n }\r\n });\r\n };\r\n\r\n onCloseToast = () => {\r\n let toast = this.state.toast;\r\n this.setState({\r\n toast: {\r\n ...toast,\r\n isShow: false,\r\n },\r\n });\r\n };\r\n\r\n showError = (e) => {\r\n let toast = this.state.toast;\r\n this.setState({\r\n toast: {\r\n ...toast,\r\n isShow: true,\r\n alertType: \"danger\",\r\n message: e.toString(),\r\n },\r\n });\r\n };\r\n\r\n showSuccess = (e) => {\r\n let toast = this.state.toast;\r\n this.setState({\r\n toast: {\r\n ...toast,\r\n isShow: true,\r\n alertType: \"success\",\r\n message: e.toString(),\r\n },\r\n });\r\n };\r\n\r\n onSettingsChanged = (settings, callback) => {\r\n this.setState({ settings: { ...settings } }, callback);\r\n };\r\n\r\n render() {\r\n return (\r\n
    \r\n \r\n \r\n Π‘ΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅\r\n {/* 11 mins ago */}\r\n \r\n \r\n \r\n {this.state.toast.message}\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 {this.state.settings?.productType === \"sky\" ? (\r\n \r\n ) : this.state.settings?.productType === \"city\" ? (\r\n \r\n ) : null}\r\n
    \r\n
    \r\n \r\n );\r\n }\r\n}\r\n","import { createAuthProvider } from \"react-token-auth\";\r\nimport axios from \"axios\";\r\n\r\nconst BackendLoginService = (function () {\r\n var instance;\r\n\r\n var isLoggedIn = false;\r\n\r\n const api = axios.create({\r\n baseURL: \"/api\",\r\n });\r\n\r\n const customFetch = (url, config) => {\r\n config.url = url;\r\n return api.request(config);\r\n };\r\n\r\n // function handleFetchErrors(response) {\r\n // if (!response.ok) {\r\n // throw Error(response.statusText);\r\n // }\r\n // return response;\r\n // }\r\n\r\n const [\r\n useAuth,\r\n authFetch,\r\n loginInternal,\r\n logoutInternal,\r\n ] = createAuthProvider({\r\n accessTokenKey: \"jwtToken\",\r\n customFetch: customFetch,\r\n onUpdateToken: (token) =>\r\n api\r\n .post(\"/Auth/refresh\", JSON.stringify(token.refreshToken), {\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n },\r\n })\r\n .then((r) => {\r\n return r.data;\r\n })\r\n .catch((error) => {\r\n isLoggedIn = false;\r\n let message = \"\";\r\n if (error.response) {\r\n if (error.response.status === 403) {\r\n throw new Error(\"Refresh token is outdated\");\r\n }\r\n message = `${error.response.status} ${\r\n error.response.statusText\r\n }\\n${JSON.stringify(error.response.data)}`;\r\n // Request made and server responded\r\n console.log(error.response);\r\n } else if (error.request) {\r\n message = \"no response\";\r\n console.log(error.request);\r\n } else {\r\n message = error.message;\r\n console.log(\"Error\", error.message);\r\n }\r\n throw new Error(message);\r\n }),\r\n // onUpdateToken: (token) =>\r\n // fetch(\"/api/Auth/refresh\", {\r\n // method: \"POST\",\r\n // body: JSON.stringify(token.refreshToken),\r\n // headers: {\r\n // \"Content-Type\": \"application/json\",\r\n // },\r\n // })\r\n // .then(handleFetchErrors)\r\n // .then((r) => r.json())\r\n // .catch((error) => {\r\n // console.log(error);\r\n // }),\r\n });\r\n\r\n const authGet = (url, config) => {\r\n config = config || {};\r\n config.method = \"get\";\r\n\r\n return authFetch(url, config);\r\n };\r\n\r\n const authPost = (url, data, config) => {\r\n config = config || {};\r\n config.method = \"post\";\r\n config.data = data;\r\n\r\n return authFetch(url, config);\r\n };\r\n\r\n const authPut = (url, data, config) => {\r\n config = config || {};\r\n config.method = \"put\";\r\n config.data = data;\r\n\r\n return authFetch(url, config);\r\n };\r\n\r\n const authDelete = (url, config) => {\r\n config = config || {};\r\n config.method = \"delete\";\r\n\r\n return authFetch(url, config);\r\n };\r\n\r\n const login = (googleResponse) => {\r\n return api\r\n .post(\"/Auth/google\", googleResponse)\r\n .then((r) => {\r\n loginInternal(r.data);\r\n isLoggedIn = true;\r\n return r.data;\r\n })\r\n .catch((error) => {\r\n let message = \"\";\r\n if (error.response) {\r\n message = `${error.response.status} ${\r\n error.response.statusText\r\n }\\n${JSON.stringify(error.response.data)}`;\r\n // Request made and server responded\r\n console.log(error.response);\r\n } else if (error.request) {\r\n message = \"no response\";\r\n console.log(error.request);\r\n } else {\r\n message = error.message;\r\n console.log(\"Error\", error.message);\r\n }\r\n throw new Error(message);\r\n });\r\n };\r\n\r\n // const login = (googleResponse) => {\r\n // return fetch(\"/api/Auth/google\", {\r\n // method: \"POST\",\r\n // body: JSON.stringify(googleResponse),\r\n // headers: {\r\n // \"Content-Type\": \"application/json\",\r\n // },\r\n // })\r\n // .then(handleFetchErrors)\r\n // .then((r) => r.json())\r\n // .then((r) => {\r\n // loginInternal(r);\r\n // isLoggedIn = true;\r\n // return r;\r\n // });\r\n // };\r\n\r\n const logout = () => {\r\n logoutInternal();\r\n isLoggedIn = false;\r\n };\r\n\r\n const isLoggedInFun = () => {\r\n return isLoggedIn;\r\n };\r\n\r\n const createInstance = function () {\r\n return {\r\n login,\r\n authGet,\r\n authPost,\r\n authPut,\r\n authDelete,\r\n logout,\r\n isLoggedIn: isLoggedInFun,\r\n };\r\n };\r\n\r\n return {\r\n getInstance: function () {\r\n return instance || (instance = createInstance());\r\n },\r\n };\r\n})();\r\n\r\nexport default BackendLoginService;\r\n","import React, { Component } from \"react\";\r\nimport { GoogleLogin } from \"react-google-login\";\r\nimport BackendLoginService from \"./backendLoginService\";\r\nimport { Redirect, Link } from \"react-router-dom\";\r\n\r\nexport default class Login extends Component {\r\n clientId =\r\n \"119044322202-46ojakubusukc4f80ovkehdali45q380.apps.googleusercontent.com\";\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n redirect: null,\r\n clientEmail: \"\",\r\n serverEmail: \"\",\r\n serverLoginFailed: false,\r\n };\r\n }\r\n\r\n onSuccess = (res) => {\r\n console.log(\"history:\", this.props.history);\r\n console.log(\"Client login succesful:\", res);\r\n\r\n this.setState({\r\n clientEmail: res?.profileObj?.email,\r\n serverLoginFailed: false,\r\n });\r\n //alert(\"Should go back to: \" + this.props.location.state.from);\r\n // this.setState({ email: res.profileObj.email, tokenId: res.tokenId });\r\n // let email = res?.profileObj?.email;\r\n\r\n BackendLoginService.getInstance()\r\n .login(res)\r\n .then((r) => {\r\n console.log(\"Server login succesful\");\r\n let redirect = null;\r\n if (this.props.location.state && this.props.location.state.from) {\r\n redirect = this.props.location.state.from;\r\n }\r\n\r\n let email = r.email;\r\n this.setState({\r\n redirect: redirect,\r\n serverEmail: email,\r\n });\r\n\r\n //alert(BackendLoginService.getInstance().isLoggedIn());\r\n })\r\n .catch((error) => {\r\n this.setState({\r\n serverEmail: \"\",\r\n serverLoginFailed: true,\r\n });\r\n console.log(error);\r\n alert(`Failed to do server login. 😒\\n` + error);\r\n });\r\n };\r\n\r\n onFailure = (res) => {\r\n this.setState({\r\n clientEmail: \"\",\r\n serverEmail: \"\",\r\n });\r\n console.log(\"Login failed: res:\", res);\r\n alert(`Failed to do client login. 😒`);\r\n };\r\n\r\n renderSuccessAccountInfo = () => {\r\n return (\r\n
    \r\n

    \r\n Π’Ρ‹ вошли ΠΊΠ°ΠΊ: {this.state.clientEmail}\r\n
    \r\n Π’Ρ‹ΠΉΡ‚ΠΈ\r\n

    \r\n
    \r\n );\r\n };\r\n\r\n renderFailedAccountInfo = () => {\r\n return (\r\n
    \r\n

    \r\n НС ΡƒΠ΄Π°Π»ΠΎΡΡŒ Π²ΠΎΠΉΡ‚ΠΈ Π½Π° сСрвСр ΠΊΠ°ΠΊ: {this.state.clientEmail}.\r\n
    \r\n ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ Π²Ρ‹ΠΉΡ‚ΠΈ ΠΈ Π·Π°ΠΉΡ‚ΠΈ ΠΏΠΎΠ΄ Π΄Ρ€ΡƒΠ³ΠΈΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ.\r\n
    \r\n Π’Ρ‹ΠΉΡ‚ΠΈ\r\n

    \r\n
    \r\n );\r\n };\r\n\r\n renderAccountInfo = () => {\r\n let isLoggedIn = false;\r\n try {\r\n isLoggedIn = BackendLoginService.getInstance().isLoggedIn();\r\n } catch (e) {\r\n console.log(e);\r\n }\r\n\r\n const isSuccess = isLoggedIn;\r\n const isServerLoginFailed =\r\n this.state.clientEmail && !isLoggedIn && this.state.serverLoginFailed;\r\n return isSuccess\r\n ? this.renderSuccessAccountInfo()\r\n : isServerLoginFailed\r\n ? this.renderFailedAccountInfo()\r\n : null;\r\n };\r\n\r\n render() {\r\n if (this.state.redirect) {\r\n console.log(\"Redirecting to: \" + this.state.redirect);\r\n return (\r\n \r\n );\r\n }\r\n\r\n return (\r\n \r\n
    \r\n
    \r\n {this.renderAccountInfo()}\r\n \r\n
    \r\n
    \r\n \r\n );\r\n }\r\n}\r\n","import React, { Component } from \"react\";\r\nimport { GoogleLogout } from \"react-google-login\";\r\nimport BackendLoginService from \"./backendLoginService\";\r\nimport { Redirect } from \"react-router-dom\";\r\n\r\nexport default class Logout extends Component {\r\n clientId =\r\n \"119044322202-46ojakubusukc4f80ovkehdali45q380.apps.googleusercontent.com\";\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n redirect: null,\r\n };\r\n }\r\n\r\n onSuccess = (res) => {\r\n console.log(\"Client logout succesful:\", res);\r\n //alert(\"Should go back to: \" + this.props.location.state.from);\r\n // this.setState({ email: res.profileObj.email, tokenId: res.tokenId });\r\n\r\n BackendLoginService.getInstance().logout();\r\n\r\n console.log(\"Server logout succesful\");\r\n let redirect = \"/login\";\r\n\r\n this.setState({ redirect: redirect });\r\n };\r\n\r\n onFailure = (res) => {\r\n console.log(\"Logout failed: res:\", res);\r\n alert(`Failed to do client logout. 😒`);\r\n };\r\n\r\n renderAccountInfo = () => {\r\n let isLoggedIn = false;\r\n try {\r\n isLoggedIn = BackendLoginService.getInstance().isLoggedIn();\r\n } catch (e) {\r\n console.log(e);\r\n }\r\n\r\n return isLoggedIn ?

    Π’Ρ‹ Π·Π°Π»ΠΎΠ³ΠΈΠ½Π΅Π½Ρ‹

    : null;\r\n };\r\n\r\n render() {\r\n if (this.state.redirect) {\r\n console.log(\"Redirecting to: \" + this.state.redirect);\r\n return (\r\n \r\n );\r\n }\r\n\r\n return (\r\n \r\n
    \r\n
    \r\n {this.renderAccountInfo()}\r\n \r\n
    \r\n
    \r\n \r\n );\r\n }\r\n}\r\n","//import axios from \"axios\";\r\nimport BackendLoginService from \"../components/login-components/backendLoginService\";\r\n\r\nconst api = BackendLoginService.getInstance();\r\n\r\n// const api = axios.create({\r\n// baseURL: \"/api/promo\",\r\n// });\r\n\r\nexport const insertPromo = (payload) => api.authPost(`/promo`, payload);\r\nexport const getAllPromos = () => api.authGet(`/promo`);\r\nexport const updatePromo = (payload) => api.authPut(`/promo`, payload);\r\nexport const deletePromoByCode = (code) => api.authDelete(`/promo/${code}`);\r\nexport const getPromoByCode = (code) => api.authGet(`/promo/${code}`);\r\n\r\nconst apis = {\r\n insertPromo,\r\n getAllPromos,\r\n updatePromo,\r\n deletePromoByCode,\r\n getPromoByCode,\r\n};\r\n\r\nexport default apis;\r\n","import React, { useState, useEffect } from \"react\";\r\nimport Toast from \"react-bootstrap/Toast\";\r\n\r\nexport default function ToastFun(props) {\r\n //const [isShow, setIsShow] = useState(false);\r\n //const [message, setMessage] = useState(props.message);\r\n\r\n return (\r\n \r\n \r\n Π‘ΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅\r\n {/* 11 mins ago */}\r\n \r\n \r\n \r\n {props.message}\r\n \r\n \r\n \r\n );\r\n}\r\n","import React, { Component } from \"react\";\r\nimport api from \"../../api/promo-api\";\r\nimport { Redirect } from \"react-router-dom\";\r\nimport Toast from \"../../utils/toast\";\r\nimport moment from \"moment\";\r\n\r\nclass PromoList extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n toast: {\r\n isShow: false,\r\n alertType: null,\r\n message: null,\r\n },\r\n promos: [],\r\n isLoading: false,\r\n redirect: null,\r\n };\r\n }\r\n\r\n componentDidMount = () => {\r\n this.getAllPromos();\r\n };\r\n\r\n getAllPromos = () => {\r\n this.setState({ isLoading: true });\r\n\r\n api\r\n .getAllPromos()\r\n .then((r) => {\r\n this.setState({\r\n promos: r.data,\r\n isLoading: false,\r\n });\r\n })\r\n .catch((error) => {\r\n this.setState({ isLoading: false });\r\n let message = \"\";\r\n if (error.response) {\r\n message = `${error.response.status} ${\r\n error.response.statusText\r\n }\\n${JSON.stringify(error.response.data)}`;\r\n // Request made and server responded\r\n console.log(error.response);\r\n } else if (error.request) {\r\n message = \"no response\";\r\n console.log(error.request);\r\n } else {\r\n message = `request failed: ${error.message}`;\r\n console.log(\"Error\", error.message);\r\n if (error.message === \"Refresh token is outdated\") {\r\n this.setState({\r\n redirect: \"/login\",\r\n });\r\n }\r\n }\r\n this.showMessage(message, \"danger\");\r\n });\r\n };\r\n\r\n onAddClick = (e) => {\r\n e.preventDefault();\r\n\r\n this.setState({\r\n redirect: `/promo/add`,\r\n });\r\n };\r\n\r\n onEditClick = (e) => {\r\n e.preventDefault();\r\n const code = e.currentTarget.value;\r\n\r\n this.setState({\r\n redirect: `/promo/edit/${code}`,\r\n });\r\n };\r\n\r\n onDeleteClick = (e) => {\r\n e.preventDefault();\r\n const code = e.currentTarget.value;\r\n if (window.confirm(`Π’ΠΎΡ‡Π½ΠΎ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠΌΠΎΠΊΠΎΠ΄? ${code}`)) {\r\n this.setState({ isLoading: true });\r\n\r\n api\r\n .deletePromoByCode(code)\r\n .then(() => {\r\n this.getAllPromos();\r\n })\r\n .catch((error) => {\r\n this.setState({ isLoading: false });\r\n let message = \"\";\r\n if (error.response) {\r\n message = `${error.response.status} ${\r\n error.response.statusText\r\n }\\n${JSON.stringify(error.response.data)}`;\r\n // Request made and server responded\r\n console.log(error.response);\r\n } else if (error.request) {\r\n message = \"no response\";\r\n console.log(error.request);\r\n } else {\r\n message = `request failed: ${error.message}`;\r\n console.log(\"Error\", error.message);\r\n if (error.message === \"Refresh token is outdated\") {\r\n this.setState({\r\n redirect: \"/login\",\r\n });\r\n }\r\n }\r\n this.showMessage(message, \"danger\");\r\n });\r\n }\r\n };\r\n\r\n onCloseToast = () => {\r\n let toast = this.state.toast;\r\n this.setState({\r\n toast: {\r\n ...toast,\r\n isShow: false,\r\n },\r\n });\r\n };\r\n\r\n showMessage = (e, type = \"success\") => {\r\n let toast = this.state.toast;\r\n this.setState({\r\n toast: {\r\n ...toast,\r\n isShow: true,\r\n alertType: type,\r\n message: e.toString(),\r\n },\r\n });\r\n };\r\n\r\n onLogoutClick = () => {\r\n this.setState({\r\n redirect: `/logout`,\r\n });\r\n };\r\n\r\n render() {\r\n if (this.state.redirect) {\r\n return (\r\n \r\n );\r\n }\r\n\r\n let showTable = true;\r\n if (!this.state.promos.length) {\r\n showTable = false;\r\n }\r\n\r\n const formatDate = (date) => {\r\n var m = moment.utc(date).local();\r\n return m.format(\"DD.MM.YYYY HH:mm\");\r\n };\r\n\r\n return (\r\n
    \r\n \r\n

    ΠŸΡ€ΠΎΠΌΠΎΠΊΠΎΠ΄Ρ‹

    \r\n \r\n Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ\r\n \r\n \r\n Π’Ρ‹ΠΉΡ‚ΠΈ\r\n \r\n {showTable && (\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.state.promos.map((s, index) => {\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
    ΠšΠΎΠ΄Π‘ΠΊΠΈΠ΄ΠΊΠ°ΠΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ доОписаниС
    {s.code}{s.discount}{formatDate(s.expirationDate)}{s.description}\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 PromoList;\r\n","import React, { Component } from \"react\";\r\nimport api from \"../../api/promo-api\";\r\nimport moment from \"moment\";\r\n\r\nimport Spinner from \"react-bootstrap/Spinner\";\r\nimport { Redirect } from \"react-router-dom\";\r\n\r\nimport Toast from \"../../utils/toast\";\r\n\r\nexport default class PromoAdd extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n var code = props.match?.params?.code;\r\n\r\n if (code) {\r\n this._isUpdatingMode = true;\r\n } else {\r\n this._isUpdatingMode = false;\r\n }\r\n\r\n var today = moment().local().startOf(\"day\");\r\n var expirationDate = today.add(14, \"days\");\r\n\r\n var expirationDateFormatted = expirationDate.format(\"DD.MM.YYYY HH:mm\");\r\n var expirationDateUtc = expirationDate.utc().format();\r\n\r\n this.state = {\r\n isLoading: false,\r\n isFailed: false,\r\n toast: {\r\n isShow: false,\r\n alertType: null,\r\n message: null,\r\n },\r\n redirect: null,\r\n formattedDate: expirationDateFormatted,\r\n promo: {\r\n code: code,\r\n discount: \"10%\",\r\n expirationDate: expirationDateUtc,\r\n description: \"\",\r\n },\r\n };\r\n }\r\n\r\n componentDidMount = () => {\r\n if (this._isUpdatingMode) {\r\n this.setState({ isLoading: true });\r\n\r\n api\r\n .getPromoByCode(this.state.promo.code)\r\n .then((res) => {\r\n let formattedDate = null;\r\n if (res.data && res.data.expirationDate) {\r\n var m = moment.utc(res.data.expirationDate).local();\r\n formattedDate = m.format(\"DD.MM.YYYY HH:mm\");\r\n }\r\n this.setState({\r\n formattedDate,\r\n promo: { ...res.data },\r\n isLoading: false,\r\n isFailed: false,\r\n });\r\n })\r\n .catch((error) => {\r\n this.setState({ isLoading: false, isFailed: true });\r\n let message = \"\";\r\n if (error.response) {\r\n message = `${error.response.status} ${error.response.statusText}:\\n${error.response.data}`;\r\n // Request made and server responded\r\n console.log(error.response);\r\n } else if (error.request) {\r\n message = \"no response\";\r\n console.log(error.request);\r\n } else {\r\n message = \"request failed\";\r\n console.log(\"Error\", error.message);\r\n }\r\n this.showMessage(message, \"danger\");\r\n });\r\n }\r\n };\r\n\r\n onInputChange = (event) => {\r\n const target = event.target;\r\n const name = target.name;\r\n const type = target.type;\r\n let value = null;\r\n\r\n if (type == \"checkbox\") {\r\n value = target.checked;\r\n } else {\r\n value = target.value;\r\n }\r\n\r\n var promo = { ...this.state.promo };\r\n this.setState({\r\n promo: {\r\n ...promo,\r\n [name]: value,\r\n },\r\n });\r\n };\r\n\r\n onDateChange = (event) => {\r\n var value = event.target.value;\r\n var parsedUtcDate = null;\r\n\r\n var parsedLocalDate = moment(value, \"DD.MM.YYYY HH:mm\");\r\n parsedUtcDate = parsedLocalDate.utc().format();\r\n\r\n var promo = { ...this.state.promo };\r\n this.setState({\r\n formattedDate: value,\r\n promo: {\r\n ...promo,\r\n expirationDate: parsedUtcDate,\r\n },\r\n });\r\n };\r\n\r\n handleSubmit = (event) => {\r\n event.preventDefault();\r\n\r\n this.setState({\r\n isLoading: true,\r\n });\r\n\r\n if (this._isUpdatingMode) {\r\n api\r\n .updatePromo(this.state.promo)\r\n .then((res) => {\r\n this.setState({\r\n isLoading: false,\r\n redirect: \"/promo\",\r\n });\r\n })\r\n .catch((error) => {\r\n this.setState({ isLoading: false });\r\n let message = \"\";\r\n if (error.response) {\r\n message = `${error.response.status} ${\r\n error.response.statusText\r\n }\\n${JSON.stringify(error.response.data)}`;\r\n // Request made and server responded\r\n console.log(error.response);\r\n } else if (error.request) {\r\n message = \"no response\";\r\n console.log(error.request);\r\n } else {\r\n message = `request failed: ${error.message}`;\r\n console.log(\"Error\", error.message);\r\n if (error.message === \"Refresh token is outdated\") {\r\n this.setState({\r\n redirect: \"/login\",\r\n });\r\n }\r\n }\r\n this.showMessage(message, \"danger\");\r\n });\r\n } else {\r\n api\r\n .insertPromo(this.state.promo)\r\n .then((res) => {\r\n this.setState({\r\n isLoading: false,\r\n redirect: \"/promo\",\r\n });\r\n })\r\n .catch((error) => {\r\n this.setState({ isLoading: false });\r\n let message = \"\";\r\n if (error.response) {\r\n message = `${error.response.status} ${\r\n error.response.statusText\r\n }\\n${JSON.stringify(error.response.data)}`;\r\n // Request made and server responded\r\n console.log(error.response);\r\n } else if (error.request) {\r\n message = \"no response\";\r\n console.log(error.request);\r\n } else {\r\n message = `request failed: ${error.message}`;\r\n console.log(\"Error\", error.message);\r\n if (error.message === \"Refresh token is outdated\") {\r\n this.setState({\r\n redirect: \"/login\",\r\n });\r\n }\r\n }\r\n this.showMessage(message, \"danger\");\r\n });\r\n }\r\n };\r\n\r\n onCancelClick = (e) => {\r\n e.preventDefault();\r\n this.setState({\r\n redirect: \"/promo\",\r\n });\r\n };\r\n\r\n onCloseToast = () => {\r\n let toast = this.state.toast;\r\n this.setState({\r\n toast: {\r\n ...toast,\r\n isShow: false,\r\n },\r\n });\r\n };\r\n\r\n showMessage = (e, type = \"success\") => {\r\n let toast = this.state.toast;\r\n this.setState({\r\n toast: {\r\n ...toast,\r\n isShow: true,\r\n alertType: type,\r\n message: e.toString(),\r\n },\r\n });\r\n };\r\n\r\n render() {\r\n if (this.state.redirect) {\r\n return (\r\n \r\n );\r\n }\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","import React, { Component } from \"react\";\r\nimport { Typeahead, AsyncTypeahead } from \"react-bootstrap-typeahead\"; // ES2015\r\nimport \"react-bootstrap-typeahead/css/Typeahead.css\";\r\nimport \"./admin.css\";\r\n\r\nexport default class AdminNovaPoshta extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = { isLoading: false, options: [], city: null };\r\n }\r\n\r\n onCopyClick = (e) => {\r\n navigator.clipboard\r\n .writeText(this.state.city.uk)\r\n .then(() => {\r\n console.log(\"Writed to clipboard\");\r\n })\r\n .catch((err) => {\r\n console.error(\"Failed to write to clipboard\", err);\r\n alert(err);\r\n });\r\n e.preventDefault();\r\n };\r\n\r\n onTypeheadChange = (e) => {\r\n var value = e ? e[0] : null;\r\n this.setState({ city: value });\r\n };\r\n\r\n render() {\r\n function range(start, end) {\r\n return Array.from({ length: end - start + 1 }, (_, i) => i);\r\n }\r\n\r\n //const options = range(0, 1000).map((o) => `Option ${o.toString()}`);\r\n\r\n return (\r\n
    \r\n \r\n
    \r\n
    Поиск ΠΏΠΎ названию Π³ΠΎΡ€ΠΎΠ΄Π°
    \r\n `${option?.uk}`}\r\n onSearch={(query) => {\r\n this.setState({ isLoading: true });\r\n fetch(`/api/novaposhta/cities/${query}`)\r\n .then((resp) => resp.json())\r\n .then((json) =>\r\n this.setState({\r\n isLoading: false,\r\n options: json,\r\n })\r\n );\r\n }}\r\n options={this.state.options}\r\n onChange={this.onTypeheadChange}/>\r\n

    {(this.state.city?.ru) ? \"ru: \" + (this.state.city?.ru) : \"\\u00A0\"\r\n }

    \r\n \r\n Π‘ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ua\r\n \r\n
    \r\n
    \r\n \r\n );\r\n }\r\n}","import React, { Component } from \"react\";\r\nimport BackendLoginService from \"../login-components/backendLoginService\";\r\nimport { Redirect } from \"react-router-dom\";\r\n\r\nexport default class Promo extends Component {\r\n constructor(props) {\r\n super(props);\r\n }\r\n\r\n makeCall = (e) => {\r\n e.preventDefault();\r\n\r\n BackendLoginService.getInstance()\r\n .authGet(\"/api/Email/555\")\r\n .then((r) => {\r\n console.log(r);\r\n alert(r.data);\r\n //return r.json();\r\n })\r\n .catch((error) => {\r\n alert(error, \"danger\");\r\n });\r\n };\r\n\r\n render() {\r\n return (\r\n
    \r\n hello\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
    #FirstLastHandle
    1MarkOtto@mdo
    2JacobThornton@fat
    3Larrythe Bird@twitter
    \r\n
    \r\n );\r\n }\r\n}\r\n","import i18n from \"i18next\";\r\nimport { initReactI18next } from \"react-i18next\";\r\n\r\nimport Backend from \"i18next-http-backend\";\r\nimport LanguageDetector from \"i18next-browser-languagedetector\";\r\n// not like to use this?\r\n// have a look at the Quick start guide\r\n// for passing in lng and translations on init\r\n\r\ni18n\r\n // load translation using http -> see /public/locales (i.e. https://github.com/i18next/react-i18next/tree/master/example/react/public/locales)\r\n // learn more: https://github.com/i18next/i18next-http-backend\r\n .use(Backend)\r\n // detect user language\r\n // learn more: https://github.com/i18next/i18next-browser-languageDetector\r\n .use(LanguageDetector)\r\n // pass the i18n instance to react-i18next.\r\n .use(initReactI18next)\r\n // init i18next\r\n // for all options read: https://www.i18next.com/overview/configuration-options\r\n .init({\r\n detection: {\r\n order: [\"path\"],\r\n lookupFromPathIndex: 0,\r\n checkWhitelist: true,\r\n },\r\n backend: {\r\n // for all available options read the backend's repository readme file\r\n loadPath: \"/sky/assets/i18n/{{lng}}.json\",\r\n },\r\n // resources: {\r\n // en: {\r\n // translation: {\r\n // \"Welcome to React\": \"Welcome to React and react-i18next\",\r\n // },\r\n // },\r\n // },\r\n\r\n fallbackLng: \"uk\",\r\n debug: true,\r\n whitelist: [\"ru\", \"uk\", \"en\"],\r\n load: \"languageOnly\",\r\n interpolation: {\r\n escapeValue: false, // not needed for react as it escapes by default\r\n },\r\n nsSeparator: false,\r\n keySeparator: false,\r\n });\r\n\r\nexport default i18n;\r\n","import \"react-app-polyfill/stable\";\r\nimport React, { Suspense } from \"react\";\r\nimport { Redirect } from \"react-router-dom\";\r\nimport ReactDOM from \"react-dom\";\r\nimport \"./index.css\";\r\n\r\nimport * as serviceWorker from \"./serviceWorker\";\r\nimport { BrowserRouter, Route, Switch } from \"react-router-dom\";\r\n\r\nimport Editor from \"./components/editor\";\r\nimport AudioEditor from \"./components/audio-components/editor\";\r\nimport Cart from \"./components/cart\";\r\nimport Completed from \"./components/completed\";\r\nimport ScrollToTop from \"react-router-scroll-top\";\r\nimport Admin from \"./components/admin-components/admin\";\r\nimport Login from \"./components/login-components/login\";\r\nimport Logout from \"./components/login-components/logout\";\r\nimport PromoList from \"./components/promo-components/promo-list\";\r\nimport PromoAdd from \"./components/promo-components/promo-add\";\r\nimport AdminNovaPoshta from \"./components/admin-components/admin-novaPoshta\";\r\n\r\nimport Promo from \"./components/promo-components/promo\";\r\nimport BackendLoginService from \"./components/login-components/backendLoginService\";\r\n\r\nimport \"./i18n\";\r\n\r\n// import $ from \"jquery\";\r\n// import Popper from \"popper.js\";\r\n// import \"bootstrap/dist/css/bootstrap.min.css\";\r\n// import \"bootstrap/dist/js/bootstrap.bundle.min\";\r\n\r\nif (process.env.NODE_ENV === \"development\") {\r\n console.log(\"why-did-you render!\");\r\n const whyDidYouRender = require(\"@welldone-software/why-did-you-render\");\r\n whyDidYouRender(React, {\r\n trackAllPureComponents: true,\r\n titleColor: \"green\",\r\n diffNameColor: \"aqua\",\r\n });\r\n}\r\n\r\nfunction Spinner() {\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\nlet language = \"\";\r\n\r\ntry {\r\n const path = window.location.pathname;\r\n const pathSplit = path.split(\"/\");\r\n\r\n if (pathSplit && pathSplit.length > 1 && pathSplit[1].length == 2) {\r\n language = pathSplit[1] + \"/\";\r\n }\r\n} catch (e) {\r\n (console.error || console.log).call(console, e.stack || e);\r\n}\r\nconst baseName = \"/\" + language + \"sky\";\r\n\r\nlet isLoggedIn = () => {\r\n try {\r\n var isLoggedIn = BackendLoginService.getInstance().isLoggedIn();\r\n console.log(\"Index isLoggedIn:\", isLoggedIn);\r\n return isLoggedIn;\r\n } catch {\r\n return false;\r\n }\r\n};\r\n\r\nReactDOM.render(\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 return !isLoggedIn() ? (\r\n \r\n ) : (\r\n \r\n );\r\n }}\r\n />\r\n {\r\n return !isLoggedIn() ? (\r\n \r\n ) : (\r\n \r\n );\r\n }}\r\n />\r\n {\r\n return !isLoggedIn() ? (\r\n \r\n ) : (\r\n \r\n );\r\n }}\r\n />\r\n {/* */}\r\n {/* \r\n \r\n \r\n {\r\n console.log(\"Renderring promo route\");\r\n return !isLoggedIn() ? (\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 document.getElementById(\"root\")\r\n);\r\n\r\n// If you want your app to work offline and load faster, you can change\r\n// unregister() to register() below. Note this comes with some pitfalls.\r\n// Learn more about service workers: https://bit.ly/CRA-PWA\r\nserviceWorker.unregister();\r\n"],"sourceRoot":""}