{"version":3,"sources":["components/Router.js","core/GlobalProviders.js","App.js","reportWebVitals.js","i18n.js","index.js","reducers/alert/reducer.js","reducers/photographer/reducer.js","contexts/PhotographerContext.js","core/helpers/attributesConfigHelper.js","components/3d/helpers/cropConfigHelper.js","reducers/order/reducer.js","contexts/OrderContext.js","components/core/Alerts.js","contexts/AlertContext.js"],"names":["ViewPhotographer","React","lazy","View3dPresenter","View404","CookiePage","useStyles","makeStyles","theme","root","width","SuspenseContainer","_jsxs","_Fragment","children","_jsx","CssBaseline","Grid","container","style","height","paddingTop","direction","alignItems","justifyContent","item","xs","CircularProgress","Router","props","t","useTranslation","Suspense","fallback","BrowserRouter","Switch","Route","exact","path","render","queryClient","QueryClient","defaultOptions","queries","useErrorBoundary","refetchOnWindowFocus","staleTime","retry","failureCount","error","status","GlobalProviders","_ref","AlertProvider","QueryClientProvider","client","PhotographerProvider","OrderProvider","createMuiTheme","typography","fontFamily","join","App","ThemeProvider","CookieConsent","location","buttonText","cookieName","background","buttonStyle","color","fontSize","expires","href","reportWebVitals","onPerfEntry","Function","then","getCLS","getFID","getFCP","getLCP","getTTFB","i18n","init","resources","en","translations","SELECTED","Uploading","FILES","PRINTS","PACKS","Contact","BACK","SAVE","Connect","Sending","Share","Copied","Address","Email","Name","ShareCTA","Card","Prices","Options","filesLimit","filesLimitMin","gr","lng","fallbackLng","debug","ns","defaultNS","keySeparator","interpolation","escapeValue","formatSeparator","react","wait","ReactDOM","StrictMode","I18nextProvider","Helmet","charSet","property","content","document","getElementById","REMOVE","AlertReducer","state","action","type","id","Date","payload","actionprops","filter","INIT_STATE","companyName","street","city","postalCode","district","website","phone","shippingPrice","logoUrl","email","mobileToken","appLogoUrl","appDroidStore","appAppleStore","appHideToken","products","productCategories","productAttributes","tags","iban","vivawallet","PhotographerReducer","arguments","length","undefined","data","photographId","Id","CompanyName","Street","City","PostalCode","District","WebSiteUrl","Phone","ShippingPrice","LogoUrl","Login","Categories","Attributes","Tags","MobileToken","AppLogoUrl","BrandingAppLinkPlay","BrandingAppLinkApple","BrandingAppHideTokenText","IBAN","VivaWalletId","newState","PhotographerContext","createContext","photographer","dispatch","useReducer","value","Provider","usePhotographer","context","useContext","Error","addProductAttributesConfig","currentConfig","newConfig","result","find","cfg","productId","pack","push","configs","addAttributesGroupConfig","groupId","selected","updateAttributesGroupItemSelection","groupConfig","getPixelCrop","percentCrop","canvasWidth","canvasHeight","unit","x","y","w","h","Math","round","photographerId","orderId","orderGuid","firstName","lastName","shippingSelected","shippingName","shippingAddress","shippingEmail","paymentMethod","orderItems","orderItemsConfig","OrderReducer","PhotographerId","OrderId","OrderGuid","FirstName","LastName","IsShippingChoosen","replacedOrderItems","map","guid","oldGuid","newGuid","newOrderItems","isLayerItem","i","newOrderItemsWithCrop","cropObj","crop","completedCropObj","newOrderItemsWithConfig","layerConfig","newOrderItemsWithConfigMulti","c","newOrderItemsWithCompletedCrop","qty","fileAsBase64","fileUrl","url","imageGuid","fileGuid","shipping","newOrderItemsConfig","OrderContext","order","useOrder","PaperComponent","Paper","MyAlert","MuiAlert","elevation","variant","Alert","alert","alertDispatch","useAlerts","removeAlert","setTimeout","className","a","Dialog","open","onClose","DialogTitle","header","DialogContent","DialogContentText","message","DialogActions","Button","autoFocus","onClick","Zoom","in","transitionDelay","concat","severity","AlertContext","alerts","createPortal","body"],"mappings":"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","file":"static/js/main.1946918f.chunk.js","sourcesContent":["//Core\r\nimport React, { useState, Suspense } from 'react';\r\nimport { BrowserRouter, Switch, Route } from 'react-router-dom';\r\n\r\n//Components\r\n\r\n//Hooks\r\nimport { useTranslation } from 'react-i18next';\r\n\r\n//Utils\r\n\r\n//UI\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport Grid from '@material-ui/core/Grid';\r\nimport Container from '@material-ui/core/Container';\r\nimport CssBaseline from '@material-ui/core/CssBaseline';\r\n\r\n//Views\r\nconst ViewPhotographer = React.lazy(() =>\r\n import(/* webpackChunkName: \"views-photographer\" */ '../views/order/index')\r\n);\r\n\r\nconst View3dPresenter = React.lazy(() =>\r\n import(/* webpackChunkName: \"views-3dPresenter\" */ '../views/show3d/index')\r\n);\r\n\r\nconst View404 = React.lazy(() =>\r\n import(/* webpackChunkName: \"views-404\" */ '../views/NotFoundView')\r\n);\r\n\r\nconst CookiePage = React.lazy(() =>\r\n import(/* webpackChunkName: \"views-404\" */ '../views/cookie')\r\n);\r\n\r\n\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n root: {\r\n width: '100%',\r\n },\r\n}));\r\n\r\nconst SuspenseContainer = () => {\r\n return (\r\n <>\r\n \r\n\r\n \r\n \r\n \r\n
\r\n Loading\r\n
\r\n \r\n \r\n );\r\n};\r\n\r\nconst Router = (props) => {\r\n const classes = useStyles();\r\n const { t } = useTranslation();\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 {/* HACK: temporary redirect in case of old urls */}\r\n }\r\n />\r\n } />\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default Router;\r\n","//Core\r\nimport React, { useState } from 'react';\r\nimport { QueryClient, QueryClientProvider } from 'react-query';\r\n\r\n//Components\r\nimport { PhotographerProvider } from '../contexts/PhotographerContext';\r\nimport { OrderProvider } from '../contexts/OrderContext';\r\nimport { AlertProvider } from '../contexts/AlertContext';\r\n\r\n//Hooks\r\nimport { useTranslation } from 'react-i18next';\r\n\r\n//Utils\r\n\r\n//UI\r\nimport { makeStyles } from '@material-ui/core/styles';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n root: {\r\n width: '100%',\r\n },\r\n}));\r\n\r\nconst queryClient = new QueryClient({\r\n defaultOptions: {\r\n queries: {\r\n useErrorBoundary: false,\r\n refetchOnWindowFocus: false,\r\n staleTime: 60 * 1000 * 10, //10 minutes\r\n retry(failureCount, error) {\r\n if (error.status === 404) return false;\r\n else if (failureCount < 2) return true;\r\n else return false;\r\n },\r\n },\r\n },\r\n});\r\n\r\nconst GlobalProviders = ({ children }) => {\r\n const classes = useStyles();\r\n const { t } = useTranslation();\r\n\r\n return (\r\n \r\n \r\n \r\n {children}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default GlobalProviders;\r\n","//Core\r\nimport './App.css';\r\n\r\n//Components\r\nimport Router from './components/Router';\r\nimport GlobalProviders from './core/GlobalProviders';\r\nimport CookieConsent from \"react-cookie-consent\";\r\n\r\n//UI\r\nimport { ThemeProvider, createMuiTheme } from '@material-ui/core/styles';\r\n\r\nconst theme = createMuiTheme({\r\n typography: {\r\n fontFamily: ['Nunito', 'sans-serif'].join(','),\r\n },\r\n});\r\n\r\nfunction App() {\r\n return (\r\n \r\n \r\n \r\n \r\n This website uses cookies to enhance the user experience. Rede more here\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default App;\r\n","const reportWebVitals = onPerfEntry => {\r\n if (onPerfEntry && onPerfEntry instanceof Function) {\r\n import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\r\n getCLS(onPerfEntry);\r\n getFID(onPerfEntry);\r\n getFCP(onPerfEntry);\r\n getLCP(onPerfEntry);\r\n getTTFB(onPerfEntry);\r\n });\r\n }\r\n};\r\n\r\nexport default reportWebVitals;\r\n","import i18n from 'i18next';\r\n\r\ni18n.init({\r\n resources: {\r\n en: {\r\n translations: {\r\n // General\r\n SELECTED: 'SELECTED',\r\n Uploading: 'Uploading...',\r\n FILES: 'FILES',\r\n PRINTS: 'PRINTS',\r\n PACKS: 'PACKS',\r\n 'Welcome to': 'Welcome to',\r\n 'Coming SOON': 'Coming SOON',\r\n\r\n // Navigation\r\n 'nav-Products': 'Products',\r\n 'nav-Finish order': 'Finish order',\r\n Contact: 'Contact',\r\n 'nav-Exit': 'Exit',\r\n\r\n // Buttons\r\n BACK: 'BACK',\r\n SAVE: 'SAVE',\r\n 'CONTINUE AS A GUEST': 'CONTINUE AS A GUEST',\r\n 'Stay on web': 'Stay on web',\r\n 'No, thank you': 'No, thank you',\r\n Connect: 'Connect',\r\n 'Install now': 'Install now',\r\n 'Send order': 'Send order',\r\n 'Pick Files': 'Pick Files',\r\n 'REMOVE ALL FILES': 'REMOVE ALL FILES',\r\n 'Choose other products': 'Choose other products',\r\n 'Finish order': 'Finish order',\r\n 'Next step': 'Next step',\r\n 'Back to cateogires': 'Back to cateogires',\r\n Sending: 'Sending ...',\r\n 'Create own': 'Create own',\r\n Share: 'Share',\r\n Copied: 'Copied!',\r\n\r\n // Inputs\r\n Address: 'Address',\r\n Email: 'Email',\r\n Name: 'Name',\r\n 'First name': 'First name',\r\n 'Last name': 'Last name',\r\n 'Please enter your email address': 'Please enter your email address',\r\n 'Invalid email address': 'Invalid email address',\r\n 'Please enter your name': 'Please enter your name',\r\n 'Value must be longer than 2 characters':\r\n 'Value must be longer than 2 characters',\r\n 'Please enter phone number': 'Please enter phone number',\r\n\r\n // Informations\r\n 'Basic information': 'Basic information',\r\n 'Please confirm your phone number': 'Please confirm your phone number',\r\n 'Add delivery': 'Add delivery',\r\n 'You can add more prints for products: {{names}} for the same price, or complete the order anyway':\r\n 'You can add more prints for products: {{names}} for the same price, or complete the order anyway',\r\n 'No products in this category.': 'No products in this category.',\r\n 'Missing product': 'We have not found the product you are looking for',\r\n 'Fill basic information to continue':\r\n 'Fill in the basic informations and add products to continue.',\r\n ShareCTA: `Click the \"share\" button and paste this link into your message\r\n Let your friends create their own wonderful mugs !!!\r\n Don\\'t forget to press the \"next step\" button to complete your order.`,\r\n\r\n // Mobile Welcome Modal\r\n 'You want to upload photos faster.':\r\n 'You want to upload photos faster.',\r\n 'Install our application.': 'Install our application.',\r\n \"Don't forget to use our Lab Id\": \"Don't forget to use our Lab Id\",\r\n 'In case of problems with your Android version you can stay on the web.':\r\n 'In case of problems with your Android version you can stay on the web.',\r\n\r\n // Payments\r\n 'On Shop': 'On Shop',\r\n 'Bank Transfer': 'Bank Transfer',\r\n Card: 'Card',\r\n\r\n // Summary tab\r\n 'Uploaded {{amount}} photos': 'Uploaded {{amount}} photos',\r\n 'Ordered {{amount}} prints': 'Ordered {{amount}} prints',\r\n 'Total cost {{amount}} €': 'Total cost {{amount}} €',\r\n\r\n // Add Photos\r\n 'Add more prints to complete your package':\r\n 'Add more prints to complete your package',\r\n 'min. order {{minAmount}}-{{maxAmount}} or multiple':\r\n 'min. order {{minAmount}}-{{maxAmount}} or multiple',\r\n Prices: 'Prices',\r\n Options: 'Options',\r\n filesLimit: 'Maximum files: {{limit}}',\r\n filesLimitMin: 'Minimum files: {{limit}}',\r\n\r\n // Thankyou page\r\n 'Your order no: {{number}} has been accepted':\r\n 'Your order no: {{number}} has been accepted',\r\n 'Order more photos': 'Order more photos',\r\n 'thankyou-exit': 'Exit',\r\n\r\n //3d CUP - welcome modal\r\n 'Best gift': 'Best gift',\r\n 'See what I designed': 'See what I designed, this is awesome!',\r\n 'gift CTA': 'You too can design and order such a great gift!',\r\n 'how to order':\r\n 'Click CREATE OWN, add your own photos and order a personalized mug!',\r\n },\r\n },\r\n gr: {\r\n translations: {\r\n // General\r\n SELECTED: 'Eπιλεγμένες',\r\n Uploading: 'Aποστολή...',\r\n FILES: 'Aρχεία',\r\n PRINTS: 'Eκτυπώσεις',\r\n PACKS: 'Πακέτα',\r\n 'Welcome to': 'Καλώς ήρθατε στο',\r\n 'Coming SOON': 'Έρχεται Σύντομα',\r\n\r\n // Navigation\r\n 'nav-Products': 'Προϊόντα',\r\n 'nav-Finish order': 'Αποστολή Παραγγελίας',\r\n Contact: 'Πληροφορίες',\r\n 'nav-Exit': 'Έξοδος',\r\n\r\n // Buttons\r\n BACK: 'Eπιστροφή',\r\n SAVE: 'Aποθήκευση',\r\n 'CONTINUE AS A GUEST': 'Συνέχεια ως επισκέπτης',\r\n 'Stay on web': 'Μείνετε στο web',\r\n 'No, thank you': 'Οχι, ευχαριστώ',\r\n Connect: 'Σύνδεση',\r\n 'Install now': 'Εγκατάσταση',\r\n 'Send order': 'Αποστολή παραγγελίας',\r\n 'Pick Files': 'Επιλογή αρχείων',\r\n // 'REMOVE ALL FILES': 'Κατάργηση όλων των αρχείων',\r\n 'Choose other products': 'Επιλογή άλλων προϊόντων',\r\n 'Finish order': 'Αποστολή παραγγελίας',\r\n // 'Next step': 'Επόμενο βήμα',\r\n 'Back to cateogires': 'Κατηγορίες',\r\n Sending: 'Sending ...',\r\n 'Create own': 'Create own',\r\n Share: 'Share',\r\n Copied: 'Copied!',\r\n\r\n // Inputs\r\n Address: 'Διεύθυνση',\r\n Email: 'Email',\r\n Name: 'Όνομα',\r\n 'First name': 'Ονομα',\r\n 'Last name': 'Επώνυμο',\r\n 'Please enter your email address': 'Παρακαλώ εισάγετε το email σας',\r\n 'Invalid email address': 'Μη έγκυρο email',\r\n 'Please enter your name': 'Παρακαλώ εισάγετε το όνομά σας',\r\n 'Value must be longer than 2 characters':\r\n 'Το κείμενο πρέπει να είναι μεγαλύτερο από 2 χαρακτήρες',\r\n 'Please enter phone number': 'Παρακαλώ εισάγετε τον αριθμό τηλεφώνου',\r\n\r\n // Informations\r\n 'Basic information': 'Βασικές πληροφορίες',\r\n 'Please confirm your phone number':\r\n 'Επιβεβαιώστε τον αριθμό τηλεφώνου σας',\r\n 'Add delivery': 'Προσθήκη παράδοσης',\r\n 'You can add more prints for products: {{names}} for the same price, or complete the order anyway':\r\n 'Μπορείτε να προσθέσετε περισσότερες φωτογραφίες στο: {{names}} στην ίδια τιμή ή να ολοκληρώσετε την παραγγελία σας',\r\n 'No products in this category.':\r\n 'Δεν υπάρχουν προϊόντα σε αυτήν την κατηγορία.',\r\n 'Missing product': 'We have not found the product you are looking for',\r\n 'Fill basic information to continue':\r\n 'Fill in the basic informations and add products to continue.',\r\n ShareCTA: `Κάντε κλικ στο κουμπί \"SHARE\" και στείλτε αυτόν τον σύνδεσμο στους φίλους σας\r\n Δώστε την ευκαιρία στους φίλους σας να δημιουργήσουν τις δικές τους υπέροχες κούπες!!!\r\n Μόνο μην ξεχάσετε να πατήσετε το κουμπί \"Επόμενο βήμα\" για να ολοκληρώσετε την παραγγελία σας.`,\r\n\r\n // Mobile Welcome Modal\r\n 'You want to upload photos faster.':\r\n 'Θέλετε να στείλετε φωτογραφίες πιο γρήγορα.',\r\n 'Install our application.': 'Εγκαταστήστε την εφαρμογή μας.',\r\n \"Don't forget to use our Lab Id\":\r\n 'Μην ξεχάσετε να χρησιμοποιήσετε το Lab Id μας',\r\n 'In case of problems with your Android version you can stay on the web.':\r\n 'Σε περίπτωση προβλημάτων με την έκδοση Android, μπορείτε να παραμείνετε στον web έκδοση.',\r\n\r\n // Payments\r\n 'On Shop': 'Στο κατάστημα',\r\n 'Bank Transfer': 'Τραπεζική μεταφορά',\r\n Card: 'Χρεωστικές κάρτες',\r\n\r\n // Summary tab\r\n 'Uploaded {{amount}} photos': 'Στάλθηκαν {{amount}} φωτο',\r\n 'Ordered {{amount}} prints': 'Παραγγέλθηκαν {{amount}} φωτο',\r\n 'Total cost {{amount}} €': 'Συνολικό κόστος {{amount}} €',\r\n\r\n // Add Photos\r\n 'Add more prints to complete your package':\r\n 'Προσθέστε περισσότερες εκτυπώσεις για να ολοκληρώσετε το πακέτο σας',\r\n 'min. order {{minAmount}}-{{maxAmount}} or multiple':\r\n 'ελάχ. παραγγελία {{minAmount}}-{{maxAmount}} η πολλαπλάσια',\r\n Prices: 'Prices',\r\n Options: 'Options',\r\n filesLimit: 'Maximum files: {{limit}}',\r\n\r\n // Thankyou page\r\n 'Your order no: {{number}} has been accepted':\r\n 'Η παραγγελία σας: {{number}} έγινε αποδεκτή',\r\n 'Order more photos': 'Επιλέξτε περισσότερες φωτογραφίες',\r\n 'thankyou-exit': 'Έξοδος',\r\n\r\n //3d CUP - welcome modal\r\n 'Best gift': 'Best gift',\r\n 'See what I designed': 'Δείτε τι έχω σχεδιάσει, αυτό είναι φοβερό!',\r\n 'gift CTA':\r\n 'Μπορείτε και εσείς να δημιουργήσετε ένα τόσο υπέροχο δώρο!',\r\n 'how to order':\r\n 'Κάντε κλικ στο CREATE OWN, προσθέστε τις δικές σας φωτογραφίες και παραγγείλετε μια εξατομικευμένη κούπα!',\r\n },\r\n },\r\n },\r\n lng: 'gr',\r\n fallbackLng: 'en',\r\n debug: false,\r\n\r\n ns: ['translations'],\r\n defaultNS: 'translations',\r\n\r\n keySeparator: false,\r\n\r\n interpolation: {\r\n escapeValue: false,\r\n formatSeparator: ',',\r\n },\r\n\r\n react: {\r\n wait: true,\r\n },\r\n});\r\n\r\nexport default i18n;\r\n","import React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport './index.css';\r\nimport App from './App';\r\nimport reportWebVitals from './reportWebVitals';\r\nimport { Helmet } from 'react-helmet';\r\n\r\nimport i18n from './i18n';\r\nimport { I18nextProvider } from 'react-i18next';\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 document.getElementById('root')\r\n);\r\n\r\n// If you want to start measuring performance in your app, pass a function\r\n// to log results (for example: reportWebVitals(console.log))\r\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\r\nreportWebVitals();\r\n","export const ADD = 'ADD';\r\nexport const REMOVE = 'REMOVE';\r\nexport const REMOVE_ALL = 'REMOVE_ALL';\r\n\r\nexport function AlertReducer(state, action) {\r\n switch (action.type) {\r\n case ADD:\r\n return [\r\n ...state,\r\n {\r\n id: +new Date(),\r\n content: action.payload.content,\r\n type: action.payload.type,\r\n action: action.payload.action,\r\n actionprops: action.payload.actionprops,\r\n },\r\n ];\r\n case REMOVE:\r\n return state.filter((t) => t.id !== action.payload.id);\r\n case REMOVE_ALL:\r\n return [];\r\n default:\r\n return state;\r\n }\r\n}\r\n","const INIT_STATE = {\r\n id: null,\r\n companyName: '',\r\n street: '',\r\n city: '',\r\n postalCode: '',\r\n district: '',\r\n website: '',\r\n phone: '',\r\n shippingPrice: null,\r\n logoUrl: '',\r\n email: '',\r\n mobileToken: '',\r\n appLogoUrl: '',\r\n appDroidStore: '',\r\n appAppleStore: '',\r\n appHideToken: false,\r\n products: [],\r\n productCategories: [],\r\n productAttributes: [],\r\n tags: [],\r\n iban: null,\r\n vivawallet: null,\r\n};\r\n\r\nexport function PhotographerReducer(state = INIT_STATE, action) {\r\n switch (action.type) {\r\n case 'SET_INFO':\r\n var { data } = action;\r\n if (data === undefined) {\r\n return { ...state };\r\n }\r\n return {\r\n ...state,\r\n photographId: data.Id,\r\n companyName: data.CompanyName,\r\n street: data.Street,\r\n city: data.City,\r\n postalCode: data.PostalCode,\r\n district: data.District,\r\n website: data.WebSiteUrl,\r\n phone: data.Phone,\r\n shippingPrice: data.ShippingPrice,\r\n logoUrl: data.LogoUrl,\r\n email: data.Login,\r\n productCategories: data.Categories || [],\r\n productAttributes: data.Attributes || [],\r\n tags: data.Tags || [],\r\n mobileToken: data.MobileToken,\r\n appLogoUrl: data.AppLogoUrl,\r\n appDroidStore: data.BrandingAppLinkPlay,\r\n appAppleStore: data.BrandingAppLinkApple,\r\n appHideToken: data.BrandingAppHideTokenText,\r\n iban: data.IBAN,\r\n vivawallet: data.VivaWalletId,\r\n };\r\n case 'ADD_PRODUCTS':\r\n var products = action.data;\r\n if (products === undefined) {\r\n return { ...state };\r\n }\r\n var newState = { ...state, products: products };\r\n return newState;\r\n\r\n default:\r\n return { ...state };\r\n }\r\n}\r\n","import React from 'react';\r\nimport { PhotographerReducer } from '../reducers/photographer/reducer';\r\n\r\nconst PhotographerContext = React.createContext();\r\n\r\nfunction PhotographerProvider(props) {\r\n const state = {};\r\n const [photographer, dispatch] = React.useReducer(PhotographerReducer, state);\r\n const value = [photographer, dispatch];\r\n\r\n return ;\r\n}\r\n\r\nfunction usePhotographer() {\r\n const context = React.useContext(PhotographerContext);\r\n if (!context) {\r\n throw new Error(\r\n 'usePhotographer must be used within the PhotographerProvider component'\r\n );\r\n }\r\n return context;\r\n}\r\n\r\nexport { PhotographerContext, PhotographerProvider, usePhotographer };\r\n","export function addProductAttributesConfig(currentConfig, newConfig) {\r\n let result = [...currentConfig];\r\n const configExist = currentConfig.find(\r\n (cfg) =>\r\n cfg.productId === newConfig.productId && cfg.pack === newConfig.pack\r\n );\r\n if (!configExist) {\r\n result.push({\r\n productId: newConfig.productId,\r\n pack: newConfig.pack,\r\n configs: [],\r\n });\r\n }\r\n return result;\r\n}\r\n\r\nexport function addAttributesGroupConfig(currentConfig, newConfig) {\r\n let result = { ...currentConfig };\r\n if (currentConfig.productId !== newConfig.productId) return result;\r\n if (currentConfig.pack !== newConfig.pack) return result;\r\n\r\n const configExist = currentConfig.configs.find(\r\n (cfg) => cfg.groupId === newConfig.groupId\r\n );\r\n if (!configExist) {\r\n result.configs.push({\r\n groupId: newConfig.groupId,\r\n selected: newConfig.selected,\r\n });\r\n }\r\n\r\n return result;\r\n}\r\n\r\nexport function updateAttributesGroupItemSelection(groupConfig, newConfig) {\r\n let result = { ...groupConfig };\r\n\r\n if (groupConfig.groupId === newConfig.groupId) {\r\n result.selected = newConfig.selected;\r\n }\r\n\r\n return result;\r\n}\r\n","export function getPixelCrop(percentCrop, canvasWidth, canvasHeight) {\r\n if (percentCrop.unit == 'px') return percentCrop;\r\n if (percentCrop.unit != '%') return null;\r\n\r\n const x = canvasWidth * (percentCrop.x / 100);\r\n const y = canvasHeight & (percentCrop.y / 100);\r\n const w = canvasWidth * (percentCrop.width / 100);\r\n const h = canvasHeight * (percentCrop.height / 100);\r\n\r\n return {\r\n unit: 'px',\r\n x: Math.round(x),\r\n y: Math.round(y),\r\n width: Math.round(w),\r\n height: Math.round(h),\r\n };\r\n}\r\n","import {\r\n addProductAttributesConfig,\r\n addAttributesGroupConfig,\r\n updateAttributesGroupItemSelection,\r\n} from '../../core/helpers/attributesConfigHelper';\r\nimport { getPixelCrop } from '../../components/3d/helpers/cropConfigHelper';\r\n\r\nexport const INIT_STATE = {\r\n photographerId: 0,\r\n orderId: '',\r\n orderGuid: '',\r\n status: 'NEW',\r\n email: 'missing',\r\n phone: 'missing',\r\n firstName: 'missing',\r\n lastName: 'missing',\r\n shippingSelected: false,\r\n shippingName: '',\r\n shippingAddress: '',\r\n shippingEmail: '',\r\n paymentMethod: 0,\r\n //orderInitialized: false,\r\n //orderRequestSend: false,\r\n //orderSending: false,\r\n //orderFinalized: false,\r\n orderItems: [\r\n // {\r\n // id: 'adacasdada',\r\n // fileUrl:\r\n // 'https://cdn.natemat.pl/cf55267c7b80326b81fd2e8f8e1cc42b,981,0,0,0.jpg',\r\n // fileName: 'wakacje01.jpg',\r\n // productId: 4398,\r\n // quantity: 2,\r\n // attributes: [],\r\n // },\r\n // {\r\n // id: 'vsasdgdsfgs',\r\n // fileUrl:\r\n // 'https://g.gazetaprawna.pl/p/_wspolne/pliki/4548000/4548447-wakacje-podroz.jpg',\r\n // fileName: 'wakacje01.jpg',\r\n // productId: 4398,\r\n // quantity: 2,\r\n // },\r\n // {\r\n // id: '1asdsgsafsg',\r\n // fileUrl:\r\n // 'https://s3.egospodarka.pl/grafika2/turystyka-zagraniczna/Wakacje-2018-na-razie-taniej-niz-rok-temu-201769-640x640.jpg',\r\n // fileName: 'wakacje01.jpg',\r\n // productId: 4400,\r\n // quantity: 1,\r\n // },\r\n ],\r\n orderItemsConfig: [\r\n // {\r\n // productId: 1,\r\n // pack: 1,\r\n // configs: [\r\n // {groupId: 1, selected: 12},\r\n // {groupId: 2, selected: 32}\r\n // ]\r\n // }\r\n ],\r\n};\r\n\r\nexport function OrderReducer(state = INIT_STATE, action) {\r\n switch (action.type) {\r\n case 'NEW':\r\n return { ...INIT_STATE };\r\n\r\n case 'CREATE':\r\n const { PhotographerId, OrderId, OrderGuid } = action.payload;\r\n const { Email, FirstName, LastName, Phone } = action.payload;\r\n const { IsShippingChoosen } = action.payload;\r\n\r\n return {\r\n ...state,\r\n photographerId: PhotographerId,\r\n orderId: OrderId,\r\n orderGuid: OrderGuid,\r\n phone: Phone,\r\n email: Email,\r\n firstName: FirstName,\r\n lastName: LastName,\r\n shippingSelected: IsShippingChoosen,\r\n status: 'INITIALIZED',\r\n };\r\n\r\n case 'ADD_ORDER_ITEM':\r\n return { ...state, orderItems: [action.payload, ...state.orderItems] };\r\n\r\n case 'ADD_ORDER_ITEM_AT_END':\r\n return { ...state, orderItems: [...state.orderItems, action.payload] };\r\n\r\n case 'REPLACE_ORDER_ITEM':\r\n const replacedOrderItems = [\r\n ...state.orderItems.map((item) => {\r\n if (item.guid !== action.payload.oldGuid) return item;\r\n\r\n let newItem = { ...action.payload, guid: action.payload.newGuid };\r\n\r\n return newItem;\r\n }),\r\n ];\r\n\r\n return { ...state, orderItems: [...replacedOrderItems] };\r\n\r\n case 'ADD_ORDER_ITEM_TEXTURE_3D':\r\n const newOrderItems = [\r\n ...state.orderItems.map((item) => {\r\n if (item.productId !== action.payload.productId) return item;\r\n if (item.isLayerItem === true) return item;\r\n\r\n if (\r\n item.productId === action.payload.productId &&\r\n !item.isLayerItem\r\n ) {\r\n item = { ...action.payload };\r\n }\r\n\r\n return item;\r\n }),\r\n ];\r\n const textureAdded = newOrderItems.find(\r\n (i) =>\r\n i.productId === action.payload.productId && i.isLayerItem !== true\r\n );\r\n\r\n if (!textureAdded) newOrderItems.push(action.payload);\r\n\r\n return { ...state, orderItems: [...newOrderItems] };\r\n\r\n case 'UPDATE_ORDER_ITEM_CROP':\r\n const newOrderItemsWithCrop = [\r\n ...state.orderItems.map((item) => {\r\n if (item.guid !== action.payload.guid) return item;\r\n\r\n item.cropObj = action.payload.crop;\r\n\r\n item.completedCropObj = getPixelCrop(\r\n action.payload.crop,\r\n item.width,\r\n item.height\r\n );\r\n\r\n return item;\r\n }),\r\n ];\r\n\r\n return { ...state, orderItems: [...newOrderItemsWithCrop] };\r\n\r\n case 'UPDATE_ORDER_ITEM_TEXTURE_CONFIG':\r\n const newOrderItemsWithConfig = [\r\n ...state.orderItems.map((item) => {\r\n if (item.guid !== action.payload.guid) return item;\r\n\r\n item.layerConfig = action.payload;\r\n return item;\r\n }),\r\n ];\r\n return { ...state, orderItems: [...newOrderItemsWithConfig] };\r\n\r\n case 'UPDATE_ORDER_ITEM_TEXTURE_CONFIG_MULTI':\r\n const newOrderItemsWithConfigMulti = [\r\n ...state.orderItems.map((item) => {\r\n if (action.payload.filter((c) => c.guid === item.guid).length === 0)\r\n return item;\r\n\r\n const newConfig = action.payload.find((i) => i.guid === item.guid);\r\n item.layerConfig = newConfig;\r\n return item;\r\n }),\r\n ];\r\n return { ...state, orderItems: [...newOrderItemsWithConfigMulti] };\r\n\r\n case 'UPDATE_ORDER_ITEM_CROP_COMPLETE':\r\n const newOrderItemsWithCompletedCrop = [\r\n ...state.orderItems.map((item) => {\r\n if (item.guid !== action.payload.guid) return item;\r\n item.completedCropObj = action.payload.crop;\r\n item.cropObj = action.payload.crop;\r\n return item;\r\n }),\r\n ];\r\n\r\n return { ...state, orderItems: [...newOrderItemsWithCompletedCrop] };\r\n\r\n case 'INCREASE_ORDER_ITEM_QTY':\r\n return {\r\n ...state,\r\n orderItems: [\r\n ...state.orderItems.map((item) => {\r\n if (item.guid === action.payload.guid) {\r\n item.qty++;\r\n }\r\n return item;\r\n }),\r\n ],\r\n };\r\n\r\n case 'DECRESE_ORDER_ITEM_QTY':\r\n return {\r\n ...state,\r\n orderItems: [\r\n ...state.orderItems\r\n .map((item) => {\r\n if (item.guid === action.payload.guid) {\r\n item.qty--;\r\n }\r\n return item;\r\n })\r\n .filter((item) => item.qty > 0),\r\n ],\r\n };\r\n\r\n case 'REMOVE_ORDER_ITEMS_FOR_PRODUCT':\r\n return {\r\n ...state,\r\n orderItems: [\r\n ...state.orderItems.filter(\r\n (item) => item.productId !== action.payload.productId\r\n ),\r\n ],\r\n };\r\n\r\n case 'ORDER_ITEM_SET_STATE_PROCESSING':\r\n return {\r\n ...state,\r\n orderItems: [\r\n ...state.orderItems.map((item) => {\r\n if (item.guid === action.payload.guid) {\r\n item.status = 'processing';\r\n }\r\n return item;\r\n }),\r\n ],\r\n };\r\n\r\n case 'ORDER_ITEM_SET_STATE_SUCCESS':\r\n return {\r\n ...state,\r\n orderItems: [\r\n ...state.orderItems.map((item) => {\r\n if (item.guid === action.payload.guid) {\r\n item.status = 'success';\r\n item.fileAsBase64 = null; //release memory\r\n item.fileUrl = action.payload.url;\r\n item.imageGuid = action.payload.fileGuid;\r\n }\r\n return item;\r\n }),\r\n ],\r\n };\r\n\r\n case 'ORDER_ITEM_SET_STATE_FAILED':\r\n return {\r\n ...state,\r\n orderItems: [\r\n ...state.orderItems.map((item) => {\r\n if (item.guid === action.payload.guid) {\r\n item.status = 'failed';\r\n }\r\n return item;\r\n }),\r\n ],\r\n };\r\n\r\n case 'ORDER_SET_PAYMENT_METHOD':\r\n return {\r\n ...state,\r\n paymentMethod: action.payload.paymentMethod,\r\n };\r\n\r\n case 'ORDER_SET_FIRST_NAME':\r\n return {\r\n ...state,\r\n firstName: action.payload.firstName,\r\n };\r\n\r\n case 'ORDER_SET_LAST_NAME':\r\n return {\r\n ...state,\r\n lastName: action.payload.lastName,\r\n };\r\n\r\n case 'ORDER_SET_EMAIL':\r\n return {\r\n ...state,\r\n email: action.payload.email,\r\n };\r\n\r\n case 'ORDER_SET_PHONE':\r\n return {\r\n ...state,\r\n phone: action.payload.phone,\r\n };\r\n\r\n case 'ORDER_SET_SHIPPING':\r\n return {\r\n ...state,\r\n shippingSelected: action.payload.shipping,\r\n };\r\n\r\n case 'ORDER_SET_SHIPPING_NAME':\r\n return {\r\n ...state,\r\n shippingName: action.payload.shippingName,\r\n };\r\n\r\n case 'ORDER_SET_SHIPPING_ADDRESS':\r\n return {\r\n ...state,\r\n shippingAddress: action.payload.shippingAddress,\r\n };\r\n\r\n case 'ORDER_SET_SHIPPING_EMAIL':\r\n return {\r\n ...state,\r\n shippingEmail: action.payload.shippingEmail,\r\n };\r\n\r\n case 'ORDER_ITEM_SET_ATTRIBUTES':\r\n //check if config container is on the list, add if needed\r\n let newOrderItemsConfig = addProductAttributesConfig(\r\n state.orderItemsConfig,\r\n action.payload\r\n );\r\n\r\n //foreach config container check if attribute config is on the list, add if needed\r\n newOrderItemsConfig = newOrderItemsConfig.map((item) => {\r\n let newConfig = addAttributesGroupConfig(item, action.payload);\r\n newConfig.configs = newConfig.configs.map((cfg) =>\r\n updateAttributesGroupItemSelection(cfg, action.payload)\r\n );\r\n\r\n return newConfig;\r\n });\r\n\r\n return {\r\n ...state,\r\n orderItemsConfig: [...newOrderItemsConfig],\r\n };\r\n\r\n case 'FINALIZE':\r\n return {\r\n ...state,\r\n status: 'FINALIZING',\r\n };\r\n\r\n case 'FINALIZE_REQUESTED':\r\n return {\r\n ...state,\r\n status: 'PROCESSING',\r\n };\r\n\r\n case 'SUCCESS':\r\n return {\r\n ...state,\r\n status: 'SUCCESS',\r\n };\r\n\r\n case 'FAILED':\r\n return { ...state, status: 'ERROR' };\r\n\r\n default:\r\n return state;\r\n }\r\n}\r\n","import React from 'react';\r\nimport { OrderReducer, INIT_STATE } from '../reducers/order/reducer';\r\n\r\nconst OrderContext = React.createContext();\r\n\r\nfunction OrderProvider(props) {\r\n const [order, dispatch] = React.useReducer(OrderReducer, INIT_STATE);\r\n const value = [order, dispatch];\r\n\r\n return ;\r\n}\r\n\r\nfunction useOrder() {\r\n const context = React.useContext(OrderContext);\r\n if (!context) {\r\n throw new Error('useOrder must be used within the OrderProvider component');\r\n }\r\n return context;\r\n}\r\n\r\nexport { OrderContext, OrderProvider, useOrder };\r\n","//Core\r\nimport React from 'react';\r\n\r\n//Components\r\n\r\n//Hooks\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useAlerts } from '../../contexts/AlertContext';\r\n\r\n//Utils\r\nimport { REMOVE } from '../../reducers/alert/reducer';\r\n\r\n//UI\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport Button from '@material-ui/core/Button';\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogContentText from '@material-ui/core/DialogContentText';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport Paper from '@material-ui/core/Paper';\r\n\r\n//Alert\r\nimport MuiAlert from '@material-ui/lab/Alert';\r\nimport Zoom from '@material-ui/core/Zoom';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n root: {\r\n width: '100%',\r\n },\r\n}));\r\n\r\nfunction PaperComponent(props) {\r\n return ;\r\n}\r\n\r\nfunction MyAlert(props) {\r\n return ;\r\n}\r\n\r\nconst Alert = ({ alert }) => {\r\n const classes = useStyles();\r\n const { t } = useTranslation();\r\n\r\n const [, alertDispatch] = useAlerts();\r\n\r\n if (alert.length) {\r\n let removeAlert = alert[0];\r\n if (removeAlert.type !== 'confirm') {\r\n if (alert.length > 3) {\r\n alertDispatch({ type: REMOVE, payload: { id: removeAlert.id } });\r\n } else {\r\n setTimeout(() => {\r\n alertDispatch({ type: REMOVE, payload: { id: removeAlert.id } });\r\n }, 6000);\r\n }\r\n }\r\n }\r\n\r\n function renderAction(action, id, actionprops) {\r\n // console.log('renderAction: ', action, id, actionprops);\r\n return () => {\r\n action(actionprops);\r\n alertDispatch({ type: REMOVE, payload: { id: id } });\r\n };\r\n }\r\n\r\n return (\r\n
\r\n
\r\n {alert.map((a) => {\r\n switch (a.type) {\r\n case 'confirm':\r\n return (\r\n \r\n alertDispatch({ type: REMOVE, payload: { id: a.id } })\r\n }\r\n PaperComponent={PaperComponent}\r\n aria-labelledby='draggable-dialog-title'\r\n >\r\n \r\n {a.content.header}\r\n \r\n \r\n {a.content.message}\r\n \r\n \r\n \r\n alertDispatch({ type: REMOVE, payload: { id: a.id } })\r\n }\r\n color='primary'\r\n >\r\n {t('Cancel')}\r\n \r\n \r\n {t('OK')}\r\n \r\n \r\n \r\n );\r\n\r\n case 'alert':\r\n return (\r\n \r\n alertDispatch({ type: REMOVE, payload: { id: a.id } })\r\n }\r\n PaperComponent={PaperComponent}\r\n aria-labelledby='draggable-dialog-title'\r\n >\r\n \r\n {a.content.header}\r\n \r\n \r\n {a.content.message}\r\n \r\n \r\n \r\n alertDispatch({ type: REMOVE, payload: { id: a.id } })\r\n }\r\n color='primary'\r\n >\r\n {t('OK')}\r\n \r\n \r\n \r\n );\r\n\r\n default:\r\n return (\r\n \r\n \r\n \r\n alertDispatch({ type: REMOVE, payload: { id: a.id } })\r\n }\r\n severity={a.type}\r\n >\r\n {a.content.header} {a.content.message}\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 Alert;\r\n","import React from 'react';\r\nimport { createPortal } from 'react-dom';\r\nimport Alert from '../components/core/Alerts';\r\n\r\nimport { AlertReducer } from '../reducers/alert/reducer';\r\n\r\n//this allows you to set an alert in a snackbar at the bottom of the page anywhere\r\n/*\r\nalert template :\r\n\r\n alertDispatch({\r\n type: ADD,\r\n payload: {\r\n content: {header: '*the header* - string' message: '*the message* - string' },\r\n type: \"*type of alert* - string (error, warning, info, success, confirm)\",\r\n action:{what to do on \"ok\" click on a confirm}\r\n }\r\n })\r\n\r\n*/\r\n\r\nconst AlertContext = React.createContext();\r\n\r\nfunction AlertProvider(props) {\r\n const state = [];\r\n const [alerts, dispatch] = React.useReducer(AlertReducer, state);\r\n const value = [alerts, dispatch];\r\n\r\n return (\r\n \r\n {props.children}\r\n {createPortal(, document.body)}\r\n \r\n );\r\n}\r\n\r\nfunction useAlerts() {\r\n const context = React.useContext(AlertContext);\r\n if (!context) {\r\n throw new Error(\r\n 'useAlerts must be used within the AlertProvider component'\r\n );\r\n }\r\n return context;\r\n}\r\n\r\nexport { AlertContext, AlertProvider, useAlerts };\r\n"],"sourceRoot":""}