@threedddplus/logoeditor 0.0.2 → 0.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/logoeditor.cjs.development.js +84 -41
- package/dist/logoeditor.cjs.development.js.map +1 -1
- package/dist/logoeditor.cjs.production.min.js +1 -1
- package/dist/logoeditor.cjs.production.min.js.map +1 -1
- package/dist/logoeditor.esm.js +84 -41
- package/dist/logoeditor.esm.js.map +1 -1
- package/package.json +1 -1
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"logoeditor.cjs.production.min.js","sources":["../node_modules/style-inject/dist/style-inject.es.js","../src/store/actions/index.ts","../src/axios/index.ts","../src/store/lambda/index.ts","../src/store/saveDesign/index.tsx","../src/services/UrlMapping.ts","../src/services/cookies.ts","../src/services/token.ts","../src/services/getDom.ts","../src/services/saveFile.ts","../src/services/restrictSpecialCharacters.ts","../src/store/auth/index.ts","../src/services/sessionStorage.ts","../src/store/history/index.ts","../src/store/fabric/index.ts","../src/loaders/tiffParser.js","../src/store/converters/index.ts","../src/store/index.ts","../src/components/button/button.tsx","../src/theme.ts","../src/components/icon/icon.tsx","../src/components/icon/rLogo.tsx","../src/components/icon/myLogo.tsx","../src/components/icon/addMascot.tsx","../src/components/icon/addText.tsx","../src/components/icon/productColor.tsx","../src/components/icon/flipH.tsx","../src/components/icon/flipV.tsx","../src/components/icon/selectAll.tsx","../src/components/icon/copy.tsx","../src/components/icon/paste.tsx","../src/components/icon/sendToBack.tsx","../src/components/icon/sendToFront.tsx","../src/components/icon/sendAboveObject.tsx","../src/components/icon/sendUnderObject.tsx","../src/components/icon/eyedropper.tsx","../src/components/icon/delete.tsx","../src/components/canvas/canvasButtons.tsx","../src/components/contextMenu/contextMenu.tsx","../src/components/canvas/canvas.tsx","../src/store/fabric/fabricCanvas.ts","../src/components/card/card.tsx","../src/components/card/cardbody.tsx","../src/components/card/cardmedia.tsx","../src/components/card/cardtitle.tsx","../src/components/uploadLogo/fileuploadButton.tsx","../src/components/colorPallet/colorPalette.tsx","../src/components/colorPallet/color.tsx","../src/components/canvas/popUpCanvas.tsx","../src/store/fabric/Popupcanvas.ts","../src/components/uploadLogo/uploadLogo.tsx","../src/components/searchbar/searchbar.tsx","../src/components/input/input.tsx","../src/components/SortByDropdown/sortButton.tsx","../src/components/SortByDropdown/sortByDropdown.tsx","../src/components/loader/loader.tsx","../src/components/myLogo/myLogo.tsx","../src/components/button/iconButton.tsx","../src/components/button/editButton.tsx","../src/components/card/cardcheckmark.tsx","../src/components/card/carddownloadicon.tsx","../src/components/card/cardflag.tsx","../src/components/card/cardtags.tsx","../src/components/card/carddescription.tsx","../src/components/modal/modal.tsx","../src/components/modal/modalButtons.tsx","../src/components/modal/modalDownloadIcon.tsx","../src/components/modal/modalHeading.tsx","../src/components/modal/modalLabel.tsx","../src/components/modal/modalStatusIcon.tsx","../src/components/leftMenu/leftMenu.tsx","../src/components/Rightmenu/imageEdit.tsx","../src/components/Rightmenu/Rightmenu.tsx","../src/components/addMascot/addMascot.tsx","../src/components/saveDesign/saveDesignModal.tsx","../src/components/saveDesign/saveDesign.tsx","../src/components/middleMenu/middleMenu.tsx","../src/index.tsx"],"sourcesContent":["function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","import { StateCreator } from 'zustand';\nimport { use3dddPlus } from '..';\nimport { Design } from '../customize/types';\n\nexport interface ActionSlice {\n displayLoginModal: boolean;\n showProductBreakUpModal: { status: boolean; value: any };\n loadDesignModal: boolean;\n productInfoModal: any;\n toggleSaveDesign: {\n key: string;\n status: boolean;\n title: string;\n details: any;\n };\n showModalAfterLogin?: void;\n changeModel: () => void;\n editDesignInfo: () => void;\n\n saveDesignModal: () => void;\n setLoadDesignModal: (loadDesign: boolean) => void;\n setProductInfoModal: () => any;\n setToggleSaveDesign: (\n key: string,\n status: boolean,\n title: string,\n details: any\n ) => void;\n share: () => void;\n toggleLoginModal: () => void;\n confirmDesignModal: { status: boolean; value: string };\n setConfirmDesignModal: (status: boolean, value: string) => void;\n toggleSuccessfullDesign: boolean;\n setToggleSuccessfullDesign: () => void;\n selectedDesign: any;\n setSelectedDesign: (selected: Design) => void;\n saveRackSuccessfulModal: boolean;\n setSaveRackSuccessfulModal: () => void;\n setShowModalAfterLogin: (toggleAction: any) => void; //Due to current functionality, toggleAction can have callback function of different types\n disableUpdate: boolean;\n confirmUpdateDesignModal: boolean;\n setConfirmUpdateDesignModal: () => void;\n designUpdateSuccessfulModal: boolean;\n getListFromRack: () => boolean;\n toogleShowProductBreakUpModal: (status: boolean, value: any) => void;\n productBreakup: any[];\n}\n\nconst graphqlSlice: StateCreator<ActionSlice> = (set, get) => {\n return {\n displayLoginModal: false,\n showProductBreakUpModal: {\n status: false,\n value: {},\n },\n loadDesignModal: false,\n productInfoModal: false,\n toggleSaveDesign: { key: 'save', status: false, title: '', details: {} },\n showModalAfterLogin: undefined,\n selectedDesign: {},\n changeModel: () => {\n alert('function not implemented');\n },\n confirmDesignModal: { status: false, value: '' },\n confirmUpdateDesignModal: false,\n toggleSuccessfullDesign: false,\n designUpdateSuccessfulModal: false,\n getListFromRack: () => {\n return false;\n },\n setSelectedDesign: (selected) => {\n set({ selectedDesign: selected });\n },\n setLoadDesignModal: (loadDesign) => {\n set({ loadDesignModal: loadDesign });\n },\n setToggleSaveDesign: (key, status, title, details) => {\n set({\n toggleSaveDesign: {\n key: key,\n status: status,\n title: title,\n details: details,\n },\n });\n },\n setConfirmDesignModal: (status, value) => {\n set({ confirmDesignModal: { status: status, value: value } });\n },\n setConfirmUpdateDesignModal: () => {\n set((state) => ({\n confirmUpdateDesignModal: !state.confirmUpdateDesignModal,\n }));\n },\n setToggleSuccessfullDesign: () => {\n set((state) => ({\n toggleSuccessfullDesign: !state.toggleSuccessfullDesign,\n }));\n },\n setProductInfoModal: () => {\n set((state) => ({ productInfoModal: !state.productInfoModal }));\n },\n\n editDesignInfo: () => {\n alert('function not implemented');\n },\n // rack: () => {\n // alert('function not implemented');\n // },\n\n saveDesignModal: () => {\n try {\n use3dddPlus.setState({ current: 'saveCTA' });\n use3dddPlus.getState().navigateTo('savePopUp');\n use3dddPlus.setState({ designName: '' });\n use3dddPlus.setState({ designNotes: '' });\n use3dddPlus.setState({ designTag: [] });\n let string = '';\n const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';\n\n for (let i = 0; i < 7; i++) {\n string += characters.charAt(\n Math.floor(Math.random() * characters.length)\n );\n }\n use3dddPlus.setState({ designNumber: string });\n\n\n if (!use3dddPlus.getState().customerId) {\n get().toggleLoginModal();\n get().setShowModalAfterLogin(() => {\n use3dddPlus\n .getState()\n .setToggleSaveDesign('save', true, 'Save Your Design', {});\n });\n return;\n }\n get().setToggleSaveDesign('save', true, 'Save Your Design', {});\n use3dddPlus.setState({ disableSaveButton: false });\n } catch {}\n },\n\n \n share: () => {\n alert('function not implemented');\n },\n toggleLoginModal: () => {\n set((state) => ({ displayLoginModal: !state.displayLoginModal }));\n },\n\n saveRackSuccessfulModal: false,\n setSaveRackSuccessfulModal: () => {\n set((state) => ({\n saveRackSuccessfulModal: !state.saveRackSuccessfulModal,\n }));\n },\n setShowModalAfterLogin: (toggleAction) => {\n use3dddPlus.setState({ showModalAfterLogin: toggleAction });\n },\n toogleShowProductBreakUpModal: (status, value) => {\n set({ showProductBreakUpModal: { status: status, value: value } });\n },\n disableUpdate: false,\n productBreakup: [],\n };\n};\n\nexport default graphqlSlice;\n","import axios, { AxiosInstance, AxiosResponse } from 'axios';\n\nexport const baseURL = process.env.REACT_APP_LAMBDA_URL;\n\n// TODO remove ts-ignore; CreateAxiosDefaults<any> not building npm package. \n// @ts-ignore\nexport const instance: AxiosInstance = axios.create({\n baseURL: baseURL,\n timeout: 15000,\n headers: {\n 'Content-Type': 'application/json',\n Authorization: 'jxnhh7rk7gpjtnp1o1besdaip3pd2560',\n },\n});\n\nexport const responseBody = (response: AxiosResponse) => response.data;\n\nexport const requests = {\n get: (url: string) => instance.get(url).then(responseBody),\n post: (url: string, body: {}) => instance.post(url, body).then(responseBody),\n put: (url: string, body: {}) => instance.put(url, body).then(responseBody),\n delete: (url: string) => instance.delete(url).then(responseBody),\n};\n","import { StateCreator } from 'zustand';\nimport { requests } from '../../axios/index';\nimport { use3dddPlus } from '..';\n\n// const useSampleResponses = process.env.REACT_APP_USE_SAMPLE_RESPONSES;\n\n\nexport interface LambdaSlice {\n\n lambdaClient: any;\n\n loadingLogo: (data: any) => void;\n getStockLogos: () => void;\n saveLogo: (data: any) => any; \n}\n\nconst lambdaSlice: StateCreator<LambdaSlice> = (_set, _get) => {\n return {\n lambdaClient: requests,\n\n loadingLogo: async (data: any) => {\n try {\n use3dddPlus.setState({ loading: true });\n if (!requests) {\n throw new Error('lambdaClient Not Found');\n }\n const response = await requests.get(\n `/editor-logo/117015?searchText=+${data}`\n );\n use3dddPlus.setState({ loading: false });\n const res = await response;\n use3dddPlus.setState({ retriveLogoDesign: res });\n return response;\n } catch (error) {\n console.error(error);\n use3dddPlus.setState({ loading: false });\n throw new Error(error);\n }\n },\n getStockLogos: async () => {\n try {\n use3dddPlus.setState({ loading: true });\n if (!requests) {\n throw new Error('lambdaClient Not Found');\n }\n const response = await requests.get('/mascot-logos');\n use3dddPlus.setState({ loading: false });\n const res = await response;\n use3dddPlus.setState({ stockLogos: res });\n return res;\n } catch (error) {\n console.error(error);\n use3dddPlus.setState({ loading: false });\n throw new Error(error);\n }\n },\n saveLogo: async (logo) => {\n try {\n use3dddPlus.setState({ loading: true });\n if (!requests) {\n throw new Error('lambdaClient Not Found');\n }\n const response = await requests.post('/editor-logo', logo);\n use3dddPlus.setState({ loading: false });\n return response;\n } catch (error) {\n console.error(error);\n use3dddPlus.setState({ loading: false });\n throw new Error(error);\n }\n },\n };\n};\n\nexport default lambdaSlice;\n","import { StateCreator } from 'zustand';\nexport interface SaveDesignSlice {\n disableSaveButton: boolean;\n designNumber: string;\n designImageUrl: string;\n designProofPdfUrl: string;\n designTag: string[];\n designName: string;\n designNotes: string;\n designConfig: string;\n designId: number;\n hasDesignNumber: () => boolean;\n showSaveCTA: boolean;\n showSaveRackCTA: boolean;\n}\n\nexport const saveDesignSlice: StateCreator<SaveDesignSlice> = (_set, get) => {\n return {\n disableSaveButton: false,\n designNumber: '',\n designImageUrl: '',\n designProofPdfUrl: '',\n designTag: [],\n designName: '',\n designNotes: '',\n designConfig: '',\n designId: undefined,\n hasDesignNumber: () => !!get().designNumber,\n showSaveCTA: true,\n showSaveRackCTA: true,\n };\n};\n\nexport default SaveDesignSlice;\n","\n// import { Texture } from '../store/customize/types';\n\nconst _oldURL = process.env.REACT_APP_IMAGE_URL_OLD!;\nconst _newURL = process.env.REACT_APP_IMAGE_URL!;\nexport const URLMapping = (url: string) => {\n // check if th url has old or new url paths\n if (url.includes(_oldURL)) {\n return url.replace(_oldURL, _newURL);\n }\n // if it has old then relace to new\n else if (url.includes(_newURL)) return url;\n // if it doesnot have nay then add new\n else {\n return _newURL + url;\n }\n};\n\n// export const getTextureDataFromId = (id) => {\n// const textureData = use3dddPlus.getState().productTextures;\n\n// // const textureData = [];\n// return textureData.filter((texture) => texture.id === id).filter(Boolean)[0];\n// };\n\nexport const constructMappingItem = (texture?: any, item?: any) => {\n return {\n id: item?.id,\n name: item?.name,\n path: item?.ProductMedium.Image_URL,\n type: item?.__typename,\n flipY: texture ? texture.flipY : false,\n };\n};\n\nexport const getImageURL = (path: string) => {\n return process.env.REACT_APP_IMAGE_URL + path; //item?.ProductMedium?.Image_URL\n};\n","export function getCookie(cname: string) {\n let name = cname + '=';\n let decodedCookie = decodeURIComponent(document.cookie);\n let ca = decodedCookie.split(';');\n for (let i = 0; i < ca.length; i++) {\n let c = ca[i];\n while (c.charAt(0) == ' ') {\n c = c.substring(1);\n }\n if (c.indexOf(name) == 0) {\n return c.substring(name.length, c.length);\n }\n }\n return '';\n}\n\nexport function setCookie(cname: string, cvalue: any, exdays: number) {\n const d = new Date();\n d.setTime(d.getTime() + exdays * 24 * 60 * 60 * 1000);\n let expires = 'expires=' + d.toUTCString();\n document.cookie = cname + '=' + cvalue + ';' + expires + ';path=/';\n}\n\nexport const clearCookie = (cname: string, cvalue = '') => {\n const d = new Date();\n d.setTime(d.getTime());\n let expires = 'expires=' + d.toUTCString();\n document.cookie = cname + '=' + cvalue + ';' + expires + ';path=/';\n};\n","import CryptoJS from 'crypto-js';\nexport const encryptToken = (data: any) => {\n return CryptoJS.AES.encrypt(\n JSON.stringify(data),\n 'secret key 123'\n ).toString();\n};\nexport const decryptToken = (ciphertext: string) => {\n var bytes = CryptoJS.AES.decrypt(ciphertext, 'secret key 123');\n return JSON.parse(bytes.toString(CryptoJS.enc.Utf8));\n};\n\nexport const getProjectId = () => {\n const queryString = window.location.search;\n const urlParams = new URLSearchParams(queryString);\n const projectId = urlParams.get('projectId');\n return projectId || process.env.REACT_APP_3DDDPLUS_PROJECTID;\n};\n\nexport function parseJwt(token) {\n var base64Url = token.split('.')[1];\n var base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/');\n var jsonPayload = decodeURIComponent(\n window\n ?.atob(base64)\n ?.split('')\n ?.map(function (c) {\n return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);\n })\n .join('')\n );\n\n return JSON.parse(jsonPayload);\n}\n","//import { use3dddPlus } from '../store';\n\n// export const getDomImage = () => {\n// var strMime = 'image/jpeg';\n// const imgData = use3dddPlus.getState().gl.domElement.toDataURL(strMime);\n\n// return dataURItoBlob(imgData);\n// };\n\nexport function dataURItoBlob(dataURI) {\n // convert base64 to raw binary data held in a string\n // doesn't handle URLEncoded DataURIs - see SO answer #6850276 for code that does this\n var byteString = atob(dataURI.split(',')[1]);\n\n // separate out the mime component\n // var mimeString = dataURI.split(',')[0].split(':')[1].split(';')[0];\n\n // write the bytes of the string to an ArrayBuffer\n var ab = new ArrayBuffer(byteString.length);\n var ia = new Uint8Array(ab);\n for (var i = 0; i < byteString.length; i++) {\n ia[i] = byteString.charCodeAt(i);\n }\n\n //Old Code\n //write the ArrayBuffer to a blob, and you're done\n //var bb = new BlobBuilder();\n //bb.append(ab);\n //return bb.getBlob(mimeString);\n\n //New Code\n return new File([ab], new Date().getTime() + '_configuration' + '.jpg', {\n type: 'image/jpeg',\n // lastModified: new Date(),\n });\n}\n","// function called to save image\nexport const saveFile = function (strData: string, filename: string) {\n let link = document.createElement('a');\n document.body.appendChild(link);\n link.download = filename;\n link.href = strData;\n link.click();\n document.body.removeChild(link);\n};\n","// The key code condition we provided refers to the following key ranges:\n// 1. `(x >= 97 && x <= 122)`: This condition checks for lowercase alphabets in the ASCII range. Key codes 97 to 122 correspond to the characters 'a' to 'z'.\n// 2. `(x >= 48 && x <= 57)`: This condition checks for numeric key codes in the ASCII range. Key codes 48 to 57 correspond to the digits '0' to '9'.\n// 3. `(x >= 65 && x <= 90)`: This condition checks for uppercase alphabets in the ASCII range. Key codes 65 to 90 correspond to the characters 'A' to 'Z'.\n// 4. `(x >= 32 && x <= 32)`: This condition checks for the spacebar key. The key code 32 represents the space character.\n// By using these key code conditions, we are checking if the pressed key falls within the range of lowercase alphabets, numeric digits, uppercase alphabets, or the space character.\n\n\nexport const restrictSpecialCharacters = function (e) {\n const x = e.which || e.keycode;\n if (\n (x >= 97 && x <= 122) ||\n (x >= 48 && x <= 57) ||\n (x >= 65 && x <= 90) ||\n (x >= 32 && x <= 32)\n ) {\n return true;\n } else return e.preventDefault();\n};","import { StateCreator } from 'zustand';\nimport {\n clearCookie,\n decryptToken,\n encryptToken,\n getCookie,\n setCookie,\n} from '../../services';\nimport {\n clearSessionStorage,\n getSessionStorage,\n setSessionStorage,\n} from '../../services/sessionStorage';\n\nexport interface AuthSlice {\n authType?: string;\n cardCode?: string;\n customerEmail?: string;\n customerId?: number;\n customerType?: string;\n priceLevel: string;\n token?: string;\n clearLoginInfo: () => void;\n generateCustomizerToken: (setInCookies?: boolean) => void;\n setCustomizerToken: () => void;\n isLoggedIn: () => boolean;\n customUploadLogoColorList: any[];\n defaultColorList: any[];\n}\n\nexport const authSlice: StateCreator<AuthSlice> = (set, get) => {\n return {\n customUploadLogoColorList: [],\n defaultColorList: [],\n priceLevel: '',\n token: '',\n clearLoginInfo: () => {\n clearCookie('customizerToken');\n clearSessionStorage('customizerToken');\n set({\n authType: '',\n cardCode: '',\n customerEmail: '',\n customerId: null,\n customerType: '',\n priceLevel: '',\n token: '',\n });\n },\n generateCustomizerToken: (setInCookies = true) => {\n const authType = get().authType;\n const cardCode = get().cardCode;\n const customerEmail = get().customerEmail;\n const customerId = get().customerId;\n const customerType = get().priceLevel;\n const token = get().token;\n\n const customizerToken = encryptToken({\n authType,\n cardCode,\n customerEmail,\n customerId,\n customerType,\n token,\n });\n if (setInCookies) {\n setCookie('customizerToken', customizerToken, 1);\n } else {\n setSessionStorage('customizerToken', customizerToken);\n }\n },\n setCustomizerToken: () => {\n const customizerToken: any =\n getSessionStorage('customizerToken') || getCookie('customizerToken');\n\n if (!customizerToken) return;\n const decrypt: any = decryptToken(customizerToken);\n\n set({\n ...decrypt,\n });\n },\n isLoggedIn: () => (!!get().customerId ? true : false),\n };\n};\n\nexport default AuthSlice;\n","export const clearSessionStorage = (cname: string) => {\n sessionStorage.removeItem(cname);\n};\n\nexport const getSessionStorage = (sName: string) => {\n return sessionStorage.getItem(sName);\n};\n\nexport const setSessionStorage = (cname: string, cvalue: any) => {\n sessionStorage.setItem(cname, cvalue);\n};\n","import { StateCreator } from 'zustand';\n// import { use3dddPlus } from '..';\n\nexport interface HistorySlice {\n history: string[];\n current: string;\n navigateTo: (page: string) => void;\n goBack: () => void;\n}\n\nexport const historySlice: StateCreator<HistorySlice> = (set, _get) => {\n return {\n history: [],\n current: '',\n navigateTo: (page: string) => {\n set((state) => ({\n history: [...state.history, state.current],\n current: page,\n }));\n },\n goBack: () => {\n set((state) => {\n if (state.history.length > 0) {\n const previousPage = state.history.pop()!;\n return {\n history: [...state.history],\n current: previousPage,\n };\n }\n return state;\n });\n },\n }\n}\nexport default HistorySlice;\n","import { StateCreator } from 'zustand';\nimport { fabric } from 'fabric';\nimport { use3dddPlus } from '..';\nimport AWS from 'aws-sdk';\nexport interface FabricSlice {\n loading: Boolean;\n selectedStepper?: any;\n setSelectedStepper?: (selectedStepper: any) => void;\n storeHistory: any;\n count: number;\n stockLogos: [];\n retriveLogoDesign: [];\n fabricCanvas: any;\n popupCanv: any;\n textInfo: string;\n uploadImageModalDisplay: boolean;\n currentSelection: string;\n activeSelection: any;\n selectedAll: boolean;\n colorFill: any;\n // colorFillPopup : {},\n storeAllObject: [];\n iconImage: string;\n HideControls: any;\n showContextMenu: boolean;\n forStoringAllObject: (data: any) => void;\n forIconCapture: () => void;\n duplicateObject: () => void;\n deleteButtonControls: () => void;\n undo: () => void;\n redo: () => void;\n moveDown: (element) => void;\n moveUp: (element) => void;\n moveRight: (element) => void;\n moveLeft: (element) => void;\n applyColorFill :()=> any;\n updateModifaction: (saveHistory: boolean) => void;\n nameCounter: any;\n contextMenuCoordinates: { x: number; y: number };\n stockLogoHandler: (e: any) => void;\n testSVG: (data: any) => void;\n myLogoHandler: (logo: any) => void;\n loadingRetrivedFiles: (data: any) => void;\n allColor: any;\n uploadLogoConfig: (jsonConfig: any, customerId: any) => any;\n logoData: any;\n setLogoData: (logo: any) => void;\n}\n\nexport const fabricSlice: StateCreator<FabricSlice> = (set, get) => {\n return {\n logoData: null,\n setLogoData: (logoData) => set({ logoData }),\n allColor: [],\n loading: true,\n selectedStepper: 1,\n setSelectedStepper: (selectedStepper) => set({ selectedStepper }),\n storeHistory: [],\n stockLogos: [],\n retriveLogoDesign: [],\n fabricCanvas: null,\n popupCanv: null,\n textInfo: 'NEW TEXT',\n uploadImageModalDisplay: false,\n currentSelection: 'layer',\n activeSelection: null,\n selectedAll: false,\n colorFill: {},\n // colorFillPopup : {},\n storeAllObject: [],\n iconImage: '',\n HideControls: {\n tl: true,\n tr: true,\n bl: true, //false\n br: true,\n ml: false,\n mt: false,\n mr: false,\n mb: false,\n mtr: true,\n // 'cornerColor':'yellow'\n },\n showContextMenu: false,\n\n forStoringAllObject: (data) => {\n //@ts-ignore\n get().storeAllObject.unshift(data); //FOR PUSHING THE ARRAY RESERVE\n },\n forIconCapture: () => {\n const activeObject = get().fabricCanvas.getActiveObject();\n if (activeObject) {\n const dataURL = get().fabricCanvas.toDataURL({\n left: activeObject.left,\n top: activeObject.top,\n width: activeObject.width * activeObject.scaleX,\n height: activeObject.height * activeObject.scaleY,\n });\n set({ iconImage: dataURL });\n }\n },\n nameCounter: 0,\n duplicateObject: () => {\n let clipboard;\n get()\n .fabricCanvas.getActiveObject()\n .clone((cloned) => {\n clipboard = cloned;\n });\n clipboard.clone((clonedObj) => {\n get().fabricCanvas.discardActiveObject();\n clonedObj.set({\n left: clonedObj.left + 10,\n top: clonedObj.top + 10,\n evented: true,\n });\n if (clonedObj.type === 'activeSelection') {\n clonedObj.canvas = get().fabricCanvas;\n clonedObj.forEachObject((obj: any) => {\n get().fabricCanvas.add(obj);\n });\n clonedObj.setCoords();\n } else {\n get().fabricCanvas.add(clonedObj);\n }\n clipboard.top += 10;\n clipboard.left += 10;\n get().fabricCanvas.setActiveObject(clonedObj);\n get().fabricCanvas.requestRenderAll();\n clonedObj._objects.map((data) => {\n get().forStoringAllObject(data);\n });\n });\n get().updateModifaction(true);\n },\n deleteButtonControls: () => {\n // console.log(deleteIcon,'SELECTED......',getObj);\n },\n count: 0,\n skipEvent: false,\n undo: () => {\n if (get().count < get().storeHistory.length) {\n get().fabricCanvas.clear().renderAll();\n get().fabricCanvas.loadFromJSON(\n get().storeHistory[get().storeHistory.length - 1 - get().count - 1]\n );\n get().fabricCanvas.renderAll();\n get().count += 1;\n }\n },\n redo: () => {\n if (get().count > 0) {\n get().fabricCanvas.clear().renderAll();\n get().fabricCanvas.loadFromJSON(\n get().storeHistory[get().storeHistory.length - 1 - get().count + 1]\n );\n get().fabricCanvas.renderAll();\n get().count -= 1;\n }\n },\n moveDown: (element) => {\n element.top = element.top + 2;\n get().fabricCanvas.renderAll();\n },\n moveUp: (element) => {\n element.top = element.top - 2;\n get().fabricCanvas.renderAll();\n },\n moveRight: (element) => {\n element.left = element.left + 2;\n get().fabricCanvas.renderAll();\n },\n moveLeft: (element) => {\n element.left = element.left - 2;\n get().fabricCanvas.renderAll();\n },\n applyColorFill : ()=>{\n const canvasData = get().fabricCanvas.toJSON();\n const canvasGetobject = get().fabricCanvas.getObjects();\n canvasData.objects.forEach((element : any,index : any) => {\n element.colorFill = canvasGetobject[index].colorFill; \n });\n return canvasData;\n }, \n updateModifaction : (toSet)=>{ \n if(toSet){\n get().storeHistory.push(get().applyColorFill()); \n }\n },\n \n contextMenuCoordinates: { x: 0, y: 0 },\n stockLogoHandler: (e: any) => {\n console.log(e);\n // let logos = get().stockLogos[e.target.id];\n //@ts-ignore\n let logos = e + '?timestamp=' + Date.now();\n use3dddPlus.setState({ selectedStepper: undefined });\n get().testSVG(logos);\n },\n testSVG: (data) => {\n fabric.loadSVGFromURL(data, (objects, options) => {\n const loadedObject = fabric.util.groupSVGElements(objects, options);\n // console.log(svg)\n loadedObject.scaleToWidth(100);\n loadedObject.scaleToHeight(100);\n //@ts-ignore\n let objImage = loadedObject._objects;\n let _Fills = [];\n objImage.forEach((ele) => {\n ele.set({ strokeWidth: 0 });\n use3dddPlus.setState({ fillColor: [...ele.fill] });\n _Fills.push(ele.fill);\n });\n use3dddPlus.setState({\n //@ts-ignore\n fillColor: use3dddPlus.getState().removeDuplicates(_Fills),\n });\n //@ts-ignore\n _Fills = use3dddPlus.getState().removeDuplicates(_Fills);\n const fillColors = {};\n _Fills.map((item, index) => {\n fillColors['layer' + index] = item;\n });\n use3dddPlus.setState({ colorFill: fillColors });\n loadedObject.set({\n //@ts-ignore\n colorFill: fillColors,\n });\n get().fabricCanvas.add(loadedObject).renderAll();\n get().fabricCanvas.centerObject(loadedObject);\n get().fabricCanvas.setActiveObject(loadedObject);\n use3dddPlus.setState({ activeSelection: loadedObject });\n use3dddPlus.getState().forStoringAllObject(loadedObject);\n get()\n .fabricCanvas.getActiveObject()\n .toDataURL(function (data) {\n console.log('00000', data);\n });\n\n use3dddPlus.getState().forIconCapture();\n //@ts-ignore\n loadedObject.icon = use3dddPlus.getState().iconImage;\n });\n },\n myLogoHandler: (logo: any) => {\n\n let jsonData = logo.logo_config_url;\n var requestOptions = {\n method: 'GET',\n };\n fetch(jsonData, requestOptions)\n .then((response) => response.text())\n .then((result) => get().loadingRetrivedFiles(result))\n .catch((error) => console.log('error', error));\n },\n loadingRetrivedFiles: (data: any) => {\n let canvas = use3dddPlus.getState().fabricCanvas;\n canvas.loadFromJSON(JSON.parse(data), function () {\n canvas.renderAll.bind(canvas);\n use3dddPlus.setState({ selectedStepper: undefined });\n let objImage = canvas.getObjects()._objects;\n let _Fills = [];\n objImage?.forEach((ele) => {\n ele.set({ strokeWidth: 0 });\n use3dddPlus.setState({ fillColor: [...ele.fill] });\n _Fills.push(ele.fill);\n });\n use3dddPlus.setState({\n //@ts-ignore\n fillColor: use3dddPlus.getState().removeDuplicates(_Fills),\n });\n //@ts-ignore\n _Fills = use3dddPlus.getState().removeDuplicates(_Fills);\n const fillColors = {};\n _Fills.map((item, index) => {\n fillColors['layer' + index] = item;\n });\n use3dddPlus.setState({ colorFill: fillColors });\n canvas.getObjects().set({\n colorFill: fillColors,\n // setControlVisible:false,\n });\n });\n },\n uploadLogoConfig: async (jsonConfig, customerId) => {\n const bucketName = process.env.REACT_APP_BUCKET;\n const region = process.env.REACT_APP_REGION;\n AWS.config.update({\n accessKeyId: process.env.REACT_APP_ACCESSKEY,\n secretAccessKey: process.env.REACT_APP_SECRET_ACCESSKEY,\n });\n const S3 = new AWS.S3({\n params: { Bucket: bucketName },\n region: region,\n });\n\n const microTime = Date.now();\n const filePath = `my-logos/logo-config/${customerId}/${microTime}.json`;\n const params = {\n Bucket: bucketName,\n Key: filePath,\n Body: jsonConfig,\n ContentType: 'application/json',\n };\n\n const s3UrlPath = `https://${bucketName}.s3.${region}.amazonaws.com/${filePath}`;\n return new Promise((resolve, reject) => {\n S3.putObject(params, function (err: any) {\n if (err) {\n console.log('Error occurred while connecting S3 bucket!', err);\n reject(err);\n } else {\n resolve(s3UrlPath);\n }\n });\n });\n },\n };\n};\n\nexport default FabricSlice;\n","/* This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/. */\n\n'use strict';\n\nexport function TIFFParser() {\n this.tiffDataView = undefined;\n this.littleEndian = undefined;\n this.fileDirectories = [];\n}\n\nTIFFParser.prototype = {\n isLittleEndian: function () {\n // Get byte order mark.\n var BOM = this.getBytes(2, 0);\n\n // Find out the endianness.\n if (BOM === 0x4949) {\n this.littleEndian = true;\n } else if (BOM === 0x4d4d) {\n this.littleEndian = false;\n } else {\n console.log(BOM);\n throw TypeError('Invalid byte order value.');\n }\n\n return this.littleEndian;\n },\n\n hasTowel: function () {\n // Check for towel.\n if (this.getBytes(2, 2) !== 42) {\n throw RangeError('You forgot your towel!');\n return false;\n }\n\n return true;\n },\n\n getFieldTagName: function (fieldTag) {\n // See: http://www.digitizationguidelines.gov/guidelines/TIFF_Metadata_Final.pdf\n // See: http://www.digitalpreservation.gov/formats/content/tiff_tags.shtml\n var fieldTagNames = {\n // TIFF Baseline\n 0x013b: 'Artist',\n 0x0102: 'BitsPerSample',\n 0x0109: 'CellLength',\n 0x0108: 'CellWidth',\n 0x0140: 'ColorMap',\n 0x0103: 'Compression',\n 0x8298: 'Copyright',\n 0x0132: 'DateTime',\n 0x0152: 'ExtraSamples',\n 0x010a: 'FillOrder',\n 0x0121: 'FreeByteCounts',\n 0x0120: 'FreeOffsets',\n 0x0123: 'GrayResponseCurve',\n 0x0122: 'GrayResponseUnit',\n 0x013c: 'HostComputer',\n 0x010e: 'ImageDescription',\n 0x0101: 'ImageLength',\n 0x0100: 'ImageWidth',\n 0x010f: 'Make',\n 0x0119: 'MaxSampleValue',\n 0x0118: 'MinSampleValue',\n 0x0110: 'Model',\n 0x00fe: 'NewSubfileType',\n 0x0112: 'Orientation',\n 0x0106: 'PhotometricInterpretation',\n 0x011c: 'PlanarConfiguration',\n 0x0128: 'ResolutionUnit',\n 0x0116: 'RowsPerStrip',\n 0x0115: 'SamplesPerPixel',\n 0x0131: 'Software',\n 0x0117: 'StripByteCounts',\n 0x0111: 'StripOffsets',\n 0x00ff: 'SubfileType',\n 0x0107: 'Threshholding',\n 0x011a: 'XResolution',\n 0x011b: 'YResolution',\n\n // TIFF Extended\n 0x0146: 'BadFaxLines',\n 0x0147: 'CleanFaxData',\n 0x0157: 'ClipPath',\n 0x0148: 'ConsecutiveBadFaxLines',\n 0x01b1: 'Decode',\n 0x01b2: 'DefaultImageColor',\n 0x010d: 'DocumentName',\n 0x0150: 'DotRange',\n 0x0141: 'HalftoneHints',\n 0x015a: 'Indexed',\n 0x015b: 'JPEGTables',\n 0x011d: 'PageName',\n 0x0129: 'PageNumber',\n 0x013d: 'Predictor',\n 0x013f: 'PrimaryChromaticities',\n 0x0214: 'ReferenceBlackWhite',\n 0x0153: 'SampleFormat',\n 0x022f: 'StripRowCounts',\n 0x014a: 'SubIFDs',\n 0x0124: 'T4Options',\n 0x0125: 'T6Options',\n 0x0145: 'TileByteCounts',\n 0x0143: 'TileLength',\n 0x0144: 'TileOffsets',\n 0x0142: 'TileWidth',\n 0x012d: 'TransferFunction',\n 0x013e: 'WhitePoint',\n 0x0158: 'XClipPathUnits',\n 0x011e: 'XPosition',\n 0x0211: 'YCbCrCoefficients',\n 0x0213: 'YCbCrPositioning',\n 0x0212: 'YCbCrSubSampling',\n 0x0159: 'YClipPathUnits',\n 0x011f: 'YPosition',\n\n // EXIF\n 0x9202: 'ApertureValue',\n 0xa001: 'ColorSpace',\n 0x9004: 'DateTimeDigitized',\n 0x9003: 'DateTimeOriginal',\n 0x8769: 'Exif IFD',\n 0x9000: 'ExifVersion',\n 0x829a: 'ExposureTime',\n 0xa300: 'FileSource',\n 0x9209: 'Flash',\n 0xa000: 'FlashpixVersion',\n 0x829d: 'FNumber',\n 0xa420: 'ImageUniqueID',\n 0x9208: 'LightSource',\n 0x927c: 'MakerNote',\n 0x9201: 'ShutterSpeedValue',\n 0x9286: 'UserComment',\n\n // IPTC\n 0x83bb: 'IPTC',\n\n // ICC\n 0x8773: 'ICC Profile',\n\n // XMP\n 0x02bc: 'XMP',\n\n // GDAL\n 0xa480: 'GDAL_METADATA',\n 0xa481: 'GDAL_NODATA',\n\n // Photoshop\n 0x8649: 'Photoshop',\n };\n\n var fieldTagName;\n\n if (fieldTag in fieldTagNames) {\n fieldTagName = fieldTagNames[fieldTag];\n } else {\n console.log('Unknown Field Tag:', fieldTag);\n fieldTagName = 'Tag' + fieldTag;\n }\n\n return fieldTagName;\n },\n\n getFieldTypeName: function (fieldType) {\n var fieldTypeNames = {\n 0x0001: 'BYTE',\n 0x0002: 'ASCII',\n 0x0003: 'SHORT',\n 0x0004: 'LONG',\n 0x0005: 'RATIONAL',\n 0x0006: 'SBYTE',\n 0x0007: 'UNDEFINED',\n 0x0008: 'SSHORT',\n 0x0009: 'SLONG',\n 0x000a: 'SRATIONAL',\n 0x000b: 'FLOAT',\n 0x000c: 'DOUBLE',\n };\n\n var fieldTypeName;\n\n if (fieldType in fieldTypeNames) {\n fieldTypeName = fieldTypeNames[fieldType];\n }\n\n return fieldTypeName;\n },\n\n getFieldTypeLength: function (fieldTypeName) {\n var fieldTypeLength;\n\n if (['BYTE', 'ASCII', 'SBYTE', 'UNDEFINED'].indexOf(fieldTypeName) !== -1) {\n fieldTypeLength = 1;\n } else if (['SHORT', 'SSHORT'].indexOf(fieldTypeName) !== -1) {\n fieldTypeLength = 2;\n } else if (['LONG', 'SLONG', 'FLOAT'].indexOf(fieldTypeName) !== -1) {\n fieldTypeLength = 4;\n } else if (\n ['RATIONAL', 'SRATIONAL', 'DOUBLE'].indexOf(fieldTypeName) !== -1\n ) {\n fieldTypeLength = 8;\n }\n\n return fieldTypeLength;\n },\n\n getBits: function (numBits, byteOffset, bitOffset) {\n bitOffset = bitOffset || 0;\n var extraBytes = Math.floor(bitOffset / 8);\n var newByteOffset = byteOffset + extraBytes;\n var totalBits = bitOffset + numBits;\n var shiftRight = 32 - numBits;\n\n if (totalBits <= 0) {\n console.log(numBits, byteOffset, bitOffset);\n throw RangeError('No bits requested');\n } else if (totalBits <= 8) {\n var shiftLeft = 24 + bitOffset;\n var rawBits = this.tiffDataView.getUint8(\n newByteOffset,\n this.littleEndian\n );\n } else if (totalBits <= 16) {\n var shiftLeft = 16 + bitOffset;\n var rawBits = this.tiffDataView.getUint16(\n newByteOffset,\n this.littleEndian\n );\n } else if (totalBits <= 32) {\n var shiftLeft = bitOffset;\n var rawBits = this.tiffDataView.getUint32(\n newByteOffset,\n this.littleEndian\n );\n } else {\n console.log(numBits, byteOffset, bitOffset);\n throw RangeError('Too many bits requested');\n }\n\n var chunkInfo = {\n bits: (rawBits << shiftLeft) >>> shiftRight,\n byteOffset: newByteOffset + Math.floor(totalBits / 8),\n bitOffset: totalBits % 8,\n };\n\n return chunkInfo;\n },\n\n getBytes: function (numBytes, offset) {\n if (numBytes <= 0) {\n console.log(numBytes, offset);\n throw RangeError('No bytes requested');\n } else if (numBytes <= 1) {\n return this.tiffDataView.getUint8(offset, this.littleEndian);\n } else if (numBytes <= 2) {\n return this.tiffDataView.getUint16(offset, this.littleEndian);\n } else if (numBytes <= 3) {\n return this.tiffDataView.getUint32(offset, this.littleEndian) >>> 8;\n } else if (numBytes <= 4) {\n return this.tiffDataView.getUint32(offset, this.littleEndian);\n } else {\n console.log(numBytes, offset);\n throw RangeError('Too many bytes requested');\n }\n },\n\n getFieldValues: function (\n fieldTagName,\n fieldTypeName,\n typeCount,\n valueOffset\n ) {\n var fieldValues = [];\n\n var fieldTypeLength = this.getFieldTypeLength(fieldTypeName);\n var fieldValueSize = fieldTypeLength * typeCount;\n\n if (fieldValueSize <= 4) {\n // The value is stored at the big end of the valueOffset.\n if (this.littleEndian === false) {\n var value = valueOffset >>> ((4 - fieldTypeLength) * 8);\n } else {\n var value = valueOffset;\n }\n\n fieldValues.push(value);\n } else {\n for (var i = 0; i < typeCount; i++) {\n var indexOffset = fieldTypeLength * i;\n\n if (fieldTypeLength >= 8) {\n if (['RATIONAL', 'SRATIONAL'].indexOf(fieldTypeName) !== -1) {\n // Numerator\n fieldValues.push(this.getBytes(4, valueOffset + indexOffset));\n // Denominator\n fieldValues.push(this.getBytes(4, valueOffset + indexOffset + 4));\n //\t\t\t\t\t} else if (['DOUBLE'].indexOf(fieldTypeName) !== -1) {\n //\t\t\t\t\t\tfieldValues.push(this.getBytes(4, valueOffset + indexOffset) + this.getBytes(4, valueOffset + indexOffset + 4));\n } else {\n console.log(fieldTypeName, typeCount, fieldValueSize);\n throw TypeError(\"Can't handle this field type or size\");\n }\n } else {\n fieldValues.push(\n this.getBytes(fieldTypeLength, valueOffset + indexOffset)\n );\n }\n }\n }\n\n if (fieldTypeName === 'ASCII') {\n fieldValues.forEach(function (e, i, a) {\n a[i] = String.fromCharCode(e);\n });\n }\n\n return fieldValues;\n },\n\n clampColorSample: function (colorSample, bitsPerSample) {\n var multiplier = Math.pow(2, 8 - bitsPerSample);\n\n return Math.floor(colorSample * multiplier + (multiplier - 1));\n },\n\n makeRGBAFillValue: function (r, g, b, a) {\n if (typeof a === 'undefined') {\n a = 1.0;\n }\n return 'rgba(' + r + ', ' + g + ', ' + b + ', ' + a + ')';\n },\n\n parseFileDirectory: function (byteOffset) {\n var numDirEntries = this.getBytes(2, byteOffset);\n\n var tiffFields = [];\n\n for (\n var i = byteOffset + 2, entryCount = 0;\n entryCount < numDirEntries;\n i += 12, entryCount++\n ) {\n var fieldTag = this.getBytes(2, i);\n var fieldType = this.getBytes(2, i + 2);\n var typeCount = this.getBytes(4, i + 4);\n var valueOffset = this.getBytes(4, i + 8);\n\n var fieldTagName = this.getFieldTagName(fieldTag);\n var fieldTypeName = this.getFieldTypeName(fieldType);\n\n var fieldValues = this.getFieldValues(\n fieldTagName,\n fieldTypeName,\n typeCount,\n valueOffset\n );\n\n tiffFields[fieldTagName] = { type: fieldTypeName, values: fieldValues };\n }\n\n this.fileDirectories.push(tiffFields);\n\n var nextIFDByteOffset = this.getBytes(4, i);\n\n if (nextIFDByteOffset === 0x00000000) {\n return this.fileDirectories;\n } else {\n return this.parseFileDirectory(nextIFDByteOffset);\n }\n },\n\n parseTIFF: function (tiffArrayBuffer, canvas) {\n canvas = canvas || document.createElement('canvas');\n\n console.log(tiffArrayBuffer);\n\n this.tiffDataView = new DataView(tiffArrayBuffer);\n this.canvas = canvas;\n\n this.littleEndian = this.isLittleEndian(this.tiffDataView);\n\n if (!this.hasTowel(this.tiffDataView, this.littleEndian)) {\n return;\n }\n\n var firstIFDByteOffset = this.getBytes(4, 4);\n\n this.fileDirectories = this.parseFileDirectory(firstIFDByteOffset);\n\n var fileDirectory = this.fileDirectories[0];\n\n console.log(fileDirectory);\n\n var imageWidth = fileDirectory.ImageWidth.values[0];\n var imageLength = fileDirectory.ImageLength.values[0];\n\n this.canvas.width = imageWidth;\n this.canvas.height = imageLength;\n\n var strips = [];\n\n var compression = fileDirectory.Compression\n ? fileDirectory.Compression.values[0]\n : 1;\n\n var samplesPerPixel = fileDirectory.SamplesPerPixel.values[0];\n\n var sampleProperties = [];\n\n var bitsPerPixel = 0;\n var hasBytesPerPixel = false;\n\n fileDirectory.BitsPerSample.values.forEach(function (\n bitsPerSample,\n i,\n bitsPerSampleValues\n ) {\n sampleProperties[i] = {\n bitsPerSample: bitsPerSample,\n hasBytesPerSample: false,\n bytesPerSample: undefined,\n };\n\n if (bitsPerSample % 8 === 0) {\n sampleProperties[i].hasBytesPerSample = true;\n sampleProperties[i].bytesPerSample = bitsPerSample / 8;\n }\n\n bitsPerPixel += bitsPerSample;\n },\n this);\n\n if (bitsPerPixel % 8 === 0) {\n hasBytesPerPixel = true;\n var bytesPerPixel = bitsPerPixel / 8;\n }\n\n var stripOffsetValues = fileDirectory.StripOffsets.values;\n var numStripOffsetValues = stripOffsetValues.length;\n\n // StripByteCounts is supposed to be required, but see if we can recover anyway.\n if (fileDirectory.StripByteCounts) {\n var stripByteCountValues = fileDirectory.StripByteCounts.values;\n } else {\n console.log('Missing StripByteCounts!');\n\n // Infer StripByteCounts, if possible.\n if (numStripOffsetValues === 1) {\n var stripByteCountValues = [\n Math.ceil((imageWidth * imageLength * bitsPerPixel) / 8),\n ];\n } else {\n throw Error('Cannot recover from missing StripByteCounts');\n }\n }\n\n // Loop through strips and decompress as necessary.\n for (var i = 0; i < numStripOffsetValues; i++) {\n var stripOffset = stripOffsetValues[i];\n strips[i] = [];\n\n var stripByteCount = stripByteCountValues[i];\n\n // Loop through pixels.\n for (\n var byteOffset = 0,\n bitOffset = 0,\n jIncrement = 1,\n getHeader = true,\n pixel = [],\n numBytes = 0,\n sample = 0,\n currentSample = 0;\n byteOffset < stripByteCount;\n byteOffset += jIncrement\n ) {\n // Decompress strip.\n switch (compression) {\n // Uncompressed\n case 1:\n // Loop through samples (sub-pixels).\n for (var m = 0, pixel = []; m < samplesPerPixel; m++) {\n if (sampleProperties[m].hasBytesPerSample) {\n // XXX: This is wrong!\n var sampleOffset = sampleProperties[m].bytesPerSample * m;\n\n pixel.push(\n this.getBytes(\n sampleProperties[m].bytesPerSample,\n stripOffset + byteOffset + sampleOffset\n )\n );\n } else {\n var sampleInfo = this.getBits(\n sampleProperties[m].bitsPerSample,\n stripOffset + byteOffset,\n bitOffset\n );\n\n pixel.push(sampleInfo.bits);\n\n byteOffset = sampleInfo.byteOffset - stripOffset;\n bitOffset = sampleInfo.bitOffset;\n\n throw RangeError('Cannot handle sub-byte bits per sample');\n }\n }\n\n strips[i].push(pixel);\n\n if (hasBytesPerPixel) {\n jIncrement = bytesPerPixel;\n } else {\n jIncrement = 0;\n\n throw RangeError('Cannot handle sub-byte bits per pixel');\n }\n break;\n\n // CITT Group 3 1-Dimensional Modified Huffman run-length encoding\n case 2:\n // XXX: Use PDF.js code?\n break;\n\n // Group 3 Fax\n case 3:\n // XXX: Use PDF.js code?\n break;\n\n // Group 4 Fax\n case 4:\n // XXX: Use PDF.js code?\n break;\n\n // LZW\n case 5:\n // XXX: Use PDF.js code?\n break;\n\n // Old-style JPEG (TIFF 6.0)\n case 6:\n // XXX: Use PDF.js code?\n break;\n\n // New-style JPEG (TIFF Specification Supplement 2)\n case 7:\n // XXX: Use PDF.js code?\n break;\n\n // PackBits\n case 32773:\n // Are we ready for a new block?\n if (getHeader) {\n getHeader = false;\n\n var blockLength = 1;\n var iterations = 1;\n\n // The header byte is signed.\n var header = this.tiffDataView.getInt8(\n stripOffset + byteOffset,\n this.littleEndian\n );\n\n if (header >= 0 && header <= 127) {\n // Normal pixels.\n blockLength = header + 1;\n } else if (header >= -127 && header <= -1) {\n // Collapsed pixels.\n iterations = -header + 1;\n } /*if (header === -128)*/ else {\n // Placeholder byte?\n getHeader = true;\n }\n } else {\n var currentByte = this.getBytes(1, stripOffset + byteOffset);\n\n // Duplicate bytes, if necessary.\n for (var m = 0; m < iterations; m++) {\n if (sampleProperties[sample].hasBytesPerSample) {\n // We're reading one byte at a time, so we need to handle multi-byte samples.\n currentSample =\n (currentSample << (8 * numBytes)) | currentByte;\n numBytes++;\n\n // Is our sample complete?\n if (numBytes === sampleProperties[sample].bytesPerSample) {\n pixel.push(currentSample);\n currentSample = numBytes = 0;\n sample++;\n }\n } else {\n throw RangeError('Cannot handle sub-byte bits per sample');\n }\n\n // Is our pixel complete?\n if (sample === samplesPerPixel) {\n strips[i].push(pixel);\n\n pixel = [];\n sample = 0;\n }\n }\n\n blockLength--;\n\n // Is our block complete?\n if (blockLength === 0) {\n getHeader = true;\n }\n }\n\n jIncrement = 1;\n break;\n\n // Unknown compression algorithm\n default:\n // Do not attempt to parse the image data.\n break;\n }\n }\n\n //\t\t\tconsole.log( strips[i] );\n }\n\n //\t\tconsole.log( strips );\n\n if (canvas.getContext) {\n var ctx = this.canvas.getContext('2d');\n\n // Set a default fill style.\n ctx.fillStyle = this.makeRGBAFillValue(255, 255, 255, 0);\n\n // If RowsPerStrip is missing, the whole image is in one strip.\n if (fileDirectory.RowsPerStrip) {\n var rowsPerStrip = fileDirectory.RowsPerStrip.values[0];\n } else {\n var rowsPerStrip = imageLength;\n }\n\n var numStrips = strips.length;\n\n var imageLengthModRowsPerStrip = imageLength % rowsPerStrip;\n var rowsInLastStrip =\n imageLengthModRowsPerStrip === 0\n ? rowsPerStrip\n : imageLengthModRowsPerStrip;\n\n var numRowsInStrip = rowsPerStrip;\n var numRowsInPreviousStrip = 0;\n\n var photometricInterpretation =\n fileDirectory.PhotometricInterpretation.values[0];\n\n var extraSamplesValues = [];\n var numExtraSamples = 0;\n\n if (fileDirectory.ExtraSamples) {\n extraSamplesValues = fileDirectory.ExtraSamples.values;\n numExtraSamples = extraSamplesValues.length;\n }\n\n if (fileDirectory.ColorMap) {\n var colorMapValues = fileDirectory.ColorMap.values;\n var colorMapSampleSize = Math.pow(2, sampleProperties[0].bitsPerSample);\n }\n\n // Loop through the strips in the image.\n for (var i = 0; i < numStrips; i++) {\n // The last strip may be short.\n if (i + 1 === numStrips) {\n numRowsInStrip = rowsInLastStrip;\n }\n\n var numPixels = strips[i].length;\n var yPadding = numRowsInPreviousStrip * i;\n\n // Loop through the rows in the strip.\n for (var y = 0, j = 0; y < numRowsInStrip, j < numPixels; y++) {\n // Loop through the pixels in the row.\n for (var x = 0; x < imageWidth; x++, j++) {\n var pixelSamples = strips[i][j];\n\n var red = 0;\n var green = 0;\n var blue = 0;\n var opacity = 1.0;\n\n if (numExtraSamples > 0) {\n for (var k = 0; k < numExtraSamples; k++) {\n if (\n extraSamplesValues[k] === 1 ||\n extraSamplesValues[k] === 2\n ) {\n // Clamp opacity to the range [0,1].\n opacity = pixelSamples[3 + k] / 256;\n\n break;\n }\n }\n }\n\n switch (photometricInterpretation) {\n // Bilevel or Grayscale\n // WhiteIsZero\n case 0:\n if (sampleProperties[0].hasBytesPerSample) {\n var invertValue = Math.pow(\n 0x10,\n sampleProperties[0].bytesPerSample * 2\n );\n }\n\n // Invert samples.\n pixelSamples.forEach(function (sample, index, samples) {\n samples[index] = invertValue - sample;\n });\n\n // Bilevel or Grayscale\n // BlackIsZero\n case 1:\n red =\n green =\n blue =\n this.clampColorSample(\n pixelSamples[0],\n sampleProperties[0].bitsPerSample\n );\n break;\n\n // RGB Full Color\n case 2:\n red = this.clampColorSample(\n pixelSamples[0],\n sampleProperties[0].bitsPerSample\n );\n green = this.clampColorSample(\n pixelSamples[1],\n sampleProperties[1].bitsPerSample\n );\n blue = this.clampColorSample(\n pixelSamples[2],\n sampleProperties[2].bitsPerSample\n );\n break;\n\n // RGB Color Palette\n case 3:\n if (colorMapValues === undefined) {\n throw Error('Palette image missing color map');\n }\n\n var colorMapIndex = pixelSamples[0];\n\n red = this.clampColorSample(colorMapValues[colorMapIndex], 16);\n green = this.clampColorSample(\n colorMapValues[colorMapSampleSize + colorMapIndex],\n 16\n );\n blue = this.clampColorSample(\n colorMapValues[2 * colorMapSampleSize + colorMapIndex],\n 16\n );\n break;\n\n // Transparency mask\n case 4:\n throw RangeError('Not Yet Implemented: Transparency mask');\n break;\n\n // CMYK\n case 5:\n throw RangeError('Not Yet Implemented: CMYK');\n break;\n\n // YCbCr\n case 6:\n throw RangeError('Not Yet Implemented: YCbCr');\n break;\n\n // CIELab\n case 8:\n throw RangeError('Not Yet Implemented: CIELab');\n break;\n\n // Unknown Photometric Interpretation\n default:\n throw RangeError(\n 'Unknown Photometric Interpretation:',\n photometricInterpretation\n );\n break;\n }\n\n ctx.fillStyle = this.makeRGBAFillValue(red, green, blue, opacity);\n ctx.fillRect(x, yPadding + y, 1, 1);\n }\n }\n\n numRowsInPreviousStrip = numRowsInStrip;\n }\n }\n\n /*\t\tfor (var i = 0, numFileDirectories = this.fileDirectories.length; i < numFileDirectories; i++) {\n // Stuff\n }*/\n\n return this.canvas;\n },\n};\n","import { StateCreator } from 'zustand';\nimport { TIFFParser } from '../../loaders/tiffParser';\nimport { use3dddPlus } from '..';\nimport { fabric } from 'fabric';\nimport ImageTracer from 'imagetracerjs';\n// import * as pdfjsLib from 'pdfjs-dist/build/pdf';\n// pdfjsLib.GlobalWorkerOptions.workerSrc = `//cdnjs.cloudflare.com/ajax/libs/pdf.js/${pdfjsLib.version}/pdf.worker.js`;\nexport interface ConverterSlice {\n fillColor: string[];\n pdfConverter: (data: any) => void;\n // convertPdfToImages: (buffer: any) => any;\n tiffConvert: (data: any) => void;\n imageToSVG: (data: any) => void;\n removeDuplicates: (arr: any) => void;\n RGBToHex: (rgb: any) => void;\n changeSVGColor: (property: any, color: any) => void;\n setFile: (file: any) => void;\n file: any;\n addText: () => void;\n}\n\nexport const converterSlice: StateCreator<ConverterSlice> = (set, get) => {\n return {\n fillColor: [],\n file: {},\n setFile: (file) => {\n set({ file });\n },\n // return new Promise((resolve, reject) => {\n // if (data) {\n // const reader = new FileReader();\n // reader.onload = async () => {\n // const buffer = reader.result;\n // try {\n // const _B = await get().convertPdfToImages(buffer);\n // resolve(_B);\n // } catch (error) {\n // reject(error);\n // }\n // };\n // reader.readAsArrayBuffer(data);\n // } else {\n // reject(new Error('No data provided.'));\n // }\n // });\n // },\n // convertPdfToImages: async (buffer) => {\n // const pdf = await pdfjsLib.getDocument({ data: new Uint8Array(buffer) })\n // .promise;\n // const scale = 2;\n // for (let pageNum = 1; pageNum <= pdf.numPages; pageNum++) {\n // const page = await pdf.getPage(pageNum);\n // const viewport = page.getViewport({ scale });\n // const canvasEl = document.createElement('canvas');\n // canvasEl.width = viewport.width;\n // canvasEl.height = viewport.height;\n // const context = canvasEl.getContext('2d');\n // await page.render({\n // canvasContext: context,\n // viewport,\n // background: 'rgba(0,0,0,0)',\n // }).promise;\n // // let objectURL = URL.createObjectURL(canvasEl);\n // const imageUrl = canvasEl.toDataURL();\n // return imageUrl;\n // // svgConverter(imageUrl);\n // /* */\n // }\n // },\n tiffConvert: async (data) => {\n const tiffParser = new TIFFParser();\n const canvasEl = document.createElement('canvas');\n canvasEl.width = 500;\n canvasEl.height = 500;\n // const context = canvasEl.getContext(\"2d\");\n const arrayBuffer = await data.arrayBuffer();\n var tiffCanvas = tiffParser.parseTIFF(arrayBuffer, canvasEl);\n const imageUrl = tiffCanvas.toDataURL();\n return imageUrl;\n },\n imageToSVG: (data) => {\n use3dddPlus.setState({ uploadImageModalDisplay: true }); // FOR POPUP CANVAS VISIBLE\n ImageTracer.imageToSVG(\n data,\n function (svgstr) {\n fabric.loadSVGFromString(\n //@ts-ignore\n new String(svgstr),\n function (objects, options) {\n let loadedObject = fabric.util.groupSVGElements(objects, options);\n // console.log(\"LOADEDOBJECT--->\",data);\n loadedObject.scaleToHeight(100);\n loadedObject.scaleToWidth(100);\n //@ts-ignore\n let objImage = loadedObject?._objects;\n let _Fills = [];\n objImage.forEach((ele: any) => {\n ele.set({ strokeWidth: 0 });\n set({ fillColor: [...ele.fill] });\n // setFillColor([...ele.fill]);\n let _C = get().RGBToHex(ele.fill);\n _Fills.push(_C);\n });\n //@ts-ignore\n set({ fillColor: get().removeDuplicates(_Fills) });\n //setFillColor(get().removeDuplicates(_Fills));\n //@ts-ignore\n _Fills = get().removeDuplicates(_Fills);\n // console.log(_Fills);\n const fillColors = {};\n _Fills.map((item, index) => {\n fillColors['layer' + index] = item;\n });\n use3dddPlus.setState({ colorFill: fillColors });\n //FOR POPUP CANVAS\n // loadedObject.set({\n // colorFill : fillColors,\n // hasControls:false,\n // hasBorders : false,\n // lockMovementX:true,\n // lockMovementY:true,\n\n // })\n // for main canvas use this\n loadedObject.set({\n colorFill: fillColors,\n //@ts-ignore\n setControlVisible: false,\n });\n // var maxWidth = 300; // your maximum width value\n // var maxHeight = 300; // your maximum height value\n // if (loadedObject.width > maxWidth || loadedObject.height > maxHeight) {\n // // Calculate new dimensions while maintaining aspect ratio\n // var aspectRatio = loadedObject.width / loadedObject.height;\n // if (aspectRatio > maxWidth / maxHeight) {\n // loadedObject.scaleToWidth(maxWidth);\n // } else {\n // loadedObject.scaleToHeight(maxHeight);\n // }\n // }\n\n //-------- use CANVAS INSTEAD OF POPCANVAS--------\n console.log('loadedObject--->', loadedObject);\n use3dddPlus.getState().popupCanv.add(loadedObject).renderAll();\n use3dddPlus.getState().popupCanv.centerObject(loadedObject);\n use3dddPlus.getState().popupCanv.setActiveObject(loadedObject);\n use3dddPlus.setState({ activeSelection: loadedObject });\n // loadedObject.setControlVisible(\"mtr\", false);\n // use3dddPlus.getState().forStoringAllObject(loadedObject);//for pushing the data into array for layers\n }\n );\n }\n // options\n //@ts-ignore\n //optionpresets.default\n );\n },\n removeDuplicates: (arr) => {\n return arr.filter((item, index) => arr.indexOf(item) === index);\n },\n\n RGBToHex: (rgb) => {\n let sep = rgb.indexOf(',') > -1 ? ',' : ' ';\n rgb = rgb.substr(4).split(')')[0].split(sep);\n let r = (+rgb[0]).toString(16),\n g = (+rgb[1]).toString(16),\n b = (+rgb[2]).toString(16);\n\n if (r.length == 1) r = '0' + r;\n if (g.length == 1) g = '0' + g;\n if (b.length == 1) b = '0' + b;\n return '#' + r + g + b;\n },\n changeSVGColor: (property, color) => {\n const fillColor = { ...use3dddPlus.getState().colorFill };\n const previousColor = fillColor[property];\n //const SelectedObjet = use3dddPlus.getState().activeSelection;\n // console.log(\"Color_CHANGING--->\",SelectedObjet.colorFill);\n // let _newObj = SelectedObjet.colorFill;\n /* Object.entries(_newObj).forEach(([key, value]) => {\n if(`${value}` === previousColor){\n console.log(`${key}: ${value}` , previousColor);\n _newObj[`${key}`] = color;\n }\n // console.log(`${key}: ${value}`)\n});*/\n // const sel = new fabric.ActiveSelection(popupCanvas.getObjects(), {\n // popupCanvas: popupCanvas,\n // });\n\n // popupCanvas.setActiveObject(sel);\n // popupCanvas.requestRenderAll();\n\n // let objImage = SelectedObjet._objects;\n let objImage = use3dddPlus\n .getState()\n .popupCanv.getActiveObject()._objects;\n objImage.forEach((ele) => {\n const _C = ele.fill.includes('#') ? ele.fill : get().RGBToHex(ele.fill);\n if (_C === previousColor) {\n ele.set({\n fill: color,\n });\n }\n });\n use3dddPlus.getState().popupCanv.renderAll();\n fillColor[property] = color;\n use3dddPlus.setState({ colorFill: fillColor });\n },\n addText: () => {\n use3dddPlus.getState().fabricCanvas.discardActiveObject();\n const text = new fabric.Text('NEW TEXT', {\n lineHeight: 1,\n fill: '#fff',\n fontFamily: 'Arial',\n fontWeight: 'normal',\n top: use3dddPlus.getState().fabricCanvas.height / 2 - 40,\n left: use3dddPlus.getState().fabricCanvas.width / 2 - 205,\n stroke: '#eb4034',\n strokeWidth: 0,\n paintFirst: 'stroke',\n //charSpacing: 0,\n padding: -1,\n fontSize: 20,\n name: 'text',\n charSpacing: -10,\n lockScalingFlip: true,\n });\n const fillColors = { layer0: text.fill };\n text.set({\n //@ts-ignore\n colorFill: fillColors,\n });\n use3dddPlus.getState().forIconCapture();\n //@ts-ignore\n text.icon = use3dddPlus.getState().iconImage;\n use3dddPlus.getState().fabricCanvas.add(text);\n use3dddPlus.getState().fabricCanvas.setActiveObject(text);\n use3dddPlus.setState({ currentSelection: 'text' });\n //@ts-ignore\n use3dddPlus.getState().deleteButtonControls(text);\n text.setControlsVisibility(use3dddPlus.getState().HideControls);\n use3dddPlus.getState().nameCounter++;\n use3dddPlus.getState().updateModifaction(true);\n use3dddPlus.getState().forStoringAllObject(text); //for pushing the data into array for layers\n // use3dddPlus.setState({storeAllObject : });\n },\n pdfConverter :(data) => {\n return new Promise((_resolve, reject) => {\n if (data) {\n const reader = new FileReader();\n reader.onload = async () => {\n //const buffer = reader.result;\n // try {\n // const _B = await get().convertPdfToImages(buffer);\n // resolve(_B);\n // } catch (error) {\n // reject(error);\n // }\n };\n reader.readAsArrayBuffer(data);\n } else {\n reject(new Error('No data provided.'));\n }\n });\n },\n // convertPdfToImages: async (buffer: any) => {\n // const pdf = await pdfjsLib.getDocument({ data: new Uint8Array(buffer) })\n // .promise;\n // const scale = 2;\n // for (let pageNum = 1; pageNum <= pdf.numPages; pageNum++) {\n // const page = await pdf.getPage(pageNum);\n // const viewport = page.getViewport({ scale });\n // const canvasEl = document.createElement('canvas');\n // canvasEl.width = viewport.width;\n // canvasEl.height = viewport.height;\n // const context = canvasEl.getContext('2d');\n // await page.render({\n // canvasContext: context,\n // viewport,\n // background: 'rgba(0,0,0,0)',\n // }).promise;\n // const imageUrl = canvasEl.toDataURL();\n // return imageUrl;\n // }\n // return null;\n // },\n };\n};\nexport default ConverterSlice;\n","import { create, StateCreator } from 'zustand';\nimport {\n // createJSONStorage,\n // persist,\n subscribeWithSelector,\n} from 'zustand/middleware';\nimport actionSlice, { ActionSlice } from './actions';\nimport lambdaSlice, { LambdaSlice } from './lambda/index';\nimport SaveDesignSlice, { saveDesignSlice } from './saveDesign';\nimport AuthSlice, { authSlice } from './auth';\nimport HistorySlice, { historySlice } from './history';\nimport FabricSlice, { fabricSlice } from './fabric';\nimport ConverterSlice, { converterSlice} from './converters';\nexport type ThreedddPlus = \n ActionSlice &\n LambdaSlice &\n SaveDesignSlice &\n AuthSlice &\n HistorySlice &\n ConverterSlice &\n FabricSlice;\n\nexport const threedddPlusState: StateCreator<ThreedddPlus> = (...args) => {\n return {\n ...actionSlice(...args),\n ...lambdaSlice(...args),\n ...saveDesignSlice(...args),\n ...authSlice(...args),\n ...historySlice(...args),\n ...converterSlice(...args),\n ...fabricSlice(...args)\n };\n};\n\nexport const use3dddPlus = create(\n // persist(\n subscribeWithSelector<ThreedddPlus>(threedddPlusState)\n // , {\n // name: 'editor-store', // unique name\n // storage: createJSONStorage(() => sessionStorage), // (optional) by default, 'localStorage' is used\n // }\n // )\n);\n\n(window as any).datasbase = use3dddPlus;\n","import React from \"react\";\n\nexport const Button = ({ label, icons, onClick, className, children }) => {\n return (\n <button\n onClick={onClick}\n className={`flex rounded-none gap-3 w-full items-center p-2 m-2 ${className}`}\n >\n {icons}\n {label}\n {children}\n </button>\n );\n};\n","export const PRIMARY_COLOR = 'text-[#cf132b]'; //rgb(30 58 138);\nexport const SECONDARY_COLOR = 'text-[#e11a38]'; //rgb(156 163 175);\nexport const BORDER_COLOR = 'border-[#e0e0e0]'; //rgb(156 163 175)\nexport const BORDER_COLOR_1 = 'border-[#ecebed]';\nexport const BORDER_COLOR_2 = 'border-[#c2c2c2]';\nexport const BORDER_COLOR_3 = 'border-[#e11a38]';\nexport const SIDEBAR_BG_COLOR = 'bg-[#f7f7f7]';\nexport const SELECT_BG_COLOR = 'bg-[#e11a38]'; //rgb(203 213 225)\nexport const BG_COLOR_1 = 'bg-[#e11a38]'; //rgb(203 213 225)\nexport const SELECT_TEXT_COLOR = 'text-white'\nexport const TEXT_SIZE_1 = 'text-xs'; //font-size: 12px (0.75rem)\nexport const TEXT_SIZE_2 = 'text-2xl'; //font-size: 24px; (1.5rem)\nexport const TEXT_SIZE_3 = 'text-[15px]';\nexport const TEXT_SIZE_4 = 'text-[17px]';\nexport const TEXT_SIZE_5 = 'text-[28px]';\nexport const TEXT_SIZE_6 = 'text-[14px]';\nexport const TEXT_SIZE_7 = 'text-[30px]';\nexport const TEXT_SIZE_8 = 'text-[21px]';\nexport const TEXT_SIZE_9 = 'text-[13px]';\nexport const TEXT_SIZE_11 = 'text-[18px]';\nexport const TEXT_SIZE_12 = 'text-[11px]';\nexport const TEXT_SIZE_13 = 'text-[12px]';\nexport const TEXT_SIZE_14 = 'text-[16px]';\nexport const TEXT_SIZE_15 = 'text-[25px]';\nexport const TEXT_SIZE_16 = 'text-[26px]';\nexport const TEXT_SIZE_17 = 'text-[22px]';\nexport const TEXT_SIZE_18 = 'text-[16px]';\nexport const ACTIVE_BG_COLOR = 'bg-[#cf132b]'; //rgb(30 58 138);\nexport const BUTTON_TEXT_COLOR = 'text-white';\nexport const BUTTON_BG_COLOR = 'bg-black'; //rgb(0 0 0)\nexport const INPUT_BG_COLOR = 'bg-white';\nexport const TEXT_COLOR_1 = 'text-[#5d5d5d]';\nexport const BACKDROP_BLUR = 'backdrop-blur-[21px]';\nexport const BACKDROP_BLUR_BG_COLOR = 'bg-[#00000046]';\nexport const MODAL_BG_COLOR = 'bg-[#ffffff]';\nexport const CARD_BG_COLOR = 'bg-white'; //rgb(255 255 255)\nexport const INPUT_TEXT_DISABLE_COLOR = 'text-slate-300'\nexport const CHECKBOX_CHECKED_COLOR = '#e11a38'\nexport const LOAD_DESIGN_BORDER_COLOR = '#e0e0e0'\nexport const LOAD_DESIGN_TEXT_COLOR = 'text-[#e11a38]';\nexport const SEARCH_ICON_COLOR = 'text-[#727272]'\nexport const SEARCHBAR_BORDER_COLOR = 'border-[#bebebe]'\nexport const MY_DESIGN_TEXT_COLOR = 'text-[#353535]'\nexport const SEARCH_TEXT_COLOR = 'text-[#353535]'\nexport const NO_SEARCHRESULT_TEXT_COLOR_1 = 'text-[#727272]'\nexport const NO_SEARCHRESULT_TEXT_COLOR_2 = 'text-[#5d5d5d]'\nexport const CANVAS_MENU_TEXT = 'text-[#353535]';\nexport const CANVAS_MENU_BORDER = 'border-[#f4f4f4]';\nexport const CANVAS_MENU_BG_COLOR = 'bg-white';\nexport const CANVAS_MENU_DROPDOWN_BG_COLOR = 'bg-white';\nexport const DECORATION_BG_COLOR = 'bg-[#F1F1F1]'\nexport const DROPDOWN_BACKGROUND_COLOR = 'bg-[#FCE8EB]'\nexport const TAG_BG_COLOR = 'bg-[#FCE8EB]'\nexport const TAG_TEXT_COLOR = 'text-[#e11a38]'\nexport const CARD_LAST_UPDATE_COLOR = 'text-[#727272]'\nexport const CARD_DOWNLAOD_ICON_COLOR = 'text-[#353535]'\nexport const CARD_DESCRIPTION_COLOR = 'text-[#353535]'\nexport const FOOTER_TEXT_COLOR = 'text-[#ffffff]'\nexport const FOOTER_RACK_BG_COLOR = 'bg-[#E21938]'\nexport const FOOTER_PRICE_COLOR = 'text-[#353535]'\nexport const FOOTER_RACK_COUNT_COLOR = 'text-[#E21938]'\nexport const FOOTER_ROSTER_COLOR = 'text-[#353535]'\nexport const FOOTER_ROSTER_BORDER_COLOR = 'border-[#353535]'\nexport const FOOTER_SUMMARY_BG_COLOR = 'bg-[#353535]'\nexport const FOOTER_SUMMARY_TEXT_COLOR = 'text-white'\nexport const CONFIRMDESIGN_DISCARD_BORDER_COLOR = 'border-[#707070]';\nexport const CONFIRMDESIGN_TEXT_COLOR_1 = 'text-[#5d5d5d]';\nexport const CONFIRMDESIGN_TEXT_COLOR_2 = 'text-[#E11A38]';\nexport const CONFIRMDESIGN_TEXT_COLOR_3 = 'text-[#353535]';\nexport const CONFIRMDESIGN_TEXT_COLOR_4 = 'text-[#ffffff]';\nexport const CONFIRMDESIGN_SAVEBUTTON_BG_COLOR = 'bg-[#E11A38]';\nexport const DESIGNSUCCESS_CLOSE_BORDER_COLOR = 'border-[#707070]';\nexport const DESIGNSUCCESS_TEXT_COLOR_1 = 'text-[#5d5d5d]';\nexport const DESIGNSUCCESS_TEXT_COLOR_2 = 'text-[#E21938]';\nexport const DESIGNSUCCESS_TEXT_COLOR_3 = 'text-[#353535]';\n\nexport const SAVERACK_BORDER_COLOR = 'border-[#707070]'\nexport const SAVERACK_TEXT_COLOR = 'text-[#707070]'\nexport const SAVEBUTTON_BG_COLOR = 'bg-[#E11A38]'\nexport const TOASTER_SUCCESS_BG_COLOR = 'bg-[#D5F2EA]'\nexport const TOASTER_FAILURE_BG_COLOR = 'bg-[#FCE8EB]'\nexport const TOASTER_INFO_BG_COLOR = 'bg-[#D5E9FA]'\nexport const TOASTER_WARNING_BG_COLOR = 'bg-[#FFF8E7]'\nexport const RESET_BUTTON_BG_COLOR = 'text-[#9A9A9A]'\nexport const PRODUCTINFO_TEXT_COLOR_1 = 'text-[#353535]'\nexport const PRODUCTINFO_TEXT_COLOR_2 = 'text-[#c2c2c2]'\nexport const PRODUCTINFO_TEXT_COLOR_3 = 'text-[#e11a38]'\nexport const PRODUCTINFO_TEXT_COLOR_4 = 'text-[#5d5d5d]'\nexport const UPDATESUCCESS_RACK_BORDER_COLOR = 'border-[#E11938]';\nexport const UPDATESUCCESS_TEXT_COLOR_1 = 'text-[#E11938]';\nexport const RACK_CARD_BORDER_COLOR = 'border-[#e5e5e5]';\nexport const RACK_CARD_TEXT_COLOR_1 = 'text-[#E11A38]';\nexport const RACK_CARD_TEXT_COLOR_2 = 'text-[#353535]';\nexport const RACK_CARD_TEXT_COLOR_3 = 'text-[#9f9f9f]';\nexport const RACK_CARD_MENU_TEXT = 'text-[#353535]';\nexport const EDIT_DESIGN_INFO_TEXT_COLOR_1 = 'text-[#E11A38]';\nexport const EDIT_DESIGN_INFO_TEXT_COLOR_2 = 'text-[#727272]';\nexport const EDIT_DESIGN_INFO_TEXT_COLOR_3 = 'text-[#353535]';\nexport const EDIT_DESIGN_INFO_TEXT_COLOR_4 = 'text-[#ffffff]';\nexport const EDIT_DESIGN_INFO_INPUT_BORDER_COLOR = 'border-[#ECEBED]';\nexport const EDIT_DESIGN_INFO_DISABLED_BG_COLOR_1 = 'bg-[#F8F8F8]';\nexport const EDIT_DESIGN_INFO_BG_COLOR_2 = 'bg-[#ffffff]';\nexport const EDIT_DESIGN_INFO_BG_COLOR_3 = 'bg-[#e11a38]';\nexport const EDIT_DESIGN_INFO_BG_COLOR_4 = 'bg-[#fce8eb]';\nexport const INPUT_ERROR_BORDER_COLOR = 'border-[#E11A38]';\nexport const INPUT_ERROR_TEXT_COLOR = 'text-[#E11A38]';\nexport const PRICEBREAKUP_TEXT_COLOR_1 = 'text-[#353535]';\nexport const PRICEBREAKUP_TEXT_COLOR_2 = 'text-[#747474]';\nexport const PRICEBREAKUP_TEXT_BORDER_COLOR_1 = 'border-[#c2c2c2]';\nexport const PRICEBREAKUP_TEXT_BORDER_COLOR_2 = 'border-[#ebebeb]';","import React from 'react';\nimport { IconContext, IconType } from 'react-icons';\nimport { Button, Tooltip, TooltipReference, useTooltipState } from 'reakit';\n\nexport interface IconButtonProps\n extends Exclude<React.ButtonHTMLAttributes<HTMLButtonElement>, 'children'> {\n icon?: React.ReactElement<IconType>;\n label: string;\n}\nconst Icon = React.forwardRef<HTMLButtonElement, IconButtonProps>(\n ({ label, icon, className, ...props }, ref) => {\n const tooltip = useTooltipState({ placement: 'top' });\n return (\n <>\n <TooltipReference\n ref={ref}\n {...props}\n {...tooltip}\n as={Button}\n className={`${className} flex relative items-center justify-center align-middle w-auto text-sm font-semibold h-5 first:rounded-l last:rounded-r focus:outline-none`}\n aria-label={label}\n >\n {icon}\n </TooltipReference>\n {label && label !== '' && (\n <Tooltip\n {...tooltip}\n className={`inline-block px-3 py-2 text-sm font-medium text-white transition-opacity duration-300 bg-[#e11a38] rounded-lg shadow-sm dark:bg-gray-700`}\n style={{ zIndex: 10 }}\n >\n {label}\n </Tooltip>\n )}\n </>\n );\n }\n);\n\nexport const IconButton = ({\n label,\n\n className,\n size = '2rem',\n icon = undefined,\n ...props\n}) => {\n return (\n <IconContext.Provider\n value={{\n size: size,\n className: 'pointer-events-auto cursor-pointer',\n }}\n >\n <Icon label={label} icon={icon} className={className} {...props} />\n </IconContext.Provider>\n );\n};\n\n\nexport {\n IoIosColorPalette,\n IoMdCheckmarkCircle,\n IoIosArrowForward,\n} from 'react-icons/io';\nexport { HiOutlineDownload, HiDotsVertical } from 'react-icons/hi';\nexport {\n FaRegSave,\n FaRegShareSquare,\n FaPlus,\n FaRegListAlt,\n FaEye,\n FaEyeSlash,\n} from 'react-icons/fa';\nexport { BiReset, BiAddToQueue } from 'react-icons/bi';\nexport { GiBilledCap, GiCardboardBox } from 'react-icons/gi';\nexport { TbWindowMinimize } from 'react-icons/tb';\nexport { RxCross2 } from 'react-icons/rx';\nexport { IoInformationCircleOutline, IoLogInOutline } from 'react-icons/io5';\nexport { CgMenuBoxed } from 'react-icons/cg';\nexport { IoIosInformationCircleOutline } from 'react-icons/io';\nexport { LuFlipHorizontal2, LuFlipVertical2 } from 'react-icons/lu';\n","import { GenIcon } from 'react-icons/lib';\n\nexport const RLogo = (props) => {\n return GenIcon({\n tag: 'svg',\n attr: {\n xmlns: 'http://www.w3.org/2000/svg',\n width: '36.672',\n height: '34.349',\n viewBox: '0 0 36.672 34.349',\n },\n child: [\n {\n tag: 'g',\n attr: {},\n child: [\n {\n tag: 'g',\n attr: { id: 'a' },\n child: [\n {\n tag: 'path',\n attr: {\n fill: 'none',\n fillRule: 'evenodd',\n transform:\"translate(-0.001)\",\n d: 'M1.99,0H29.149a1.993,1.993,0,0,1,1.99,1.99V29.011a1.986,1.986,0,0,1-.584,1.4v0A1.985,1.985,0,0,1,29.149,31H1.99A1.993,1.993,0,0,1,0,29.011V1.99A1.983,1.983,0,0,1,.585.587v0A1.985,1.985,0,0,1,1.99,0',\n },\n child: [],\n },\n {\n tag: 'path',\n attr: {\n fill: 'none',\n stroke: '#fff',\n fillRule: 'evenodd',\n transform:\"translate(-1.117 -1.116)\",\n strokeWidth: '2px',\n d: 'M2.526,2.442l-.043.043a.875.875,0,0,0-.26.62V30.127a.887.887,0,0,0,.882.882h27.16a.877.877,0,0,0,.58-.219l.043-.043a.876.876,0,0,0,.26-.621V3.105a.887.887,0,0,0-.882-.882H3.105a.876.876,0,0,0-.579.219',\n },\n child: [],\n },\n {\n tag: 'path',\n attr: {\n fill: '#fff',\n fillRule: 'evenodd',\n transform:\"translate(-3.386 -6.517)\",\n d: 'M17.761,19.938a.317.317,0,0,1-.064.191c-.009.011-.018.023-.028.035a28.71,28.71,0,0,0-5.566,10.1.408.408,0,0,1-.425.267c-.479,0-3.211-.01-4.535-.01-.325,0-.353-.273-.242-.526a52.346,52.346,0,0,1,7.018-9.774,2.034,2.034,0,0,1,1.665-.577c.288-.018,1.3-.034,1.86-.019a.317.317,0,0,1,.317.317m11.5,7.6h0a26.686,26.686,0,0,1,1.788,2.517c.172.193.163.475-.13.475H25.887a.593.593,0,0,1-.5-.279c-.041-.059-.084-.118-.128-.178-2.739-4.256-4.547-5.186-8.643-6.328a.289.289,0,0,1-.153-.4,16.3,16.3,0,0,1,.994-1.485.424.424,0,0,1,.243-.113,10.774,10.774,0,0,0,2.58-.144c2.338-.627,2.872-2,2.789-2.969-.021-1.525-1.992-2.28-5.547-2.214-2.524,0-3.5-.036-6.741-.033-1.269.025-2.793-.712-3.965-2.816-.193-.339.02-.591.242-.585,2.812.029,9.023-.022,13.067.079,6.085.309,7.622,2.866,7.7,5.1.041,3.026-2.349,4.423-3.37,5.1a18.519,18.519,0,0,1,4.805,4.272',\n },\n child: [],\n },\n ],\n },\n ],\n },\n ],\n })(props);\n};\n","import { GenIcon } from 'react-icons/lib';\n\nexport const MyLogo = (props) => {\n return GenIcon({\n tag: 'svg',\n attr: {\n xmlns: 'http://www.w3.org/2000/svg',\n width: '26.381',\n height: '23.778',\n viewBox: '0 0 26.381 23.778',\n },\n child: [\n {\n tag: 'g',\n attr: {},\n child: [\n {\n tag: 'g',\n attr: { id: 'a' },\n child: [\n {\n tag: 'path',\n attr: {\n strokeWidth:\"1\",\n d: 'M19.698 7.853c.571-.475 1.11-.938 1.664-1.382a22.426 22.426 0 0 1 3.1-2.231 2.543 2.543 0 0 1 .612-.246.621.621 0 0 1 .769.8 4.073 4.073 0 0 1-.4.893 27.867 27.867 0 0 1-2.478 3.343c-.795.962-1.61 1.906-2.411 2.863a.509.509 0 0 0-.111.285 11.208 11.208 0 0 1-4.658 8.872 11.121 11.121 0 0 1-5.4 2.144 10.707 10.707 0 0 1-6.8-1.464 6.79 6.79 0 0 1-2.179-1.877 4.01 4.01 0 0 1-.491-4.3 3.571 3.571 0 0 1 1.06-1.273c.414-.331.841-.646 1.244-.989a1.774 1.774 0 0 0 .645-1.65 1.75 1.75 0 0 0-.635-1.151c-.374-.316-.76-.618-1.149-.914A3.763 3.763 0 0 1 .518 6.224a4.115 4.115 0 0 1 .855-2.262 7.56 7.56 0 0 1 2.733-2.204A11.038 11.038 0 0 1 8.162.542a10.878 10.878 0 0 1 4.744.658 11.321 11.321 0 0 1 4.686 3.2 11.249 11.249 0 0 1 2 3.214c.03.074.064.146.108.245m-.282 5.322c-.092.1-.143.148-.192.2-.958 1.023-1.91 2.052-2.879 3.066a1.725 1.725 0 0 0-.558.945 1.758 1.758 0 0 1-.121.361 4.187 4.187 0 0 1-2.709 2.693 7.042 7.042 0 0 1-4.627-.317.433.433 0 0 1-.291-.515.464.464 0 0 1 .452-.388 1.061 1.061 0 0 0 .994-.853c.161-.6.286-1.213.448-1.814a3.442 3.442 0 0 1 .8-1.513 3.653 3.653 0 0 1 2.092-1.027.823.823 0 0 0 .4-.195c.952-.9 1.884-1.816 2.841-2.707.9-.841 1.83-1.656 2.746-2.483.069-.062.134-.105.087-.231a10.636 10.636 0 0 0-2.107-3.49 10.45 10.45 0 0 0-3.874-2.7 10.109 10.109 0 0 0-4.27-.765 10 10 0 0 0-4.044 1.106 6.858 6.858 0 0 0-2.52 2.016 3.015 3.015 0 0 0 .526 4.236c.338.253.671.514 1 .778a2.9 2.9 0 0 1 1.061 1.408 2.668 2.668 0 0 1-.767 2.935c-.429.393-.9.737-1.362 1.1A2.9 2.9 0 0 0 1.66 18.4a4.238 4.238 0 0 0 1.474 1.875 9.636 9.636 0 0 0 6.836 2.016 10.206 10.206 0 0 0 4.484-1.48 10.431 10.431 0 0 0 4.233-4.893 9.948 9.948 0 0 0 .729-2.745m5.19-7.862-.074-.074a99.034 99.034 0 0 0-10.583 9.169l1.591 1.545a98.291 98.291 0 0 0 9.066-10.64M9.871 19.6a6.541 6.541 0 0 0 2 .118 3.378 3.378 0 0 0 1.869-.76 3.885 3.885 0 0 0 1.183-1.969.286.286 0 0 0-.077-.334c-.441-.431-.87-.874-1.306-1.311-.475-.477-.477-.478-1.117-.271a2.024 2.024 0 0 0-1.338 1.1 12.7 12.7 0 0 0-.425 1.313c-.163.536-.305 1.079-.483 1.611a2.526 2.526 0 0 1-.311.5',\n },\n child: [],\n },\n {\n tag: 'path',\n attr: {\n d: 'M15.289 10.865a2.043 2.043 0 0 1-1.97-2.233 2.052 2.052 0 1 1 1.97 2.233m1.18-2.029a1.112 1.112 0 0 0-2.224-.01 1.124 1.124 0 0 0 1.123 1.1 1.093 1.093 0 0 0 1.1-1.094',\n },\n child: [],\n },\n {\n tag: 'path',\n attr: {\n d: 'M5.279 9.17a2.037 2.037 0 1 1 2.036-2.152A2.031 2.031 0 0 1 5.279 9.17m-.011-.939a1.1 1.1 0 1 0-1.109-1.11 1.1 1.1 0 0 0 1.109 1.11',\n },\n child: [],\n },\n {\n tag: 'path',\n attr: {\n d: 'M8.679 5.605a2.048 2.048 0 1 1 2.064 2.006 2.024 2.024 0 0 1-2.064-2.006m.934-.03a1.115 1.115 0 1 0 1.1-1.1 1.117 1.117 0 0 0-1.1 1.1',\n },\n child: [],\n },\n {\n tag: 'path',\n attr: {\n fill: '#5d5d5d',\n\n fillRule: 'evenodd',\n\n transform: 'translate(-78.659 -351.017)',\n d: 'M7.895 17.255a2.045 2.045 0 1 1-2.079-2.031 2.032 2.032 0 0 1 2.079 2.031m-.934.021a1.111 1.111 0 1 0-1.131 1.091 1.108 1.108 0 0 0 1.131-1.091',\n },\n child: [],\n },\n ],\n },\n ],\n },\n ],\n })(props);\n};\n","import { GenIcon } from 'react-icons/lib';\n\nexport const AddMascots = (props) => {\n return GenIcon({\n tag: 'svg',\n attr: {\n xmlns: 'http://www.w3.org/2000/svg',\n width: '17.794',\n height: '17.8',\n viewBox: '0 0 17.794 17.8',\n },\n child: [\n {\n tag: 'defs',\n attr: {},\n child: [\n {\n tag: 'clipPath',\n attr: { id: 'a' },\n child: [\n {\n tag: 'path',\n attr: { d: 'M0 0h17.794v17.8H0z' },\n child: [],\n },\n ],\n },\n ],\n },\n {\n tag: 'g',\n attr: { 'clip-path': 'url(#a)' },\n child: [\n {\n tag: 'path',\n attr: {\n d: 'M15.2 17.8H2.6a1.263 1.263 0 0 0-.151-.046 2.957 2.957 0 0 1-2.443-2.882Q0 8.9.006 2.92A2.937 2.937 0 0 1 2.918.008q5.975-.014 11.949 0a2.76 2.76 0 0 1 2.475 1.415 7.114 7.114 0 0 1 .452 1.177v12.6a.57.57 0 0 0-.041.1 2.964 2.964 0 0 1-2.29 2.422c-.088.02-.176.046-.264.069M1.984 8.9v5.769a1 1 0 0 0 1.147 1.147h11.536a1 1 0 0 0 1.147-1.148V3.129a1 1 0 0 0-1.148-1.147H3.13a1 1 0 0 0-1.146 1.151v5.769',\n },\n child: [],\n },\n {\n tag: 'path',\n attr: {\n d: 'm5.938 8.903 1.483 2.433 2.965-6.388 4.443 8.889H2.975l2.963-4.934',\n },\n child: [],\n },\n {\n tag: 'path',\n attr: {\n d: 'M6.916 5.433a1.481 1.481 0 1 1-2.961.005 1.5 1.5 0 0 1 1.47-1.481 1.479 1.479 0 0 1 1.491 1.476',\n },\n child: [],\n },\n ],\n },\n ],\n })(props);\n};\n","import { GenIcon } from 'react-icons/lib';\n\nexport const AddText = (props) => {\n return GenIcon({\n tag: 'svg',\n attr: {\n xmlns: 'http://www.w3.org/2000/svg',\n width: '21',\n height: '21',\n viewBox: '0 0 21 21',\n },\n\n child: [\n {\n tag: 'g',\n attr: {},\n child: [\n {\n tag: 'path',\n attr: {\n d: 'M16 19H2V5h9V3H2a2.006 2.006 0 0 0-2 2v14a2.006 2.006 0 0 0 2 2h14a2.006 2.006 0 0 0 2-2v-9h-2Zm2-16V0h-2v3h-3c.01.01 0 2 0 2h3v2.99c.01.01 2 0 2 0V5h3V3Z',\n },\n child: [],\n },\n {\n tag: 'path',\n attr: {\n d: 'M8.438 15.791v-5.365h-.889v.859h-1.8c0-.643-.027-1.281.009-1.914a.841.841 0 0 1 .858-.762q2.725-.01 5.45 0a.841.841 0 0 1 .857.764c.036.634.009 1.271.009 1.919h-1.784v-.862h-.9v5.361Z',\n },\n child: [],\n },\n ],\n },\n ],\n })(props);\n};\n","import { GenIcon } from 'react-icons/lib';\n\nexport const ProductColor = (props) => {\n return GenIcon({\n tag: 'svg',\n attr: {\n xmlns: 'http://www.w3.org/2000/svg',\n width: '22.89',\n height: '24',\n viewBox: '0 0 22.89 24',\n },\n child: [\n {\n tag: 'defs',\n attr: {},\n child: [\n {\n tag: 'clipPath',\n attr: { id: 'a' },\n child: [\n {\n tag: 'path',\n attr: { d: 'M0 0h22.89v24H0z' },\n child: [],\n },\n ],\n },\n ],\n },\n {\n tag: 'g',\n attr: { 'clip-path': 'url(#a)' },\n child: [\n {\n tag: 'path',\n attr: {\n d: 'M8.012 5.076 4.663 1.753 6.55 0c1.111 1.168 2.3 2.454 3.526 3.7 2.646 2.684 5.318 5.342 7.969 8.02a3.693 3.693 0 0 1 .014 5.346q-2.907 2.949-5.856 5.857a3.608 3.608 0 0 1-5.014.051Q4.037 19.916.976 16.762a3.672 3.672 0 0 1 .2-5.185q3.09-3.021 6.208-6.012c.171-.166.377-.3.625-.489m-5.774 9.268H16.9l.143-.208L9.669 6.77c-2 1.567-7.19 6.816-7.435 7.573',\n },\n child: [],\n },\n {\n tag: 'path',\n attr: {\n d: 'M20.642 16.823c.711 1.4 1.485 2.775 2.109 4.214a2.16 2.16 0 0 1-.9 2.527 2.421 2.421 0 0 1-2.767 0 2.141 2.141 0 0 1-.885-2.523c.625-1.436 1.39-2.811 2.1-4.212h.347',\n },\n child: [],\n },\n ],\n },\n ],\n })(props);\n};\n","import { GenIcon } from 'react-icons/lib';\nexport const FlipH = (props) => {\n return GenIcon({\n tag: 'svg',\n attr: {\n width: '25.969',\n height: '22.478',\n viewBox: '0 0 25.969 22.478',\n ...props,\n },\n child: [\n {\n tag: 'defs',\n attr: {},\n child: [\n {\n tag: 'clipPath',\n attr: { id: 'a' },\n child: [\n {\n tag: 'path',\n attr: {\n 'data-name': 'Rectangle 336',\n fill: '#353535',\n d: 'M0 0h25.969v22.478H0z',\n },\n child: [],\n },\n ],\n },\n ],\n },\n {\n tag: 'g',\n attr: {\n 'data-name': 'Group 577',\n 'clip-path': 'url(#a)',\n fill: '#353535',\n },\n child: [\n {\n tag: 'path',\n attr: {\n 'data-name': 'Path 4546',\n d: 'm25.969 3.647-10.359 8.46 10.359 8.632Z',\n },\n child: [],\n },\n {\n tag: 'path',\n attr: {\n 'data-name': 'Path 4547',\n d: 'M0 3.469v17.276l10.366-8.466L0 3.469m1.719 3.593 5.914 5.218-5.914 4.87Z',\n },\n child: [],\n },\n {\n tag: 'path',\n attr: {\n 'data-name': 'Rectangle 329',\n d: 'M12.151 0h1.683v1.674h-1.683z',\n },\n child: [],\n },\n {\n tag: 'path',\n attr: {\n 'data-name': 'Rectangle 330',\n d: 'M12.154 3.462h1.677v1.686h-1.677z',\n },\n child: [],\n },\n {\n tag: 'path',\n attr: {\n 'data-name': 'Rectangle 331',\n d: 'M12.152 6.937h1.68v1.671h-1.68z',\n },\n child: [],\n },\n {\n tag: 'path',\n attr: {\n 'data-name': 'Rectangle 332',\n d: 'M12.144 10.406h1.679v1.669h-1.679z',\n },\n child: [],\n },\n {\n tag: 'path',\n attr: {\n 'data-name': 'Rectangle 333',\n d: 'M12.149 13.869h1.686v1.678h-1.686z',\n },\n child: [],\n },\n {\n tag: 'path',\n attr: {\n 'data-name': 'Rectangle 334',\n d: 'M12.143 17.334h1.686v1.683h-1.686z',\n },\n child: [],\n },\n {\n tag: 'path',\n attr: {\n 'data-name': 'Rectangle 335',\n d: 'M12.154 20.8h1.668v1.678h-1.668z',\n },\n child: [],\n },\n ],\n },\n ],\n })(props);\n};\n","import { GenIcon } from 'react-icons/lib';\n// https://www.svgviewer.dev/ use this website to compress and load the paths\n// source: https://raw.githubusercontent.com/alisamar/react-icons-all-files/master/ai/AiFillAccountBook.esm.js\nexport const FlipV = (props) => {\n return GenIcon({\n tag: 'svg',\n\n attr: {\n xmlns: 'http://www.w3.org/2000/svg',\n width: '22.48',\n height: '29.57.',\n viewBox: '9 9 22.48 25.97',\n },\n child: [\n {\n tag: 'defs',\n attr:{},\n child: [\n {\n tag: 'clipPath',\n attr: { id: 'a' },\n\n child: [\n {\n tag: 'path',\n attr: {\n 'data-name': 'Rectangle 336',\n fill: '#353535',\n d: 'M0 0h25.969v22.478H0z',\n },\n child: [],\n },\n ],\n },\n ],\n },\n {\n tag: 'g',\n attr: { 'data-name': 'Group 773' },\n child: [\n {\n tag: 'g',\n attr: {\n 'data-name': 'Rectangle 337',\n fill: '#fff',\n stroke: '#ebebeb',\n },\n child: [\n {\n tag: 'path',\n attr: { d: 'M0 0h45v45H0z', stroke: 'none' },\n child: [],\n },\n {\n tag: 'path',\n attr: { fill: 'none', d: 'M.5.5h44v44H.5z' },\n child: [],\n },\n ],\n },\n {\n tag: 'g',\n attr: { 'data-name': 'Group 631' },\n child: [\n {\n tag: 'g',\n attr: {\n 'data-name': 'Group 577',\n 'clip-path': 'url(#a)',\n fill: '#353535',\n transform: 'rotate(90 12.239 21.239)',\n },\n child: [\n {\n tag: 'path',\n attr: {\n 'data-name': 'Path 4546',\n d: 'm0 3.647 10.359 8.46L0 20.74',\n },\n child: [],\n },\n {\n tag: 'path',\n attr: {\n 'data-name': 'Path 4547',\n d: 'M25.969 3.469v17.276L15.603 12.28l10.366-8.811M24.25 7.062l-5.914 5.218 5.914 4.87',\n },\n child: [],\n },\n {\n tag: 'path',\n attr: {\n 'data-name': 'Rectangle 329',\n d: 'M12.135 0h1.683v1.674h-1.683z',\n },\n child: [],\n },\n {\n tag: 'path',\n attr: {\n 'data-name': 'Rectangle 330',\n d: 'M12.138 3.462h1.677v1.686h-1.677z',\n },\n child: [],\n },\n {\n tag: 'path',\n attr: {\n 'data-name': 'Rectangle 331',\n d: 'M12.136 6.937h1.68v1.671h-1.68z',\n },\n child: [],\n },\n {\n tag: 'path',\n attr: {\n 'data-name': 'Rectangle 332',\n d: 'M12.146 10.406h1.679v1.669h-1.679z',\n },\n child: [],\n },\n {\n tag: 'path',\n attr: {\n 'data-name': 'Rectangle 333',\n d: 'M12.134 13.869h1.686v1.678h-1.686z',\n },\n child: [],\n },\n {\n tag: 'path',\n attr: {\n 'data-name': 'Rectangle 334',\n d: 'M12.14 17.334h1.686v1.683H12.14z',\n },\n child: [],\n },\n {\n tag: 'path',\n attr: {\n 'data-name': 'Rectangle 335',\n d: 'M12.147 20.8h1.668v1.678h-1.668z',\n },\n child: [],\n },\n ],\n },\n ],\n },\n ],\n },\n ],\n })(props);\n};\n","import { GenIcon } from 'react-icons/lib';\nexport const SelectAll = (props) => {\n return GenIcon({\n tag: 'svg',\n\n attr: {\n xmlns: 'http://www.w3.org/2000/svg',\n width: '18.641',\n height: '18.063',\n viewBox: '0 0 18.641 18.063',\n className: 'group',\n ...props,\n },\n child: [\n {\n tag: 'g',\n attr: { 'data-name': 'Group 1075' },\n child: [\n {\n tag: 'g',\n attr: {\n fill: 'none',\n stroke: '#5d5d5d',\n strokeWidth: '1',\n },\n child: [\n {\n tag: 'rect',\n attr: { width: '16', height: '16', rx: '4', stroke: 'none' },\n child: [],\n },\n {\n tag: 'rect',\n attr: {\n x: '.75',\n y: '.75',\n width: '14.5',\n height: '14.5',\n rx: '3.25',\n },\n child: [],\n },\n ],\n },\n {\n tag: 'path',\n attr: {\n d: 'm7.049 8.602.146-.137 3.2-3.2a.766.766 0 0 1 .5-.267.652.652 0 0 1 .539 1.082c-.03.035-.064.066-.1.1l-3.836 3.829a.664.664 0 0 1-1.1-.068c-.415-.549-.826-1.1-1.24-1.649a.657.657 0 0 1-.083-.755.65.65 0 0 1 1.085-.093c.253.311.486.638.728.959l.151.2',\n className: 'group-hover:fill-[#E11A38]',\n },\n child: [],\n },\n {\n tag: 'path',\n attr: {\n d: 'M5.892 18.063c-.1-.023-.2-.043-.3-.07a1.976 1.976 0 0 1-1.385-1.249h10.599a2.39 2.39 0 0 0 2.327-1.536 2.873 2.873 0 0 0 .177-.988c.013-2.859.008-5.717.008-8.576V3.671a1.652 1.652 0 0 1 .708.43 1.927 1.927 0 0 1 .58 1.124.871.871 0 0 0 .033.114v9.182a1.686 1.686 0 0 0-.031.167 3.713 3.713 0 0 1-2.515 3.16 10.1 10.1 0 0 1-1 .214Z',\n className: 'group-hover:fill-[#E11A38]',\n },\n child: [],\n },\n ],\n },\n ],\n })(props);\n};","import { GenIcon } from 'react-icons/lib';\n\nexport const Copy = (props) => {\n return GenIcon({\n tag: 'svg',\n attr: {\n xmlns: 'http://www.w3.org/2000/svg',\n width: '18',\n height: '18',\n viewBox: '0 0 18 18',\n ...props,\n },\n child: [\n {\n tag: 'path',\n attr: {\n d: 'M13.98 4.1A.938.938 0 0 0 14 4a4 4 0 0 0-4-4H5a5.006 5.006 0 0 0-5 5v5a4 4 0 0 0 4 4 .93.93 0 0 0 .1-.02A5.007 5.007 0 0 0 9 18h4a5.006 5.006 0 0 0 5-5V9a5.007 5.007 0 0 0-4.02-4.9ZM4 9v3a2 2 0 0 1-2-2V5a3 3 0 0 1 3-3h5a2 2 0 0 1 2 2H9a5.006 5.006 0 0 0-5 5Zm12 4a3 3 0 0 1-3 3H9a3 3 0 0 1-3-3V9a3 3 0 0 1 3-3h4a3 3 0 0 1 3 3Z',\n },\n child: [],\n },\n ],\n })(props);\n};\n","import { GenIcon } from 'react-icons/lib';\n\nexport const Paste = (props) => {\n return GenIcon({\n tag: 'svg',\n attr: {\n xmlns: 'http://www.w3.org/2000/svg',\n width: '23.063',\n height: '23.063',\n viewBox: '0 0 23.063 23.063',\n ...props,\n },\n child: [\n {\n tag: 'g',\n attr: { 'data-name': 'Group 1076' },\n child: [\n {\n tag: 'path',\n attr: {\n d: 'M1197.621 519.516a1.2 1.2 0 0 0 .026-.127 5.13 5.13 0 0 0-5.125-5.125h-6.407a6.414 6.414 0 0 0-6.406 6.406v6.406a5.13 5.13 0 0 0 5.125 5.125 1.192 1.192 0 0 0 .127-.026 6.415 6.415 0 0 0 6.279 5.151h5.125a6.414 6.414 0 0 0 6.406-6.406v-5.125a6.415 6.415 0 0 0-5.151-6.279Zm-12.787 6.279v3.844a2.565 2.565 0 0 1-2.562-2.562v-6.407a3.848 3.848 0 0 1 3.843-3.843h6.406a2.565 2.565 0 0 1 2.563 2.563h-3.844a6.414 6.414 0 0 0-6.406 6.406Zm15.375 5.125a3.848 3.848 0 0 1-3.844 3.844h-5.125a3.848 3.848 0 0 1-3.844-3.844v-5.125a3.848 3.848 0 0 1 3.844-3.844h5.125a3.848 3.848 0 0 1 3.844 3.844Z',\n transform: 'translate(-1179.709 -514.264)',\n },\n child: [],\n },\n {\n tag: 'path',\n attr: {\n 'data-name': 'Line 590',\n fill: 'none',\n 'stroke-linecap': 'round',\n 'stroke-width': '1.5',\n d: 'M1189.779 526.5h6',\n transform: 'translate(-1179.709 -514.264)',\n },\n child: [],\n },\n {\n tag: 'path',\n attr: {\n 'data-name': 'Line 591',\n fill: 'none',\n 'stroke-linecap': 'round',\n 'stroke-width': '1.5',\n d: 'M1189.779 530.5h8',\n transform: 'translate(-1179.709 -514.264)',\n },\n child: [],\n },\n ],\n },\n ],\n })(props);\n};\n","import { GenIcon } from 'react-icons/lib';\n\nexport const SendToBack = (props) => {\n return GenIcon({\n tag: 'svg',\n attr: {\n xmlns: 'http://www.w3.org/2000/svg',\n width: '26.551',\n height: '23.495',\n viewBox: '0 0 26.551 23.495',\n ...props,\n },\n child: [\n {\n tag: 'g',\n attr: { },\n child: [\n {\n tag: 'path',\n attr: {\n d: 'M17861.625-13909.535h14.069v14.069h-14.069Z',\n transform: 'translate(-17856.939 13913.36)',\n },\n child: [],\n },\n {\n tag: 'path',\n attr: {\n 'data-name': 'Rectangle 387',\n fill: 'none',\n 'stroke-miterlimit': '10',\n 'stroke-width': '2',\n d: 'M17857.939-13912.36h10.72v7.664h-10.72z',\n transform: 'translate(-17856.939 13913.36)',\n },\n child: [],\n },\n {\n tag: 'path',\n attr: {\n 'data-name': 'Rectangle 388',\n fill: 'none',\n 'stroke-miterlimit': '10',\n 'stroke-width': '2',\n d: 'M17871.771-13898.529h10.72v7.664h-10.72z',\n transform: 'translate(-17856.939 13913.36)',\n },\n child: [],\n },\n ],\n },\n ],\n })(props);\n};\n","import { GenIcon } from 'react-icons/lib';\n\nexport const SendToFront = (props) => {\n return GenIcon({\n tag: 'svg',\n attr: {\n xmlns: 'http://www.w3.org/2000/svg',\n width: '26.551',\n height: '23.495',\n viewBox: '0 0 26.551 23.495',\n ...props,\n },\n child: [\n {\n tag: 'g',\n attr: { },\n child: [\n {\n tag: 'g',\n attr: { },\n child: [\n {\n tag: 'g',\n attr: { },\n child: [\n {\n tag: 'g',\n attr: {\n fill: 'none',\n 'stroke-miterlimit': '10',\n 'stroke-width': '2',\n },\n child: [\n {\n tag: 'path',\n attr: {\n d: 'M1.001.999h10.72v7.664H1.001z',\n },\n child: [],\n },\n {\n tag: 'path',\n attr: {\n d: 'M14.833 14.831h10.72v7.664h-10.72z',\n },\n child: [],\n },\n ],\n },\n ],\n },\n {\n tag: 'path',\n attr: {\n d: 'M4.686 4.496h14.069v14.069H4.686z',\n },\n child: [],\n },\n ],\n },\n ],\n },\n ],\n })(props);\n};\n","import { GenIcon } from 'react-icons/lib';\nexport const SendAObject = (props) => {\n return GenIcon({\n tag: 'svg',\n attr: {\n xmlns: 'http://www.w3.org/2000/svg',\n width: '23.098',\n height: '22.48',\n viewBox: '0 0 23.098 22.48',\n ...props,\n },\n child: [\n {\n tag: 'g',\n attr: {},\n child: [\n {\n tag: 'g',\n attr: { 'data-name': 'Group 642' },\n child: [\n {\n tag: 'g',\n attr: { 'data-name': 'Group 643' },\n child: [\n {\n tag: 'path',\n attr: {\n 'data-name': 'Rectangle 383',\n fill: 'none',\n 'stroke-miterlimit': '10',\n 'stroke-width': '2',\n d: 'M1 1h16v16H1z',\n },\n child: [],\n },\n ],\n },\n ],\n },\n {\n tag: 'path',\n attr: {\n 'data-name': 'Rectangle 385',\n d: 'M7.097 6.481h16v16h-16z',\n },\n child: [],\n },\n ],\n },\n ],\n })(props);\n};\n","import { GenIcon } from 'react-icons/lib';\nexport const SendUnderObject = (props) => {\n return GenIcon({\n tag: 'svg',\n attr: {\n xmlns: 'http://www.w3.org/2000/svg',\n width: '23.098',\n height: '22.48',\n viewBox: '0 0 23.098 22.48',\n ...props,\n },\n child: [\n {\n tag: 'g',\n attr: {},\n child: [\n {\n tag: 'path',\n attr: {\n d: 'M7.097 6.481h16v16h-16',\n },\n child: [],\n },\n {\n tag: 'g',\n attr: {},\n child: [\n {\n tag: 'g',\n attr: {},\n child: [\n {\n tag: 'path',\n attr: {\n fill: 'none',\n 'stroke-miterlimit': '10',\n 'stroke-width': '2',\n d: 'M1 1h16v16H1z',\n },\n child: [],\n },\n ],\n },\n ],\n },\n ],\n },\n ],\n })(props);\n};\n","import { GenIcon } from 'react-icons/lib';\n\nexport const EyeDropper = (props) => {\n return GenIcon({\n tag: 'svg',\n attr: {\n xmlns: 'http://www.w3.org/2000/svg',\n width: '21.595',\n height: '21.61',\n viewBox: '0 0 21.595 21.61',\n },\n child: [\n {\n tag: 'defs',\n attr: {},\n child: [\n {\n tag: 'clipPath',\n attr: { id: 'a' },\n child: [\n {\n tag: 'path',\n attr: { d: 'M0 0h21.595v21.61H0z' },\n child: [],\n },\n ],\n },\n ],\n },\n {\n tag: 'g',\n attr: { 'clip-path': 'url(#a)' },\n child: [\n {\n tag: 'path',\n attr: {\n d: 'M1.228 21.609a2.184 2.184 0 0 1-1.019-.812.946.946 0 0 1-.009-1.18q.455-.7.922-1.386a3.7 3.7 0 0 0 .667-1.553 5.591 5.591 0 0 0 .054-.608 2.553 2.553 0 0 1 .814-1.771q3.351-3.342 6.7-6.692a2.115 2.115 0 0 1 .222-.168c-.232-.224-.428-.405-.615-.6a.509.509 0 0 1-.008-.81q.925-.938 1.862-1.865a.507.507 0 0 1 .812 0q2.91 2.9 5.813 5.814a.509.509 0 0 1 0 .812q-.926.937-1.864 1.863a.508.508 0 0 1-.81 0c-.2-.192-.381-.393-.58-.6-.06.05-.1.082-.141.119-2.268 2.244-4.543 4.48-6.8 6.737a2.813 2.813 0 0 1-2.027.876 2.969 2.969 0 0 0-1.611.549c-.5.331-.99.667-1.492.99a5.8 5.8 0 0 1-.556.281Zm2.234-3.431a5.564 5.564 0 0 1 1.852-.385.8.8 0 0 0 .473-.228q3.425-3.372 6.836-6.758a.764.764 0 0 1 .128-.091l-1.869-1.881a1.682 1.682 0 0 1-.132.166q-3.233 3.237-6.473 6.466a1.283 1.283 0 0 0-.483 1.1.6.6 0 0 1-.021.188c-.1.47-.206.94-.312 1.422',\n },\n child: [],\n },\n {\n tag: 'path',\n attr: {\n d: 'M21.595 4.022c-.052.217-.1.436-.157.649a3.645 3.645 0 0 1-.967 1.581q-1.1 1.094-2.191 2.19a.537.537 0 0 1-.9 0l-4.217-4.218a.531.531 0 0 1 0-.885c.806-.8 1.585-1.636 2.429-2.4a3.378 3.378 0 0 1 3.571-.712 3.5 3.5 0 0 1 2.388 2.854c.011.061.029.121.044.181Z',\n },\n child: [],\n },\n ],\n },\n ],\n })(props);\n};\n","import { GenIcon } from 'react-icons/lib';\nexport const Delete = (props) => {\n return GenIcon({\n tag: 'svg',\n attr: {\n id: 'ICONS',\n xmlns: 'http://www.w3.org/2000/svg',\n width: '18',\n height: '18',\n viewBox: '0 0 18 18',\n ...props,\n },\n child: [\n {\n tag: 'path',\n attr: {\n id: 'Path_3953',\n 'data-name': 'Path 3953',\n d: 'M7,8A1,1,0,0,0,6,9v4a1,1,0,0,0,2,0V9A1,1,0,0,0,7,8Z',\n },\n child: [],\n },\n {\n tag: 'path',\n attr: {\n id: 'Path_3954',\n 'data-name': 'Path 3954',\n d: 'M11,8a1,1,0,0,0-1,1v4a1,1,0,0,0,2,0V9a1,1,0,0,0-1-1Z',\n },\n child: [],\n },\n {\n tag: 'path',\n attr: {\n id: 'Path_3955',\n 'data-name': 'Path 3955',\n d: 'M17,4H13A4,4,0,1,0,5,4H1A1,1,0,0,0,1,6H2v9a3,3,0,0,0,3,3h8a3,3,0,0,0,3-3V6h1a1,1,0,0,0,0-2ZM9,2a2,2,0,0,1,2,2H7A2,2,0,0,1,9,2Zm5,13a1,1,0,0,1-1,1H5a1,1,0,0,1-1-1V6H14Z',\n },\n child: [],\n },\n ],\n })(props);\n};\n","import React from 'react';\nimport { use3dddPlus } from '../../store';\nimport { CANVAS_MENU_TEXT } from '../../theme';\nimport { Copy, Delete, IconButton, SelectAll } from '../icon';\nimport { MdLayers } from 'react-icons/md';\nimport { shallow } from 'zustand/shallow';\nimport { fabric } from 'fabric';\nimport { CgRedo, CgUndo } from 'react-icons/cg';\nconst ActionButtons = () => {\n const [canvas, activeSelection] = use3dddPlus(\n (state) => [state.fabricCanvas, state.activeSelection],\n shallow\n );\n const selectAllHandler = () => {\n canvas.discardActiveObject();\n const sel = new fabric.ActiveSelection(canvas.getObjects(), {\n canvas: canvas,\n });\n canvas.setActiveObject(sel);\n canvas.requestRenderAll();\n use3dddPlus.getState().updateModifaction(true);\n use3dddPlus.setState({ selectedAll: true });\n use3dddPlus.setState({ currentSelection: 'selectAll' });\n const fillColors = {};\n use3dddPlus.setState({ colorFill: fillColors });\n };\n const deleteHandler = () => {\n canvas.remove(activeSelection);\n use3dddPlus.getState().updateModifaction(true);\n canvas.requestRenderAll();\n use3dddPlus.setState({ selectedAll: false });\n removeItem(activeSelection);\n };\n const removeItem = (value: any) => {\n //@ts-ignore\n var index = use3dddPlus.getState().storeAllObject.indexOf(value);\n if (index > -1) {\n use3dddPlus.getState().storeAllObject.splice(index, 1);\n }\n use3dddPlus.setState({\n storeAllObject: [...use3dddPlus.getState().storeAllObject],\n });\n };\n const canvasActions = [\n {\n icon: <SelectAll />,\n onClick: selectAllHandler,\n id: 'select-action',\n label: 'Select all',\n disabled: false,\n visible: true,\n },\n {\n icon: <Copy />,\n onClick: () => {\n use3dddPlus.getState().duplicateObject();\n },\n id: 'duplicate-action',\n label: 'Duplicate',\n disabled: false,\n visible: true,\n },\n {\n icon: <MdLayers />,\n onClick: () => {\n use3dddPlus.setState({ currentSelection: 'layer' });\n },\n id: 'layes-action',\n label: 'Layers',\n disabled: false,\n visible: true,\n },\n {\n icon: <Delete />,\n onClick: deleteHandler,\n id: 'delete-action',\n label: 'Delete',\n disabled: false,\n visible: true,\n },\n {\n icon: <CgUndo />,\n onClick: () => {\n use3dddPlus.getState().undo();\n },\n id: 'undo-action',\n label: 'Undo',\n disabled: false,\n visible: true,\n },\n {\n icon: <CgRedo />,\n onClick: () => {\n use3dddPlus.getState().redo();\n },\n id: 'redo-action',\n label: 'Redo',\n disabled: false,\n visible: true,\n },\n ];\n\n return (\n <>\n <div className=\"w-100 flex absolute top-0 right-0 px-3 items-center z-10\">\n <div className={`flex py-[16px]`}>\n {canvasActions.map(\n (item) =>\n item?.visible && (\n <div\n key={item.id}\n className={`${\n item.disabled\n ? 'disableButton'\n : `${CANVAS_MENU_TEXT} cursor-pointer hover:text-[#e11a38] hover:underline hover:underline-offset-4 hover:decoration-2`\n } flex gap-[5px] items-center pt-[2.5px] font-bold uppercase mr-[10px] lg:mr-[30px] md-[20px] `}\n onClick={item.onClick}\n >\n <span>\n <IconButton\n label=\"\"\n icon={item.icon}\n className={`${\n item.disabled\n ? 'iconDisable'\n : 'pointer-events-auto cursor-pointer'\n } m-auto`}\n size=\"1.125rem\"\n ></IconButton>\n </span>\n </div>\n )\n )}\n </div>\n </div>\n </>\n );\n};\n\nexport default ActionButtons;\n","import React from 'react';\nimport { use3dddPlus } from '../../store';\nimport { shallow } from 'zustand/shallow';\nimport {\n Copy,\n IconButton,\n Paste,\n SendAObject,\n SendToBack,\n SendToFront,\n SendUnderObject,\n} from '../icon';\n\n\nexport const ContextMenu = () => {\n const [activeObj, canvas] = use3dddPlus(\n (state) => [state.activeSelection, state.fabricCanvas],\n shallow\n );\n\n // const flipX = () => {\n // activeObj.set({\n // flipX: !activeObj.flipX,\n // });\n // use3dddPlus.getState().updateModifaction(true);\n // canvas.renderAll();\n // use3dddPlus.setState({\n // showContextMenu: false,\n // });\n // };\n // const flipY = () => {\n // activeObj.set({\n // flipY: !activeObj.flipY,\n // });\n // use3dddPlus.getState().updateModifaction(true);\n // // activeObj.\n // canvas.renderAll();\n // use3dddPlus.setState({\n // showContextMenu: false,\n // });\n // };\n const sendBackwards = () => {\n canvas.sendBackwards(activeObj);\n use3dddPlus.getState().updateModifaction(true);\n use3dddPlus.setState({\n showContextMenu: false,\n });\n };\n const bringForward = () => {\n canvas.bringForward(activeObj);\n use3dddPlus.getState().updateModifaction(true);\n use3dddPlus.setState({\n showContextMenu: false,\n });\n };\n const sendToBack = () => {\n console.log('hiii');\n canvas.sendToBack(activeObj);\n use3dddPlus.getState().updateModifaction(true);\n use3dddPlus.setState({\n showContextMenu: false,\n });\n };\n const bringToFront = () => {\n canvas.bringToFront(activeObj);\n use3dddPlus.getState().updateModifaction(true);\n use3dddPlus.setState({\n showContextMenu: false,\n });\n };\n // const snapToCenter = () => {\n // activeObj.set({\n // left: canvas.width / 2,\n // originX: 'center',\n // });\n // use3dddPlus.getState().updateModifaction(true);\n // canvas.renderAll();\n // use3dddPlus.setState({\n // showContextMenu: false,\n // });\n // };\n const copy = () => {\n use3dddPlus.getState().duplicateObject();\n use3dddPlus.setState({\n showContextMenu: false,\n });\n };\n const menu = [\n {\n id: 1,\n name: 'Copy',\n onclick: copy,\n icon: <Copy />,\n },\n {\n id: 2,\n name: 'Paste',\n onclick: copy,\n icon: <Paste />,\n },\n {\n id: 3,\n name: 'Bring to front',\n onclick: bringForward,\n icon: <SendToFront />,\n },\n {\n id: 4,\n name: 'Send to back',\n onclick: sendBackwards,\n icon: <SendToBack />,\n },\n {\n id: 5,\n name: 'Bring above objects',\n onclick: bringToFront,\n icon: <SendAObject />,\n },\n {\n id: 6,\n name: 'Send under objects',\n onclick: sendToBack,\n icon: <SendUnderObject />,\n },\n // {\n // id: 7,\n // name: 'Flip Horizontal - Left/right horizontal',\n // onclick: flipX,\n // icon: <FlipH />,\n // },\n // {\n // id: 8,\n // name: 'Flip Vertical- Left/right vertical',\n // onclick: flipY,\n // icon: <FlipV />,\n // },\n // {\n // id: 9,\n // name: 'Snap to center',\n // onclick: snapToCenter,\n // icon: '',\n // },\n ];\n return (\n <ul>\n {menu.map((item, index) => {\n return (\n <li\n className=\"flex cursor-pointer hover:text-[#e11a38] border border-b-[1px] border-[#EBEBEB] px-[30px] py-[14px] \"\n onClick={item.onclick}\n key={index}\n >\n <span>\n <IconButton\n label=\"\"\n icon={item.icon}\n className=\"pointer-events-auto cursor-pointer m-auto\"\n size=\"1.125rem\"\n ></IconButton>\n </span>\n <span className=\" pl-[20px] text-sm font-bold uppercase\">\n {item.name}\n </span>\n </li>\n );\n })}\n </ul>\n );\n};\n","import React, { useRef } from 'react';\nimport './canvas.css';\nimport { use3dddPlus } from '../../store';\nimport ActionButtons from './canvasButtons'; //Importing Action button component which is displaying buttons\nimport { initCanvas } from '../../store/fabric/fabricCanvas';\nimport { shallow } from 'zustand/shallow';\nimport { ContextMenu } from '../contextMenu';\n\nconst canvas = () => {\n const [contextMenuCoordinates, showContextMenu] = use3dddPlus(\n (state) => [state.contextMenuCoordinates, state.showContextMenu],\n shallow\n );\n const canvasRef = useRef<HTMLCanvasElement | null>(null);\n const resizeCanvas = () => {\n const canvas = use3dddPlus.getState().fabricCanvas;\n const outerCanvasContainer =\n document.getElementById('fabCanvas').parentElement;\n const containerWidth = outerCanvasContainer.clientWidth;\n const scale = containerWidth / canvas.getWidth();\n const zoom = canvas.getZoom() * scale;\n canvas.setWidth(containerWidth);\n //@ts-ignore\n canvas.setHeight(parseInt(outerCanvasContainer.clientHeight));\n console.log('--->', canvas.getHeight(), canvas.getHeight());\n canvas.setViewportTransform([zoom, 0, 0, zoom, 0, 0]);\n canvas.renderAll();\n };\n React.useEffect(() => {\n const canv = initCanvas();\n use3dddPlus.setState({ fabricCanvas: canv });\n resizeCanvas();\n window.addEventListener('resize', resizeCanvas);\n }, []);\n\n return (\n <div className=\" w-full h-full relative\">\n <ActionButtons />\n <div id=\"fabCanvas\">\n <canvas ref={canvasRef} id=\"canvas\"></canvas>\n {showContextMenu && (\n <div\n style={{\n position: 'absolute',\n zIndex: 1000,\n left: contextMenuCoordinates.x,\n top: contextMenuCoordinates.y,\n backgroundColor: 'white',\n border: '1px solid #ccc',\n boxShadow: '2px 2px 5px rgba(0,0,0,0.5)',\n }}\n onBlur={() => {\n use3dddPlus.setState({ showContextMenu: false });\n }}\n >\n <ContextMenu />\n </div>\n )}\n </div>\n </div>\n );\n};\n\nexport default canvas;\n","import { fabric } from 'fabric';\n//@ts-ignore\n// import deleteIcon from '../../assets/images/delete.png';\n// //@ts-ignore\n// import rotateIcon from '../../assets/images/rotate.png';\n// //@ts-ignore\n// import settingIcon from '../../assets/images/settings.png';\nimport { use3dddPlus } from '..';\n\nexport const initCanvas = () => {\n const onObjectSelected = (e) => {\n if (e?.selected?.[0]?.colorFill) {\n use3dddPlus.setState({ colorFill: e.selected[0].colorFill });\n }\n use3dddPlus.setState({\n currentSelection: canv.getActiveObject().get('type'),\n });\n use3dddPlus.setState({ activeSelection: canv.getActiveObject() });\n getAllColors();\n };\n const onObjectDeselected = () => {\n use3dddPlus.setState({ currentSelection: 'none' });\n use3dddPlus.setState({ showContextMenu: false });\n getAllColors();\n };\n const onObjectUpdated = (e) => {\n // use3dddPlus.setState({colorFill : \"\"})\n if (e?.selected?.[0]?.colorFill) {\n use3dddPlus.setState({ colorFill: e.selected[0].colorFill });\n }\n use3dddPlus.setState({\n currentSelection: canv.getActiveObject().get('type'),\n });\n use3dddPlus.setState({ activeSelection: e.selected[0] });\n use3dddPlus.setState({ textInfo: e.selected[0].text });\n use3dddPlus.setState({ showContextMenu: false });\n getAllColors();\n };\n const onObjectMoving = (e : any) => {\n use3dddPlus.getState().updateModifaction(false); \n const obj = e.target;\n if(obj.getBoundingRect().width > obj.canvas.height || obj.getBoundingRect().height > obj.canvas.width){\n return;\n } \n obj.setCoords(); \n if(obj.getBoundingRect().top < 0 || obj.getBoundingRect().left < 0){\n obj.top = Math.max(obj.top, obj.top-obj.getBoundingRect().top);\n obj.left = Math.max(obj.left, obj.left-obj.getBoundingRect().left);\n }\n if(obj.getBoundingRect().top+obj.getBoundingRect().height > obj.canvas.height || obj.getBoundingRect().left+obj.getBoundingRect().width > obj.canvas.width){\n obj.top = Math.min(obj.top, obj.canvas.height-obj.getBoundingRect().height+obj.top-obj.getBoundingRect().top);\n obj.left = Math.min(obj.left, obj.canvas.width-obj.getBoundingRect().width+obj.left-obj.getBoundingRect().left);\n }\n }\n \n const canv = new fabric.Canvas('canvas', {\n centeredScaling: true,\n preserveObjectStacking: true,\n backgroundColor: '#ffff00',\n stopContextMenu: false,\n });\n // console.log('HISTORY-->',historyInit());\n let deleteImg = document.createElement('img');\n deleteImg.src =\n 'https://storage.googleapis.com/3ddplusgcp/logoEditor/assets/icons/delete.png';\n let rotateImg = document.createElement('img');\n rotateImg.src =\n 'https://storage.googleapis.com/3ddplusgcp/logoEditor/assets/icons/rotate.png';\n let settingImg = document.createElement('img');\n settingImg.src =\n 'https://storage.googleapis.com/3ddplusgcp/logoEditor/assets/icons/settings.png';\n fabric.Object.prototype.objectCaching = true;\n fabric.Object.prototype.transparentCorners = false;\n fabric.Object.prototype.cornerColor = '#14caf7';\n fabric.Object.prototype.cornerStrokeColor = '#045791';\n fabric.Object.prototype.borderColor = '#14caf7';\n fabric.Object.prototype.cornerSize = 16;\n // fabric.Object.prototype.padding = 10;\n fabric.Object.prototype.cornerStyle = 'circle';\n fabric.Object.prototype.borderDashArray = [5, 5];\n\n function renderIcon(icon) {\n return function renderIcon(ctx, left, top, fabricObject) {\n var size = this.cornerSize;\n ctx.save();\n ctx.translate(left, top);\n ctx.rotate(fabric.util.degreesToRadians(fabricObject.angle));\n ctx.drawImage(icon, -size / 2, -size / 2, size, size);\n ctx.restore();\n };\n }\n\n fabric.Object.prototype.controls.deleteControl = new fabric.Control({\n x: 0.53,\n y: -0.53,\n offsetY: -16,\n offsetX: 16,\n cursorStyle: 'pointer',\n //@ts-ignore\n mouseUpHandler: deleteObject,\n render: renderIcon(deleteImg),\n cornerSize: 28,\n });\n fabric.Object.prototype.controls.settingControl = new fabric.Control({\n x: -0.53,\n y: -0.53,\n offsetY: -16,\n offsetX: -16,\n cursorStyle: 'pointer',\n //@ts-ignore\n mouseUpHandler: function (e) {\n use3dddPlus.setState({\n showContextMenu: true,\n });\n\n const rect = canv.getElement().getBoundingClientRect();\n const x = e.clientX - rect.left;\n const y = e.clientY - rect.top;\n // You can add your context menu rendering logic here\n // Example: Render a simple alert with the coordinates\n use3dddPlus.setState({ contextMenuCoordinates: { x: x, y: y } });\n // alert(`Context menu clicked at (${x}, ${y})`);\n },\n render: renderIcon(settingImg),\n cornerSize: 28,\n });\n //@ts-ignore\n function deleteObject(eventData, transform) {\n const canvasTarget = transform.target;\n const canvas = canvasTarget.canvas;\n if (use3dddPlus.getState().selectedAll) {\n const target = transform.target._objects;\n target.forEach((element) => {\n canvas.remove(element);\n canvas.requestRenderAll();\n removeItem(element);\n });\n use3dddPlus.setState({ selectedAll: false });\n canvas.discardActiveObject().renderAll();\n } else {\n canvas.remove(canvasTarget);\n canvas.requestRenderAll();\n removeItem(canvasTarget);\n }\n }\n const removeItem = (value: any) => {\n //@ts-ignore\n var index = use3dddPlus.getState().storeAllObject.indexOf(value);\n if (index > -1) {\n use3dddPlus.getState().storeAllObject.splice(index, 1);\n }\n use3dddPlus.setState({\n storeAllObject: [...use3dddPlus.getState().storeAllObject],\n });\n };\n\n fabric.Object.prototype.controls.mtr = new fabric.Control({\n x: 0,\n y: -0.5,\n offsetY: -40,\n cursorStyle: 'crosshair',\n //@ts-ignore\n actionHandler: fabric?.controlsUtils.rotationWithSnapping,\n actionName: 'rotate',\n // mouseover:function hover(eventData,transform){\n // let target = transform.target;\n // console.log('TARGET-->',target);\n // },\n render: function renderIcon(ctx, left, top, fabricObject) {\n var size = this.cornerSize;\n ctx.save();\n ctx.translate(left, top);\n ctx.rotate(fabric.util.degreesToRadians(fabricObject.angle));\n ctx.drawImage(rotateImg, -size / 2, -size / 2, size, size);\n ctx.restore();\n },\n //@ts-ignore\n cornerSize: 28,\n withConnection: true,\n });\n const getAllColors = () => {\n if (!canv?.getObjects()) {\n return;\n }\n const allColor = [\n //@ts-ignore\n ...new Set(\n canv\n ?.getObjects()\n ?.map((item) => Object.values(item['colorFill']))\n .flat()\n ),\n ]; // FOR REMOVING ALL DUPLICATE COLOR CODES\n // const allColor =[];\n use3dddPlus.setState({ allColor: allColor });\n };\n canv.on('after:render', getAllColors);\n canv.on('selection:created', onObjectSelected);\n canv.on('selection:cleared', onObjectDeselected);\n canv.on('selection:updated', onObjectUpdated);\n canv.on('object:moving', onObjectMoving);\n canv.on('object:modified',function(){\n use3dddPlus.getState().updateModifaction(true);\n })\n return canv;\n};\n","import React from 'react';\n\nexport interface CardProps {\n cardClass?: string;\n children?: React.ReactNode;\n onClick?: (e: React.MouseEvent<HTMLDivElement, MouseEvent>) => void;\n style?: React.CSSProperties;\n key?:string\n \n}\n\nexport const Card = ({ cardClass,children, onClick,style,key }: CardProps) => {\n return (\n <>\n <div\n className={`card bg-base-100 relative ${cardClass}`}\n onClick={onClick}\n style={style}\n key={ key}\n >\n {children}\n </div>\n </>\n );\n};","import React from 'react';\n\nexport interface CardBodyProps {\n bodyClass?: string;\n children?: React.ReactNode;\n}\nexport const CardBody = ({ bodyClass, children }: CardBodyProps) => {\n return (\n <>\n <div className={`card-body items-center text-center ${bodyClass}`}>\n {children}\n </div>\n </>\n );\n};\n","import React from 'react';\nimport './card.css';\n\nexport interface CardMediaProps {\n alt?: string;\n imageClass?: string;\n src?: string;\n}\nexport const CardMedia = ({ alt, imageClass, src }: CardMediaProps) => {\n return (\n <>\n <div\n role=\"img\"\n aria-label={alt}\n className={`cardImage ${imageClass}`}\n style={{ backgroundImage: `url('${src}')` }}\n ></div>\n </>\n );\n};","import React from 'react';\nexport interface CardTitleProps {\n name?: string;\n titleClass?: string;\n}\nexport const CardTitle = ({ name, titleClass }: CardTitleProps) => {\n return (\n <>\n <p className={`card-title ${titleClass}`}>{name}</p>\n </>\n );\n};\n","import React, { useRef, useState } from 'react';\nimport { MdOutlineFileUpload } from 'react-icons/md';\nimport { IconButton } from '../icon';\ninterface FileUploadButtonProps {\n onFileSelect: (file: File) => void;\n}\n\nconst FileUploadButton: React.FC<FileUploadButtonProps> = ({\n onFileSelect,\n}) => {\n const fileInputRef = useRef<HTMLInputElement>(null);\n const [isDragging, setIsDragging] = useState(false);\n\n const handleFileSelect = (event: React.ChangeEvent<HTMLInputElement>) => {\n const selectedFile = event.target.files?.[0];\n\n if (selectedFile) {\n onFileSelect(selectedFile);\n }\n };\n\n const handleDragEnter = (event: React.DragEvent<HTMLDivElement>) => {\n event.preventDefault();\n setIsDragging(true);\n };\n\n const handleDragLeave = (event: React.DragEvent<HTMLDivElement>) => {\n event.preventDefault();\n setIsDragging(false);\n };\n\n const handleDrop = (event: React.DragEvent<HTMLDivElement>) => {\n event.preventDefault();\n setIsDragging(false);\n\n const droppedFile = event.dataTransfer.files[0];\n if (droppedFile) {\n onFileSelect(droppedFile);\n }\n };\n\n return (\n <>\n <div\n className={`flex items-center justify-center w-full relative h-full ${\n isDragging ? 'dragging' : ''\n }`}\n onDragEnter={handleDragEnter}\n onDragLeave={handleDragLeave}\n onDragOver={(event) => event.preventDefault()}\n onDrop={handleDrop}\n >\n <label\n htmlFor=\"file-upload\"\n className=\"flex flex-col items-center justify-center gap-y-[12px] text-center absolute -translate-x-2/4 md:-translate-y-2/4 -translate-y-[30%] left-2/4 2xl:top-2/4 top-[42%] p-[50px] border-2 border-gray-300 border-dashed rounded-lg cursor-pointer bg-gray-50 dark:hover:bg-bray-800 dark:bg-gray-700 hover:bg-gray-100 dark:border-gray-600 dark:hover:border-gray-500 dark:hover:bg-gray-600\"\n >\n <div className=\" text-center flex flex-col gap-[8px]\">\n <IconButton\n label=\"\"\n icon={<MdOutlineFileUpload />}\n className={\n 'pointer-events-auto cursor-pointer m-auto text-[#E11A38] bg-[#FCE8EB] p-[16px] h-[unset] !rounded-full'\n }\n size=\"1.125rem\"\n ></IconButton>\n <div className=\"text-[#5D5D5D] text-base font-bold\">\n Drag Files To Upload\n </div>\n <div className=\"text-[#5D5D5D] text-base font-bold\">Or</div>\n </div>\n <div>\n {' '}\n <button\n onClick={() => fileInputRef.current?.click()}\n className=\"text-center py-[11.2px] border border-[#E11A38] text-[#E11A38] font-bold px-[20px] rounded-none hover:bg-[#E11A38] hover:text-white transition-all ease-in-out duration-300 cursor-pointer max-w-[220px]\"\n >\n BROWSE FILE\n </button>\n </div>\n\n <div className=\" text-center text-[#727272] text-sm\">\n <p>Max file size: 25M</p>\n <p>Supported files types: JPG, JPEG, PNG, GIF, EPS, PDF, SVG, AI</p>\n </div>\n <input\n id=\"file-upload\"\n ref={fileInputRef}\n type=\"file\"\n onChange={handleFileSelect}\n className=\"hidden\"\n accept=\"image/png, image/jpeg , image/gif , image/svg+xml , .eps , .ai , .pdf\"\n />\n </label>\n </div>{' '}\n </>\n );\n};\n\nexport default FileUploadButton;\n","import React, { useState } from 'react';\nimport { TEXT_SIZE_9 } from '../../theme';\nimport './colorPalette.css';\n\nexport interface ColorPaletteProps {\n previousColor?: string[];\n previousClass?: string;\n mainIndex?: any;\n handleColorChange?: any;\n mainClass?: string;\n index?: any;\n boxWidth?: number;\n gap?: number;\n}\n\nexport const ColorPalette = ({\n previousColor,\n previousClass = '',\n mainIndex = '',\n handleColorChange,\n mainClass = '',\n\n}: ColorPaletteProps) => {\n const [selectColor, setSelectColor] = useState(null);\n const colorList = [\n 'transparent',\n '#FF0000', // Red\n '#00FF00', // Green\n '#0000FF', // Blue\n '#FFFF00', // Yellow\n '#800080', // Purple\n '#FFA500', // Orange\n '#FFC0CB', // Pink\n '#008080', // Teal\n '#A52A2A', // Brown\n '#808080', // Gray\n '#000000', // Black\n '#FFFFFF', // White\n ];\n const handleColorClick = (color, index) => {\n setSelectColor(color);\n handleColorChange(color, index);\n };\n\n return (\n <>\n <div\n className={`${mainClass} z-10 max-h-[15.4375rem] border border-[#FCE8EB] before:bg-[#ffffff] shadow-[0px_3px_6px_rgba(0,0,0,0.16)] py-[1.8125rem] px-[1.4063rem] bg-[#fff] mt-[1.875rem] mr-[1rem] absolute`}\n >\n {colorList?.length > 0 && (\n <>\n <p\n className={`${TEXT_SIZE_9} leading-[1.125rem] font-bold pb-[1.125rem] text-left`}\n >\n Choose color\n </p>\n <div\n className={`flex flex-wrap gap-x-[0.8125rem] gap-y-[0.3125rem] pb-[2.0938rem] max-h-[3.75rem] overflow-y-auto`}\n >\n {colorList?.map((color, index) => (\n <ColorBox\n color={color}\n index={index}\n onClick={() => handleColorClick(color, mainIndex)}\n boxClass={`w-[1.875rem] h-[1.875rem] ${\n selectColor === color ? 'border border-[red]' : ''\n }`}\n />\n ))}\n </div>\n </>\n )}\n {previousColor?.length > 0 && (\n <>\n <div\n className={`flex flex-row gap-x-[0.875rem] pt-[1.3438rem] border-t border-t-[#EBEBEB]`}\n >\n <p\n className={`${TEXT_SIZE_9} leading-[1.125rem] font-bold pb-[1.125rem]`}\n >\n Previously used\n </p>\n <div\n className={`flex flex-wrap gap-x-[0.8125rem] gap-y-[0.3125rem] border-b border-b-[#EBEBEB] ${previousClass}`}\n >\n {previousColor?.map((color, index) => (\n <ColorBox\n color={color}\n index={'previous' + index}\n onClick={() =>\n handleColorClick(color, mainIndex + 'Choose' + index)\n }\n boxClass={`w-[1.875rem] h-[1.875rem] ${\n selectColor === color ? 'border border-[red]' : ''\n }`}\n />\n ))}\n </div>\n </div>\n </>\n )}\n </div>\n </>\n );\n};\n\nexport interface BoxColorProps {\n color?: string;\n index?: any;\n boxClass?: string;\n onClick?: (e: React.MouseEvent<HTMLDivElement, MouseEvent>) => void;\n onChange?: (e: React.MouseEvent<HTMLDivElement, MouseEvent>) => void;\n children?: React.ReactNode;\n}\n\nexport const ColorBox = ({\n color,\n index,\n boxClass = '',\n onClick,\n onChange,\n children,\n}: BoxColorProps) => {\n return (\n <div\n key={index}\n style={{ backgroundColor: color }}\n className={`w-10 h-10 border border-[#D6D6D6] ${boxClass}`}\n onClick={onClick}\n onChange={onChange}\n >\n {children}\n </div>\n );\n};\n","import React, { useState } from 'react';\n// import { ChromePicker } from 'react-color';\nimport { ColorPalette } from './colorPalette';\n\nexport const ColorImpl = (props) => {\n const [displayPallet, setdisplayPallet] = useState(false);\n const [, setColor] = useState(props.color);\n\n const handleColorClick = (color: string) => {\n console.log(color);\n setColor(color);\n props.handleChange(props.property, color);\n };\n return (\n <>\n <div className=\"\">\n <div\n className={`border border-gray-600 w-[30px] h-[30px] group `}\n style={{ background: props.color }}\n onClick={() => {\n setdisplayPallet((prev) => !prev);\n }}\n onBlur={() => setdisplayPallet(false)}\n >\n {displayPallet && (\n <ColorPalette\n mainClass={`left-0 ${props.mClass}`}\n handleColorChange={handleColorClick}\n />\n // <div\n // className=\"absolute\"\n // style={{ zIndex: '100' }}\n // tabIndex={0}\n // onBlur={() => setdisplayPallet(false)}\n // >\n // <ChromePicker\n // color={color.hex}\n // onChangeComplete={onChangeComplete}\n // onChange={onChangeComplete}\n // disableAlpha={true}\n // />\n // <hr />\n // </div>\n )}\n </div>\n </div>\n </>\n );\n};\n","import React, { useEffect, useState } from 'react';\nimport { use3dddPlus } from '../../store';\nimport { shallow } from 'zustand/shallow';\nimport { fabric } from 'fabric';\nimport { ColorImpl } from '../colorPallet';\nimport { Initpopup } from '../../store/fabric/Popupcanvas';\nimport { CgArrowRight } from 'react-icons/cg';\nimport { EyeDropper, IconButton } from '../icon';\nimport { GiDrop } from 'react-icons/gi';\nimport { MdOutlineCancel } from 'react-icons/md';\n// import { Button } from 'reakit';\nexport const PopUpCanvas = () => {\n const [popupCanvas, canvas, colorFill, changeSVGColor] = use3dddPlus(\n (state) => [\n state.popupCanv,\n state.fabricCanvas,\n state.colorFill,\n state.changeSVGColor,\n ],\n shallow\n );\n const [colorCount, setColorCount] = useState(3);\n\n // const colors = [\n // 'red',\n // 'green',\n // 'blue',\n // 'yellow',\n // 'purple',\n // 'indigo',\n // 'orange',\n // 'light green',\n // ];\n // const selectedColors = colors.slice(0, colorCount);\n const handleColorCountChange = (e) => {\n setColorCount(Number(e.target.value));\n };\n const resizeCanvas = () => {\n const canvas = use3dddPlus.getState().popupCanv;\n const outerCanvasContainer =\n document.getElementById('imageCanvas').parentElement;\n console.log(outerCanvasContainer);\n const containerWidth = outerCanvasContainer.clientWidth;\n const scale = containerWidth / canvas.getWidth();\n const zoom = canvas.getZoom() * scale;\n canvas.setWidth(containerWidth);\n //@ts-ignore\n canvas.setHeight(parseInt(outerCanvasContainer.clientHeight));\n canvas.setViewportTransform([zoom, 0, 0, zoom, 0, 0]);\n canvas.renderAll();\n };\n useEffect(() => {\n const popupCanv = Initpopup();\n use3dddPlus.setState({ popupCanv: popupCanv });\n resizeCanvas();\n window.addEventListener('resize', resizeCanvas);\n //FOR REMOVING COLOR\n\n popupCanv.on('mouse:down', function (event) {\n popupCanv.discardActiveObject();\n var mouseClick = popupCanv.getPointer(event.e);\n // console.log('MOUSE-CLICK-->',mouseClick);\n // Iterate through objects on the canvas and check if any intersect with the mouse click\n popupCanv.forEachObject(function (obj) {\n if (obj.type === 'path') {\n //@ts-ignore\n if (obj.containsPoint(mouseClick)) {\n popupCanv.remove(obj);\n popupCanv.renderAll();\n }\n }\n });\n });\n }, []);\n const popupCanvasCancel = () => {\n use3dddPlus.setState({ uploadImageModalDisplay: false });\n console.log(popupCanvas.getObjects()[0]);\n popupCanvas.remove(...popupCanvas.getObjects());\n };\n const popupCanvasContinue = () => {\n //@ts-ignore\n use3dddPlus.setState({ uploadImageModalDisplay: false });\n use3dddPlus.setState({ selectedStepper: undefined });\n const sel = new fabric.ActiveSelection(popupCanvas.getObjects(), {\n //@ts-ignore\n popupCanvas: popupCanvas,\n });\n popupCanvas.setActiveObject(sel);\n // popupCanvas.remove(...popupCanvas.getObjects());\n\n popupCanvas.requestRenderAll();\n let clipboard;\n popupCanvas.getActiveObject().clone(function (cloned) {\n clipboard = cloned;\n });\n if (clipboard.type === 'activeSelection') {\n clipboard.canvas = canvas;\n const objs = [];\n clipboard.forEachObject(function (obj) {\n objs.push(obj);\n });\n const alltogetherObj = new fabric.Group(objs, {});\n canvas.centerObject(alltogetherObj);\n canvas.add(alltogetherObj);\n canvas.setActiveObject(alltogetherObj);\n alltogetherObj.setCoords();\n use3dddPlus.getState().forStoringAllObject(alltogetherObj); //for pushing the data into array for layers\n } else {\n canvas.add(clipboard);\n }\n canvas.requestRenderAll();\n popupCanvas.clear();\n };\n return (\n <>\n {/* <div\n className=\"relative z-10\"\n aria-labelledby=\"modal-title\"\n role=\"dialog\"\n aria-modal=\"true\"\n style={uploadImageModalDisplay ? {} : { display: 'none' }}\n > */}\n <div className=\"flex z-10 overflow-y-auto\">\n <div className=\"flex flex-1 w-full\">\n <div className=\"relative w-full overflow-hidden bg-white\">\n <div className=\"bg-white\">\n <div className=\"flex flex-row\">\n <div className=\"flex flex-row text-center w-[70%] \">\n <div className=\" w-full h-full \">\n <div id=\"imageCanvas\">\n <canvas\n className=\"pointer\"\n id=\"popupCanvas\"\n ></canvas>\n </div>\n <div className=\"absolute bottom-[40px] flex flex-wrap left-[60px]\">\n <span className=\"border border-[#E11A38] p-1 bg-white mr-2 text-[#E11A38] \">\n <EyeDropper />\n </span>\n\n <span className=\"text-[#E11A38] text-[13px] font-bold \">\n Use the eyedropper tool do clicking on a color you wish\n to remove form you image\n </span>\n </div>\n </div>\n </div>\n <div className=\"text-left flex-1 h-[100%] px-[36px] pt-[31px]\">\n <div className=\"flex flex-col gap-y-5\">\n <h1 className=\"text-[22px] font-bold\">\n Match and Combine colors\n </h1>\n <p className=\"text-[15px]\">\n Select how many colors are in your image\n </p>\n <select\n value={colorCount}\n onChange={handleColorCountChange}\n className=\"border-[1px] border-[#D7D7D7] p-2\"\n >\n <option value={1}>1 Colors</option>\n <option value={2}>2 Colors</option>\n <option value={3}>3 Colors</option>\n <option value={4}>4 Colors</option>\n <option value={5}>5 Colors</option>\n <option value={6}>6 Colors</option>\n <option value={7}>7 Colors</option>\n <option value={8}>8 Colors</option>\n </select>\n {/* {Object.keys(colorFill)?.map((item) => {\n return (\n <>\n <ColorImpl\n handleChange={changeSVGColor}\n property={item}\n color={colorFill[item]}\n />\n </>\n );\n })} */}\n <div className=\"flex flex-col gap-y-3.5 items-center overflow-y-auto py-[5px] 2xl:h-[50vh] sm:h-[42vh] h-[42vh]\">\n {Object.keys(colorFill)?.map((item, index) => (\n <div className=\"flex flex-row items-center\" key={index}>\n <ColorImpl\n className=\"w-[30px] h-[30px] m-2 \"\n handleChange={changeSVGColor}\n property={item}\n color={colorFill[item]}\n />\n <div className=\"mx-[20px] text-[#c2c2c2]\">\n <CgArrowRight />\n </div>\n <div className=\"flex flex-row border-[1px] border-[#D6D6D6]\">\n <span className=\" border-r-[1px] border-[#D6D6D6] bg-[#fce8eb]\">\n <IconButton\n label=\"Select Color\"\n icon={<GiDrop />}\n className={\n '!rounded-none pointer-events-auto cursor-pointer flex text-[#E11A38] w-[30px] h-[30px] p-[9px]'\n }\n size=\"1.125rem\"\n ></IconButton>\n </span>\n <span className=\"py-[6px] pl-[10px] pr-[27px] font-medium text-[13px] bg-[#F1F1F1]\">\n Select Color\n </span>\n </div>\n <span className=\"\">\n <IconButton\n label=\"Delete Color\"\n icon={<MdOutlineCancel />}\n className={\n 'pointer-events-auto cursor-pointer m-autoflex w-[30px] h-[30px] p-[9px] text-[#c2c2c2]'\n }\n size=\"1rem\"\n ></IconButton>\n </span>\n </div>\n ))}\n </div>\n <div className=\" flex flex-col\">\n <button\n type=\"button\"\n onClick={popupCanvasContinue}\n className=\"mt-3 inline-flex w-full justify-center bg-white px-[110px] py-2 text-sm font-medium text-[#E11A38] shadow-sm ring-1 ring-inset ring-[#E11A38] hover:bg-gray-50 sm:mt-0 sm:w-auto\"\n >\n Continue\n </button>\n <button\n type=\"button\"\n onClick={popupCanvasCancel}\n className=\"mt-3 inline-flex w-full justify-center bg-white px-[110px] py-2 text-sm font-medium text-[#E11A38] shadow-sm ring-1 ring-inset ring-[#E11A38] hover:bg-gray-50 sm:mt-0 sm:w-auto\"\n >\n Cancel\n </button>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n {/* </div> */}\n </>\n );\n};\n","import { fabric } from 'fabric';\n\nexport const Initpopup = () => {\n const onObjectSelected = () => {\n if (!popupcanvas.getActiveObject()) {\n return;\n }\n if (popupcanvas.getActiveObject().type !== 'group') {\n return;\n }\n //@ts-ignore\n popupcanvas.getActiveObject().toActiveSelection();\n popupcanvas.requestRenderAll();\n };\n const cursorUrl =\n 'https://storage.googleapis.com/3ddplusgcp/logoEditor/assets/icons/eyedropper.svg';\n\n const popupcanvas = new fabric.Canvas('popupCanvas', {\n centeredScaling: true,\n preserveObjectStacking: true,\n backgroundColor: '#F7F7F7',\n defaultCursor: `url(\" ${cursorUrl} \"), auto`,\n hoverCursor: `url(\" ${cursorUrl} \"), auto`,\n });\n\n popupcanvas.on('selection:created', onObjectSelected);\n return popupcanvas;\n};\n","import React, { useState } from 'react';\n\nimport FileUploadButton from './fileuploadButton';\nimport { use3dddPlus } from '../../store';\nimport {shallow} from 'zustand/shallow';\nimport { PopUpCanvas } from '../canvas/popUpCanvas';\n\nexport const UploadLogo = () => {\n const [, setSelectedFile,] = useState<File | null>(null);\n const [\n tiffConvert,\n imageToSVG,\n setFile,\n uploadImageModalDisplay,\n pdfConverter,\n ] = use3dddPlus(\n (state) => [\n state.tiffConvert,\n state.imageToSVG,\n state.setFile,\n state.uploadImageModalDisplay,\n state.pdfConverter,\n ],\n shallow\n );\n const handleFileSelect = (file: File) => {\n setSelectedFile(file);\n setFile(file)\n svgConverter(file);\n // You can perform further actions with the selected file here.\n };\n\n const svgConverter = async (data) => {\n // canvas.discardActiveObject();\n const ext = data.name.substring(data.name.lastIndexOf('.') + 1);\n if (ext === 'pdf') {\n let pdfData = await pdfConverter(data);\n imageToSVG(pdfData);\n }\n if (ext === 'tif' || ext === 'tiff') {\n const tiffData = await tiffConvert(data);\n imageToSVG(tiffData);\n } else {\n let objectURL = URL.createObjectURL(data);\n imageToSVG(objectURL);\n }\n setSelectedFile(null);\n };\n return (\n <>\n <div className=\"bg-[#F7F7F7] absolute z-10 w-[90%] h-full \">\n <div className=\"relative w-full h-full\">\n <div className=\"flex justify-center w-full h-full text-center\">\n <FileUploadButton onFileSelect={handleFileSelect} />\n </div>\n <div className=\"absolute md:bottom-[20px] bottom-[10px] px-[80px]\">\n <p className=\" text-[#E11A38] text-base font-bold\">\n Privacy Notice\n </p>\n <p className=\"text-[#727272] text-sm font-medium pt-2 pb-2\">\n Your uploaded images are safe, secure, and remain your property.\n By proceeding you acknowledge that you have full legal rights and\n permissions to use the images you upload.We reserve the right to\n reject any order.\n </p>\n </div>\n </div>\n </div>\n {uploadImageModalDisplay && (\n <div className=\"bg-[#F7F7F7] absolute z-10 w-[90%] h-full\">\n <PopUpCanvas />\n </div>\n )}\n </>\n );\n};\n","import React from 'react';\nimport {\n SEARCHBAR_BORDER_COLOR,\n SEARCH_ICON_COLOR,\n TEXT_COLOR_1,\n TEXT_SIZE_3,\n} from '../../theme';\n\nexport interface SearchBarProps {\n onChange?: (e: React.ChangeEvent<HTMLInputElement>) => void;\n onKeyPress?: (e: React.KeyboardEvent<HTMLDivElement>) => void;\n onPaste?: (e: React.ClipboardEvent<HTMLInputElement>) => void;\n placeholder?: string;\n searchBarMainClass?: string;\n value?: string;\n disabled?: boolean;\n}\nexport const Searchbar = ({\n onChange,\n onKeyPress,\n onPaste,\n placeholder,\n searchBarMainClass,\n value,\n disabled,\n}: SearchBarProps) => {\n return (\n <>\n <div\n className={`${searchBarMainClass} h-[40px] relative flex w-full flex-wrap items-stretch border border-solid ${SEARCHBAR_BORDER_COLOR} outline-none transition duration-200 ease-in-out focus:z-[3] focus:shadow-[inset_0_0_0_1px_rgb(212,212,212)] focus:outline-none bg-[#FFFFFF]`}\n >\n <input\n type=\"search\"\n className={`leading-[20px] relative m-0 -mr-0.5 block w-[1px] min-w-0 focus-visible:outline-0 flex-auto bg-transparent bg-clip-padding px-[15px] py-[10px] ${TEXT_SIZE_3} font-normal ${TEXT_COLOR_1} placeholder:${TEXT_SIZE_3} placeholder:${TEXT_COLOR_1} placeholder:leading-[20px]`}\n placeholder={placeholder}\n aria-label=\"Search\"\n aria-describedby=\"button-addon3\"\n value={value}\n onChange={onChange}\n onKeyPress={onKeyPress}\n disabled={disabled}\n onPaste={onPaste}\n onClick={(e) => {\n e.currentTarget.focus();\n }}\n />\n <span\n className={`flex justify-center items-center rounded-none pl-2 pr-[14px]`}\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n className={`h-5 w-5 ${SEARCH_ICON_COLOR}`}\n >\n <path d=\"M9 3.5a5.5 5.5 0 100 11 5.5 5.5 0 000-11zM2 9a7 7 0 1112.452 4.391l3.328 3.329a.75.75 0 11-1.06 1.06l-3.329-3.328A7 7 0 012 9z\" />\n </svg>\n </span>\n </div>\n </>\n );\n};\n","import React from 'react';\nimport { Input as InputImpl, InputHTMLProps } from 'reakit';\n\nexport const input = React.forwardRef<HTMLInputElement, InputHTMLProps>(\n (props, ref) => {\n return (\n <InputImpl\n // @ts-ignore\n ref={ref}\n {...props}\n className={`${props.className} block w-full border border-dark py-2 px-4 mb-4`}\n />\n );\n }\n);\n\n","import React from \"react\";\n\nexport const SortButton = ({ label, icons, onClick, className }) => {\n return (\n <button\n onClick={onClick}\n className={`flex rounded-none gap-3 items-center p-2 mr-[24px] ${className}`}\n >\n {icons}\n {label}\n \n </button>\n );\n };\n \n\n ","import React, { useState } from 'react';\nimport { SortButton } from './sortButton';\nimport { BsSortDown } from 'react-icons/bs';\nimport { use3dddPlus } from '../../store';\nimport { shallow } from 'zustand/shallow';\nexport const SortByDropdown = () => {\n const [loadingLogo] = use3dddPlus((state) => [state.loadingLogo], shallow);\n const [isDropdownOpen, setIsDropdownOpen] = useState(false);\n\n const toggleDropdown = () => {\n setIsDropdownOpen(!isDropdownOpen);\n };\n\n return (\n <div className=\"absolute\">\n <SortButton\n onClick={toggleDropdown}\n label=\"Sort by\"\n icons={<BsSortDown />}\n className=\" bg-[#FFFFFF]\"\n />\n {isDropdownOpen && (\n <div className=\"dropdown-content h-[200px] w-[210px] bg-[#FFFFFF] flex flex-col absolute z-10\">\n {/* Dropdown content goes here */}\n <button\n className=\"flex items-center h-[45px] mt-[12px] pl-[27.85px] border-b-[1px] border-[#F4F4F4] \"\n onClick={() => {\n toggleDropdown();\n loadingLogo('&sortBy=updated_at&sortDir=DESC');\n }}\n >\n NEWEST\n </button>\n <button\n className=\"flex items-center h-[45px] pl-[27.85px] border-b-[1px] border-[#F4F4F4]\"\n onClick={() => {\n toggleDropdown();\n loadingLogo('&sortBy=updated_at&sortDir=ASC');\n }}\n >\n OLDEST\n </button>\n <button\n className=\"flex items-center h-[45px] pl-[27.85px] border-b-[1px] border-[#F4F4F4]\"\n onClick={() => {\n toggleDropdown();\n loadingLogo('&sortBy=name&sortDir=ASC');\n }}\n >\n A TO Z\n </button>\n <button\n className=\"flex items-center h-[45px] pl-[27.85px] border-[#F4F4F4]\"\n onClick={() => {\n toggleDropdown();\n loadingLogo('&sortBy=name&sortDir=DESC');\n }}\n >\n Z TO A\n </button>\n </div>\n )}\n </div>\n );\n};\n","import React from 'react';\nimport './loader.css';\n\nexport const Loader = ({ position = 'overlay', height = '100%' }) => {\n const loaderRef = React.useRef<any>();\n React.useEffect(() => {\n if (!loaderRef) return;\n loaderRef.current.style.height = height;\n }, [loaderRef]);\n return (\n <section\n ref={loaderRef}\n id=\"ls\"\n style={\n position === 'overlay'\n ? { position: 'absolute', opacity: 0.8, top: 0 }\n : {}\n }\n className=\"w-full h-full\"\n >\n <div id=\"l\"></div>\n </section>\n );\n};\n","import React, { useEffect } from 'react';\nimport { Searchbar } from '../searchbar';\nimport { Card, CardMedia, CardBody, CardTitle } from '../card';\nimport { SortByDropdown } from '../SortByDropdown';\nimport { use3dddPlus } from '../../store';\nimport { shallow } from 'zustand/shallow';\nimport { Loader } from '../loader';\n\nexport const MyLogo = ({ onApply }) => {\n const [logoSelected, setLogoSelected] = React.useState(false);\n const [\n retriveLogoDesign,\n myLogoHandler,\n loadingLogo,\n loading,\n setLogoData,\n logoData,\n ] = use3dddPlus(\n (state) => [\n state.retriveLogoDesign,\n state.myLogoHandler,\n state.loadingLogo,\n state.loading,\n state.setLogoData,\n state.logoData,\n ],\n shallow\n );\n useEffect(() => {\n loadingLogo('');\n }, []);\n const handleEditLogo = (logo) => {\n if (logo) {\n myLogoHandler(logo);\n setLogoSelected(false);\n }\n };\n const handleApplyLogo = (logo) => {\n if (logo) {\n onApply();\n setLogoSelected(false);\n console.log('handleApplyLogo', logo);\n }\n };\n return (\n <>\n <div className=\"bg-[#F7F7F7] absolute z-100 w-[90%] h-full pr-[56px]\">\n <div className=\" w-full flex mt-[50px] flex-row\">\n <div className=\" flex w-1/2 justify-end\">\n <SortByDropdown />\n </div>\n <div className=\" flex-1\">\n <Searchbar\n placeholder={'Search by Logo name or tags'}\n onChange={(e) => loadingLogo(e.target.value)}\n ></Searchbar>\n </div>\n </div>\n <div className=\"flex ml-[33px] mt-[30px] overflow-y-auto overflow-x-hidden h-[65vh]\">\n <div className=\"max-h-[140px] grid gap-3.5 grid-cols-3 md:grid-cols-4 lg:grid-cols-5 w-full \">\n {retriveLogoDesign.length > 0\n ? retriveLogoDesign.map((logo) => (\n <>\n <Card\n cardClass={`rounded-none bg-white cursor-pointer`}\n style={{ boxShadow: '0px 0px 6px #98989829' }}\n onClick={() => {\n if (logo) {\n setLogoData(logo);\n setLogoSelected(true);\n }\n }}\n >\n <CardMedia\n //@ts-ignore\n src={logo.logo_url}\n imageClass=\"h-[50px] mt-[26px]\"\n />\n\n <CardBody bodyClass=\"p-2.5 mt-[13px]\">\n <CardTitle\n titleClass={`text-[11px] uppercase`}\n //@ts-ignore\n name={logo.name}\n />\n </CardBody>\n </Card>\n </>\n ))\n : 'No Saved Mascots'}\n <div className={`flex gap-2 h-[48px]`}>\n <button\n className={`border border-[black] p-3`}\n onClick={() => handleEditLogo(logoData)}\n >\n Edit\n </button>\n <button\n onClick={() => handleApplyLogo(logoData)}\n className={`border p-3 ${\n logoSelected\n ? 'border-[#e11a38] text-[#e11a38]'\n : 'border-[black] text-black'\n }`}\n >\n Apply\n </button>\n </div>\n </div>\n </div>\n </div>\n {loading && <Loader />}\n </>\n );\n};\n","import React from 'react';\nimport { Button } from 'reakit';\n\nexport const IconButtonLabel = ({\n icon,\n onClick,\n className = '',\n label = '',\n iconPosition = 'left',\n ...props\n}) => {\n return (\n <Button\n className={`flex items-center gap-2 text-base font-bold flex-1 justify-center focus:outline-none ${className}`}\n onClick={onClick}\n {...props}\n >\n {iconPosition === 'left' && (\n <>\n {icon}\n {label}\n </>\n )}\n {iconPosition === 'right' && (\n <>\n {label}\n {icon}\n </>\n )}\n </Button>\n );\n};\n","import React from \"react\";\n\nexport const EditButton = ({ label, icons, onClick, className, children }) => {\n return (\n <button\n onClick={onClick}\n className={`flex rounded-none gap-3 items-center ${className}`}\n >\n {icons}\n {label}\n {children}\n </button>\n );\n };","import React from 'react';\nimport { TEXT_SIZE_2 } from '../../theme';\nimport { IoMdCheckmarkCircle, IconButton } from '../icon';\n\nexport interface CardCheckMarkProps {\n checkMarkClass?: string;\n size?: any;\n}\nexport const CardCheckMark = ({ checkMarkClass, size }: CardCheckMarkProps) => {\n return (\n <>\n <div\n className={`absolute top-1/2 left-2/4 ${TEXT_SIZE_2} ${checkMarkClass}`}\n style={{ transform: 'translate(-50%, -50%)' }}\n >\n <IconButton\n label={''}\n icon={<IoMdCheckmarkCircle />}\n className={`pointer-events-auto cursor-pointer`}\n size={size}\n ></IconButton>\n </div>\n </>\n );\n};\n","import React from 'react';\nimport { HiOutlineDownload, IconButton } from '../icon';\n\nexport interface CardDownIconProps {\n downloadClass?: string;\n downloadIconClass?: string;\n iconClass?: string;\n pdfUrl?: string;\n}\nexport const CardDownloadIcon = ({\n downloadClass,\n downloadIconClass,\n iconClass,\n pdfUrl,\n}: CardDownIconProps) => {\n return (\n <>\n <a\n href={pdfUrl}\n download={'Design Sheet'}\n target=\"_blank\"\n className={`flex items-center gap-[0.4375rem] ${downloadIconClass}`}\n >\n <IconButton\n label={''}\n icon={<HiOutlineDownload />}\n className={`pointer-events-auto cursor-pointer ${iconClass}`}\n size=\"1rem\"\n ></IconButton>\n\n <span className={`${downloadClass}`}>VIEW DESIGN SHEET</span>\n </a>\n </>\n );\n};\n","import React from 'react';\n\nexport interface CardFlagProps {\n flag?: string;\n flagClass?: string;\n}\nexport const CardFlag = ({ flag, flagClass }: CardFlagProps) => {\n return (\n <>\n <div className={`absolute top-0 left-0 ${flagClass}`}>{flag}</div>\n </>\n );\n};\n","import React from 'react';\nimport { TAG_TEXT_COLOR } from '../../theme';\nexport interface CardTagsProps {\n children?: React.ReactNode;\n tagsClass?: string;\n}\nexport const CardTags = ({ children, tagsClass }: CardTagsProps) => {\n return (\n <>\n <div\n className={`${tagsClass} flex capitalize rounded px-[11px] py-[5px] text-center items-center align-baseline ${TAG_TEXT_COLOR} font-normal`}\n >\n {children}\n </div>\n </>\n );\n};\n","import React from 'react';\n\nexport interface CardDescProps {\n children?: React.ReactNode;\n descriptionClass?: string;\n}\nexport const CardDescription = ({ children, descriptionClass }: CardDescProps) => {\n return (\n <>\n <p className={`${descriptionClass}`}>{children}</p>\n </>\n );\n};\n","import React from 'react';\nimport { IconButton, RxCross2 } from '../icon';\nimport { BACKDROP_BLUR, BACKDROP_BLUR_BG_COLOR, SAVERACK_TEXT_COLOR } from '../../theme';\n\nexport interface GlobalModalProps {\n backdropStyle?: string;\n children?: React.ReactNode;\n contentStyle?: string;\n crossOnClick?: () => void;\n modalStyle?: string;\n}\n\nexport const Modal = ({\n backdropStyle,\n children,\n contentStyle,\n crossOnClick,\n modalStyle,\n}: GlobalModalProps) => {\n return (\n <div>\n <div\n className={`${backdropStyle} absolute top-0 left-0 h-screen w-full ${BACKDROP_BLUR} ${BACKDROP_BLUR_BG_COLOR}`}\n ></div>\n\n <dialog\n open\n className={`${contentStyle} absolute shadow-[0 2px 8px rgba(0, 0, 0, 0.26)] ml-[auto] md:mr-[0%] mr-[auto]`}\n >\n <IconButton\n label={''}\n icon={<RxCross2 strokeWidth={1} onClick={crossOnClick} />}\n className={\n `z-10 pointer-events-auto cursor-pointer ${SAVERACK_TEXT_COLOR} font-bold !absolute right-[0.6875rem] top-[0.6875rem] px-[0.75rem] py-[1.25rem] hover:bg-[#E11A38] hover:text-[#ffffff] hover:rounded-none`\n }\n size=\"1.2rem\"\n ></IconButton>\n <div\n className={`flex flex-col justify-center gap-[1.75rem] ${modalStyle}`}\n >\n {children}\n </div>\n </dialog>\n </div>\n );\n};\n","import React from 'react';\nexport interface ModalButtonsProps {\n buttonMainClass?: string;\n buttons?: {\n buttonClass?: string;\n label?: string;\n onClick?: () => void;\n style?: React.CSSProperties;\n }[];\n}\nexport const ModalButtons = ({ buttonMainClass, buttons }: ModalButtonsProps) => {\n return (\n <div\n className={`flex flex-col lg:flex-row gap-[1.5625rem] leading-[1.4375rem] font-bold ${buttonMainClass}`}\n >\n {buttons?.map((button, index) => (\n <button\n key={index}\n onClick={button.onClick}\n className={`w-full py-[0.7188rem] rounded-none font-bold uppercase ${button.buttonClass}`}\n style={button.style}\n >\n {button.label}\n </button>\n ))}\n </div>\n );\n};\n\n","import React from 'react';\nimport { HiOutlineDownload, IconButton } from '../icon';\n\nexport interface ModalDownLoadIconProps {\n downloadClass?: string;\n downloadIconClass?: string;\n iconClass?: string;\n pdfUrl?: string;\n}\nexport const ModalDownloadIcon = ({\n downloadClass,\n downloadIconClass,\n iconClass,\n pdfUrl,\n}: ModalDownLoadIconProps) => {\n return (\n <>\n <div className={`flex justify-center items-center`}>\n <a\n href={pdfUrl}\n download={'Design Sheet'}\n target=\"_blank\"\n className={`flex items-center cursor-pointer gap-[0.6875rem] font-bold ${downloadIconClass}`}\n >\n <IconButton\n label={''}\n icon={<HiOutlineDownload />}\n className={`pointer-events-auto ${iconClass}`}\n size=\"1.1rem\"\n ></IconButton>\n\n <span className={`uppercase ${downloadClass}`}>\n VIEW DESIGN SHEET\n </span>\n </a>\n </div>\n </>\n );\n};\n","import React from 'react';\n\nexport interface ModalHeadingProps {\n children?: React.ReactNode;\n headingStyle?: string;\n}\nexport const ModalHeading = ({ children, headingStyle }: ModalHeadingProps) => {\n return (\n <>\n <div\n className={`flex flex-col gap-[1.625rem] justify-center items-center text-center ${headingStyle}`}\n >\n {children}\n </div>\n </>\n );\n};\n\n","import React from 'react';\n\nexport interface ModalLabelProps {\n children?: React.ReactNode;\n labelStyle?: string;\n}\nexport const ModalLabel = ({ children, labelStyle }: ModalLabelProps) => {\n return (\n <>\n <p className={`${labelStyle}`}>{children}</p>\n </>\n );\n};\n\n","import React from 'react';\nimport { IconButton } from '../icon';\n\nexport interface ModalStatusProps {\n icon?: JSX.Element;\n onIconClick?: () => void;\n children?: React.ReactNode;\n iconStyle?: string;\n}\nexport const ModalStatusIcon = ({\n icon,\n onIconClick,\n iconStyle,\n children,\n}: ModalStatusProps) => {\n return (\n <>\n <div className={`flex justify-center`} onClick={onIconClick}>\n <IconButton\n label={''}\n icon={icon}\n className={`pointer-events-auto cursor-pointer h-[auto] ${iconStyle}`}\n size=\"6.3rem\"\n ></IconButton>\n {children}\n </div>\n </>\n );\n};\n","import React, { useEffect } from 'react';\n//import { StepperTypes } from '../../store/actions/types';\nimport { use3dddPlus } from '../../store';\nimport { shallow } from 'zustand/shallow';\nimport {\n SELECT_BG_COLOR,\n //BORDER_COLOR,\n TEXT_SIZE_1,\n TEXT_SIZE_2,\n SELECT_TEXT_COLOR,\n BUTTON_TEXT_COLOR,\n TEXT_COLOR_1,\n} from '../../theme';\nimport {\n AddText,\n IconButton,\n MyLogo,\n ProductColor,\n RLogo,\n AddMascots,\n} from '../icon';\nimport { MdOutlineFileUpload } from 'react-icons/md';\n\nexport const LeftMenu = () => {\n const [\n setSelectedStepper,\n selectedStepper,\n addText,\n getStockLogos,\n loadingLogo,\n ] = use3dddPlus(\n (state) => [\n state.setSelectedStepper,\n state.selectedStepper,\n state.addText,\n state.getStockLogos,\n state.loadingLogo,\n ],\n shallow\n );\n const StepperList = [\n {\n name: 'Upload File',\n icon: <MdOutlineFileUpload />,\n id: 1,\n display: true,\n },\n {\n name: 'My Logos',\n icon: <MyLogo />,\n id: 2,\n display: true,\n },\n {\n name: 'Add Text',\n icon: <AddText />,\n id: 3,\n display: true,\n },\n {\n name: 'Add Mascots',\n icon: <AddMascots />,\n id: 4,\n display: true,\n },\n {\n name: 'product Color',\n icon: <ProductColor />,\n id: 5,\n display: true,\n },\n ];\n\n useEffect(() => {\n return () => {};\n }, []);\n\n return (\n <div className=\"flex flex-row md:flex-col\">\n <div\n className={` flex flex-row md:flex-col sticky md:relative md:w-[100%] md:max-w-[100%]`}\n style={{ boxShadow: '0px 0px 6px #98989829' }}\n >\n <div\n className={`${SELECT_BG_COLOR} flex justify-center cursor-pointer p-2.5 `}\n >\n <div className=\" flex flex-col items-center justify-center\">\n <span className={`stepper-icon-active ${TEXT_SIZE_2} mb-2`}>\n <IconButton\n label={''}\n icon={<RLogo />}\n size=\"2rem\"\n className={`${TEXT_COLOR_1} pointer-events-auto cursor-pointer m-auto`}\n ></IconButton>\n </span>\n <span\n className={`${SELECT_TEXT_COLOR} ${TEXT_SIZE_1} uppercase font-bold text-center`}\n >\n Logo Designer\n </span>\n </div>\n </div>\n </div>\n <div\n className={` flex h-[100%] flex-row md:flex-col sticky md:relative md:w-[100%] md:max-w-[100%]`}\n style={{ boxShadow: '0px 0px 6px #98989829' }}\n >\n {StepperList?.map((step) => (\n <div\n className={\n step.id === selectedStepper\n ? `${SELECT_BG_COLOR} flex justify-center cursor-pointer p-2.5 `\n : 'flex justify-center cursor-pointer p-2.5 '\n }\n key={step.id}\n style={!step.display ? { display: 'none' } : {}}\n >\n <div\n className=\"flex flex-col items-center justify-center \"\n onClick={(e) => {\n e.preventDefault();\n setSelectedStepper(step.id);\n if (step.id === 3) {\n addText();\n }\n if (step.id === 4) {\n getStockLogos();\n }\n if (step.id === 2) {\n loadingLogo('');\n }\n }}\n >\n <span\n className={\n step.id === selectedStepper\n ? `stepper-icon-active ${TEXT_SIZE_2} mb-2`\n : `stepper-icon ${TEXT_SIZE_2} mb-2`\n }\n >\n <IconButton\n label={''}\n icon={step.icon}\n size=\"2rem\"\n className={`${\n step.id === selectedStepper\n ? BUTTON_TEXT_COLOR\n : TEXT_COLOR_1\n } pointer-events-auto cursor-pointer m-auto`}\n ></IconButton>\n </span>\n <span\n className={\n step.id === selectedStepper\n ? `${SELECT_TEXT_COLOR} ${TEXT_SIZE_1} uppercase font-bold text-center`\n : `${TEXT_COLOR_1} ${TEXT_SIZE_1} uppercase font-bold text-center`\n }\n >\n {step.name}\n </span>\n </div>\n </div>\n ))}\n </div>\n </div>\n );\n};\n","import React from 'react';\nimport { ColorImpl } from '../colorPallet';\nimport { IconButton, FlipH, FlipV } from '../icon';\nexport const ImageEdit = ({\n nudgeMove,\n flipX,\n flipY,\n changeSVGColor,\n activeSelection,\n}) => {\n return (\n <>\n <div className=\"uppercase font-bold pt-[17px]\">Color in Canvas</div>\n <div className=\"flex gap-x-[1rem] mt-[12px]\">\n {activeSelection.colorFill &&\n Object.keys(activeSelection?.colorFill)?.map((item) => {\n return (\n <ColorImpl\n mClass={'ml-[36px]'}\n key={\n activeSelection.colorFill[item] +\n activeSelection?.ownMatrixCache?.key\n }\n handleChange={changeSVGColor}\n property={item}\n color={activeSelection.colorFill[item]}\n />\n );\n })}\n </div>\n <div>\n <div className=\"font-bold uppercase mt-[17px]\">Flip</div>\n <div className=\"flex gap-x-[1rem] mt-[12px]\">\n <IconButton\n key={`index`}\n label=\"\"\n icon={<FlipH />}\n onClick={flipX}\n className={`w-[45px] h-[45px] bg-[#fff] cursor-pointer border border-[#EBEBEB]`}\n size=\"1.8rem\"\n ></IconButton>\n <IconButton\n key={`index`}\n label=\"\"\n onClick={flipY}\n icon={<FlipV />}\n className={`w-[45px] h-[45px] bg-[#fff] cursor-pointer border border-[#EBEBEB]`}\n size=\"1.8rem\"\n ></IconButton>\n </div>\n </div>\n <div className=\"mt-[30px]\">\n <h3 className=\"font-extrabold\">Nudge</h3>\n <button\n onClick={nudgeMove}\n id=\"down\"\n className=\"font-medium text-orange-400\"\n >\n DOWN\n </button>\n <button\n onClick={nudgeMove}\n id=\"up\"\n className=\"font-medium text-orange-300 text-lime-400 px-1\"\n >\n UP\n </button>\n <button\n onClick={nudgeMove}\n id=\"left\"\n className=\"font-medium text-orange-300 text-teal-500\"\n >\n LEFT\n </button>\n <button\n onClick={nudgeMove}\n id=\"right\"\n className=\"font-medium text-orange-300 text-violet-600 px-1\"\n >\n RIGHT\n </button>\n </div>\n </>\n );\n};\n","import { use3dddPlus } from '../../store';\nimport { shallow } from 'zustand/shallow';\nimport { useEffect, useState } from 'react';\nimport { ColorImpl } from '../colorPallet';\nimport React from 'react';\nimport { Tab, initTE } from 'tw-elements';\nimport {\n BORDER_COLOR_1,\n INPUT_BG_COLOR,\n SELECT_BG_COLOR,\n TEXT_COLOR_1,\n TEXT_SIZE_3,\n TEXT_SIZE_9,\n} from '../../theme';\nimport { ImageEdit } from './imageEdit';\nimport './rightMenu.css';\nimport { FiAlignCenter, FiAlignLeft, FiAlignRight } from 'react-icons/fi';\nconst fontFamilies = [\n {\n name: 'Athletic Block',\n src: 'https://storage.googleapis.com/3ddplusgcp/logoEditor/assets/fonts/athletic.ttf',\n },\n {\n name: 'Ballpark',\n src: 'https://storage.googleapis.com/3ddplusgcp/logoEditor/assets/fonts/ballpark.TTF ',\n },\n {\n name: 'Pro Block',\n src: 'https://storage.googleapis.com/3ddplusgcp/logoEditor/assets/fonts/pro_block.woff',\n },\n {\n name: 'Full Block',\n src: 'https://storage.googleapis.com/3ddplusgcp/logoEditor/assets/fonts/full_block.woff',\n },\n {\n name: 'Brush Script',\n src: 'https://storage.googleapis.com/3ddplusgcp/logoEditor/assets/fonts/brush-script-3.ttf',\n },\n {\n name: 'City Block',\n src: 'https://storage.googleapis.com/3ddplusgcp/logoEditor/assets/fonts/cityb.woff',\n },\n {\n name: 'Tiffany',\n src: 'https://storage.googleapis.com/3ddplusgcp/logoEditor/assets/fonts/tiffany.woff',\n },\n];\n\nexport const Rightmenu = () => {\n initTE({ Tab });\n const textSelected = use3dddPlus.getState().activeSelection;\n const canvas = use3dddPlus.getState().fabricCanvas;\n const [\n colorFill,\n currentSelection,\n activeSelection,\n textInfo,\n activeObj,\n storeAllObject,\n allColor,\n setToggleSaveDesign,\n ] = use3dddPlus(\n (state) => [\n state.colorFill,\n state.currentSelection,\n state.activeSelection,\n state.textInfo,\n state.activeSelection,\n state.storeAllObject,\n state.allColor,\n state.setToggleSaveDesign,\n ],\n shallow\n );\n const [textAlignDisplay, setTextAlignDisplay] = useState(false);\n const [outlineVal, setOutlineVal] = useState(0);\n const [spacingVal, setSpacinglineVal] = useState(1);\n const [sliderValue, setSliderValue] = useState(50);\n const [fontStyle, setFontStyle] = useState({\n bold: false,\n italic: false,\n underline: false,\n });\n const [activeButton, setActiveButton] = useState<string | null>(null);\n useEffect(() => {\n if (!activeSelection) return;\n use3dddPlus.setState({ textInfo: activeSelection.text });\n }, [activeSelection]);\n\n const onTextChange = (e) => {\n const lines = e.target.value.split('\\n');\n lines.length == 1 ? setTextAlignDisplay(false) : setTextAlignDisplay(true);\n use3dddPlus.setState({ textInfo: e.target.value });\n textSelected.set('text', use3dddPlus.getState().textInfo);\n use3dddPlus.getState().forIconCapture();\n textSelected.icon = use3dddPlus.getState().iconImage;\n canvas.renderAll();\n };\n const textAlignHandler = (e) => {\n console.log(e.target.id);\n setActiveButton(e.target.id);\n textSelected.set('textAlign', e.target.id);\n use3dddPlus.getState().updateModifaction(true);\n use3dddPlus.getState().forIconCapture();\n textSelected.icon = use3dddPlus.getState().iconImage;\n canvas.renderAll();\n };\n const handleSliderChange = (event) => {\n textSelected.set('fontSize', event.target.value);\n canvas.renderAll();\n setSliderValue(event.target.value);\n };\n const fontChange = (e) => {\n fontFamilies.map((item) => {\n console.log(e, item);\n if (item.name == e.target.value) {\n const font = new FontFace(item.name, `url('${item.src}')`);\n font.load().then((value) => {\n //@ts-ignore\n document.fonts?.add(value);\n document.body.classList.add('fonts-loaded');\n textSelected.set('fontFamily', item.name);\n use3dddPlus.getState().forIconCapture();\n textSelected.icon = use3dddPlus.getState().iconImage;\n canvas.renderAll();\n });\n }\n });\n };\n const textColorChange = (property, color: any) => {\n console.log(property);\n textSelected.set({\n fill: color,\n colorFill: { layer0: color },\n });\n //textSelected.set('fill', color);\n use3dddPlus.getState().updateModifaction(true);\n use3dddPlus.getState().forIconCapture();\n textSelected.icon = use3dddPlus.getState().iconImage;\n canvas.renderAll();\n };\n const nudgeMove = (e) => {\n if (e.target.id === 'down') {\n if(textSelected.aCoords.br.y > canvas.height - 2)return\n use3dddPlus.getState().moveDown(textSelected);\n use3dddPlus.getState().updateModifaction(true);\n } else if (e.target.id === 'up') {\n if(textSelected.aCoords.tr.y < 5)return\n use3dddPlus.getState().moveUp(textSelected);\n use3dddPlus.getState().updateModifaction(true);\n } else if (e.target.id === 'right') {\n if(textSelected.aCoords.tr.x > canvas.height - 2)return\n use3dddPlus.getState().moveRight(textSelected);\n use3dddPlus.getState().updateModifaction(true);\n } else if (e.target.id === 'left') {\n if(textSelected.aCoords.tl.x < 2)return\n use3dddPlus.getState().moveLeft(textSelected);\n use3dddPlus.getState().updateModifaction(true);\n }\n };\n const textOutlineHandler = (e) => {\n setOutlineVal(e.target.valueAsNumber);\n textSelected.strokeWidth = e.target.valueAsNumber;\n use3dddPlus.getState().updateModifaction(true);\n use3dddPlus.getState().forIconCapture();\n textSelected.icon = use3dddPlus.getState().iconImage;\n canvas.renderAll();\n };\n const strokeColorChange = (property, color) => {\n console.log(property);\n textSelected.set('stroke', color);\n use3dddPlus.getState().updateModifaction(true);\n use3dddPlus.getState().forIconCapture();\n textSelected.icon = use3dddPlus.getState().iconImage;\n canvas.renderAll();\n };\n const textSpacingHandler = (e) => {\n setSpacinglineVal(e.target.valueAsNumber);\n textSelected.charSpacing = e.target.valueAsNumber; \n use3dddPlus.getState().updateModifaction(true);\n use3dddPlus.getState().forIconCapture();\n textSelected.icon = use3dddPlus.getState().iconImage;\n canvas.renderAll();\n if(textSelected.aCoords.tr.x > 480){\n return;\n }\n };\n const textStyle = (e: any, key: string, value: any) => {\n if (fontStyle[e.target.id]) textSelected.set(key, '');\n else textSelected.set(key, value);\n setFontStyle((state) => ({ ...state, [e.target.id]: !state[e.target.id] }));\n use3dddPlus.getState().updateModifaction(true);\n use3dddPlus.getState().forIconCapture();\n textSelected.icon = use3dddPlus.getState().iconImage;\n canvas.renderAll();\n };\n const layerHandle = (element, index, num) => {\n const currentObject = [...use3dddPlus.getState().storeAllObject];\n if (num === 'minus') {\n canvas.sendToBack(element);\n use3dddPlus.setState({\n storeAllObject: changeArr(currentObject, index, index + 1),\n });\n } else {\n canvas.bringToFront(element);\n use3dddPlus.setState({\n storeAllObject: changeArr(currentObject, index, index - 1),\n });\n }\n };\n const changeArr = (arr, fromIndex, toIndex) => {\n const element = arr.splice(fromIndex, 1)[0];\n arr.splice(toIndex, 0, element);\n return arr;\n };\n const deleteElement = (item) => {\n canvas.remove(item);\n canvas.requestRenderAll();\n removeItem(item);\n };\n const removeItem = (value: any) => {\n //@ts-ignore\n var index = use3dddPlus.getState().storeAllObject.indexOf(value);\n if (index > -1) {\n use3dddPlus.getState().storeAllObject.splice(index, 1);\n }\n use3dddPlus.setState({\n storeAllObject: [...use3dddPlus.getState().storeAllObject],\n });\n };\n const changeSVGTextColor = (property, color) => {\n const previousColor = property;\n canvas.getObjects().map((data) => {\n // console.log(data.type);\n if (data.type === 'text') {\n let _C = data.fill;\n if (_C === previousColor) {\n data.set({\n fill: color,\n colorFill: { layer0: color },\n });\n }\n // canvas.renderAll();\n } else if (data.type === 'group') {\n // console.log(data);\n let objImage = data._objects;\n objImage.forEach((ele) => {\n const _C = ele.fill.includes('#') ? ele.fill : RGBToHex(ele.fill);\n console.log('ele', ele);\n if (_C === previousColor) {\n ele.set({\n fill: color,\n // colorFill : colorFill,\n });\n }\n });\n const colorFill = { ...data.colorFill };\n Object.keys(colorFill).forEach((item) => {\n console.log(item);\n if (colorFill[item] === previousColor) {\n colorFill[item] = color;\n }\n });\n data.set({\n colorFill: colorFill,\n });\n }\n });\n canvas.renderAll();\n };\n const changeSVGColor = (property, color) => {\n const fillColor = colorFill;\n const previousColor = fillColor[property];\n const SelectedObjet = use3dddPlus.getState().activeSelection;\n let objImage = SelectedObjet._objects;\n objImage.forEach((ele) => {\n const _C = ele.fill.includes('#') ? ele.fill : RGBToHex(ele.fill);\n if (_C === previousColor) {\n ele.set({\n fill: color,\n });\n }\n });\n canvas.renderAll();\n fillColor[property] = color;\n use3dddPlus.setState({ colorFill: fillColor });\n use3dddPlus.getState().updateModifaction(true);\n use3dddPlus.getState().forIconCapture();\n textSelected.icon = use3dddPlus.getState().iconImage;\n };\n\n const RGBToHex = (rgb) => {\n let sep = rgb.indexOf(',') > -1 ? ',' : ' ';\n\n rgb = rgb.substr(4).split(')')[0].split(sep);\n let r = (+rgb[0]).toString(16),\n g = (+rgb[1]).toString(16),\n b = (+rgb[2]).toString(16);\n\n if (r.length == 1) r = '0' + r;\n if (g.length == 1) g = '0' + g;\n if (b.length == 1) b = '0' + b;\n return '#' + r + g + b;\n };\n const flipX = () => {\n activeObj.set({\n flipX: !activeObj.flipX,\n });\n use3dddPlus.getState().updateModifaction(true);\n use3dddPlus.getState().forIconCapture();\n textSelected.icon = use3dddPlus.getState().iconImage;\n canvas.renderAll();\n };\n const flipY = () => {\n activeObj.set({\n flipY: !activeObj.flipY,\n });\n use3dddPlus.getState().updateModifaction(true);\n use3dddPlus.getState().forIconCapture();\n textSelected.icon = use3dddPlus.getState().iconImage;\n // activeObj.\n canvas.renderAll();\n };\n const onSave = () => {\n if (canvas.getObjects().length > 0) {\n setToggleSaveDesign('save', true, 'Save Logo', {});\n } else {\n alert('NOTHING TO SAVE...');\n }\n };\n useEffect(() => {\n const unSub = use3dddPlus.subscribe(\n (state) => state.colorFill,\n (_current, _previous) => {\n // console.log(\"_PREVIUS_COLORFIL\" , _previous);\n // console.log(\"_CURRENT_COLOR\",_current);\n }\n );\n return unSub;\n }, []);\n // console.log(\"====>\",activeSelection,currentSelection)\n return (\n <div className=\"text-left flex-1 h-[100vh] px-[36px] pt-[23px] relative \">\n <div className=\"flex flex-col \">\n <h1 className=\"text-[22px] font-bold\">Edit Design</h1>\n <ul\n className=\" flex list-none mt-[16px] flex-col md:flex-row border-b-0 pl-0\"\n role=\"tablist\"\n data-te-nav-ref\n >\n <li\n role=\"presentation\"\n className=\"flex-grow basis-0 text-center\"\n onClick={() => {\n use3dddPlus.setState({ currentSelection: 'none' });\n canvas.discardActiveObject();\n canvas.renderAll();\n }}\n >\n <a\n href=\"#tabs-properties\"\n className={`my-2 block border border-[#D6D6D6] px-[40px] py-[10px] ${TEXT_SIZE_9} font-bold uppercase leading-tight hover:text-[white] hover:bg-[#E11A38] data-[te-nav-active]:bg-[#E11A38] data-[te-nav-active]:text-[white]`}\n data-te-toggle=\"pill\"\n data-te-target=\"#tabs-properties\"\n data-te-nav-active\n role=\"tab\"\n aria-controls=\"tabs-properties\"\n aria-selected=\"true\"\n >\n Properties\n </a>\n </li>\n <li\n role=\"presentation\"\n className=\"flex-grow basis-0 text-center\"\n onClick={() => use3dddPlus.setState({ currentSelection: 'layer' })}\n >\n <a\n href=\"#tabs-layers\"\n className={`my-2 block border border-[#D6D6D6] px-[40px] py-[10px] ${TEXT_SIZE_9} font-bold uppercase leading-tight hover:text-[white] hover:bg-[#E11A38] data-[te-nav-active]:bg-[#E11A38] data-[te-nav-active]:text-[white]`}\n data-te-toggle=\"pill\"\n data-te-target=\"#tabs-layers\"\n role=\"tab\"\n aria-controls=\"tabs-layers\"\n aria-selected=\"false\"\n >\n Layers\n </a>\n </li>\n </ul>\n\n <div\n className=\"hidden opacity-100 transition-opacity duration-150 ease-linear data-[te-tab-active]:block\"\n id=\"tabs-properties\"\n role=\"tabpanel\"\n aria-labelledby=\"tabs-home-tab02\"\n data-te-tab-active\n >\n <div className=\"h-[50vh] sm:h-[55vh] 2xl:h-[60vh] overflow-y-auto overflow-x-hidden\">\n {currentSelection === 'text' && (\n <div className=\" \">\n <div className=\"uppercase font-bold text-sm mb-[8.5px]\">\n Enter Text\n </div>\n <textarea\n value={textInfo}\n onChange={onTextChange}\n className=\"w-[100%] border border-solid-[1px] border-[#9A9A9A] py-[10px] pl-[16px] mb-[16.5px]\"\n placeholder=\"LOGO TEXT\"\n />\n <div className=\"uppercase font-bold text-sm mb-[8.5px]\">\n Select Font\n </div>\n <select\n name=\"FontStyleNumber\"\n id=\"FontStyleNumber\"\n onChange={fontChange}\n className={`${INPUT_BG_COLOR} font-bold ${TEXT_COLOR_1} ${TEXT_SIZE_3} border border-solid\t ${BORDER_COLOR_1} select select-bordered w-full rounded-none focus:outline-current focus:outline-offset-0 focus:rounded-sm mb-[16.5px]`}\n >\n {fontFamilies.map((list) => {\n return (\n <>\n <option value={list.name}>{list.name}</option>\n </>\n );\n })}\n </select>\n <div className=\"uppercase font-bold text-sm mb-[8.5px]\">\n TEXT SIZE\n </div>\n <input\n type=\"range\"\n value={sliderValue}\n onChange={handleSliderChange}\n className=\" rangeSlider w-full mb-[16.5px]\"\n id=\"slider\"\n style={{\n background: `linear-gradient(to right, #e11a38 0%, #e11a38 ${sliderValue}%, #fff ${sliderValue}%, #fff 100%)`,\n }}\n />\n\n <div className=\"uppercase font-bold text-sm mb-[8.5px]\">\n Style\n </div>\n <div className=\"flex gap-x-[15px] mb-[16.5px]\">\n {' '}\n <button\n className={\n fontStyle.bold\n ? `${SELECT_BG_COLOR} text-[#fff] text-base cursor-pointer border font-bold border-[#EBEBEB] py-[7px] px-[39px] `\n : 'bg-[#fff] font-bold text-base cursor-pointer border border-[#EBEBEB] py-[7px] px-[39px]'\n }\n onClick={(e) => textStyle(e, 'fontWeight', 'bold')}\n id=\"bold\"\n >\n B\n </button>\n <button\n className={\n fontStyle.italic\n ? `${SELECT_BG_COLOR} text-[#fff] text-base cursor-pointer border italic border-[#EBEBEB] py-[7px] px-[39px] `\n : 'bg-[#fff] italic text-base cursor-pointer border border-[#EBEBEB] py-[7px] px-[39px]'\n }\n onClick={(e) => textStyle(e, 'fontStyle', 'italic')}\n id=\"italic\"\n >\n I\n </button>\n <button\n className={\n fontStyle.underline\n ? `${SELECT_BG_COLOR} text-[#fff] text-base cursor-pointer border underline border-[#EBEBEB] py-[7px] px-[39px] `\n : 'bg-[#fff] underline text-base cursor-pointer border border-[#EBEBEB] py-[7px] px-[39px]'\n }\n onClick={(e) =>\n textStyle(e, 'underline', !fontStyle.underline)\n }\n id=\"underline\"\n >\n U\n </button>\n </div>\n\n {textAlignDisplay === true && (\n <div className=\"textAlign\">\n <div className=\"uppercase font-bold text-sm mb-[8.5px]\">\n Align\n </div>\n <div className=\"flex gap-x-[15px] mb-[16.5px]\">\n <button\n type=\"button\"\n className={\n 'left' === activeButton\n ? `${SELECT_BG_COLOR} text-[#fff] cursor-pointer border border-[#EBEBEB] py-[7px] px-[39px] `\n : 'bg-[#fff] cursor-pointer border border-[#EBEBEB] py-[7px] px-[39px]'\n }\n id=\"left\"\n onClick={textAlignHandler}\n >\n <FiAlignLeft id=\"left\" onClick={textAlignHandler} />\n </button>\n <button\n type=\"button\"\n className={\n 'center' === activeButton\n ? `${SELECT_BG_COLOR} text-[#fff] cursor-pointer border border-[#EBEBEB] y-[7px] px-[39px] `\n : 'bg-[#fff] cursor-pointer border border-[#EBEBEB] py-[7px] px-[39px]'\n }\n id=\"center\"\n onClick={textAlignHandler}\n >\n <FiAlignCenter id=\"center\" onClick={textAlignHandler} />\n </button>\n <button\n type=\"button\"\n className={\n 'right' === activeButton\n ? `${SELECT_BG_COLOR} text-[#fff] cursor-pointer border border-[#EBEBEB] y-[7px] px-[39px] `\n : 'bg-[#fff] cursor-pointer border border-[#EBEBEB] py-[7px] px-[39px]'\n }\n id=\"right\"\n onClick={textAlignHandler}\n >\n <FiAlignRight id=\"right\" onClick={textAlignHandler} />\n </button>\n </div>\n </div>\n )}\n <div className=\"uppercase font-bold text-sm mb-[8.5px]\">\n Text Color\n </div>\n <div className=\"relative\">\n <ColorImpl\n mClass={'ml-0'}\n handleChange={textColorChange}\n property={'backgroundColor'}\n name={'backgroundColor'}\n color={activeSelection.fill}\n />\n </div>\n <div className=\"flex gap-2 mt-4\">\n <div>\n <div className=\"uppercase font-bold text-sm mb-[8.5px]\">\n Outline Size\n </div>\n <input\n type=\"number\"\n id=\"outlineSize\"\n name=\"outlineSize\"\n step=\"0.2\"\n value={outlineVal}\n className=\"border border-[#EBEBEB] py-[10px] pl-[16px] mb-[16.5px] w-[145px]\"\n onChange={textOutlineHandler}\n ></input>\n </div>\n <div>\n <div className=\"uppercase font-bold text-sm mb-[8.5px]\">\n Outline Color\n </div>\n <div className=\"relative\">\n {' '}\n <ColorImpl\n mClass={'ml-0'}\n handleChange={strokeColorChange}\n property={'backgroundColor'}\n name={'backgroundColor'}\n color={activeSelection.stroke}\n />\n </div>\n </div>\n </div>\n <div className=\"flex gap-2\">\n <div>\n <div className=\"uppercase font-bold text-sm mb-[8.5px]\">\n Letter Spacing\n </div>\n <input\n type=\"number\"\n id=\"spacing\"\n name=\"spacing\"\n step=\"10\"\n value={spacingVal}\n className=\"border border-[#EBEBEB] py-[10px] pl-[16px] mb-[16.5px] w-[145px]\"\n onChange={textSpacingHandler}\n ></input>\n </div>\n <div>\n <div className=\"uppercase font-bold text-sm mb-[8.5px]\">\n Nudge\n </div>\n <button\n onClick={nudgeMove}\n id=\"down\"\n className=\"font-medium text-orange-400\"\n >\n DOWN\n </button>\n <button\n onClick={nudgeMove}\n id=\"up\"\n className=\"font-medium text-orange-300 text-lime-400 px-1\"\n >\n UP\n </button>\n <button\n onClick={nudgeMove}\n id=\"left\"\n className=\"font-medium text-orange-300 text-teal-500\"\n >\n LEFT\n </button>\n <button\n onClick={nudgeMove}\n id=\"right\"\n className=\"font-medium text-orange-300 text-violet-600 px-1\"\n >\n RIGHT\n </button>\n </div>\n </div>\n </div>\n )}\n {currentSelection === 'group' && (\n <ImageEdit\n flipX={flipX}\n flipY={flipY}\n changeSVGColor={changeSVGColor}\n nudgeMove={nudgeMove}\n activeSelection={activeSelection}\n />\n )}\n {currentSelection === 'selectAll' && (\n <>\n <div className=\"uppercase font-bold pt-[17px]\">\n Color in Canvas\n </div>\n <div className=\"flex gap-x-[1rem] mt-[12px] mb-[12px]\">\n {allColor?.map((item) => {\n return (\n <ColorImpl\n mClass={'ml-[36px]'}\n key={item}\n handleChange={changeSVGTextColor}\n property={item}\n color={item}\n />\n );\n })}\n </div>\n <button\n onClick={nudgeMove}\n id=\"down\"\n className=\"font-medium text-orange-400\"\n >\n DOWN\n </button>\n <button\n onClick={nudgeMove}\n id=\"up\"\n className=\"font-medium text-orange-300 text-lime-400 px-1\"\n >\n UP\n </button>\n <button\n onClick={nudgeMove}\n id=\"left\"\n className=\"font-medium text-orange-300 text-teal-500\"\n >\n LEFT\n </button>\n <button\n onClick={nudgeMove}\n id=\"right\"\n className=\"font-medium text-orange-300 text-violet-600 px-1\"\n >\n RIGHT\n </button>\n {\n // console.log(storeAllObject);\n storeAllObject.map((item, index) => {\n return (\n <div className=\"innerLayer bg-slate-300 my-1\">\n <img\n className=\"rounded-lg w-14 h-8\"\n src={item ? item['icon'] : ''}\n ></img>\n <button\n className=\"up mx-1 px-2 border-solid border-2 border-slate-500 \"\n onClick={() => layerHandle(item, index, 'plus')}\n >\n UP\n </button>\n <button\n className=\"down mx-1 px-2 border-solid border-2 border-slate-500\"\n onClick={() => layerHandle(item, index, 'minus')}\n >\n DOWN\n </button>\n <button\n className=\"close mx-1 px-2 border-solid border-2 border-slate-500\"\n onClick={() => deleteElement(item)}\n >\n DELETE\n </button>\n </div>\n );\n })\n }\n </>\n )}\n {currentSelection === 'none' && (\n <>\n <div className=\"uppercase font-bold pt-[17px]\">\n Color in Canvas\n </div>\n <div className=\"flex gap-x-[1rem] mt-[12px]\">\n {allColor?.map((item) => {\n return (\n <ColorImpl\n mClass={'ml-[36px]'}\n key={item}\n handleChange={changeSVGTextColor}\n property={item}\n color={item}\n />\n );\n })}\n </div>\n </>\n )}\n </div>\n\n <button\n type=\"button\"\n className=\"mt-3 inline-flex justify-center bg-white px-[110px] py-2 text-sm font-medium text-[#E11A38] shadow-sm ring-1 ring-inset ring-[#E11A38] hover:bg-gray-50 sm:mt-0 w-full\"\n onClick={onSave}\n >\n Save\n </button>\n </div>\n <div\n className=\"hidden opacity-0 transition-opacity duration-150 ease-linear data-[te-tab-active]:block\"\n id=\"tabs-layers\"\n role=\"tabpanel\"\n aria-labelledby=\"tabs-profile-tab02\"\n >\n {currentSelection === 'layer' && (\n <div className=\"\">\n {storeAllObject.map((item, index) => {\n return (\n <div className=\"innerLayer bg-slate-300 my-1\">\n <img\n className=\"rounded-lg w-14 h-8\"\n src={item ? item['icon'] : ''}\n ></img>\n <button\n className=\"up mx-1 px-2 border-solid border-2 border-slate-500 \"\n onClick={() => layerHandle(item, index, 'plus')}\n >\n UP\n </button>\n <button\n className=\"down mx-1 px-2 border-solid border-2 border-slate-500\"\n onClick={() => layerHandle(item, index, 'minus')}\n >\n DOWN\n </button>\n <button\n className=\"close mx-1 px-2 border-solid border-2 border-slate-500\"\n onClick={() => deleteElement(item)}\n >\n DELETE\n </button>\n </div>\n );\n })}\n </div>\n )}\n </div>\n </div>\n </div>\n );\n};\n","import React from 'react';\nimport { MdOutlineArrowForwardIos } from 'react-icons/md';\nimport { Searchbar } from '../searchbar';\nimport { Card, CardMedia, CardBody, CardTitle } from '../card';\nimport { Button } from '../button';\nimport { shallow } from 'zustand/shallow';\nimport { use3dddPlus } from '../../store';\nimport { Loader } from '../loader';\nexport const AddMascot = () => {\n const [stockLogos, stockLogoHandler, loading] = use3dddPlus(\n (state) => [state.stockLogos, state.stockLogoHandler, state.loading],\n shallow\n );\n return (\n <>\n <div className=\"bg-[#F7F7F7] absolute z-100 w-[90%] h-full pr-[56px]\">\n <div className=\"w-full flex mt-[50px] flex-row\">\n <div className=\"w-1/2 flex justify-end\">\n <select className=\"w-[168px] mr-[24px]\">\n <option value={'all'}>All</option>\n </select>\n </div>\n <div className=\" flex-1 justify-end\">\n <Searchbar placeholder={'Search Stock Logos'}></Searchbar>\n </div>\n </div>\n <div className=\"flex flex-row gap-2\">\n <div className=\" bg-[#FFFFFF] ml-[27px] pt-[28px] w-[30%] mt-[30px]\">\n <h3 className=\"ml-[38px] mt-[28px] font-bold\">MASCOTS CATEGORY</h3>\n <Button\n label=\"Namedrops\"\n className=\"text-[15px] !w-[auto] flex-row ml-[30px] mt-[10px] bg-transparent focus:text-[#e11a38]\"\n icons={<MdOutlineArrowForwardIos />}\n onClick={undefined}\n children={undefined}\n />\n <Button\n label=\"Arrows\"\n className=\"text-[15px] !w-[auto] flex-row ml-[30px] mt-[-22px] bg-transparent focus:text-[#e11a38]\"\n icons={<MdOutlineArrowForwardIos />}\n onClick={undefined}\n children={undefined}\n />\n <Button\n label=\"Bears\"\n className=\"flex-row ml-[30px] mt-[-22px] bg-transparent focus:text-[#e11a38] text-[15px] !w-[auto]\"\n icons={<MdOutlineArrowForwardIos />}\n onClick={undefined}\n children={undefined}\n />\n <Button\n label=\"Boar\"\n className=\"flex-row ml-[30px] mt-[-22px] bg-transparent focus:text-[#e11a38] text-[15px] !w-[auto]\"\n icons={<MdOutlineArrowForwardIos />}\n onClick={undefined}\n children={undefined}\n />\n </div>\n <div className=\"flex mt-[30px] overflow-y-auto overflow-x-hidden h-[65vh] w-[70%]\">\n <div className=\"max-h-[140px] grid gap-3.5 grid-cols-3 md:grid-cols-3 lg:grid-cols-4 w-full \">\n {stockLogos.length > 0\n ? stockLogos.map((logo, index) => (\n <Card\n key={'logoImage' + index}\n cardClass={`rounded-none bg-white cursor-pointer `}\n style={{ boxShadow: '0px 0px 6px #98989829' }}\n onClick={() => stockLogoHandler(logo)}\n >\n <CardMedia src={logo} imageClass=\"h-[50px] mt-[26px]\" />\n\n <CardBody bodyClass=\"p-2.5 mt-[13px]\">\n <CardTitle\n titleClass={`text-[11px] uppercase`}\n name={'LOGO NAME'}\n />\n </CardBody>\n </Card>\n ))\n : 'No Stock Logos'}\n </div>\n </div>\n </div>\n </div>\n {loading && <Loader />}\n </>\n );\n};\n","import React from 'react';\n// import { use3dddPlus } from '../../store';\nimport { BACKDROP_BLUR, MODAL_BG_COLOR } from '../../theme';\n\nexport interface ModalProps {\n children?: React.ReactNode;\n className?: string;\n}\n\nexport const SaveDesignModal = ({ children, className = '' }: ModalProps) => {\n // const closeDesign = use3dddPlus((state) => state.setToggleSaveDesign);\n return (\n <>\n <div className={`modal modal-middle modal-open`}>\n <div className={`${className} modal-box ${MODAL_BG_COLOR} `}>\n {children}\n </div>\n <form method=\"dialog\" className={`modal-backdrop ${BACKDROP_BLUR}`}>\n <button>close</button>\n </form>\n </div>\n </>\n );\n};","import React, { useState, useEffect } from 'react';\nimport {\n BUTTON_TEXT_COLOR,\n EDIT_DESIGN_INFO_BG_COLOR_4,\n EDIT_DESIGN_INFO_INPUT_BORDER_COLOR,\n EDIT_DESIGN_INFO_TEXT_COLOR_1,\n EDIT_DESIGN_INFO_TEXT_COLOR_2,\n EDIT_DESIGN_INFO_TEXT_COLOR_3,\n INPUT_ERROR_BORDER_COLOR,\n INPUT_ERROR_TEXT_COLOR,\n SAVEBUTTON_BG_COLOR,\n SECONDARY_COLOR,\n TEXT_SIZE_12,\n TEXT_SIZE_4,\n TEXT_SIZE_5,\n TEXT_SIZE_9,\n} from '../../theme';\nimport { RxCross2 } from 'react-icons/rx';\nimport { use3dddPlus } from '../../store';\nimport { SaveDesignModal } from './saveDesignModal';\nimport './saveDesign.css';\n\nexport const SaveDesign = () => {\n const [designNameValidation, setDesignNameValidation] = useState('');\n const [tagName, setTagName] = useState('');\n const [commaInTagName, setCommaInTagName] = useState(false);\n const [\n canvas,\n designName,\n designTag,\n closeModal,\n toggleSaveDesign,\n disableSaveButton,\n saveLogo,\n uploadLogoConfig,\n ] = use3dddPlus((state) => [\n state.fabricCanvas,\n state.designName,\n state.designTag,\n state.setToggleSaveDesign,\n state.toggleSaveDesign,\n state.disableSaveButton,\n state.saveLogo,\n state.uploadLogoConfig,\n ]);\n\n useEffect(() => {\n return () => {};\n }, []);\n\n const checkValidations = () => {\n const nameValidation = designName.length >= 3;\n if (!nameValidation) {\n setDesignNameValidation('length');\n return nameValidation;\n } else {\n const reg = /^[a-zA-Z0-9 ]+$/;\n const regTest = reg.test(designName);\n if (!!regTest) {\n setDesignNameValidation('');\n return nameValidation;\n }\n return false;\n }\n };\n const onSaveHandler = async () => {\n if (!checkValidations()) return;\n const dataURL = canvas.toDataURL();\n\n const canvasData = use3dddPlus.getState().applyColorFill();\n // const canvasGetobject = canvas.getObjects();\n // canvasData.objects.forEach((element, index) => {\n // element.colorFill = canvasGetobject[index].colorFill;\n // });\n const dataCh = JSON.stringify(canvasData);\n const S3UrlPath = await uploadLogoConfig(dataCh, 117015);\n const raw = JSON.stringify({\n customer_id: 117015,\n tag: designTag.join(''),\n name: designName,\n base64_image: dataURL,\n logo_config_url: S3UrlPath,\n });\n saveLogo(raw).then(() => {\n closeModal('', false, '', {});\n alert('Logo Saved Successfully');\n });\n };\n\n useEffect(() => {\n if (tagName !== '') {\n const reg = /^[a-zA-Z0-9 ]+$/;\n const regTest = reg.test(tagName);\n\n if (!regTest) {\n setCommaInTagName(true);\n } else if (!!commaInTagName) {\n setCommaInTagName(false);\n }\n } else if (!!commaInTagName) {\n setCommaInTagName(false);\n }\n }, [tagName]);\n\n useEffect(() => {\n if (designName !== '') {\n const reg = /^[a-zA-Z0-9 ]+$/;\n const regTest = reg.test(designName);\n if (!regTest) {\n setDesignNameValidation('specialCharacter');\n } else if (designNameValidation === 'specialCharacter') {\n setDesignNameValidation('');\n }\n } else if (designNameValidation === 'specialCharacter') {\n setDesignNameValidation('');\n }\n }, [designName]);\n\n const handleTagChange = (event: any) => {\n if (event?.target?.value !== ' ') {\n setTagName(event.target.value);\n }\n };\n\n const handleKeyDown = (event: any) => {\n if (designTag.length > 4 && tagName !== '') {\n event.preventDefault();\n alert('Maximum number of tag can be 5');\n setTagName('');\n return;\n }\n\n if (\n event.key === 'Enter' ||\n event.key === 'Tab' ||\n (event.keyCode === 188 && tagName !== '') ||\n (event.type === 'blur' && tagName !== '')\n ) {\n event.preventDefault();\n\n const reg = /^[a-zA-Z0-9 ]+$/;\n const regTest = reg.test(tagName);\n if (!regTest) {\n setCommaInTagName(true);\n return;\n }\n if (!!regTest) {\n tagName !== '' && handleAdd();\n }\n } else if (tagName === '' && event.key === 'Backspace') {\n handleBackspace();\n }\n };\n\n const handleNameChange = (value) => {\n use3dddPlus.setState({ designName: value });\n if (designNameValidation === 'length') {\n setDesignNameValidation('');\n }\n };\n\n const handleAdd = () => {\n let newList = [...designTag];\n if (!newList.includes(tagName.trim())) {\n newList.push(tagName.trim());\n }\n use3dddPlus.setState({ designTag: newList.filter(Boolean) });\n setTagName('');\n };\n\n const handleBackspace = () => {\n let newList = [...designTag];\n newList.pop();\n use3dddPlus.setState({ designTag: newList.filter(Boolean) });\n };\n\n const handleDelete = (e) => {\n const newList = designTag.filter((item) => item !== e);\n use3dddPlus.setState({ designTag: newList });\n };\n const onCancelHandler = () => {\n closeModal('', false, '', {});\n };\n return (\n <SaveDesignModal\n className={`md:absolute md:right-30 rounded-none p-0 md:h-auto max-h-screen max-w-[37.125rem] w-[80%] md:w-full m-[auto]\n `}\n >\n <button\n className=\"absolute right-[0.6875rem] top-[0.6875rem] px-[0.75rem] py-[0.75rem] hover:bg-[#E11A38] hover:text-[#ffffff] hover:rounded-none\"\n onClick={() => {\n use3dddPlus.getState().goBack();\n closeModal('', false, '', {});\n }}\n >\n <RxCross2 strokeWidth={1} />\n </button>\n\n <div className={`flex h-max w-full`}>\n <div\n className={`w-full md:px-[112px] md:p-[98px] p-[30px] bg-white h-full flex justify-center`}\n >\n <div className=\"w-full\">\n <span\n className={`block mb-6 font-bold text-2xl lh-1 ${SECONDARY_COLOR} uppercase leading-[2.3125rem] font-bold ${EDIT_DESIGN_INFO_TEXT_COLOR_1} ${TEXT_SIZE_5}\n `}\n >\n {toggleSaveDesign.title}\n </span>\n <div>\n <div className=\"relative\">\n <input\n type=\"text\"\n id=\"exampleFormControlInput2\"\n name=\"designName\"\n className={`${\n designNameValidation === 'length'\n ? 'mb-[1rem]'\n : 'mb-[1.25rem]'\n } ${\n designNameValidation === 'length'\n ? `border ${INPUT_ERROR_BORDER_COLOR}`\n : `border ${EDIT_DESIGN_INFO_INPUT_BORDER_COLOR}`\n } designNameInput bg-white w-full h-[3rem] rounded-none focus:outline-none border ${EDIT_DESIGN_INFO_INPUT_BORDER_COLOR} ${TEXT_SIZE_9} py-[0.8125rem] px-4 block leading-[1.25rem] ${EDIT_DESIGN_INFO_TEXT_COLOR_3} font-medium`}\n placeholder=\" \"\n value={designName}\n onChange={(e) =>\n handleNameChange(e?.target?.value?.trimStart())\n }\n onClick={(e) => {\n e.currentTarget.focus();\n }}\n />\n <label\n htmlFor=\"exampleFormControlInput2\"\n className={`designNameLabel px-[0.125rem] absolute left-4 transition-all ${TEXT_SIZE_9} ${EDIT_DESIGN_INFO_TEXT_COLOR_2} top-1/2 transform -translate-y-1/2`}\n >\n Design Name\n </label>\n </div>\n {designNameValidation === 'length' && (\n <div\n role=\"alert\"\n className={`text-sm ${INPUT_ERROR_TEXT_COLOR} mb-[1.25rem]`}\n >\n * Please enter a name with at least 3 characters\n </div>\n )}\n {designNameValidation === 'specialCharacter' && (\n <div\n role=\"alert\"\n className={`text-sm ${INPUT_ERROR_TEXT_COLOR} mb-[1.25rem]`}\n >\n * Design Name can not have any special characters\n </div>\n )}\n <div\n className={`relative flex flex-row py-[0.695rem] border ${EDIT_DESIGN_INFO_INPUT_BORDER_COLOR} mb-5 flex-wrap place-content-start`}\n >\n <div className=\"flex flex-row gap-[0.5rem] flex-wrap items-center px-[1rem]\">\n {Array.isArray(designTag) &&\n designTag?.map((el: any, i) => (\n <div\n key={i}\n className={`${TEXT_SIZE_12} leading-[0.8125rem] flex h-[1.5rem] items-center pt-[0.375rem] pb-[0.3125rem] px-[0.5rem] rounded gap-[0.4375rem] ${EDIT_DESIGN_INFO_TEXT_COLOR_1} ${EDIT_DESIGN_INFO_BG_COLOR_4}`}\n >\n {el}\n <button onClick={() => handleDelete(el)}>\n <RxCross2\n className={`${EDIT_DESIGN_INFO_TEXT_COLOR_1} font-bold`}\n />\n </button>\n </div>\n ))}\n\n <div>\n <input\n name=\"tags\"\n type=\"text\"\n placeholder=\" \"\n className={`designTagsInput ${EDIT_DESIGN_INFO_TEXT_COLOR_3} font-medium block w-[6.25rem] focus:outline-none`}\n value={tagName}\n onChange={handleTagChange}\n onKeyDown={handleKeyDown}\n onBlur={handleKeyDown}\n id=\"exampleFormControlInput3\"\n onClick={(e) => {\n e.currentTarget.focus();\n }}\n />\n <label\n htmlFor=\"exampleFormControlInput3\"\n className={`py-[0.695rem] ${\n designTag?.length > 0 ? 'tagClass' : ''\n } designTagsLabel px-[0.125rem] ${TEXT_SIZE_9} ${EDIT_DESIGN_INFO_TEXT_COLOR_2} font-medium leading-[1.25rem] absolute transition-all top-1/2 transform -translate-y-1/2`}\n >\n Tags\n </label>\n </div>\n </div>\n </div>\n {!!commaInTagName && (\n <div\n role=\"alert\"\n className={`text-sm ${INPUT_ERROR_TEXT_COLOR} mb-5`}\n >\n * Tag Name can not have any special characters\n </div>\n )}\n\n <div\n className={`${\n !disableSaveButton ? 'flex flex-col lg:flex-row' : ''\n } gap-[19px] leading-[23px] font-bold ${TEXT_SIZE_4}`}\n >\n {toggleSaveDesign.key === 'save' && (\n <>\n <button\n className={`md:btn-md lg:w-2/5 w-full rounded-none uppercase active:bg-violet-700 ${SAVEBUTTON_BG_COLOR} ${BUTTON_TEXT_COLOR}`}\n onClick={() => onSaveHandler()}\n >\n SAVE\n </button>\n <button\n className={`md:btn-md lg:w-2/5 w-full rounded-none uppercase border border-1 border-[#5d5d5d] hover:text-[#ffffff] hover:bg-[#E11A38] hover:border-[#E11A38] justify-center items-center `}\n onClick={() => onCancelHandler()}\n >\n Cancel\n </button>\n </>\n )}\n </div>\n </div>\n </div>\n </div>\n </div>\n </SaveDesignModal>\n );\n};\n","import React from 'react';\nimport { Canvas } from '../canvas';\nimport { use3dddPlus } from '../../store';\nimport { shallow } from 'zustand/shallow';\nimport { UploadLogo } from '../uploadLogo';\nimport { Rightmenu } from '../Rightmenu';\nimport { AddMascot } from '../addMascot';\nimport { MyLogo } from '../myLogo';\nimport { SaveDesign } from '../saveDesign';\nexport const MiddleMenu = ({onApply}) => {\n const [selectedStepper, toggleSaveDesign, loadingLogo] = use3dddPlus(\n (state) => [\n state.selectedStepper,\n state.toggleSaveDesign,\n state.loadingLogo,\n ],\n shallow\n );\n React.useEffect(() => {\n if (selectedStepper === 2) loadingLogo('');\n }, []);\n return (\n <>\n <div className=\" flex flex-col md:flex-row flex-1 z-0 w-[90%] h-full\">\n <div className=\"flex w-[70%] h-[100%]\">\n <Canvas />\n </div>\n {toggleSaveDesign.status && <SaveDesign />}\n <div className=\"flex-1 z-10 h-[100%] \">\n <Rightmenu />\n </div>\n </div>\n {selectedStepper === 1 && <UploadLogo />}\n {selectedStepper === 4 && <AddMascot />}\n {selectedStepper === 2 && <MyLogo onApply={onApply}/>}\n </>\n );\n};\n","import React from 'react';\nimport './index.css';\nimport { use3dddPlus } from './store';\n// import { createRoot } from 'react-dom/client';\nimport * as Components from './components';\nimport * as services from './services';\nimport { LeftMenu } from './components/leftMenu';\nimport { MiddleMenu } from './components/middleMenu';\n// import { Modal } from './components';\n\n// import { ToastContainer, toast } from 'react-toastify';\n// Please do not use types off of a default export module or else Storybook Docs will suffer.\n// see: https://github.com/storybookjs/storybook/issues/9556\n/**\n * A custom App component. Neat!\n */\nconst LogoEditor = ({\n stepperId,\n onApply,\n customLogoColorList,\n defaultColorList,\n logoData,\n}) => {\n const [setSelectedStepper, myLogoHandler] = use3dddPlus((state) => [\n state.setSelectedStepper,\n state.myLogoHandler,\n ]);\n React.useEffect(() => {\n setSelectedStepper(stepperId);\n if (stepperId == undefined) {\n myLogoHandler(logoData);\n\n console.log('logoData', logoData);\n }\n }, [stepperId]);\n\n React.useEffect(() => {\n use3dddPlus.setState({ customUploadLogoColorList: customLogoColorList });\n }, [customLogoColorList]);\n React.useEffect(() => {\n use3dddPlus.setState({ defaultColorList: defaultColorList });\n }, [defaultColorList]);\n console.log('defaultColorList', defaultColorList);\n\n return (\n // <Modal\n // backdropStyle={`z-[7]`}\n // contentStyle={\n // 'top-0 absolute overflow-hidden border-2 border-indigo-600 roboto-bold h-[88vh] m-[auto] z-[7] !mr-[auto] max-w-[73%] w-[100%] md:w-[auto] p-0'\n // }\n // >\n <div className=\" flex flex-col md:flex-row w-full h-[88vh]\">\n <div className=\"lg:w-[10%]\">\n <LeftMenu />\n </div>\n <div className=\" flex h-full w-[90%]\">\n <MiddleMenu onApply={onApply} />\n </div>\n </div>\n // </Modal>\n );\n};\n// const container = document.getElementById('root');\n// const root = createRoot(container!); // createRoot(container!) if you use TypeScript\n// const [customUploadLogoColorList, defaultColorList] = use3dddPlus((state) => [\n// state.customUploadLogoColorList,\n// state.defaultColorList,\n// ]);\n// root.render(\n// <LogoEditor\n// stepperId={1}\n// onApply={''}\n// customLogoColorList={customUploadLogoColorList}\n// defaultColorList={defaultColorList}\n// />\n// );\n\nexport { LogoEditor, Components, use3dddPlus, services };\n"],"names":["styleInject","css","ref","insertAt","document","head","getElementsByTagName","style","createElement","type","firstChild","insertBefore","appendChild","styleSheet","cssText","createTextNode","graphqlSlice","set","get","displayLoginModal","showProductBreakUpModal","status","value","loadDesignModal","productInfoModal","toggleSaveDesign","key","title","details","showModalAfterLogin","undefined","selectedDesign","changeModel","alert","confirmDesignModal","confirmUpdateDesignModal","toggleSuccessfullDesign","designUpdateSuccessfulModal","getListFromRack","setSelectedDesign","selected","setLoadDesignModal","loadDesign","setToggleSaveDesign","setConfirmDesignModal","setConfirmUpdateDesignModal","state","setToggleSuccessfullDesign","setProductInfoModal","editDesignInfo","saveDesignModal","use3dddPlus","setState","current","getState","navigateTo","designName","designNotes","designTag","string","characters","i","charAt","Math","floor","random","length","designNumber","customerId","toggleLoginModal","setShowModalAfterLogin","disableSaveButton","_unused","share","saveRackSuccessfulModal","setSaveRackSuccessfulModal","toggleAction","toogleShowProductBreakUpModal","disableUpdate","productBreakup","baseURL","process","env","REACT_APP_LAMBDA_URL","instance","axios","create","timeout","headers","Content-Type","Authorization","responseBody","response","data","requests","url","then","post","body","put","delete","lambdaSlice","_set","_get","lambdaClient","loadingLogo","_loadingLogo","_asyncToGenerator","_regeneratorRuntime","mark","_callee","wrap","_context","prev","next","loading","Error","sent","retriveLogoDesign","abrupt","t0","console","error","stop","_x","apply","arguments","getStockLogos","_getStockLogos","_callee2","res","_context2","stockLogos","saveLogo","_saveLogo","_callee3","logo","_context3","_x2","saveDesignSlice","designImageUrl","designProofPdfUrl","designConfig","designId","hasDesignNumber","showSaveCTA","showSaveRackCTA","_oldURL","REACT_APP_IMAGE_URL_OLD","_newURL","REACT_APP_IMAGE_URL","getCookie","cname","name","ca","decodeURIComponent","cookie","split","c","substring","indexOf","setCookie","cvalue","exdays","d","Date","setTime","getTime","expires","toUTCString","clearCookie","encryptToken","CryptoJS","AES","encrypt","JSON","stringify","toString","decryptToken","ciphertext","bytes","decrypt","parse","enc","Utf8","includes","replace","texture","item","id","path","ProductMedium","Image_URL","__typename","flipY","queryString","window","location","search","URLSearchParams","REACT_APP_3DDDPLUS_PROJECTID","token","base64","jsonPayload","_window","_window$atob","atob","_window$atob$split","map","charCodeAt","slice","join","dataURI","byteString","ab","ArrayBuffer","ia","Uint8Array","File","strData","filename","link","download","href","click","removeChild","e","x","which","keycode","preventDefault","authSlice","customUploadLogoColorList","defaultColorList","priceLevel","clearLoginInfo","sessionStorage","removeItem","authType","cardCode","customerEmail","customerType","generateCustomizerToken","setInCookies","customizerToken","setItem","setCustomizerToken","getItem","_extends","isLoggedIn","historySlice","history","page","concat","goBack","previousPage","pop","fabricSlice","logoData","setLogoData","allColor","selectedStepper","setSelectedStepper","storeHistory","fabricCanvas","popupCanv","textInfo","uploadImageModalDisplay","currentSelection","activeSelection","selectedAll","colorFill","storeAllObject","iconImage","HideControls","tl","tr","bl","br","ml","mt","mr","mb","mtr","showContextMenu","forStoringAllObject","unshift","forIconCapture","activeObject","getActiveObject","dataURL","toDataURL","left","top","width","scaleX","height","scaleY","nameCounter","duplicateObject","clipboard","clone","cloned","clonedObj","discardActiveObject","evented","canvas","forEachObject","obj","add","setCoords","setActiveObject","requestRenderAll","_objects","updateModifaction","deleteButtonControls","count","skipEvent","undo","clear","renderAll","loadFromJSON","redo","moveDown","element","moveUp","moveRight","moveLeft","applyColorFill","canvasData","toJSON","canvasGetobject","getObjects","objects","forEach","index","toSet","push","contextMenuCoordinates","y","stockLogoHandler","log","logos","now","testSVG","fabric","loadSVGFromURL","options","loadedObject","util","groupSVGElements","scaleToWidth","scaleToHeight","_Fills","ele","strokeWidth","fillColor","fill","removeDuplicates","fillColors","centerObject","icon","myLogoHandler","fetch","logo_config_url","method","text","result","loadingRetrivedFiles","bind","objImage","uploadLogoConfig","_uploadLogoConfig","jsonConfig","bucketName","region","S3","microTime","filePath","params","s3UrlPath","REACT_APP_BUCKET","REACT_APP_REGION","AWS","config","update","accessKeyId","REACT_APP_ACCESSKEY","secretAccessKey","REACT_APP_SECRET_ACCESSKEY","Bucket","Key","Body","ContentType","Promise","resolve","reject","putObject","err","TIFFParser","this","tiffDataView","littleEndian","fileDirectories","prototype","isLittleEndian","BOM","getBytes","TypeError","hasTowel","RangeError","getFieldTagName","fieldTag","fieldTagName","fieldTagNames","315","258","265","264","320","259","33432","306","338","266","289","288","291","290","316","270","257","256","271","281","280","272","254","274","262","284","296","278","277","305","279","273","255","263","282","283","326","327","343","328","433","434","269","336","321","346","347","285","297","317","319","532","339","559","330","292","293","325","323","324","322","301","318","344","286","529","531","530","345","287","37378","40961","36868","36867","34665","36864","33434","41728","37385","40960","33437","42016","37384","37500","37377","37510","33723","34675","700","42112","42113","34377","getFieldTypeName","fieldType","fieldTypeName","fieldTypeNames","1","2","3","4","5","6","7","8","9","10","11","12","getFieldTypeLength","fieldTypeLength","getBits","numBits","byteOffset","bitOffset","newByteOffset","totalBits","shiftRight","shiftLeft","rawBits","getUint8","getUint16","getUint32","bits","numBytes","offset","getFieldValues","typeCount","valueOffset","fieldValues","fieldValueSize","indexOffset","a","String","fromCharCode","clampColorSample","colorSample","bitsPerSample","multiplier","pow","makeRGBAFillValue","r","g","b","parseFileDirectory","numDirEntries","tiffFields","entryCount","values","nextIFDByteOffset","parseTIFF","tiffArrayBuffer","DataView","firstIFDByteOffset","fileDirectory","imageWidth","ImageWidth","imageLength","ImageLength","strips","compression","Compression","samplesPerPixel","SamplesPerPixel","sampleProperties","bitsPerPixel","hasBytesPerPixel","BitsPerSample","bitsPerSampleValues","hasBytesPerSample","bytesPerSample","bytesPerPixel","stripOffsetValues","StripOffsets","numStripOffsetValues","StripByteCounts","stripByteCountValues","ceil","stripOffset","stripByteCount","jIncrement","getHeader","pixel","sample","currentSample","m","sampleInfo","blockLength","iterations","header","getInt8","currentByte","getContext","ctx","fillStyle","RowsPerStrip","rowsPerStrip","numStrips","imageLengthModRowsPerStrip","rowsInLastStrip","numRowsInStrip","numRowsInPreviousStrip","photometricInterpretation","PhotometricInterpretation","extraSamplesValues","numExtraSamples","ExtraSamples","ColorMap","colorMapValues","colorMapSampleSize","numPixels","yPadding","j","pixelSamples","red","green","blue","opacity","k","invertValue","samples","colorMapIndex","fillRect","converterSlice","file","setFile","tiffConvert","_tiffConvert","tiffParser","canvasEl","tiffCanvas","imageUrl","arrayBuffer","imageToSVG","ImageTracer","svgstr","loadSVGFromString","_C","RGBToHex","setControlVisible","arr","filter","rgb","sep","substr","changeSVGColor","property","color","previousColor","addText","Text","lineHeight","fontFamily","fontWeight","stroke","paintFirst","padding","fontSize","charSpacing","lockScalingFlip","layer0","setControlsVisibility","pdfConverter","_resolve","reader","FileReader","onload","readAsArrayBuffer","subscribeWithSelector","actionSlice","datasbase","Button","_ref","React","onClick","className","icons","label","children","Icon","forwardRef","props","_objectWithoutPropertiesLoose","_excluded","tooltip","useTooltipState","placement","TooltipReference","as","Tooltip","zIndex","IconButton","_ref2","_ref2$size","size","_ref2$icon","_excluded2","IconContext","Provider","RLogo","GenIcon","tag","attr","xmlns","viewBox","child","fillRule","transform","MyLogo","AddMascots","clip-path","AddText","ProductColor","FlipH","data-name","FlipV","SelectAll","rx","Copy","Paste","stroke-linecap","stroke-width","SendToBack","stroke-miterlimit","SendToFront","SendAObject","SendUnderObject","EyeDropper","Delete","ActionButtons","_use3dddPlus","shallow","canvasActions","sel","ActiveSelection","disabled","visible","MdLayers","remove","splice","CgUndo","CgRedo","CANVAS_MENU_TEXT","ContextMenu","activeObj","copy","menu","onclick","bringForward","sendBackwards","bringToFront","sendToBack","canvasRef","useRef","resizeCanvas","outerCanvasContainer","getElementById","parentElement","containerWidth","clientWidth","scale","getWidth","zoom","getZoom","setWidth","setHeight","parseInt","clientHeight","getHeight","setViewportTransform","useEffect","canv","Canvas","centeredScaling","preserveObjectStacking","backgroundColor","stopContextMenu","deleteImg","src","rotateImg","settingImg","renderIcon","fabricObject","cornerSize","save","translate","rotate","degreesToRadians","angle","drawImage","restore","Object","objectCaching","transparentCorners","cornerColor","cornerStrokeColor","borderColor","cornerStyle","borderDashArray","controls","deleteControl","Control","offsetY","offsetX","cursorStyle","mouseUpHandler","eventData","canvasTarget","target","render","settingControl","rect","getElement","getBoundingClientRect","clientX","clientY","actionHandler","controlsUtils","rotationWithSnapping","actionName","withConnection","getAllColors","Set","_canv$getObjects","flat","on","_e$selected","_e$selected$","_e$selected2","_e$selected2$","getBoundingRect","max","min","initCanvas","addEventListener","position","border","boxShadow","onBlur","Card","cardClass","CardBody","bodyClass","CardMedia","role","alt","imageClass","backgroundImage","CardTitle","titleClass","FileUploadButton","onFileSelect","fileInputRef","_useState","useState","setIsDragging","onDragEnter","event","onDragLeave","onDragOver","onDrop","droppedFile","dataTransfer","files","htmlFor","MdOutlineFileUpload","_fileInputRef$current","onChange","selectedFile","_event$target$files","accept","ColorPalette","_ref$previousClass","previousClass","_ref$mainIndex","mainIndex","handleColorChange","_ref$mainClass","mainClass","selectColor","setSelectColor","colorList","handleColorClick","TEXT_SIZE_9","ColorBox","boxClass","_ref2$boxClass","ColorImpl","displayPallet","setdisplayPallet","setColor","background","mClass","handleChange","PopUpCanvas","popupCanvas","colorCount","setColorCount","popupcanvas","defaultCursor","hoverCursor","toActiveSelection","mouseClick","getPointer","containsPoint","Number","keys","_Object$keys","CgArrowRight","GiDrop","MdOutlineCancel","objs","alltogetherObj","Group","UploadLogo","setSelectedFile","svgConverter","ext","objectURL","lastIndexOf","URL","createObjectURL","Searchbar","searchBarMainClass","placeholder","onKeyPress","onPaste","currentTarget","focus","input","InputImpl","SortButton","SortByDropdown","isDropdownOpen","setIsDropdownOpen","toggleDropdown","BsSortDown","Loader","_ref$position","_ref$height","loaderRef","onApply","_React$useState","logoSelected","setLogoSelected","logo_url","_ref$className","_ref$label","_ref$iconPosition","iconPosition","checkMarkClass","IoMdCheckmarkCircle","downloadClass","iconClass","pdfUrl","downloadIconClass","HiOutlineDownload","flagClass","flag","tagsClass","descriptionClass","contentStyle","crossOnClick","modalStyle","backdropStyle","open","RxCross2","buttons","buttonMainClass","button","buttonClass","headingStyle","labelStyle","onIconClick","iconStyle","LeftMenu","StepperList","display","SELECT_BG_COLOR","TEXT_COLOR_1","SELECT_TEXT_COLOR","step","ImageEdit","nudgeMove","flipX","_activeSelection$ownM","ownMatrixCache","fontFamilies","Rightmenu","initTE","Tab","textSelected","textAlignDisplay","setTextAlignDisplay","_useState2","outlineVal","setOutlineVal","_useState3","spacingVal","setSpacinglineVal","_useState4","sliderValue","setSliderValue","_useState5","bold","italic","underline","fontStyle","setFontStyle","_useState6","activeButton","setActiveButton","textAlignHandler","aCoords","textStyle","_extends2","layerHandle","num","currentObject","changeArr","fromIndex","toIndex","deleteElement","changeSVGTextColor","subscribe","_current","_previous","lines","FontFace","load","_document$fonts","fonts","classList","INPUT_BG_COLOR","list","FiAlignLeft","FiAlignCenter","FiAlignRight","valueAsNumber","AddMascot","MdOutlineArrowForwardIos","SaveDesignModal","SaveDesign","designNameValidation","setDesignNameValidation","tagName","setTagName","commaInTagName","setCommaInTagName","closeModal","onSaveHandler","dataCh","S3UrlPath","raw","nameValidation","test","customer_id","base64_image","handleKeyDown","keyCode","regTest","handleAdd","handleBackspace","newList","trim","Boolean","_e$target","_e$target$value","trimStart","Array","isArray","el","TEXT_SIZE_12","EDIT_DESIGN_INFO_TEXT_COLOR_1","_event$target","onKeyDown","MiddleMenu","stepperId","customLogoColorList"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"logoeditor.cjs.production.min.js","sources":["../node_modules/style-inject/dist/style-inject.es.js","../src/store/actions/index.ts","../src/axios/index.ts","../src/store/lambda/index.ts","../src/store/saveDesign/index.tsx","../src/services/UrlMapping.ts","../src/services/cookies.ts","../src/services/token.ts","../src/services/getDom.ts","../src/services/saveFile.ts","../src/services/restrictSpecialCharacters.ts","../src/store/auth/index.ts","../src/services/sessionStorage.ts","../src/store/history/index.ts","../src/store/fabric/index.ts","../src/loaders/tiffParser.js","../src/store/converters/index.ts","../src/store/index.ts","../src/components/button/button.tsx","../src/theme.ts","../src/components/icon/icon.tsx","../src/components/icon/rLogo.tsx","../src/components/icon/myLogo.tsx","../src/components/icon/addMascot.tsx","../src/components/icon/addText.tsx","../src/components/icon/productColor.tsx","../src/components/icon/flipH.tsx","../src/components/icon/flipV.tsx","../src/components/icon/selectAll.tsx","../src/components/icon/copy.tsx","../src/components/icon/paste.tsx","../src/components/icon/sendToBack.tsx","../src/components/icon/sendToFront.tsx","../src/components/icon/sendAboveObject.tsx","../src/components/icon/sendUnderObject.tsx","../src/components/icon/eyedropper.tsx","../src/components/icon/delete.tsx","../src/components/canvas/canvasButtons.tsx","../src/components/contextMenu/contextMenu.tsx","../src/components/canvas/canvas.tsx","../src/store/fabric/fabricCanvas.ts","../src/components/card/card.tsx","../src/components/card/cardbody.tsx","../src/components/card/cardmedia.tsx","../src/components/card/cardtitle.tsx","../src/components/uploadLogo/fileuploadButton.tsx","../src/components/colorPallet/colorPalette.tsx","../src/components/colorPallet/color.tsx","../src/components/canvas/popUpCanvas.tsx","../src/store/fabric/Popupcanvas.ts","../src/components/uploadLogo/uploadLogo.tsx","../src/components/searchbar/searchbar.tsx","../src/components/input/input.tsx","../src/components/SortByDropdown/sortButton.tsx","../src/components/SortByDropdown/sortByDropdown.tsx","../src/components/loader/loader.tsx","../src/components/myLogo/myLogo.tsx","../src/components/button/iconButton.tsx","../src/components/button/editButton.tsx","../src/components/card/cardcheckmark.tsx","../src/components/card/carddownloadicon.tsx","../src/components/card/cardflag.tsx","../src/components/card/cardtags.tsx","../src/components/card/carddescription.tsx","../src/components/modal/modal.tsx","../src/components/modal/modalButtons.tsx","../src/components/modal/modalDownloadIcon.tsx","../src/components/modal/modalHeading.tsx","../src/components/modal/modalLabel.tsx","../src/components/modal/modalStatusIcon.tsx","../src/components/leftMenu/leftMenu.tsx","../src/components/Rightmenu/imageEdit.tsx","../src/components/Rightmenu/Rightmenu.tsx","../src/components/addMascot/addMascot.tsx","../src/components/saveDesign/saveDesignModal.tsx","../src/components/saveDesign/saveDesign.tsx","../src/components/middleMenu/middleMenu.tsx","../src/index.tsx"],"sourcesContent":["function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","import { StateCreator } from 'zustand';\nimport { use3dddPlus } from '..';\nimport { Design } from '../customize/types';\n\nexport interface ActionSlice {\n displayLoginModal: boolean;\n showProductBreakUpModal: { status: boolean; value: any };\n loadDesignModal: boolean;\n productInfoModal: any;\n toggleSaveDesign: {\n key: string;\n status: boolean;\n title: string;\n details: any;\n };\n showModalAfterLogin?: void;\n changeModel: () => void;\n editDesignInfo: () => void;\n\n saveDesignModal: () => void;\n setLoadDesignModal: (loadDesign: boolean) => void;\n setProductInfoModal: () => any;\n setToggleSaveDesign: (\n key: string,\n status: boolean,\n title: string,\n details: any\n ) => void;\n share: () => void;\n toggleLoginModal: () => void;\n confirmDesignModal: { status: boolean; value: string };\n setConfirmDesignModal: (status: boolean, value: string) => void;\n toggleSuccessfullDesign: boolean;\n setToggleSuccessfullDesign: () => void;\n selectedDesign: any;\n setSelectedDesign: (selected: Design) => void;\n saveRackSuccessfulModal: boolean;\n setSaveRackSuccessfulModal: () => void;\n setShowModalAfterLogin: (toggleAction: any) => void; //Due to current functionality, toggleAction can have callback function of different types\n disableUpdate: boolean;\n confirmUpdateDesignModal: boolean;\n setConfirmUpdateDesignModal: () => void;\n designUpdateSuccessfulModal: boolean;\n getListFromRack: () => boolean;\n toogleShowProductBreakUpModal: (status: boolean, value: any) => void;\n productBreakup: any[];\n}\n\nconst graphqlSlice: StateCreator<ActionSlice> = (set, get) => {\n return {\n displayLoginModal: false,\n showProductBreakUpModal: {\n status: false,\n value: {},\n },\n loadDesignModal: false,\n productInfoModal: false,\n toggleSaveDesign: { key: 'save', status: false, title: '', details: {} },\n showModalAfterLogin: undefined,\n selectedDesign: {},\n changeModel: () => {\n alert('function not implemented');\n },\n confirmDesignModal: { status: false, value: '' },\n confirmUpdateDesignModal: false,\n toggleSuccessfullDesign: false,\n designUpdateSuccessfulModal: false,\n getListFromRack: () => {\n return false;\n },\n setSelectedDesign: (selected) => {\n set({ selectedDesign: selected });\n },\n setLoadDesignModal: (loadDesign) => {\n set({ loadDesignModal: loadDesign });\n },\n setToggleSaveDesign: (key, status, title, details) => {\n set({\n toggleSaveDesign: {\n key: key,\n status: status,\n title: title,\n details: details,\n },\n });\n },\n setConfirmDesignModal: (status, value) => {\n set({ confirmDesignModal: { status: status, value: value } });\n },\n setConfirmUpdateDesignModal: () => {\n set((state) => ({\n confirmUpdateDesignModal: !state.confirmUpdateDesignModal,\n }));\n },\n setToggleSuccessfullDesign: () => {\n set((state) => ({\n toggleSuccessfullDesign: !state.toggleSuccessfullDesign,\n }));\n },\n setProductInfoModal: () => {\n set((state) => ({ productInfoModal: !state.productInfoModal }));\n },\n\n editDesignInfo: () => {\n alert('function not implemented');\n },\n // rack: () => {\n // alert('function not implemented');\n // },\n\n saveDesignModal: () => {\n try {\n use3dddPlus.setState({ current: 'saveCTA' });\n use3dddPlus.getState().navigateTo('savePopUp');\n use3dddPlus.setState({ designName: '' });\n use3dddPlus.setState({ designNotes: '' });\n use3dddPlus.setState({ designTag: [] });\n let string = '';\n const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';\n\n for (let i = 0; i < 7; i++) {\n string += characters.charAt(\n Math.floor(Math.random() * characters.length)\n );\n }\n use3dddPlus.setState({ designNumber: string });\n\n\n if (!use3dddPlus.getState().customerId) {\n get().toggleLoginModal();\n get().setShowModalAfterLogin(() => {\n use3dddPlus\n .getState()\n .setToggleSaveDesign('save', true, 'Save Your Design', {});\n });\n return;\n }\n get().setToggleSaveDesign('save', true, 'Save Your Design', {});\n use3dddPlus.setState({ disableSaveButton: false });\n } catch {}\n },\n\n \n share: () => {\n alert('function not implemented');\n },\n toggleLoginModal: () => {\n set((state) => ({ displayLoginModal: !state.displayLoginModal }));\n },\n\n saveRackSuccessfulModal: false,\n setSaveRackSuccessfulModal: () => {\n set((state) => ({\n saveRackSuccessfulModal: !state.saveRackSuccessfulModal,\n }));\n },\n setShowModalAfterLogin: (toggleAction) => {\n use3dddPlus.setState({ showModalAfterLogin: toggleAction });\n },\n toogleShowProductBreakUpModal: (status, value) => {\n set({ showProductBreakUpModal: { status: status, value: value } });\n },\n disableUpdate: false,\n productBreakup: [],\n };\n};\n\nexport default graphqlSlice;\n","import axios, { AxiosInstance, AxiosResponse } from 'axios';\n\nexport const baseURL = process.env.REACT_APP_LAMBDA_URL;\n\n// TODO remove ts-ignore; CreateAxiosDefaults<any> not building npm package. \n// @ts-ignore\nexport const instance: AxiosInstance = axios.create({\n baseURL: baseURL,\n timeout: 15000,\n headers: {\n 'Content-Type': 'application/json',\n Authorization: 'jxnhh7rk7gpjtnp1o1besdaip3pd2560',\n },\n});\n\nexport const responseBody = (response: AxiosResponse) => response.data;\n\nexport const requests = {\n get: (url: string) => instance.get(url).then(responseBody),\n post: (url: string, body: {}) => instance.post(url, body).then(responseBody),\n put: (url: string, body: {}) => instance.put(url, body).then(responseBody),\n delete: (url: string) => instance.delete(url).then(responseBody),\n};\n","import { StateCreator } from 'zustand';\nimport { requests } from '../../axios/index';\nimport { use3dddPlus } from '..';\n\n// const useSampleResponses = process.env.REACT_APP_USE_SAMPLE_RESPONSES;\n\n\nexport interface LambdaSlice {\n\n lambdaClient: any;\n\n loadingLogo: (data: any) => void;\n getStockLogos: () => void;\n saveLogo: (data: any) => any; \n}\n\nconst lambdaSlice: StateCreator<LambdaSlice> = (_set, _get) => {\n return {\n lambdaClient: requests,\n\n loadingLogo: async (data: any) => {\n try {\n use3dddPlus.setState({ loading: true });\n if (!requests) {\n throw new Error('lambdaClient Not Found');\n }\n const response = await requests.get(\n `/editor-logo/117015?searchText=+${data}`\n );\n use3dddPlus.setState({ loading: false });\n const res = await response;\n use3dddPlus.setState({ retriveLogoDesign: res });\n return response;\n } catch (error) {\n console.error(error);\n use3dddPlus.setState({ loading: false });\n throw new Error(error);\n }\n },\n getStockLogos: async () => {\n try {\n use3dddPlus.setState({ loading: true });\n if (!requests) {\n throw new Error('lambdaClient Not Found');\n }\n const response = await requests.get('/mascot-logos');\n use3dddPlus.setState({ loading: false });\n const res = await response;\n use3dddPlus.setState({ stockLogos: res });\n return res;\n } catch (error) {\n console.error(error);\n use3dddPlus.setState({ loading: false });\n throw new Error(error);\n }\n },\n saveLogo: async (logo) => {\n try {\n use3dddPlus.setState({ loading: true });\n if (!requests) {\n throw new Error('lambdaClient Not Found');\n }\n const response = await requests.post('/editor-logo', logo);\n use3dddPlus.setState({ loading: false });\n return response;\n } catch (error) {\n console.error(error);\n use3dddPlus.setState({ loading: false });\n throw new Error(error);\n }\n },\n };\n};\n\nexport default lambdaSlice;\n","import { StateCreator } from 'zustand';\nexport interface SaveDesignSlice {\n disableSaveButton: boolean;\n designNumber: string;\n designImageUrl: string;\n designProofPdfUrl: string;\n designTag: string[];\n designName: string;\n designNotes: string;\n designConfig: string;\n designId: number;\n hasDesignNumber: () => boolean;\n showSaveCTA: boolean;\n showSaveRackCTA: boolean;\n}\n\nexport const saveDesignSlice: StateCreator<SaveDesignSlice> = (_set, get) => {\n return {\n disableSaveButton: false,\n designNumber: '',\n designImageUrl: '',\n designProofPdfUrl: '',\n designTag: [],\n designName: '',\n designNotes: '',\n designConfig: '',\n designId: undefined,\n hasDesignNumber: () => !!get().designNumber,\n showSaveCTA: true,\n showSaveRackCTA: true,\n };\n};\n\nexport default SaveDesignSlice;\n","\n// import { Texture } from '../store/customize/types';\n\nconst _oldURL = process.env.REACT_APP_IMAGE_URL_OLD!;\nconst _newURL = process.env.REACT_APP_IMAGE_URL!;\nexport const URLMapping = (url: string) => {\n // check if th url has old or new url paths\n if (url.includes(_oldURL)) {\n return url.replace(_oldURL, _newURL);\n }\n // if it has old then relace to new\n else if (url.includes(_newURL)) return url;\n // if it doesnot have nay then add new\n else {\n return _newURL + url;\n }\n};\n\n// export const getTextureDataFromId = (id) => {\n// const textureData = use3dddPlus.getState().productTextures;\n\n// // const textureData = [];\n// return textureData.filter((texture) => texture.id === id).filter(Boolean)[0];\n// };\n\nexport const constructMappingItem = (texture?: any, item?: any) => {\n return {\n id: item?.id,\n name: item?.name,\n path: item?.ProductMedium.Image_URL,\n type: item?.__typename,\n flipY: texture ? texture.flipY : false,\n };\n};\n\nexport const getImageURL = (path: string) => {\n return process.env.REACT_APP_IMAGE_URL + path; //item?.ProductMedium?.Image_URL\n};\n","export function getCookie(cname: string) {\n let name = cname + '=';\n let decodedCookie = decodeURIComponent(document.cookie);\n let ca = decodedCookie.split(';');\n for (let i = 0; i < ca.length; i++) {\n let c = ca[i];\n while (c.charAt(0) == ' ') {\n c = c.substring(1);\n }\n if (c.indexOf(name) == 0) {\n return c.substring(name.length, c.length);\n }\n }\n return '';\n}\n\nexport function setCookie(cname: string, cvalue: any, exdays: number) {\n const d = new Date();\n d.setTime(d.getTime() + exdays * 24 * 60 * 60 * 1000);\n let expires = 'expires=' + d.toUTCString();\n document.cookie = cname + '=' + cvalue + ';' + expires + ';path=/';\n}\n\nexport const clearCookie = (cname: string, cvalue = '') => {\n const d = new Date();\n d.setTime(d.getTime());\n let expires = 'expires=' + d.toUTCString();\n document.cookie = cname + '=' + cvalue + ';' + expires + ';path=/';\n};\n","import CryptoJS from 'crypto-js';\nexport const encryptToken = (data: any) => {\n return CryptoJS.AES.encrypt(\n JSON.stringify(data),\n 'secret key 123'\n ).toString();\n};\nexport const decryptToken = (ciphertext: string) => {\n var bytes = CryptoJS.AES.decrypt(ciphertext, 'secret key 123');\n return JSON.parse(bytes.toString(CryptoJS.enc.Utf8));\n};\n\nexport const getProjectId = () => {\n const queryString = window.location.search;\n const urlParams = new URLSearchParams(queryString);\n const projectId = urlParams.get('projectId');\n return projectId || process.env.REACT_APP_3DDDPLUS_PROJECTID;\n};\n\nexport function parseJwt(token) {\n var base64Url = token.split('.')[1];\n var base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/');\n var jsonPayload = decodeURIComponent(\n window\n ?.atob(base64)\n ?.split('')\n ?.map(function (c) {\n return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);\n })\n .join('')\n );\n\n return JSON.parse(jsonPayload);\n}\n","//import { use3dddPlus } from '../store';\n\n// export const getDomImage = () => {\n// var strMime = 'image/jpeg';\n// const imgData = use3dddPlus.getState().gl.domElement.toDataURL(strMime);\n\n// return dataURItoBlob(imgData);\n// };\n\nexport function dataURItoBlob(dataURI) {\n // convert base64 to raw binary data held in a string\n // doesn't handle URLEncoded DataURIs - see SO answer #6850276 for code that does this\n var byteString = atob(dataURI.split(',')[1]);\n\n // separate out the mime component\n // var mimeString = dataURI.split(',')[0].split(':')[1].split(';')[0];\n\n // write the bytes of the string to an ArrayBuffer\n var ab = new ArrayBuffer(byteString.length);\n var ia = new Uint8Array(ab);\n for (var i = 0; i < byteString.length; i++) {\n ia[i] = byteString.charCodeAt(i);\n }\n\n //Old Code\n //write the ArrayBuffer to a blob, and you're done\n //var bb = new BlobBuilder();\n //bb.append(ab);\n //return bb.getBlob(mimeString);\n\n //New Code\n return new File([ab], new Date().getTime() + '_configuration' + '.jpg', {\n type: 'image/jpeg',\n // lastModified: new Date(),\n });\n}\n","// function called to save image\nexport const saveFile = function (strData: string, filename: string) {\n let link = document.createElement('a');\n document.body.appendChild(link);\n link.download = filename;\n link.href = strData;\n link.click();\n document.body.removeChild(link);\n};\n","// The key code condition we provided refers to the following key ranges:\n// 1. `(x >= 97 && x <= 122)`: This condition checks for lowercase alphabets in the ASCII range. Key codes 97 to 122 correspond to the characters 'a' to 'z'.\n// 2. `(x >= 48 && x <= 57)`: This condition checks for numeric key codes in the ASCII range. Key codes 48 to 57 correspond to the digits '0' to '9'.\n// 3. `(x >= 65 && x <= 90)`: This condition checks for uppercase alphabets in the ASCII range. Key codes 65 to 90 correspond to the characters 'A' to 'Z'.\n// 4. `(x >= 32 && x <= 32)`: This condition checks for the spacebar key. The key code 32 represents the space character.\n// By using these key code conditions, we are checking if the pressed key falls within the range of lowercase alphabets, numeric digits, uppercase alphabets, or the space character.\n\n\nexport const restrictSpecialCharacters = function (e) {\n const x = e.which || e.keycode;\n if (\n (x >= 97 && x <= 122) ||\n (x >= 48 && x <= 57) ||\n (x >= 65 && x <= 90) ||\n (x >= 32 && x <= 32)\n ) {\n return true;\n } else return e.preventDefault();\n};","import { StateCreator } from 'zustand';\nimport {\n clearCookie,\n decryptToken,\n encryptToken,\n getCookie,\n setCookie,\n} from '../../services';\nimport {\n clearSessionStorage,\n getSessionStorage,\n setSessionStorage,\n} from '../../services/sessionStorage';\n\nexport interface AuthSlice {\n authType?: string;\n cardCode?: string;\n customerEmail?: string;\n customerId?: number;\n customerType?: string;\n priceLevel: string;\n token?: string;\n clearLoginInfo: () => void;\n generateCustomizerToken: (setInCookies?: boolean) => void;\n setCustomizerToken: () => void;\n isLoggedIn: () => boolean;\n customUploadLogoColorList: any[];\n defaultColorList: any[];\n}\n\nexport const authSlice: StateCreator<AuthSlice> = (set, get) => {\n return {\n customUploadLogoColorList: [],\n defaultColorList: [],\n priceLevel: '',\n token: '',\n clearLoginInfo: () => {\n clearCookie('customizerToken');\n clearSessionStorage('customizerToken');\n set({\n authType: '',\n cardCode: '',\n customerEmail: '',\n customerId: null,\n customerType: '',\n priceLevel: '',\n token: '',\n });\n },\n generateCustomizerToken: (setInCookies = true) => {\n const authType = get().authType;\n const cardCode = get().cardCode;\n const customerEmail = get().customerEmail;\n const customerId = get().customerId;\n const customerType = get().priceLevel;\n const token = get().token;\n\n const customizerToken = encryptToken({\n authType,\n cardCode,\n customerEmail,\n customerId,\n customerType,\n token,\n });\n if (setInCookies) {\n setCookie('customizerToken', customizerToken, 1);\n } else {\n setSessionStorage('customizerToken', customizerToken);\n }\n },\n setCustomizerToken: () => {\n const customizerToken: any =\n getSessionStorage('customizerToken') || getCookie('customizerToken');\n\n if (!customizerToken) return;\n const decrypt: any = decryptToken(customizerToken);\n\n set({\n ...decrypt,\n });\n },\n isLoggedIn: () => (!!get().customerId ? true : false),\n };\n};\n\nexport default AuthSlice;\n","export const clearSessionStorage = (cname: string) => {\n sessionStorage.removeItem(cname);\n};\n\nexport const getSessionStorage = (sName: string) => {\n return sessionStorage.getItem(sName);\n};\n\nexport const setSessionStorage = (cname: string, cvalue: any) => {\n sessionStorage.setItem(cname, cvalue);\n};\n","import { StateCreator } from 'zustand';\n// import { use3dddPlus } from '..';\n\nexport interface HistorySlice {\n history: string[];\n current: string;\n navigateTo: (page: string) => void;\n goBack: () => void;\n}\n\nexport const historySlice: StateCreator<HistorySlice> = (set, _get) => {\n return {\n history: [],\n current: '',\n navigateTo: (page: string) => {\n set((state) => ({\n history: [...state.history, state.current],\n current: page,\n }));\n },\n goBack: () => {\n set((state) => {\n if (state.history.length > 0) {\n const previousPage = state.history.pop()!;\n return {\n history: [...state.history],\n current: previousPage,\n };\n }\n return state;\n });\n },\n }\n}\nexport default HistorySlice;\n","import { StateCreator } from 'zustand';\nimport { fabric } from 'fabric';\nimport { use3dddPlus } from '..';\nimport AWS from 'aws-sdk';\nexport interface FabricSlice {\n loading: Boolean;\n selectedStepper?: any;\n setSelectedStepper?: (selectedStepper: any) => void;\n storeHistory: any;\n count: number;\n stockLogos: [];\n retriveLogoDesign: [];\n fabricCanvas: any;\n popupCanv: any;\n textInfo: string;\n uploadImageModalDisplay: boolean;\n currentSelection: string;\n activeSelection: any;\n selectedAll: boolean;\n colorFill: any;\n // colorFillPopup : {},\n storeAllObject: [];\n iconImage: string;\n HideControls: any;\n showContextMenu: boolean;\n forStoringAllObject: (data: any) => void;\n forIconCapture: () => void;\n duplicateObject: () => void;\n deleteButtonControls: () => void;\n undo: () => void;\n redo: () => void;\n moveDown: (element) => void;\n moveUp: (element) => void;\n moveRight: (element) => void;\n moveLeft: (element) => void;\n applyColorFill: () => any;\n updateModifaction: (saveHistory: boolean) => void;\n nameCounter: any;\n contextMenuCoordinates: { x: number; y: number };\n stockLogoHandler: (e: any) => void;\n testSVG: (data: any) => void;\n myLogoHandler: (logo: any) => void;\n loadingRetrivedFiles: (data: any) => void;\n allColor: any;\n uploadLogoConfig: (jsonConfig: any, customerId: any) => any;\n logoData: any;\n setLogoData: (logo: any) => void;\n}\n\nexport const fabricSlice: StateCreator<FabricSlice> = (set, get) => {\n return {\n logoData: null,\n setLogoData: (logoData) => set({ logoData }),\n allColor: [],\n loading: true,\n selectedStepper: 1,\n setSelectedStepper: (selectedStepper) => set({ selectedStepper }),\n storeHistory: [],\n stockLogos: [],\n retriveLogoDesign: [],\n fabricCanvas: null,\n popupCanv: null,\n textInfo: 'NEW TEXT',\n uploadImageModalDisplay: false,\n currentSelection: 'layer',\n activeSelection: null,\n selectedAll: false,\n colorFill: {},\n // colorFillPopup : {},\n storeAllObject: [],\n iconImage: '',\n HideControls: {\n tl: true,\n tr: true,\n bl: true, //false\n br: true,\n ml: false,\n mt: false,\n mr: false,\n mb: false,\n mtr: true,\n // 'cornerColor':'yellow'\n },\n showContextMenu: false,\n\n forStoringAllObject: (data) => {\n //@ts-ignore\n get().storeAllObject.unshift(data); //FOR PUSHING THE ARRAY RESERVE\n },\n forIconCapture: () => {\n const activeObject = get().fabricCanvas.getActiveObject();\n if (activeObject) {\n const dataURL = get().fabricCanvas.toDataURL({\n left: activeObject.left,\n top: activeObject.top,\n width: activeObject.width * activeObject.scaleX,\n height: activeObject.height * activeObject.scaleY,\n });\n set({ iconImage: dataURL });\n }\n },\n nameCounter: 0,\n duplicateObject: () => {\n let clipboard;\n get()\n .fabricCanvas.getActiveObject()\n .clone((cloned) => {\n clipboard = cloned;\n });\n clipboard.clone((clonedObj) => {\n get().fabricCanvas.discardActiveObject();\n clonedObj.set({\n left: clonedObj.left + 10,\n top: clonedObj.top + 10,\n evented: true,\n });\n if (clonedObj.type === 'activeSelection') {\n clonedObj.canvas = get().fabricCanvas;\n clonedObj.forEachObject((obj: any) => {\n get().fabricCanvas.add(obj);\n });\n clonedObj.setCoords();\n } else {\n get().fabricCanvas.add(clonedObj);\n }\n clipboard.top += 10;\n clipboard.left += 10;\n get().fabricCanvas.setActiveObject(clonedObj);\n get().fabricCanvas.requestRenderAll();\n clonedObj._objects.map((data) => {\n get().forStoringAllObject(data);\n });\n });\n get().updateModifaction(true);\n },\n deleteButtonControls: () => {\n // console.log(deleteIcon,'SELECTED......',getObj);\n },\n count: 0,\n skipEvent: false,\n undo: () => {\n if (get().count < get().storeHistory.length) {\n get().fabricCanvas.clear().renderAll();\n get().fabricCanvas.loadFromJSON(\n get().storeHistory[get().storeHistory.length - 1 - get().count - 1]\n );\n get().fabricCanvas.renderAll();\n get().count += 1;\n }\n },\n redo: () => {\n if (get().count > 0) {\n get().fabricCanvas.clear().renderAll();\n get().fabricCanvas.loadFromJSON(\n get().storeHistory[get().storeHistory.length - 1 - get().count + 1]\n );\n get().fabricCanvas.renderAll();\n get().count -= 1;\n }\n },\n moveDown: (element) => {\n element.top = element.top + 2;\n get().fabricCanvas.renderAll();\n },\n moveUp: (element) => {\n element.top = element.top - 2;\n get().fabricCanvas.renderAll();\n },\n moveRight: (element) => {\n element.left = element.left + 2;\n get().fabricCanvas.renderAll();\n },\n moveLeft: (element) => {\n element.left = element.left - 2;\n get().fabricCanvas.renderAll();\n },\n applyColorFill: () => {\n const canvasData = get().fabricCanvas.toJSON();\n const canvasGetobject = get().fabricCanvas.getObjects();\n canvasData.objects.forEach((element: any, index: any) => {\n element.colorFill = canvasGetobject[index].colorFill;\n });\n return canvasData;\n },\n updateModifaction: (toSet) => {\n if (toSet) {\n get().storeHistory.push(get().applyColorFill());\n }\n },\n\n contextMenuCoordinates: { x: 0, y: 0 },\n stockLogoHandler: (e: any) => {\n console.log(e);\n // let logos = get().stockLogos[e.target.id];\n //@ts-ignore\n let logos = e + '?timestamp=' + Date.now();\n use3dddPlus.setState({ selectedStepper: undefined });\n get().testSVG(logos);\n },\n testSVG: (data) => {\n fabric.loadSVGFromURL(data, (objects, options) => {\n const loadedObject = fabric.util.groupSVGElements(objects, options);\n // console.log(svg)\n loadedObject.scaleToWidth(100);\n loadedObject.scaleToHeight(100);\n //@ts-ignore\n let objImage = loadedObject._objects;\n let _Fills = [];\n objImage.forEach((ele) => {\n ele.set({ strokeWidth: 0 });\n use3dddPlus.setState({ fillColor: [...ele.fill] });\n _Fills.push(ele.fill);\n });\n use3dddPlus.setState({\n //@ts-ignore\n fillColor: use3dddPlus.getState().removeDuplicates(_Fills),\n });\n //@ts-ignore\n _Fills = use3dddPlus.getState().removeDuplicates(_Fills);\n const fillColors = {};\n _Fills.map((item, index) => {\n fillColors['layer' + index] = item;\n });\n use3dddPlus.setState({ colorFill: fillColors });\n loadedObject.set({\n //@ts-ignore\n colorFill: fillColors,\n });\n get().fabricCanvas.add(loadedObject).renderAll();\n get().fabricCanvas.centerObject(loadedObject);\n get().fabricCanvas.setActiveObject(loadedObject);\n use3dddPlus.setState({ activeSelection: loadedObject });\n use3dddPlus.getState().forStoringAllObject(loadedObject);\n get()\n .fabricCanvas.getActiveObject()\n .toDataURL(function (data) {\n console.log('00000', data);\n });\n\n use3dddPlus.getState().forIconCapture();\n //@ts-ignore\n loadedObject.icon = use3dddPlus.getState().iconImage;\n });\n },\n myLogoHandler: (logo: any) => {\n\n let jsonData = logo.logo_config_url;\n var requestOptions = {\n method: 'GET',\n };\n fetch(jsonData, requestOptions)\n .then((response) => response.text())\n .then((result) => get().loadingRetrivedFiles(result))\n .catch((error) => console.log('error', error));\n },\n // loadingRetrivedFiles: (data: any) => {\n // let canvas = use3dddPlus.getState().fabricCanvas;\n // canvas.loadFromJSON(JSON.parse(data), function () {\n // canvas.renderAll.bind(canvas);\n // use3dddPlus.setState({ selectedStepper: undefined });\n\n // let objImage = canvas?.getObjects()._objects;\n // let _Fills = [];\n // objImage?.forEach((ele) => {\n // ele.set({ strokeWidth: 0 });\n // use3dddPlus.setState({ fillColor: [...ele.fill] });\n // _Fills.push(ele.fill);\n // });\n // use3dddPlus.setState({\n // //@ts-ignore\n // fillColor: use3dddPlus.getState().removeDuplicates(_Fills),\n // });\n // //@ts-ignore\n // _Fills = use3dddPlus.getState().removeDuplicates(_Fills);\n // const fillColors = {};\n // _Fills.map((item, index) => {\n // fillColors['layer' + index] = item;\n // });\n // use3dddPlus.setState({ colorFill: fillColors });\n // canvas?.getObjects().set({\n // colorFill: fillColors,\n // // setControlVisible:false,\n // });\n // });\n // },\n\n loadingRetrivedFiles: (data: any) => {\n let canvas = use3dddPlus.getState().fabricCanvas;\n canvas.loadFromJSON(JSON.parse(data), function () {\n canvas.renderAll();\n use3dddPlus.setState({ selectedStepper: undefined });\n let objImage = canvas?.getObjects();\n objImage?.forEach((ele) => {\n if (ele.type === 'path') {\n // Assuming SVG paths have fill property\n const fillColor = ele.fill;\n ele.set({ strokeWidth: 0 });\n use3dddPlus.setState({ fillColor: [...fillColor] });\n }\n });\n let _Fills = objImage\n ?.filter((ele) => ele.type === 'path')\n .map((ele) => ele.fill);\n _Fills = use3dddPlus.getState().removeDuplicates(_Fills);\n const fillColors = _Fills.reduce((colors, item, index) => {\n colors['layer' + index] = item;\n return colors;\n }, {});\n use3dddPlus.setState({\n fillColor: _Fills,\n colorFill: fillColors,\n });\n\n objImage\n ?.filter((ele) => ele.type === 'path')\n .forEach((obj) => {\n obj.set({ colorFill: fillColors });\n });\n\n canvas?.renderAll();\n });\n },\n uploadLogoConfig: async (jsonConfig, customerId) => {\n const bucketName = process.env.REACT_APP_BUCKET;\n const region = process.env.REACT_APP_REGION;\n AWS.config.update({\n accessKeyId: process.env.REACT_APP_ACCESSKEY,\n secretAccessKey: process.env.REACT_APP_SECRET_ACCESSKEY,\n });\n const S3 = new AWS.S3({\n params: { Bucket: bucketName },\n region: region,\n });\n\n const microTime = Date.now();\n const filePath = `my-logos/logo-config/${customerId}/${microTime}.json`;\n const params = {\n Bucket: bucketName,\n Key: filePath,\n Body: jsonConfig,\n ContentType: 'application/json',\n };\n\n const s3UrlPath = `https://${bucketName}.s3.${region}.amazonaws.com/${filePath}`;\n return new Promise((resolve, reject) => {\n S3.putObject(params, function (err: any) {\n if (err) {\n console.log('Error occurred while connecting S3 bucket!', err);\n reject(err);\n } else {\n resolve(s3UrlPath);\n }\n });\n });\n },\n };\n};\n\nexport default FabricSlice;\n","/* This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/. */\n\n'use strict';\n\nexport function TIFFParser() {\n this.tiffDataView = undefined;\n this.littleEndian = undefined;\n this.fileDirectories = [];\n}\n\nTIFFParser.prototype = {\n isLittleEndian: function () {\n // Get byte order mark.\n var BOM = this.getBytes(2, 0);\n\n // Find out the endianness.\n if (BOM === 0x4949) {\n this.littleEndian = true;\n } else if (BOM === 0x4d4d) {\n this.littleEndian = false;\n } else {\n console.log(BOM);\n throw TypeError('Invalid byte order value.');\n }\n\n return this.littleEndian;\n },\n\n hasTowel: function () {\n // Check for towel.\n if (this.getBytes(2, 2) !== 42) {\n throw RangeError('You forgot your towel!');\n return false;\n }\n\n return true;\n },\n\n getFieldTagName: function (fieldTag) {\n // See: http://www.digitizationguidelines.gov/guidelines/TIFF_Metadata_Final.pdf\n // See: http://www.digitalpreservation.gov/formats/content/tiff_tags.shtml\n var fieldTagNames = {\n // TIFF Baseline\n 0x013b: 'Artist',\n 0x0102: 'BitsPerSample',\n 0x0109: 'CellLength',\n 0x0108: 'CellWidth',\n 0x0140: 'ColorMap',\n 0x0103: 'Compression',\n 0x8298: 'Copyright',\n 0x0132: 'DateTime',\n 0x0152: 'ExtraSamples',\n 0x010a: 'FillOrder',\n 0x0121: 'FreeByteCounts',\n 0x0120: 'FreeOffsets',\n 0x0123: 'GrayResponseCurve',\n 0x0122: 'GrayResponseUnit',\n 0x013c: 'HostComputer',\n 0x010e: 'ImageDescription',\n 0x0101: 'ImageLength',\n 0x0100: 'ImageWidth',\n 0x010f: 'Make',\n 0x0119: 'MaxSampleValue',\n 0x0118: 'MinSampleValue',\n 0x0110: 'Model',\n 0x00fe: 'NewSubfileType',\n 0x0112: 'Orientation',\n 0x0106: 'PhotometricInterpretation',\n 0x011c: 'PlanarConfiguration',\n 0x0128: 'ResolutionUnit',\n 0x0116: 'RowsPerStrip',\n 0x0115: 'SamplesPerPixel',\n 0x0131: 'Software',\n 0x0117: 'StripByteCounts',\n 0x0111: 'StripOffsets',\n 0x00ff: 'SubfileType',\n 0x0107: 'Threshholding',\n 0x011a: 'XResolution',\n 0x011b: 'YResolution',\n\n // TIFF Extended\n 0x0146: 'BadFaxLines',\n 0x0147: 'CleanFaxData',\n 0x0157: 'ClipPath',\n 0x0148: 'ConsecutiveBadFaxLines',\n 0x01b1: 'Decode',\n 0x01b2: 'DefaultImageColor',\n 0x010d: 'DocumentName',\n 0x0150: 'DotRange',\n 0x0141: 'HalftoneHints',\n 0x015a: 'Indexed',\n 0x015b: 'JPEGTables',\n 0x011d: 'PageName',\n 0x0129: 'PageNumber',\n 0x013d: 'Predictor',\n 0x013f: 'PrimaryChromaticities',\n 0x0214: 'ReferenceBlackWhite',\n 0x0153: 'SampleFormat',\n 0x022f: 'StripRowCounts',\n 0x014a: 'SubIFDs',\n 0x0124: 'T4Options',\n 0x0125: 'T6Options',\n 0x0145: 'TileByteCounts',\n 0x0143: 'TileLength',\n 0x0144: 'TileOffsets',\n 0x0142: 'TileWidth',\n 0x012d: 'TransferFunction',\n 0x013e: 'WhitePoint',\n 0x0158: 'XClipPathUnits',\n 0x011e: 'XPosition',\n 0x0211: 'YCbCrCoefficients',\n 0x0213: 'YCbCrPositioning',\n 0x0212: 'YCbCrSubSampling',\n 0x0159: 'YClipPathUnits',\n 0x011f: 'YPosition',\n\n // EXIF\n 0x9202: 'ApertureValue',\n 0xa001: 'ColorSpace',\n 0x9004: 'DateTimeDigitized',\n 0x9003: 'DateTimeOriginal',\n 0x8769: 'Exif IFD',\n 0x9000: 'ExifVersion',\n 0x829a: 'ExposureTime',\n 0xa300: 'FileSource',\n 0x9209: 'Flash',\n 0xa000: 'FlashpixVersion',\n 0x829d: 'FNumber',\n 0xa420: 'ImageUniqueID',\n 0x9208: 'LightSource',\n 0x927c: 'MakerNote',\n 0x9201: 'ShutterSpeedValue',\n 0x9286: 'UserComment',\n\n // IPTC\n 0x83bb: 'IPTC',\n\n // ICC\n 0x8773: 'ICC Profile',\n\n // XMP\n 0x02bc: 'XMP',\n\n // GDAL\n 0xa480: 'GDAL_METADATA',\n 0xa481: 'GDAL_NODATA',\n\n // Photoshop\n 0x8649: 'Photoshop',\n };\n\n var fieldTagName;\n\n if (fieldTag in fieldTagNames) {\n fieldTagName = fieldTagNames[fieldTag];\n } else {\n console.log('Unknown Field Tag:', fieldTag);\n fieldTagName = 'Tag' + fieldTag;\n }\n\n return fieldTagName;\n },\n\n getFieldTypeName: function (fieldType) {\n var fieldTypeNames = {\n 0x0001: 'BYTE',\n 0x0002: 'ASCII',\n 0x0003: 'SHORT',\n 0x0004: 'LONG',\n 0x0005: 'RATIONAL',\n 0x0006: 'SBYTE',\n 0x0007: 'UNDEFINED',\n 0x0008: 'SSHORT',\n 0x0009: 'SLONG',\n 0x000a: 'SRATIONAL',\n 0x000b: 'FLOAT',\n 0x000c: 'DOUBLE',\n };\n\n var fieldTypeName;\n\n if (fieldType in fieldTypeNames) {\n fieldTypeName = fieldTypeNames[fieldType];\n }\n\n return fieldTypeName;\n },\n\n getFieldTypeLength: function (fieldTypeName) {\n var fieldTypeLength;\n\n if (['BYTE', 'ASCII', 'SBYTE', 'UNDEFINED'].indexOf(fieldTypeName) !== -1) {\n fieldTypeLength = 1;\n } else if (['SHORT', 'SSHORT'].indexOf(fieldTypeName) !== -1) {\n fieldTypeLength = 2;\n } else if (['LONG', 'SLONG', 'FLOAT'].indexOf(fieldTypeName) !== -1) {\n fieldTypeLength = 4;\n } else if (\n ['RATIONAL', 'SRATIONAL', 'DOUBLE'].indexOf(fieldTypeName) !== -1\n ) {\n fieldTypeLength = 8;\n }\n\n return fieldTypeLength;\n },\n\n getBits: function (numBits, byteOffset, bitOffset) {\n bitOffset = bitOffset || 0;\n var extraBytes = Math.floor(bitOffset / 8);\n var newByteOffset = byteOffset + extraBytes;\n var totalBits = bitOffset + numBits;\n var shiftRight = 32 - numBits;\n\n if (totalBits <= 0) {\n console.log(numBits, byteOffset, bitOffset);\n throw RangeError('No bits requested');\n } else if (totalBits <= 8) {\n var shiftLeft = 24 + bitOffset;\n var rawBits = this.tiffDataView.getUint8(\n newByteOffset,\n this.littleEndian\n );\n } else if (totalBits <= 16) {\n var shiftLeft = 16 + bitOffset;\n var rawBits = this.tiffDataView.getUint16(\n newByteOffset,\n this.littleEndian\n );\n } else if (totalBits <= 32) {\n var shiftLeft = bitOffset;\n var rawBits = this.tiffDataView.getUint32(\n newByteOffset,\n this.littleEndian\n );\n } else {\n console.log(numBits, byteOffset, bitOffset);\n throw RangeError('Too many bits requested');\n }\n\n var chunkInfo = {\n bits: (rawBits << shiftLeft) >>> shiftRight,\n byteOffset: newByteOffset + Math.floor(totalBits / 8),\n bitOffset: totalBits % 8,\n };\n\n return chunkInfo;\n },\n\n getBytes: function (numBytes, offset) {\n if (numBytes <= 0) {\n console.log(numBytes, offset);\n throw RangeError('No bytes requested');\n } else if (numBytes <= 1) {\n return this.tiffDataView.getUint8(offset, this.littleEndian);\n } else if (numBytes <= 2) {\n return this.tiffDataView.getUint16(offset, this.littleEndian);\n } else if (numBytes <= 3) {\n return this.tiffDataView.getUint32(offset, this.littleEndian) >>> 8;\n } else if (numBytes <= 4) {\n return this.tiffDataView.getUint32(offset, this.littleEndian);\n } else {\n console.log(numBytes, offset);\n throw RangeError('Too many bytes requested');\n }\n },\n\n getFieldValues: function (\n fieldTagName,\n fieldTypeName,\n typeCount,\n valueOffset\n ) {\n var fieldValues = [];\n\n var fieldTypeLength = this.getFieldTypeLength(fieldTypeName);\n var fieldValueSize = fieldTypeLength * typeCount;\n\n if (fieldValueSize <= 4) {\n // The value is stored at the big end of the valueOffset.\n if (this.littleEndian === false) {\n var value = valueOffset >>> ((4 - fieldTypeLength) * 8);\n } else {\n var value = valueOffset;\n }\n\n fieldValues.push(value);\n } else {\n for (var i = 0; i < typeCount; i++) {\n var indexOffset = fieldTypeLength * i;\n\n if (fieldTypeLength >= 8) {\n if (['RATIONAL', 'SRATIONAL'].indexOf(fieldTypeName) !== -1) {\n // Numerator\n fieldValues.push(this.getBytes(4, valueOffset + indexOffset));\n // Denominator\n fieldValues.push(this.getBytes(4, valueOffset + indexOffset + 4));\n //\t\t\t\t\t} else if (['DOUBLE'].indexOf(fieldTypeName) !== -1) {\n //\t\t\t\t\t\tfieldValues.push(this.getBytes(4, valueOffset + indexOffset) + this.getBytes(4, valueOffset + indexOffset + 4));\n } else {\n console.log(fieldTypeName, typeCount, fieldValueSize);\n throw TypeError(\"Can't handle this field type or size\");\n }\n } else {\n fieldValues.push(\n this.getBytes(fieldTypeLength, valueOffset + indexOffset)\n );\n }\n }\n }\n\n if (fieldTypeName === 'ASCII') {\n fieldValues.forEach(function (e, i, a) {\n a[i] = String.fromCharCode(e);\n });\n }\n\n return fieldValues;\n },\n\n clampColorSample: function (colorSample, bitsPerSample) {\n var multiplier = Math.pow(2, 8 - bitsPerSample);\n\n return Math.floor(colorSample * multiplier + (multiplier - 1));\n },\n\n makeRGBAFillValue: function (r, g, b, a) {\n if (typeof a === 'undefined') {\n a = 1.0;\n }\n return 'rgba(' + r + ', ' + g + ', ' + b + ', ' + a + ')';\n },\n\n parseFileDirectory: function (byteOffset) {\n var numDirEntries = this.getBytes(2, byteOffset);\n\n var tiffFields = [];\n\n for (\n var i = byteOffset + 2, entryCount = 0;\n entryCount < numDirEntries;\n i += 12, entryCount++\n ) {\n var fieldTag = this.getBytes(2, i);\n var fieldType = this.getBytes(2, i + 2);\n var typeCount = this.getBytes(4, i + 4);\n var valueOffset = this.getBytes(4, i + 8);\n\n var fieldTagName = this.getFieldTagName(fieldTag);\n var fieldTypeName = this.getFieldTypeName(fieldType);\n\n var fieldValues = this.getFieldValues(\n fieldTagName,\n fieldTypeName,\n typeCount,\n valueOffset\n );\n\n tiffFields[fieldTagName] = { type: fieldTypeName, values: fieldValues };\n }\n\n this.fileDirectories.push(tiffFields);\n\n var nextIFDByteOffset = this.getBytes(4, i);\n\n if (nextIFDByteOffset === 0x00000000) {\n return this.fileDirectories;\n } else {\n return this.parseFileDirectory(nextIFDByteOffset);\n }\n },\n\n parseTIFF: function (tiffArrayBuffer, canvas) {\n canvas = canvas || document.createElement('canvas');\n\n console.log(tiffArrayBuffer);\n\n this.tiffDataView = new DataView(tiffArrayBuffer);\n this.canvas = canvas;\n\n this.littleEndian = this.isLittleEndian(this.tiffDataView);\n\n if (!this.hasTowel(this.tiffDataView, this.littleEndian)) {\n return;\n }\n\n var firstIFDByteOffset = this.getBytes(4, 4);\n\n this.fileDirectories = this.parseFileDirectory(firstIFDByteOffset);\n\n var fileDirectory = this.fileDirectories[0];\n\n console.log(fileDirectory);\n\n var imageWidth = fileDirectory.ImageWidth.values[0];\n var imageLength = fileDirectory.ImageLength.values[0];\n\n this.canvas.width = imageWidth;\n this.canvas.height = imageLength;\n\n var strips = [];\n\n var compression = fileDirectory.Compression\n ? fileDirectory.Compression.values[0]\n : 1;\n\n var samplesPerPixel = fileDirectory.SamplesPerPixel.values[0];\n\n var sampleProperties = [];\n\n var bitsPerPixel = 0;\n var hasBytesPerPixel = false;\n\n fileDirectory.BitsPerSample.values.forEach(function (\n bitsPerSample,\n i,\n bitsPerSampleValues\n ) {\n sampleProperties[i] = {\n bitsPerSample: bitsPerSample,\n hasBytesPerSample: false,\n bytesPerSample: undefined,\n };\n\n if (bitsPerSample % 8 === 0) {\n sampleProperties[i].hasBytesPerSample = true;\n sampleProperties[i].bytesPerSample = bitsPerSample / 8;\n }\n\n bitsPerPixel += bitsPerSample;\n },\n this);\n\n if (bitsPerPixel % 8 === 0) {\n hasBytesPerPixel = true;\n var bytesPerPixel = bitsPerPixel / 8;\n }\n\n var stripOffsetValues = fileDirectory.StripOffsets.values;\n var numStripOffsetValues = stripOffsetValues.length;\n\n // StripByteCounts is supposed to be required, but see if we can recover anyway.\n if (fileDirectory.StripByteCounts) {\n var stripByteCountValues = fileDirectory.StripByteCounts.values;\n } else {\n console.log('Missing StripByteCounts!');\n\n // Infer StripByteCounts, if possible.\n if (numStripOffsetValues === 1) {\n var stripByteCountValues = [\n Math.ceil((imageWidth * imageLength * bitsPerPixel) / 8),\n ];\n } else {\n throw Error('Cannot recover from missing StripByteCounts');\n }\n }\n\n // Loop through strips and decompress as necessary.\n for (var i = 0; i < numStripOffsetValues; i++) {\n var stripOffset = stripOffsetValues[i];\n strips[i] = [];\n\n var stripByteCount = stripByteCountValues[i];\n\n // Loop through pixels.\n for (\n var byteOffset = 0,\n bitOffset = 0,\n jIncrement = 1,\n getHeader = true,\n pixel = [],\n numBytes = 0,\n sample = 0,\n currentSample = 0;\n byteOffset < stripByteCount;\n byteOffset += jIncrement\n ) {\n // Decompress strip.\n switch (compression) {\n // Uncompressed\n case 1:\n // Loop through samples (sub-pixels).\n for (var m = 0, pixel = []; m < samplesPerPixel; m++) {\n if (sampleProperties[m].hasBytesPerSample) {\n // XXX: This is wrong!\n var sampleOffset = sampleProperties[m].bytesPerSample * m;\n\n pixel.push(\n this.getBytes(\n sampleProperties[m].bytesPerSample,\n stripOffset + byteOffset + sampleOffset\n )\n );\n } else {\n var sampleInfo = this.getBits(\n sampleProperties[m].bitsPerSample,\n stripOffset + byteOffset,\n bitOffset\n );\n\n pixel.push(sampleInfo.bits);\n\n byteOffset = sampleInfo.byteOffset - stripOffset;\n bitOffset = sampleInfo.bitOffset;\n\n throw RangeError('Cannot handle sub-byte bits per sample');\n }\n }\n\n strips[i].push(pixel);\n\n if (hasBytesPerPixel) {\n jIncrement = bytesPerPixel;\n } else {\n jIncrement = 0;\n\n throw RangeError('Cannot handle sub-byte bits per pixel');\n }\n break;\n\n // CITT Group 3 1-Dimensional Modified Huffman run-length encoding\n case 2:\n // XXX: Use PDF.js code?\n break;\n\n // Group 3 Fax\n case 3:\n // XXX: Use PDF.js code?\n break;\n\n // Group 4 Fax\n case 4:\n // XXX: Use PDF.js code?\n break;\n\n // LZW\n case 5:\n // XXX: Use PDF.js code?\n break;\n\n // Old-style JPEG (TIFF 6.0)\n case 6:\n // XXX: Use PDF.js code?\n break;\n\n // New-style JPEG (TIFF Specification Supplement 2)\n case 7:\n // XXX: Use PDF.js code?\n break;\n\n // PackBits\n case 32773:\n // Are we ready for a new block?\n if (getHeader) {\n getHeader = false;\n\n var blockLength = 1;\n var iterations = 1;\n\n // The header byte is signed.\n var header = this.tiffDataView.getInt8(\n stripOffset + byteOffset,\n this.littleEndian\n );\n\n if (header >= 0 && header <= 127) {\n // Normal pixels.\n blockLength = header + 1;\n } else if (header >= -127 && header <= -1) {\n // Collapsed pixels.\n iterations = -header + 1;\n } /*if (header === -128)*/ else {\n // Placeholder byte?\n getHeader = true;\n }\n } else {\n var currentByte = this.getBytes(1, stripOffset + byteOffset);\n\n // Duplicate bytes, if necessary.\n for (var m = 0; m < iterations; m++) {\n if (sampleProperties[sample].hasBytesPerSample) {\n // We're reading one byte at a time, so we need to handle multi-byte samples.\n currentSample =\n (currentSample << (8 * numBytes)) | currentByte;\n numBytes++;\n\n // Is our sample complete?\n if (numBytes === sampleProperties[sample].bytesPerSample) {\n pixel.push(currentSample);\n currentSample = numBytes = 0;\n sample++;\n }\n } else {\n throw RangeError('Cannot handle sub-byte bits per sample');\n }\n\n // Is our pixel complete?\n if (sample === samplesPerPixel) {\n strips[i].push(pixel);\n\n pixel = [];\n sample = 0;\n }\n }\n\n blockLength--;\n\n // Is our block complete?\n if (blockLength === 0) {\n getHeader = true;\n }\n }\n\n jIncrement = 1;\n break;\n\n // Unknown compression algorithm\n default:\n // Do not attempt to parse the image data.\n break;\n }\n }\n\n //\t\t\tconsole.log( strips[i] );\n }\n\n //\t\tconsole.log( strips );\n\n if (canvas.getContext) {\n var ctx = this.canvas.getContext('2d');\n\n // Set a default fill style.\n ctx.fillStyle = this.makeRGBAFillValue(255, 255, 255, 0);\n\n // If RowsPerStrip is missing, the whole image is in one strip.\n if (fileDirectory.RowsPerStrip) {\n var rowsPerStrip = fileDirectory.RowsPerStrip.values[0];\n } else {\n var rowsPerStrip = imageLength;\n }\n\n var numStrips = strips.length;\n\n var imageLengthModRowsPerStrip = imageLength % rowsPerStrip;\n var rowsInLastStrip =\n imageLengthModRowsPerStrip === 0\n ? rowsPerStrip\n : imageLengthModRowsPerStrip;\n\n var numRowsInStrip = rowsPerStrip;\n var numRowsInPreviousStrip = 0;\n\n var photometricInterpretation =\n fileDirectory.PhotometricInterpretation.values[0];\n\n var extraSamplesValues = [];\n var numExtraSamples = 0;\n\n if (fileDirectory.ExtraSamples) {\n extraSamplesValues = fileDirectory.ExtraSamples.values;\n numExtraSamples = extraSamplesValues.length;\n }\n\n if (fileDirectory.ColorMap) {\n var colorMapValues = fileDirectory.ColorMap.values;\n var colorMapSampleSize = Math.pow(2, sampleProperties[0].bitsPerSample);\n }\n\n // Loop through the strips in the image.\n for (var i = 0; i < numStrips; i++) {\n // The last strip may be short.\n if (i + 1 === numStrips) {\n numRowsInStrip = rowsInLastStrip;\n }\n\n var numPixels = strips[i].length;\n var yPadding = numRowsInPreviousStrip * i;\n\n // Loop through the rows in the strip.\n for (var y = 0, j = 0; y < numRowsInStrip, j < numPixels; y++) {\n // Loop through the pixels in the row.\n for (var x = 0; x < imageWidth; x++, j++) {\n var pixelSamples = strips[i][j];\n\n var red = 0;\n var green = 0;\n var blue = 0;\n var opacity = 1.0;\n\n if (numExtraSamples > 0) {\n for (var k = 0; k < numExtraSamples; k++) {\n if (\n extraSamplesValues[k] === 1 ||\n extraSamplesValues[k] === 2\n ) {\n // Clamp opacity to the range [0,1].\n opacity = pixelSamples[3 + k] / 256;\n\n break;\n }\n }\n }\n\n switch (photometricInterpretation) {\n // Bilevel or Grayscale\n // WhiteIsZero\n case 0:\n if (sampleProperties[0].hasBytesPerSample) {\n var invertValue = Math.pow(\n 0x10,\n sampleProperties[0].bytesPerSample * 2\n );\n }\n\n // Invert samples.\n pixelSamples.forEach(function (sample, index, samples) {\n samples[index] = invertValue - sample;\n });\n\n // Bilevel or Grayscale\n // BlackIsZero\n case 1:\n red =\n green =\n blue =\n this.clampColorSample(\n pixelSamples[0],\n sampleProperties[0].bitsPerSample\n );\n break;\n\n // RGB Full Color\n case 2:\n red = this.clampColorSample(\n pixelSamples[0],\n sampleProperties[0].bitsPerSample\n );\n green = this.clampColorSample(\n pixelSamples[1],\n sampleProperties[1].bitsPerSample\n );\n blue = this.clampColorSample(\n pixelSamples[2],\n sampleProperties[2].bitsPerSample\n );\n break;\n\n // RGB Color Palette\n case 3:\n if (colorMapValues === undefined) {\n throw Error('Palette image missing color map');\n }\n\n var colorMapIndex = pixelSamples[0];\n\n red = this.clampColorSample(colorMapValues[colorMapIndex], 16);\n green = this.clampColorSample(\n colorMapValues[colorMapSampleSize + colorMapIndex],\n 16\n );\n blue = this.clampColorSample(\n colorMapValues[2 * colorMapSampleSize + colorMapIndex],\n 16\n );\n break;\n\n // Transparency mask\n case 4:\n throw RangeError('Not Yet Implemented: Transparency mask');\n break;\n\n // CMYK\n case 5:\n throw RangeError('Not Yet Implemented: CMYK');\n break;\n\n // YCbCr\n case 6:\n throw RangeError('Not Yet Implemented: YCbCr');\n break;\n\n // CIELab\n case 8:\n throw RangeError('Not Yet Implemented: CIELab');\n break;\n\n // Unknown Photometric Interpretation\n default:\n throw RangeError(\n 'Unknown Photometric Interpretation:',\n photometricInterpretation\n );\n break;\n }\n\n ctx.fillStyle = this.makeRGBAFillValue(red, green, blue, opacity);\n ctx.fillRect(x, yPadding + y, 1, 1);\n }\n }\n\n numRowsInPreviousStrip = numRowsInStrip;\n }\n }\n\n /*\t\tfor (var i = 0, numFileDirectories = this.fileDirectories.length; i < numFileDirectories; i++) {\n // Stuff\n }*/\n\n return this.canvas;\n },\n};\n","import { StateCreator } from 'zustand';\nimport { TIFFParser } from '../../loaders/tiffParser';\nimport { use3dddPlus } from '..';\nimport { fabric } from 'fabric';\nimport ImageTracer from 'imagetracerjs';\n// import * as pdfjsLib from 'pdfjs-dist/build/pdf';\n// pdfjsLib.GlobalWorkerOptions.workerSrc = `//cdnjs.cloudflare.com/ajax/libs/pdf.js/${pdfjsLib.version}/pdf.worker.js`;\nexport interface ConverterSlice {\n fillColor: string[];\n pdfConverter: (data: any) => void;\n // convertPdfToImages: (buffer: any) => any;\n tiffConvert: (data: any) => void;\n imageToSVG: (data: any) => void;\n removeDuplicates: (arr: any) => void;\n RGBToHex: (rgb: any) => void;\n changeSVGColor: (property: any, color: any) => void;\n setFile: (file: any) => void;\n file: any;\n addText: () => void;\n}\n\nexport const converterSlice: StateCreator<ConverterSlice> = (set, get) => {\n return {\n fillColor: [],\n file: {},\n setFile: (file) => {\n set({ file });\n },\n // return new Promise((resolve, reject) => {\n // if (data) {\n // const reader = new FileReader();\n // reader.onload = async () => {\n // const buffer = reader.result;\n // try {\n // const _B = await get().convertPdfToImages(buffer);\n // resolve(_B);\n // } catch (error) {\n // reject(error);\n // }\n // };\n // reader.readAsArrayBuffer(data);\n // } else {\n // reject(new Error('No data provided.'));\n // }\n // });\n // },\n // convertPdfToImages: async (buffer) => {\n // const pdf = await pdfjsLib.getDocument({ data: new Uint8Array(buffer) })\n // .promise;\n // const scale = 2;\n // for (let pageNum = 1; pageNum <= pdf.numPages; pageNum++) {\n // const page = await pdf.getPage(pageNum);\n // const viewport = page.getViewport({ scale });\n // const canvasEl = document.createElement('canvas');\n // canvasEl.width = viewport.width;\n // canvasEl.height = viewport.height;\n // const context = canvasEl.getContext('2d');\n // await page.render({\n // canvasContext: context,\n // viewport,\n // background: 'rgba(0,0,0,0)',\n // }).promise;\n // // let objectURL = URL.createObjectURL(canvasEl);\n // const imageUrl = canvasEl.toDataURL();\n // return imageUrl;\n // // svgConverter(imageUrl);\n // /* */\n // }\n // },\n tiffConvert: async (data) => {\n const tiffParser = new TIFFParser();\n const canvasEl = document.createElement('canvas');\n canvasEl.width = 500;\n canvasEl.height = 500;\n // const context = canvasEl.getContext(\"2d\");\n const arrayBuffer = await data.arrayBuffer();\n var tiffCanvas = tiffParser.parseTIFF(arrayBuffer, canvasEl);\n const imageUrl = tiffCanvas.toDataURL();\n return imageUrl;\n },\n imageToSVG: (data) => {\n use3dddPlus.setState({ uploadImageModalDisplay: true }); // FOR POPUP CANVAS VISIBLE\n ImageTracer.imageToSVG(\n data,\n function (svgstr) {\n fabric.loadSVGFromString(\n //@ts-ignore\n new String(svgstr),\n function (objects, options) {\n let loadedObject = fabric.util.groupSVGElements(objects, options);\n // console.log(\"LOADEDOBJECT--->\",data);\n loadedObject.scaleToHeight(100);\n loadedObject.scaleToWidth(100);\n //@ts-ignore\n let objImage = loadedObject?._objects;\n let _Fills = [];\n objImage.forEach((ele: any) => {\n ele.set({ strokeWidth: 0 });\n set({ fillColor: [...ele.fill] });\n // setFillColor([...ele.fill]);\n let _C = get().RGBToHex(ele.fill);\n _Fills.push(_C);\n });\n //@ts-ignore\n set({ fillColor: get().removeDuplicates(_Fills) });\n //setFillColor(get().removeDuplicates(_Fills));\n //@ts-ignore\n _Fills = get().removeDuplicates(_Fills);\n // console.log(_Fills);\n const fillColors = {};\n _Fills.map((item, index) => {\n fillColors['layer' + index] = item;\n });\n use3dddPlus.setState({ colorFill: fillColors });\n //FOR POPUP CANVAS\n // loadedObject.set({\n // colorFill : fillColors,\n // hasControls:false,\n // hasBorders : false,\n // lockMovementX:true,\n // lockMovementY:true,\n\n // })\n // for main canvas use this\n loadedObject.set({\n colorFill: fillColors,\n //@ts-ignore\n setControlVisible: false,\n });\n // var maxWidth = 300; // your maximum width value\n // var maxHeight = 300; // your maximum height value\n // if (loadedObject.width > maxWidth || loadedObject.height > maxHeight) {\n // // Calculate new dimensions while maintaining aspect ratio\n // var aspectRatio = loadedObject.width / loadedObject.height;\n // if (aspectRatio > maxWidth / maxHeight) {\n // loadedObject.scaleToWidth(maxWidth);\n // } else {\n // loadedObject.scaleToHeight(maxHeight);\n // }\n // }\n\n //-------- use CANVAS INSTEAD OF POPCANVAS--------\n console.log('loadedObject--->', loadedObject);\n use3dddPlus.getState().popupCanv.add(loadedObject).renderAll();\n use3dddPlus.getState().popupCanv.centerObject(loadedObject);\n use3dddPlus.getState().popupCanv.setActiveObject(loadedObject);\n use3dddPlus.setState({ activeSelection: loadedObject });\n // loadedObject.setControlVisible(\"mtr\", false);\n // use3dddPlus.getState().forStoringAllObject(loadedObject);//for pushing the data into array for layers\n }\n );\n }\n // options\n //@ts-ignore\n //optionpresets.default\n );\n },\n removeDuplicates: (arr) => {\n return arr.filter((item, index) => arr.indexOf(item) === index);\n },\n\n RGBToHex: (rgb) => {\n let sep = rgb.indexOf(',') > -1 ? ',' : ' ';\n rgb = rgb.substr(4).split(')')[0].split(sep);\n let r = (+rgb[0]).toString(16),\n g = (+rgb[1]).toString(16),\n b = (+rgb[2]).toString(16);\n\n if (r.length == 1) r = '0' + r;\n if (g.length == 1) g = '0' + g;\n if (b.length == 1) b = '0' + b;\n return '#' + r + g + b;\n },\n changeSVGColor: (property, color) => {\n const fillColor = { ...use3dddPlus.getState().colorFill };\n const previousColor = fillColor[property];\n //const SelectedObjet = use3dddPlus.getState().activeSelection;\n // console.log(\"Color_CHANGING--->\",SelectedObjet.colorFill);\n // let _newObj = SelectedObjet.colorFill;\n /* Object.entries(_newObj).forEach(([key, value]) => {\n if(`${value}` === previousColor){\n console.log(`${key}: ${value}` , previousColor);\n _newObj[`${key}`] = color;\n }\n // console.log(`${key}: ${value}`)\n});*/\n // const sel = new fabric.ActiveSelection(popupCanvas.getObjects(), {\n // popupCanvas: popupCanvas,\n // });\n\n // popupCanvas.setActiveObject(sel);\n // popupCanvas.requestRenderAll();\n\n // let objImage = SelectedObjet._objects;\n let objImage = use3dddPlus\n .getState()\n .popupCanv.getActiveObject()._objects;\n objImage.forEach((ele) => {\n const _C = ele.fill.includes('#') ? ele.fill : get().RGBToHex(ele.fill);\n if (_C === previousColor) {\n ele.set({\n fill: color,\n });\n }\n });\n use3dddPlus.getState().popupCanv.renderAll();\n fillColor[property] = color;\n use3dddPlus.setState({ colorFill: fillColor });\n },\n addText: () => {\n use3dddPlus.getState().fabricCanvas.discardActiveObject();\n const text = new fabric.Text('NEW TEXT', {\n lineHeight: 1,\n fill: '#fff',\n fontFamily: 'Arial',\n fontWeight: 'normal',\n top: use3dddPlus.getState().fabricCanvas.height / 2 - 40,\n left: use3dddPlus.getState().fabricCanvas.width / 2 - 205,\n stroke: '#eb4034',\n strokeWidth: 0,\n paintFirst: 'stroke',\n //charSpacing: 0,\n padding: -1,\n fontSize: 20,\n name: 'text',\n charSpacing: -10,\n lockScalingFlip: true,\n });\n const fillColors = { layer0: text.fill };\n text.set({\n //@ts-ignore\n colorFill: fillColors,\n });\n use3dddPlus.getState().forIconCapture();\n //@ts-ignore\n text.icon = use3dddPlus.getState().iconImage;\n use3dddPlus.getState().fabricCanvas.add(text);\n use3dddPlus.getState().fabricCanvas.setActiveObject(text);\n use3dddPlus.setState({ currentSelection: 'text' });\n //@ts-ignore\n use3dddPlus.getState().deleteButtonControls(text);\n text.setControlsVisibility(use3dddPlus.getState().HideControls);\n use3dddPlus.getState().nameCounter++;\n use3dddPlus.getState().updateModifaction(true);\n use3dddPlus.getState().forStoringAllObject(text); //for pushing the data into array for layers\n // use3dddPlus.setState({storeAllObject : });\n },\n pdfConverter :(data) => {\n return new Promise((_resolve, reject) => {\n if (data) {\n const reader = new FileReader();\n reader.onload = async () => {\n //const buffer = reader.result;\n // try {\n // const _B = await get().convertPdfToImages(buffer);\n // resolve(_B);\n // } catch (error) {\n // reject(error);\n // }\n };\n reader.readAsArrayBuffer(data);\n } else {\n reject(new Error('No data provided.'));\n }\n });\n },\n // convertPdfToImages: async (buffer: any) => {\n // const pdf = await pdfjsLib.getDocument({ data: new Uint8Array(buffer) })\n // .promise;\n // const scale = 2;\n // for (let pageNum = 1; pageNum <= pdf.numPages; pageNum++) {\n // const page = await pdf.getPage(pageNum);\n // const viewport = page.getViewport({ scale });\n // const canvasEl = document.createElement('canvas');\n // canvasEl.width = viewport.width;\n // canvasEl.height = viewport.height;\n // const context = canvasEl.getContext('2d');\n // await page.render({\n // canvasContext: context,\n // viewport,\n // background: 'rgba(0,0,0,0)',\n // }).promise;\n // const imageUrl = canvasEl.toDataURL();\n // return imageUrl;\n // }\n // return null;\n // },\n };\n};\nexport default ConverterSlice;\n","import { create, StateCreator } from 'zustand';\nimport {\n // createJSONStorage,\n // persist,\n subscribeWithSelector,\n} from 'zustand/middleware';\nimport actionSlice, { ActionSlice } from './actions';\nimport lambdaSlice, { LambdaSlice } from './lambda/index';\nimport SaveDesignSlice, { saveDesignSlice } from './saveDesign';\nimport AuthSlice, { authSlice } from './auth';\nimport HistorySlice, { historySlice } from './history';\nimport FabricSlice, { fabricSlice } from './fabric';\nimport ConverterSlice, { converterSlice} from './converters';\nexport type ThreedddPlus = \n ActionSlice &\n LambdaSlice &\n SaveDesignSlice &\n AuthSlice &\n HistorySlice &\n ConverterSlice &\n FabricSlice;\n\nexport const threedddPlusState: StateCreator<ThreedddPlus> = (...args) => {\n return {\n ...actionSlice(...args),\n ...lambdaSlice(...args),\n ...saveDesignSlice(...args),\n ...authSlice(...args),\n ...historySlice(...args),\n ...converterSlice(...args),\n ...fabricSlice(...args)\n };\n};\n\nexport const use3dddPlus = create(\n // persist(\n subscribeWithSelector<ThreedddPlus>(threedddPlusState)\n // , {\n // name: 'editor-store', // unique name\n // storage: createJSONStorage(() => sessionStorage), // (optional) by default, 'localStorage' is used\n // }\n // )\n);\n\n(window as any).datasbase = use3dddPlus;\n","import React from \"react\";\n\nexport const Button = ({ label, icons, onClick, className, children }) => {\n return (\n <button\n onClick={onClick}\n className={`flex rounded-none gap-3 w-full items-center p-2 m-2 ${className}`}\n >\n {icons}\n {label}\n {children}\n </button>\n );\n};\n","export const PRIMARY_COLOR = 'text-[#cf132b]'; //rgb(30 58 138);\nexport const SECONDARY_COLOR = 'text-[#e11a38]'; //rgb(156 163 175);\nexport const BORDER_COLOR = 'border-[#e0e0e0]'; //rgb(156 163 175)\nexport const BORDER_COLOR_1 = 'border-[#ecebed]';\nexport const BORDER_COLOR_2 = 'border-[#c2c2c2]';\nexport const BORDER_COLOR_3 = 'border-[#e11a38]';\nexport const SIDEBAR_BG_COLOR = 'bg-[#f7f7f7]';\nexport const SELECT_BG_COLOR = 'bg-[#e11a38]'; //rgb(203 213 225)\nexport const BG_COLOR_1 = 'bg-[#e11a38]'; //rgb(203 213 225)\nexport const SELECT_TEXT_COLOR = 'text-white'\nexport const TEXT_SIZE_1 = 'text-xs'; //font-size: 12px (0.75rem)\nexport const TEXT_SIZE_2 = 'text-2xl'; //font-size: 24px; (1.5rem)\nexport const TEXT_SIZE_3 = 'text-[15px]';\nexport const TEXT_SIZE_4 = 'text-[17px]';\nexport const TEXT_SIZE_5 = 'text-[28px]';\nexport const TEXT_SIZE_6 = 'text-[14px]';\nexport const TEXT_SIZE_7 = 'text-[30px]';\nexport const TEXT_SIZE_8 = 'text-[21px]';\nexport const TEXT_SIZE_9 = 'text-[13px]';\nexport const TEXT_SIZE_11 = 'text-[18px]';\nexport const TEXT_SIZE_12 = 'text-[11px]';\nexport const TEXT_SIZE_13 = 'text-[12px]';\nexport const TEXT_SIZE_14 = 'text-[16px]';\nexport const TEXT_SIZE_15 = 'text-[25px]';\nexport const TEXT_SIZE_16 = 'text-[26px]';\nexport const TEXT_SIZE_17 = 'text-[22px]';\nexport const TEXT_SIZE_18 = 'text-[16px]';\nexport const ACTIVE_BG_COLOR = 'bg-[#cf132b]'; //rgb(30 58 138);\nexport const BUTTON_TEXT_COLOR = 'text-white';\nexport const BUTTON_BG_COLOR = 'bg-black'; //rgb(0 0 0)\nexport const INPUT_BG_COLOR = 'bg-white';\nexport const TEXT_COLOR_1 = 'text-[#5d5d5d]';\nexport const BACKDROP_BLUR = 'backdrop-blur-[21px]';\nexport const BACKDROP_BLUR_BG_COLOR = 'bg-[#00000046]';\nexport const MODAL_BG_COLOR = 'bg-[#ffffff]';\nexport const CARD_BG_COLOR = 'bg-white'; //rgb(255 255 255)\nexport const INPUT_TEXT_DISABLE_COLOR = 'text-slate-300'\nexport const CHECKBOX_CHECKED_COLOR = '#e11a38'\nexport const LOAD_DESIGN_BORDER_COLOR = '#e0e0e0'\nexport const LOAD_DESIGN_TEXT_COLOR = 'text-[#e11a38]';\nexport const SEARCH_ICON_COLOR = 'text-[#727272]'\nexport const SEARCHBAR_BORDER_COLOR = 'border-[#bebebe]'\nexport const MY_DESIGN_TEXT_COLOR = 'text-[#353535]'\nexport const SEARCH_TEXT_COLOR = 'text-[#353535]'\nexport const NO_SEARCHRESULT_TEXT_COLOR_1 = 'text-[#727272]'\nexport const NO_SEARCHRESULT_TEXT_COLOR_2 = 'text-[#5d5d5d]'\nexport const CANVAS_MENU_TEXT = 'text-[#353535]';\nexport const CANVAS_MENU_BORDER = 'border-[#f4f4f4]';\nexport const CANVAS_MENU_BG_COLOR = 'bg-white';\nexport const CANVAS_MENU_DROPDOWN_BG_COLOR = 'bg-white';\nexport const DECORATION_BG_COLOR = 'bg-[#F1F1F1]'\nexport const DROPDOWN_BACKGROUND_COLOR = 'bg-[#FCE8EB]'\nexport const TAG_BG_COLOR = 'bg-[#FCE8EB]'\nexport const TAG_TEXT_COLOR = 'text-[#e11a38]'\nexport const CARD_LAST_UPDATE_COLOR = 'text-[#727272]'\nexport const CARD_DOWNLAOD_ICON_COLOR = 'text-[#353535]'\nexport const CARD_DESCRIPTION_COLOR = 'text-[#353535]'\nexport const FOOTER_TEXT_COLOR = 'text-[#ffffff]'\nexport const FOOTER_RACK_BG_COLOR = 'bg-[#E21938]'\nexport const FOOTER_PRICE_COLOR = 'text-[#353535]'\nexport const FOOTER_RACK_COUNT_COLOR = 'text-[#E21938]'\nexport const FOOTER_ROSTER_COLOR = 'text-[#353535]'\nexport const FOOTER_ROSTER_BORDER_COLOR = 'border-[#353535]'\nexport const FOOTER_SUMMARY_BG_COLOR = 'bg-[#353535]'\nexport const FOOTER_SUMMARY_TEXT_COLOR = 'text-white'\nexport const CONFIRMDESIGN_DISCARD_BORDER_COLOR = 'border-[#707070]';\nexport const CONFIRMDESIGN_TEXT_COLOR_1 = 'text-[#5d5d5d]';\nexport const CONFIRMDESIGN_TEXT_COLOR_2 = 'text-[#E11A38]';\nexport const CONFIRMDESIGN_TEXT_COLOR_3 = 'text-[#353535]';\nexport const CONFIRMDESIGN_TEXT_COLOR_4 = 'text-[#ffffff]';\nexport const CONFIRMDESIGN_SAVEBUTTON_BG_COLOR = 'bg-[#E11A38]';\nexport const DESIGNSUCCESS_CLOSE_BORDER_COLOR = 'border-[#707070]';\nexport const DESIGNSUCCESS_TEXT_COLOR_1 = 'text-[#5d5d5d]';\nexport const DESIGNSUCCESS_TEXT_COLOR_2 = 'text-[#E21938]';\nexport const DESIGNSUCCESS_TEXT_COLOR_3 = 'text-[#353535]';\n\nexport const SAVERACK_BORDER_COLOR = 'border-[#707070]'\nexport const SAVERACK_TEXT_COLOR = 'text-[#707070]'\nexport const SAVEBUTTON_BG_COLOR = 'bg-[#E11A38]'\nexport const TOASTER_SUCCESS_BG_COLOR = 'bg-[#D5F2EA]'\nexport const TOASTER_FAILURE_BG_COLOR = 'bg-[#FCE8EB]'\nexport const TOASTER_INFO_BG_COLOR = 'bg-[#D5E9FA]'\nexport const TOASTER_WARNING_BG_COLOR = 'bg-[#FFF8E7]'\nexport const RESET_BUTTON_BG_COLOR = 'text-[#9A9A9A]'\nexport const PRODUCTINFO_TEXT_COLOR_1 = 'text-[#353535]'\nexport const PRODUCTINFO_TEXT_COLOR_2 = 'text-[#c2c2c2]'\nexport const PRODUCTINFO_TEXT_COLOR_3 = 'text-[#e11a38]'\nexport const PRODUCTINFO_TEXT_COLOR_4 = 'text-[#5d5d5d]'\nexport const UPDATESUCCESS_RACK_BORDER_COLOR = 'border-[#E11938]';\nexport const UPDATESUCCESS_TEXT_COLOR_1 = 'text-[#E11938]';\nexport const RACK_CARD_BORDER_COLOR = 'border-[#e5e5e5]';\nexport const RACK_CARD_TEXT_COLOR_1 = 'text-[#E11A38]';\nexport const RACK_CARD_TEXT_COLOR_2 = 'text-[#353535]';\nexport const RACK_CARD_TEXT_COLOR_3 = 'text-[#9f9f9f]';\nexport const RACK_CARD_MENU_TEXT = 'text-[#353535]';\nexport const EDIT_DESIGN_INFO_TEXT_COLOR_1 = 'text-[#E11A38]';\nexport const EDIT_DESIGN_INFO_TEXT_COLOR_2 = 'text-[#727272]';\nexport const EDIT_DESIGN_INFO_TEXT_COLOR_3 = 'text-[#353535]';\nexport const EDIT_DESIGN_INFO_TEXT_COLOR_4 = 'text-[#ffffff]';\nexport const EDIT_DESIGN_INFO_INPUT_BORDER_COLOR = 'border-[#ECEBED]';\nexport const EDIT_DESIGN_INFO_DISABLED_BG_COLOR_1 = 'bg-[#F8F8F8]';\nexport const EDIT_DESIGN_INFO_BG_COLOR_2 = 'bg-[#ffffff]';\nexport const EDIT_DESIGN_INFO_BG_COLOR_3 = 'bg-[#e11a38]';\nexport const EDIT_DESIGN_INFO_BG_COLOR_4 = 'bg-[#fce8eb]';\nexport const INPUT_ERROR_BORDER_COLOR = 'border-[#E11A38]';\nexport const INPUT_ERROR_TEXT_COLOR = 'text-[#E11A38]';\nexport const PRICEBREAKUP_TEXT_COLOR_1 = 'text-[#353535]';\nexport const PRICEBREAKUP_TEXT_COLOR_2 = 'text-[#747474]';\nexport const PRICEBREAKUP_TEXT_BORDER_COLOR_1 = 'border-[#c2c2c2]';\nexport const PRICEBREAKUP_TEXT_BORDER_COLOR_2 = 'border-[#ebebeb]';","import React from 'react';\nimport { IconContext, IconType } from 'react-icons';\nimport { Button, Tooltip, TooltipReference, useTooltipState } from 'reakit';\n\nexport interface IconButtonProps\n extends Exclude<React.ButtonHTMLAttributes<HTMLButtonElement>, 'children'> {\n icon?: React.ReactElement<IconType>;\n label: string;\n}\nconst Icon = React.forwardRef<HTMLButtonElement, IconButtonProps>(\n ({ label, icon, className, ...props }, ref) => {\n const tooltip = useTooltipState({ placement: 'top' });\n return (\n <>\n <TooltipReference\n ref={ref}\n {...props}\n {...tooltip}\n as={Button}\n className={`${className} flex relative items-center justify-center align-middle w-auto text-sm font-semibold h-5 first:rounded-l last:rounded-r focus:outline-none`}\n aria-label={label}\n >\n {icon}\n </TooltipReference>\n {label && label !== '' && (\n <Tooltip\n {...tooltip}\n className={`inline-block px-3 py-2 text-sm font-medium text-white transition-opacity duration-300 bg-[#e11a38] rounded-lg shadow-sm dark:bg-gray-700`}\n style={{ zIndex: 10 }}\n >\n {label}\n </Tooltip>\n )}\n </>\n );\n }\n);\n\nexport const IconButton = ({\n label,\n\n className,\n size = '2rem',\n icon = undefined,\n ...props\n}) => {\n return (\n <IconContext.Provider\n value={{\n size: size,\n className: 'pointer-events-auto cursor-pointer',\n }}\n >\n <Icon label={label} icon={icon} className={className} {...props} />\n </IconContext.Provider>\n );\n};\n\n\nexport {\n IoIosColorPalette,\n IoMdCheckmarkCircle,\n IoIosArrowForward,\n} from 'react-icons/io';\nexport { HiOutlineDownload, HiDotsVertical } from 'react-icons/hi';\nexport {\n FaRegSave,\n FaRegShareSquare,\n FaPlus,\n FaRegListAlt,\n FaEye,\n FaEyeSlash,\n} from 'react-icons/fa';\nexport { BiReset, BiAddToQueue } from 'react-icons/bi';\nexport { GiBilledCap, GiCardboardBox } from 'react-icons/gi';\nexport { TbWindowMinimize } from 'react-icons/tb';\nexport { RxCross2 } from 'react-icons/rx';\nexport { IoInformationCircleOutline, IoLogInOutline } from 'react-icons/io5';\nexport { CgMenuBoxed } from 'react-icons/cg';\nexport { IoIosInformationCircleOutline } from 'react-icons/io';\nexport { LuFlipHorizontal2, LuFlipVertical2 } from 'react-icons/lu';\n","import { GenIcon } from 'react-icons/lib';\n\nexport const RLogo = (props) => {\n return GenIcon({\n tag: 'svg',\n attr: {\n xmlns: 'http://www.w3.org/2000/svg',\n width: '36.672',\n height: '34.349',\n viewBox: '0 0 36.672 34.349',\n },\n child: [\n {\n tag: 'g',\n attr: {},\n child: [\n {\n tag: 'g',\n attr: { id: 'a' },\n child: [\n {\n tag: 'path',\n attr: {\n fill: 'none',\n fillRule: 'evenodd',\n transform:\"translate(-0.001)\",\n d: 'M1.99,0H29.149a1.993,1.993,0,0,1,1.99,1.99V29.011a1.986,1.986,0,0,1-.584,1.4v0A1.985,1.985,0,0,1,29.149,31H1.99A1.993,1.993,0,0,1,0,29.011V1.99A1.983,1.983,0,0,1,.585.587v0A1.985,1.985,0,0,1,1.99,0',\n },\n child: [],\n },\n {\n tag: 'path',\n attr: {\n fill: 'none',\n stroke: '#fff',\n fillRule: 'evenodd',\n transform:\"translate(-1.117 -1.116)\",\n strokeWidth: '2px',\n d: 'M2.526,2.442l-.043.043a.875.875,0,0,0-.26.62V30.127a.887.887,0,0,0,.882.882h27.16a.877.877,0,0,0,.58-.219l.043-.043a.876.876,0,0,0,.26-.621V3.105a.887.887,0,0,0-.882-.882H3.105a.876.876,0,0,0-.579.219',\n },\n child: [],\n },\n {\n tag: 'path',\n attr: {\n fill: '#fff',\n fillRule: 'evenodd',\n transform:\"translate(-3.386 -6.517)\",\n d: 'M17.761,19.938a.317.317,0,0,1-.064.191c-.009.011-.018.023-.028.035a28.71,28.71,0,0,0-5.566,10.1.408.408,0,0,1-.425.267c-.479,0-3.211-.01-4.535-.01-.325,0-.353-.273-.242-.526a52.346,52.346,0,0,1,7.018-9.774,2.034,2.034,0,0,1,1.665-.577c.288-.018,1.3-.034,1.86-.019a.317.317,0,0,1,.317.317m11.5,7.6h0a26.686,26.686,0,0,1,1.788,2.517c.172.193.163.475-.13.475H25.887a.593.593,0,0,1-.5-.279c-.041-.059-.084-.118-.128-.178-2.739-4.256-4.547-5.186-8.643-6.328a.289.289,0,0,1-.153-.4,16.3,16.3,0,0,1,.994-1.485.424.424,0,0,1,.243-.113,10.774,10.774,0,0,0,2.58-.144c2.338-.627,2.872-2,2.789-2.969-.021-1.525-1.992-2.28-5.547-2.214-2.524,0-3.5-.036-6.741-.033-1.269.025-2.793-.712-3.965-2.816-.193-.339.02-.591.242-.585,2.812.029,9.023-.022,13.067.079,6.085.309,7.622,2.866,7.7,5.1.041,3.026-2.349,4.423-3.37,5.1a18.519,18.519,0,0,1,4.805,4.272',\n },\n child: [],\n },\n ],\n },\n ],\n },\n ],\n })(props);\n};\n","import { GenIcon } from 'react-icons/lib';\n\nexport const MyLogo = (props) => {\n return GenIcon({\n tag: 'svg',\n attr: {\n xmlns: 'http://www.w3.org/2000/svg',\n width: '26.381',\n height: '23.778',\n viewBox: '0 0 26.381 23.778',\n },\n child: [\n {\n tag: 'g',\n attr: {},\n child: [\n {\n tag: 'g',\n attr: { id: 'a' },\n child: [\n {\n tag: 'path',\n attr: {\n strokeWidth:\"1\",\n d: 'M19.698 7.853c.571-.475 1.11-.938 1.664-1.382a22.426 22.426 0 0 1 3.1-2.231 2.543 2.543 0 0 1 .612-.246.621.621 0 0 1 .769.8 4.073 4.073 0 0 1-.4.893 27.867 27.867 0 0 1-2.478 3.343c-.795.962-1.61 1.906-2.411 2.863a.509.509 0 0 0-.111.285 11.208 11.208 0 0 1-4.658 8.872 11.121 11.121 0 0 1-5.4 2.144 10.707 10.707 0 0 1-6.8-1.464 6.79 6.79 0 0 1-2.179-1.877 4.01 4.01 0 0 1-.491-4.3 3.571 3.571 0 0 1 1.06-1.273c.414-.331.841-.646 1.244-.989a1.774 1.774 0 0 0 .645-1.65 1.75 1.75 0 0 0-.635-1.151c-.374-.316-.76-.618-1.149-.914A3.763 3.763 0 0 1 .518 6.224a4.115 4.115 0 0 1 .855-2.262 7.56 7.56 0 0 1 2.733-2.204A11.038 11.038 0 0 1 8.162.542a10.878 10.878 0 0 1 4.744.658 11.321 11.321 0 0 1 4.686 3.2 11.249 11.249 0 0 1 2 3.214c.03.074.064.146.108.245m-.282 5.322c-.092.1-.143.148-.192.2-.958 1.023-1.91 2.052-2.879 3.066a1.725 1.725 0 0 0-.558.945 1.758 1.758 0 0 1-.121.361 4.187 4.187 0 0 1-2.709 2.693 7.042 7.042 0 0 1-4.627-.317.433.433 0 0 1-.291-.515.464.464 0 0 1 .452-.388 1.061 1.061 0 0 0 .994-.853c.161-.6.286-1.213.448-1.814a3.442 3.442 0 0 1 .8-1.513 3.653 3.653 0 0 1 2.092-1.027.823.823 0 0 0 .4-.195c.952-.9 1.884-1.816 2.841-2.707.9-.841 1.83-1.656 2.746-2.483.069-.062.134-.105.087-.231a10.636 10.636 0 0 0-2.107-3.49 10.45 10.45 0 0 0-3.874-2.7 10.109 10.109 0 0 0-4.27-.765 10 10 0 0 0-4.044 1.106 6.858 6.858 0 0 0-2.52 2.016 3.015 3.015 0 0 0 .526 4.236c.338.253.671.514 1 .778a2.9 2.9 0 0 1 1.061 1.408 2.668 2.668 0 0 1-.767 2.935c-.429.393-.9.737-1.362 1.1A2.9 2.9 0 0 0 1.66 18.4a4.238 4.238 0 0 0 1.474 1.875 9.636 9.636 0 0 0 6.836 2.016 10.206 10.206 0 0 0 4.484-1.48 10.431 10.431 0 0 0 4.233-4.893 9.948 9.948 0 0 0 .729-2.745m5.19-7.862-.074-.074a99.034 99.034 0 0 0-10.583 9.169l1.591 1.545a98.291 98.291 0 0 0 9.066-10.64M9.871 19.6a6.541 6.541 0 0 0 2 .118 3.378 3.378 0 0 0 1.869-.76 3.885 3.885 0 0 0 1.183-1.969.286.286 0 0 0-.077-.334c-.441-.431-.87-.874-1.306-1.311-.475-.477-.477-.478-1.117-.271a2.024 2.024 0 0 0-1.338 1.1 12.7 12.7 0 0 0-.425 1.313c-.163.536-.305 1.079-.483 1.611a2.526 2.526 0 0 1-.311.5',\n },\n child: [],\n },\n {\n tag: 'path',\n attr: {\n d: 'M15.289 10.865a2.043 2.043 0 0 1-1.97-2.233 2.052 2.052 0 1 1 1.97 2.233m1.18-2.029a1.112 1.112 0 0 0-2.224-.01 1.124 1.124 0 0 0 1.123 1.1 1.093 1.093 0 0 0 1.1-1.094',\n },\n child: [],\n },\n {\n tag: 'path',\n attr: {\n d: 'M5.279 9.17a2.037 2.037 0 1 1 2.036-2.152A2.031 2.031 0 0 1 5.279 9.17m-.011-.939a1.1 1.1 0 1 0-1.109-1.11 1.1 1.1 0 0 0 1.109 1.11',\n },\n child: [],\n },\n {\n tag: 'path',\n attr: {\n d: 'M8.679 5.605a2.048 2.048 0 1 1 2.064 2.006 2.024 2.024 0 0 1-2.064-2.006m.934-.03a1.115 1.115 0 1 0 1.1-1.1 1.117 1.117 0 0 0-1.1 1.1',\n },\n child: [],\n },\n {\n tag: 'path',\n attr: {\n fill: '#5d5d5d',\n\n fillRule: 'evenodd',\n\n transform: 'translate(-78.659 -351.017)',\n d: 'M7.895 17.255a2.045 2.045 0 1 1-2.079-2.031 2.032 2.032 0 0 1 2.079 2.031m-.934.021a1.111 1.111 0 1 0-1.131 1.091 1.108 1.108 0 0 0 1.131-1.091',\n },\n child: [],\n },\n ],\n },\n ],\n },\n ],\n })(props);\n};\n","import { GenIcon } from 'react-icons/lib';\n\nexport const AddMascots = (props) => {\n return GenIcon({\n tag: 'svg',\n attr: {\n xmlns: 'http://www.w3.org/2000/svg',\n width: '17.794',\n height: '17.8',\n viewBox: '0 0 17.794 17.8',\n },\n child: [\n {\n tag: 'defs',\n attr: {},\n child: [\n {\n tag: 'clipPath',\n attr: { id: 'a' },\n child: [\n {\n tag: 'path',\n attr: { d: 'M0 0h17.794v17.8H0z' },\n child: [],\n },\n ],\n },\n ],\n },\n {\n tag: 'g',\n attr: { 'clipPath': 'url(#a)' },\n child: [\n {\n tag: 'path',\n attr: {\n d: 'M15.2 17.8H2.6a1.263 1.263 0 0 0-.151-.046 2.957 2.957 0 0 1-2.443-2.882Q0 8.9.006 2.92A2.937 2.937 0 0 1 2.918.008q5.975-.014 11.949 0a2.76 2.76 0 0 1 2.475 1.415 7.114 7.114 0 0 1 .452 1.177v12.6a.57.57 0 0 0-.041.1 2.964 2.964 0 0 1-2.29 2.422c-.088.02-.176.046-.264.069M1.984 8.9v5.769a1 1 0 0 0 1.147 1.147h11.536a1 1 0 0 0 1.147-1.148V3.129a1 1 0 0 0-1.148-1.147H3.13a1 1 0 0 0-1.146 1.151v5.769',\n },\n child: [],\n },\n {\n tag: 'path',\n attr: {\n d: 'm5.938 8.903 1.483 2.433 2.965-6.388 4.443 8.889H2.975l2.963-4.934',\n },\n child: [],\n },\n {\n tag: 'path',\n attr: {\n d: 'M6.916 5.433a1.481 1.481 0 1 1-2.961.005 1.5 1.5 0 0 1 1.47-1.481 1.479 1.479 0 0 1 1.491 1.476',\n },\n child: [],\n },\n ],\n },\n ],\n })(props);\n};\n","import { GenIcon } from 'react-icons/lib';\n\nexport const AddText = (props) => {\n return GenIcon({\n tag: 'svg',\n attr: {\n xmlns: 'http://www.w3.org/2000/svg',\n width: '21',\n height: '21',\n viewBox: '0 0 21 21',\n },\n\n child: [\n {\n tag: 'g',\n attr: {},\n child: [\n {\n tag: 'path',\n attr: {\n d: 'M16 19H2V5h9V3H2a2.006 2.006 0 0 0-2 2v14a2.006 2.006 0 0 0 2 2h14a2.006 2.006 0 0 0 2-2v-9h-2Zm2-16V0h-2v3h-3c.01.01 0 2 0 2h3v2.99c.01.01 2 0 2 0V5h3V3Z',\n },\n child: [],\n },\n {\n tag: 'path',\n attr: {\n d: 'M8.438 15.791v-5.365h-.889v.859h-1.8c0-.643-.027-1.281.009-1.914a.841.841 0 0 1 .858-.762q2.725-.01 5.45 0a.841.841 0 0 1 .857.764c.036.634.009 1.271.009 1.919h-1.784v-.862h-.9v5.361Z',\n },\n child: [],\n },\n ],\n },\n ],\n })(props);\n};\n","import { GenIcon } from 'react-icons/lib';\n\nexport const ProductColor = (props) => {\n return GenIcon({\n tag: 'svg',\n attr: {\n xmlns: 'http://www.w3.org/2000/svg',\n width: '22.89',\n height: '24',\n viewBox: '0 0 22.89 24',\n },\n child: [\n {\n tag: 'defs',\n attr: {},\n child: [\n {\n tag: 'clipPath',\n attr: { id: 'a' },\n child: [\n {\n tag: 'path',\n attr: { d: 'M0 0h22.89v24H0z' },\n child: [],\n },\n ],\n },\n ],\n },\n {\n tag: 'g',\n attr: { 'clipPath': 'url(#a)' },\n child: [\n {\n tag: 'path',\n attr: {\n d: 'M8.012 5.076 4.663 1.753 6.55 0c1.111 1.168 2.3 2.454 3.526 3.7 2.646 2.684 5.318 5.342 7.969 8.02a3.693 3.693 0 0 1 .014 5.346q-2.907 2.949-5.856 5.857a3.608 3.608 0 0 1-5.014.051Q4.037 19.916.976 16.762a3.672 3.672 0 0 1 .2-5.185q3.09-3.021 6.208-6.012c.171-.166.377-.3.625-.489m-5.774 9.268H16.9l.143-.208L9.669 6.77c-2 1.567-7.19 6.816-7.435 7.573',\n },\n child: [],\n },\n {\n tag: 'path',\n attr: {\n d: 'M20.642 16.823c.711 1.4 1.485 2.775 2.109 4.214a2.16 2.16 0 0 1-.9 2.527 2.421 2.421 0 0 1-2.767 0 2.141 2.141 0 0 1-.885-2.523c.625-1.436 1.39-2.811 2.1-4.212h.347',\n },\n child: [],\n },\n ],\n },\n ],\n })(props);\n};\n","import { GenIcon } from 'react-icons/lib';\nexport const FlipH = (props) => {\n return GenIcon({\n tag: 'svg',\n attr: {\n width: '25.969',\n height: '22.478',\n viewBox: '0 0 25.969 22.478',\n ...props,\n },\n child: [\n {\n tag: 'defs',\n attr: {},\n child: [\n {\n tag: 'clipPath',\n attr: { id: 'a' },\n child: [\n {\n tag: 'path',\n attr: {\n 'data-name': 'Rectangle 336',\n fill: '#353535',\n d: 'M0 0h25.969v22.478H0z',\n },\n child: [],\n },\n ],\n },\n ],\n },\n {\n tag: 'g',\n attr: {\n 'data-name': 'Group 577',\n 'clipPath': 'url(#a)',\n fill: '#353535',\n },\n child: [\n {\n tag: 'path',\n attr: {\n 'data-name': 'Path 4546',\n d: 'm25.969 3.647-10.359 8.46 10.359 8.632Z',\n },\n child: [],\n },\n {\n tag: 'path',\n attr: {\n 'data-name': 'Path 4547',\n d: 'M0 3.469v17.276l10.366-8.466L0 3.469m1.719 3.593 5.914 5.218-5.914 4.87Z',\n },\n child: [],\n },\n {\n tag: 'path',\n attr: {\n 'data-name': 'Rectangle 329',\n d: 'M12.151 0h1.683v1.674h-1.683z',\n },\n child: [],\n },\n {\n tag: 'path',\n attr: {\n 'data-name': 'Rectangle 330',\n d: 'M12.154 3.462h1.677v1.686h-1.677z',\n },\n child: [],\n },\n {\n tag: 'path',\n attr: {\n 'data-name': 'Rectangle 331',\n d: 'M12.152 6.937h1.68v1.671h-1.68z',\n },\n child: [],\n },\n {\n tag: 'path',\n attr: {\n 'data-name': 'Rectangle 332',\n d: 'M12.144 10.406h1.679v1.669h-1.679z',\n },\n child: [],\n },\n {\n tag: 'path',\n attr: {\n 'data-name': 'Rectangle 333',\n d: 'M12.149 13.869h1.686v1.678h-1.686z',\n },\n child: [],\n },\n {\n tag: 'path',\n attr: {\n 'data-name': 'Rectangle 334',\n d: 'M12.143 17.334h1.686v1.683h-1.686z',\n },\n child: [],\n },\n {\n tag: 'path',\n attr: {\n 'data-name': 'Rectangle 335',\n d: 'M12.154 20.8h1.668v1.678h-1.668z',\n },\n child: [],\n },\n ],\n },\n ],\n })(props);\n};\n","import { GenIcon } from 'react-icons/lib';\n// https://www.svgviewer.dev/ use this website to compress and load the paths\n// source: https://raw.githubusercontent.com/alisamar/react-icons-all-files/master/ai/AiFillAccountBook.esm.js\nexport const FlipV = (props) => {\n return GenIcon({\n tag: 'svg',\n\n attr: {\n xmlns: 'http://www.w3.org/2000/svg',\n width: '22.48',\n height: '29.57.',\n viewBox: '9 9 22.48 25.97',\n },\n child: [\n {\n tag: 'defs',\n attr:{},\n child: [\n {\n tag: 'clipPath',\n attr: { id: 'a' },\n\n child: [\n {\n tag: 'path',\n attr: {\n 'data-name': 'Rectangle 336',\n fill: '#353535',\n d: 'M0 0h25.969v22.478H0z',\n },\n child: [],\n },\n ],\n },\n ],\n },\n {\n tag: 'g',\n attr: { 'data-name': 'Group 773' },\n child: [\n {\n tag: 'g',\n attr: {\n 'data-name': 'Rectangle 337',\n fill: '#fff',\n stroke: '#ebebeb',\n },\n child: [\n {\n tag: 'path',\n attr: { d: 'M0 0h45v45H0z', stroke: 'none' },\n child: [],\n },\n {\n tag: 'path',\n attr: { fill: 'none', d: 'M.5.5h44v44H.5z' },\n child: [],\n },\n ],\n },\n {\n tag: 'g',\n attr: { 'data-name': 'Group 631' },\n child: [\n {\n tag: 'g',\n attr: {\n 'data-name': 'Group 577',\n 'clipPath': 'url(#a)',\n fill: '#353535',\n transform: 'rotate(90 12.239 21.239)',\n },\n child: [\n {\n tag: 'path',\n attr: {\n 'data-name': 'Path 4546',\n d: 'm0 3.647 10.359 8.46L0 20.74',\n },\n child: [],\n },\n {\n tag: 'path',\n attr: {\n 'data-name': 'Path 4547',\n d: 'M25.969 3.469v17.276L15.603 12.28l10.366-8.811M24.25 7.062l-5.914 5.218 5.914 4.87',\n },\n child: [],\n },\n {\n tag: 'path',\n attr: {\n 'data-name': 'Rectangle 329',\n d: 'M12.135 0h1.683v1.674h-1.683z',\n },\n child: [],\n },\n {\n tag: 'path',\n attr: {\n 'data-name': 'Rectangle 330',\n d: 'M12.138 3.462h1.677v1.686h-1.677z',\n },\n child: [],\n },\n {\n tag: 'path',\n attr: {\n 'data-name': 'Rectangle 331',\n d: 'M12.136 6.937h1.68v1.671h-1.68z',\n },\n child: [],\n },\n {\n tag: 'path',\n attr: {\n 'data-name': 'Rectangle 332',\n d: 'M12.146 10.406h1.679v1.669h-1.679z',\n },\n child: [],\n },\n {\n tag: 'path',\n attr: {\n 'data-name': 'Rectangle 333',\n d: 'M12.134 13.869h1.686v1.678h-1.686z',\n },\n child: [],\n },\n {\n tag: 'path',\n attr: {\n 'data-name': 'Rectangle 334',\n d: 'M12.14 17.334h1.686v1.683H12.14z',\n },\n child: [],\n },\n {\n tag: 'path',\n attr: {\n 'data-name': 'Rectangle 335',\n d: 'M12.147 20.8h1.668v1.678h-1.668z',\n },\n child: [],\n },\n ],\n },\n ],\n },\n ],\n },\n ],\n })(props);\n};\n","import { GenIcon } from 'react-icons/lib';\nexport const SelectAll = (props) => {\n return GenIcon({\n tag: 'svg',\n\n attr: {\n xmlns: 'http://www.w3.org/2000/svg',\n width: '18.641',\n height: '18.063',\n viewBox: '0 0 18.641 18.063',\n className: 'group',\n ...props,\n },\n child: [\n {\n tag: 'g',\n attr: { 'data-name': 'Group 1075' },\n child: [\n {\n tag: 'g',\n attr: {\n fill: 'none',\n stroke: '#5d5d5d',\n strokeWidth: '1',\n },\n child: [\n {\n tag: 'rect',\n attr: { width: '16', height: '16', rx: '4', stroke: 'none' },\n child: [],\n },\n {\n tag: 'rect',\n attr: {\n x: '.75',\n y: '.75',\n width: '14.5',\n height: '14.5',\n rx: '3.25',\n },\n child: [],\n },\n ],\n },\n {\n tag: 'path',\n attr: {\n d: 'm7.049 8.602.146-.137 3.2-3.2a.766.766 0 0 1 .5-.267.652.652 0 0 1 .539 1.082c-.03.035-.064.066-.1.1l-3.836 3.829a.664.664 0 0 1-1.1-.068c-.415-.549-.826-1.1-1.24-1.649a.657.657 0 0 1-.083-.755.65.65 0 0 1 1.085-.093c.253.311.486.638.728.959l.151.2',\n className: 'group-hover:fill-[#E11A38]',\n },\n child: [],\n },\n {\n tag: 'path',\n attr: {\n d: 'M5.892 18.063c-.1-.023-.2-.043-.3-.07a1.976 1.976 0 0 1-1.385-1.249h10.599a2.39 2.39 0 0 0 2.327-1.536 2.873 2.873 0 0 0 .177-.988c.013-2.859.008-5.717.008-8.576V3.671a1.652 1.652 0 0 1 .708.43 1.927 1.927 0 0 1 .58 1.124.871.871 0 0 0 .033.114v9.182a1.686 1.686 0 0 0-.031.167 3.713 3.713 0 0 1-2.515 3.16 10.1 10.1 0 0 1-1 .214Z',\n className: 'group-hover:fill-[#E11A38]',\n },\n child: [],\n },\n ],\n },\n ],\n })(props);\n};","import { GenIcon } from 'react-icons/lib';\n\nexport const Copy = (props) => {\n return GenIcon({\n tag: 'svg',\n attr: {\n xmlns: 'http://www.w3.org/2000/svg',\n width: '18',\n height: '18',\n viewBox: '0 0 18 18',\n ...props,\n },\n child: [\n {\n tag: 'path',\n attr: {\n d: 'M13.98 4.1A.938.938 0 0 0 14 4a4 4 0 0 0-4-4H5a5.006 5.006 0 0 0-5 5v5a4 4 0 0 0 4 4 .93.93 0 0 0 .1-.02A5.007 5.007 0 0 0 9 18h4a5.006 5.006 0 0 0 5-5V9a5.007 5.007 0 0 0-4.02-4.9ZM4 9v3a2 2 0 0 1-2-2V5a3 3 0 0 1 3-3h5a2 2 0 0 1 2 2H9a5.006 5.006 0 0 0-5 5Zm12 4a3 3 0 0 1-3 3H9a3 3 0 0 1-3-3V9a3 3 0 0 1 3-3h4a3 3 0 0 1 3 3Z',\n },\n child: [],\n },\n ],\n })(props);\n};\n","import { GenIcon } from 'react-icons/lib';\n\nexport const Paste = (props) => {\n return GenIcon({\n tag: 'svg',\n attr: {\n xmlns: 'http://www.w3.org/2000/svg',\n width: '23.063',\n height: '23.063',\n viewBox: '0 0 23.063 23.063',\n ...props,\n },\n child: [\n {\n tag: 'g',\n attr: { 'data-name': 'Group 1076' },\n child: [\n {\n tag: 'path',\n attr: {\n d: 'M1197.621 519.516a1.2 1.2 0 0 0 .026-.127 5.13 5.13 0 0 0-5.125-5.125h-6.407a6.414 6.414 0 0 0-6.406 6.406v6.406a5.13 5.13 0 0 0 5.125 5.125 1.192 1.192 0 0 0 .127-.026 6.415 6.415 0 0 0 6.279 5.151h5.125a6.414 6.414 0 0 0 6.406-6.406v-5.125a6.415 6.415 0 0 0-5.151-6.279Zm-12.787 6.279v3.844a2.565 2.565 0 0 1-2.562-2.562v-6.407a3.848 3.848 0 0 1 3.843-3.843h6.406a2.565 2.565 0 0 1 2.563 2.563h-3.844a6.414 6.414 0 0 0-6.406 6.406Zm15.375 5.125a3.848 3.848 0 0 1-3.844 3.844h-5.125a3.848 3.848 0 0 1-3.844-3.844v-5.125a3.848 3.848 0 0 1 3.844-3.844h5.125a3.848 3.848 0 0 1 3.844 3.844Z',\n transform: 'translate(-1179.709 -514.264)',\n },\n child: [],\n },\n {\n tag: 'path',\n attr: {\n 'data-name': 'Line 590',\n fill: 'none',\n 'stroke-linecap': 'round',\n 'stroke-width': '1.5',\n d: 'M1189.779 526.5h6',\n transform: 'translate(-1179.709 -514.264)',\n },\n child: [],\n },\n {\n tag: 'path',\n attr: {\n 'data-name': 'Line 591',\n fill: 'none',\n 'stroke-linecap': 'round',\n 'stroke-width': '1.5',\n d: 'M1189.779 530.5h8',\n transform: 'translate(-1179.709 -514.264)',\n },\n child: [],\n },\n ],\n },\n ],\n })(props);\n};\n","import { GenIcon } from 'react-icons/lib';\n\nexport const SendToBack = (props) => {\n return GenIcon({\n tag: 'svg',\n attr: {\n xmlns: 'http://www.w3.org/2000/svg',\n width: '26.551',\n height: '23.495',\n viewBox: '0 0 26.551 23.495',\n ...props,\n },\n child: [\n {\n tag: 'g',\n attr: { },\n child: [\n {\n tag: 'path',\n attr: {\n d: 'M17861.625-13909.535h14.069v14.069h-14.069Z',\n transform: 'translate(-17856.939 13913.36)',\n },\n child: [],\n },\n {\n tag: 'path',\n attr: {\n 'data-name': 'Rectangle 387',\n fill: 'none',\n 'stroke-miterlimit': '10',\n 'stroke-width': '2',\n d: 'M17857.939-13912.36h10.72v7.664h-10.72z',\n transform: 'translate(-17856.939 13913.36)',\n },\n child: [],\n },\n {\n tag: 'path',\n attr: {\n 'data-name': 'Rectangle 388',\n fill: 'none',\n 'stroke-miterlimit': '10',\n 'stroke-width': '2',\n d: 'M17871.771-13898.529h10.72v7.664h-10.72z',\n transform: 'translate(-17856.939 13913.36)',\n },\n child: [],\n },\n ],\n },\n ],\n })(props);\n};\n","import { GenIcon } from 'react-icons/lib';\n\nexport const SendToFront = (props) => {\n return GenIcon({\n tag: 'svg',\n attr: {\n xmlns: 'http://www.w3.org/2000/svg',\n width: '26.551',\n height: '23.495',\n viewBox: '0 0 26.551 23.495',\n ...props,\n },\n child: [\n {\n tag: 'g',\n attr: { },\n child: [\n {\n tag: 'g',\n attr: { },\n child: [\n {\n tag: 'g',\n attr: { },\n child: [\n {\n tag: 'g',\n attr: {\n fill: 'none',\n 'stroke-miterlimit': '10',\n 'stroke-width': '2',\n },\n child: [\n {\n tag: 'path',\n attr: {\n d: 'M1.001.999h10.72v7.664H1.001z',\n },\n child: [],\n },\n {\n tag: 'path',\n attr: {\n d: 'M14.833 14.831h10.72v7.664h-10.72z',\n },\n child: [],\n },\n ],\n },\n ],\n },\n {\n tag: 'path',\n attr: {\n d: 'M4.686 4.496h14.069v14.069H4.686z',\n },\n child: [],\n },\n ],\n },\n ],\n },\n ],\n })(props);\n};\n","import { GenIcon } from 'react-icons/lib';\nexport const SendAObject = (props) => {\n return GenIcon({\n tag: 'svg',\n attr: {\n xmlns: 'http://www.w3.org/2000/svg',\n width: '23.098',\n height: '22.48',\n viewBox: '0 0 23.098 22.48',\n ...props,\n },\n child: [\n {\n tag: 'g',\n attr: {},\n child: [\n {\n tag: 'g',\n attr: { 'data-name': 'Group 642' },\n child: [\n {\n tag: 'g',\n attr: { 'data-name': 'Group 643' },\n child: [\n {\n tag: 'path',\n attr: {\n 'data-name': 'Rectangle 383',\n fill: 'none',\n 'stroke-miterlimit': '10',\n 'stroke-width': '2',\n d: 'M1 1h16v16H1z',\n },\n child: [],\n },\n ],\n },\n ],\n },\n {\n tag: 'path',\n attr: {\n 'data-name': 'Rectangle 385',\n d: 'M7.097 6.481h16v16h-16z',\n },\n child: [],\n },\n ],\n },\n ],\n })(props);\n};\n","import { GenIcon } from 'react-icons/lib';\nexport const SendUnderObject = (props) => {\n return GenIcon({\n tag: 'svg',\n attr: {\n xmlns: 'http://www.w3.org/2000/svg',\n width: '23.098',\n height: '22.48',\n viewBox: '0 0 23.098 22.48',\n ...props,\n },\n child: [\n {\n tag: 'g',\n attr: {},\n child: [\n {\n tag: 'path',\n attr: {\n d: 'M7.097 6.481h16v16h-16',\n },\n child: [],\n },\n {\n tag: 'g',\n attr: {},\n child: [\n {\n tag: 'g',\n attr: {},\n child: [\n {\n tag: 'path',\n attr: {\n fill: 'none',\n 'stroke-miterlimit': '10',\n 'stroke-width': '2',\n d: 'M1 1h16v16H1z',\n },\n child: [],\n },\n ],\n },\n ],\n },\n ],\n },\n ],\n })(props);\n};\n","import { GenIcon } from 'react-icons/lib';\n\nexport const EyeDropper = (props) => {\n return GenIcon({\n tag: 'svg',\n attr: {\n xmlns: 'http://www.w3.org/2000/svg',\n width: '21.595',\n height: '21.61',\n viewBox: '0 0 21.595 21.61',\n },\n child: [\n {\n tag: 'defs',\n attr: {},\n child: [\n {\n tag: 'clipPath',\n attr: { id: 'a' },\n child: [\n {\n tag: 'path',\n attr: { d: 'M0 0h21.595v21.61H0z' },\n child: [],\n },\n ],\n },\n ],\n },\n {\n tag: 'g',\n attr: { 'clipPath': 'url(#a)' },\n child: [\n {\n tag: 'path',\n attr: {\n d: 'M1.228 21.609a2.184 2.184 0 0 1-1.019-.812.946.946 0 0 1-.009-1.18q.455-.7.922-1.386a3.7 3.7 0 0 0 .667-1.553 5.591 5.591 0 0 0 .054-.608 2.553 2.553 0 0 1 .814-1.771q3.351-3.342 6.7-6.692a2.115 2.115 0 0 1 .222-.168c-.232-.224-.428-.405-.615-.6a.509.509 0 0 1-.008-.81q.925-.938 1.862-1.865a.507.507 0 0 1 .812 0q2.91 2.9 5.813 5.814a.509.509 0 0 1 0 .812q-.926.937-1.864 1.863a.508.508 0 0 1-.81 0c-.2-.192-.381-.393-.58-.6-.06.05-.1.082-.141.119-2.268 2.244-4.543 4.48-6.8 6.737a2.813 2.813 0 0 1-2.027.876 2.969 2.969 0 0 0-1.611.549c-.5.331-.99.667-1.492.99a5.8 5.8 0 0 1-.556.281Zm2.234-3.431a5.564 5.564 0 0 1 1.852-.385.8.8 0 0 0 .473-.228q3.425-3.372 6.836-6.758a.764.764 0 0 1 .128-.091l-1.869-1.881a1.682 1.682 0 0 1-.132.166q-3.233 3.237-6.473 6.466a1.283 1.283 0 0 0-.483 1.1.6.6 0 0 1-.021.188c-.1.47-.206.94-.312 1.422',\n },\n child: [],\n },\n {\n tag: 'path',\n attr: {\n d: 'M21.595 4.022c-.052.217-.1.436-.157.649a3.645 3.645 0 0 1-.967 1.581q-1.1 1.094-2.191 2.19a.537.537 0 0 1-.9 0l-4.217-4.218a.531.531 0 0 1 0-.885c.806-.8 1.585-1.636 2.429-2.4a3.378 3.378 0 0 1 3.571-.712 3.5 3.5 0 0 1 2.388 2.854c.011.061.029.121.044.181Z',\n },\n child: [],\n },\n ],\n },\n ],\n })(props);\n};\n","import { GenIcon } from 'react-icons/lib';\nexport const Delete = (props) => {\n return GenIcon({\n tag: 'svg',\n attr: {\n id: 'ICONS',\n xmlns: 'http://www.w3.org/2000/svg',\n width: '18',\n height: '18',\n viewBox: '0 0 18 18',\n ...props,\n },\n child: [\n {\n tag: 'path',\n attr: {\n id: 'Path_3953',\n 'data-name': 'Path 3953',\n d: 'M7,8A1,1,0,0,0,6,9v4a1,1,0,0,0,2,0V9A1,1,0,0,0,7,8Z',\n },\n child: [],\n },\n {\n tag: 'path',\n attr: {\n id: 'Path_3954',\n 'data-name': 'Path 3954',\n d: 'M11,8a1,1,0,0,0-1,1v4a1,1,0,0,0,2,0V9a1,1,0,0,0-1-1Z',\n },\n child: [],\n },\n {\n tag: 'path',\n attr: {\n id: 'Path_3955',\n 'data-name': 'Path 3955',\n d: 'M17,4H13A4,4,0,1,0,5,4H1A1,1,0,0,0,1,6H2v9a3,3,0,0,0,3,3h8a3,3,0,0,0,3-3V6h1a1,1,0,0,0,0-2ZM9,2a2,2,0,0,1,2,2H7A2,2,0,0,1,9,2Zm5,13a1,1,0,0,1-1,1H5a1,1,0,0,1-1-1V6H14Z',\n },\n child: [],\n },\n ],\n })(props);\n};\n","import React from 'react';\nimport { use3dddPlus } from '../../store';\nimport { CANVAS_MENU_TEXT } from '../../theme';\nimport { Copy, Delete, IconButton, SelectAll } from '../icon';\nimport { MdLayers } from 'react-icons/md';\nimport { shallow } from 'zustand/shallow';\nimport { fabric } from 'fabric';\nimport { CgRedo, CgUndo } from 'react-icons/cg';\nconst ActionButtons = () => {\n const [canvas, activeSelection] = use3dddPlus(\n (state) => [state.fabricCanvas, state.activeSelection],\n shallow\n );\n const selectAllHandler = () => {\n canvas.discardActiveObject();\n const sel = new fabric.ActiveSelection(canvas.getObjects(), {\n canvas: canvas,\n });\n canvas.setActiveObject(sel);\n canvas.requestRenderAll();\n use3dddPlus.getState().updateModifaction(true);\n use3dddPlus.setState({ selectedAll: true });\n use3dddPlus.setState({ currentSelection: 'selectAll' });\n const fillColors = {};\n use3dddPlus.setState({ colorFill: fillColors });\n };\n const deleteHandler = () => {\n canvas.remove(activeSelection);\n use3dddPlus.getState().updateModifaction(true);\n canvas.requestRenderAll();\n use3dddPlus.setState({ selectedAll: false });\n removeItem(activeSelection);\n };\n const removeItem = (value: any) => {\n //@ts-ignore\n var index = use3dddPlus.getState().storeAllObject.indexOf(value);\n if (index > -1) {\n use3dddPlus.getState().storeAllObject.splice(index, 1);\n }\n use3dddPlus.setState({\n storeAllObject: [...use3dddPlus.getState().storeAllObject],\n });\n };\n const canvasActions = [\n {\n icon: <SelectAll />,\n onClick: selectAllHandler,\n id: 'select-action',\n label: 'Select all',\n disabled: false,\n visible: true,\n },\n {\n icon: <Copy />,\n onClick: () => {\n use3dddPlus.getState().duplicateObject();\n },\n id: 'duplicate-action',\n label: 'Duplicate',\n disabled: false,\n visible: true,\n },\n {\n icon: <MdLayers />,\n onClick: () => {\n use3dddPlus.setState({ currentSelection: 'layer' });\n },\n id: 'layes-action',\n label: 'Layers',\n disabled: false,\n visible: true,\n },\n {\n icon: <Delete />,\n onClick: deleteHandler,\n id: 'delete-action',\n label: 'Delete',\n disabled: false,\n visible: true,\n },\n {\n icon: <CgUndo />,\n onClick: () => {\n use3dddPlus.getState().undo();\n },\n id: 'undo-action',\n label: 'Undo',\n disabled: false,\n visible: true,\n },\n {\n icon: <CgRedo />,\n onClick: () => {\n use3dddPlus.getState().redo();\n },\n id: 'redo-action',\n label: 'Redo',\n disabled: false,\n visible: true,\n },\n ];\n\n return (\n <>\n <div className=\"w-100 flex absolute top-0 right-0 px-3 items-center z-10\">\n <div className={`flex py-[16px]`}>\n {canvasActions.map(\n (item) =>\n item?.visible && (\n <div\n key={item.id}\n className={`${\n item.disabled\n ? 'disableButton'\n : `${CANVAS_MENU_TEXT} cursor-pointer hover:text-[#e11a38] hover:underline hover:underline-offset-4 hover:decoration-2`\n } flex gap-[5px] items-center pt-[2.5px] font-bold uppercase mr-[10px] lg:mr-[30px] md-[20px] `}\n onClick={item.onClick}\n >\n <span>\n <IconButton\n label=\"\"\n icon={item.icon}\n className={`${\n item.disabled\n ? 'iconDisable'\n : 'pointer-events-auto cursor-pointer'\n } m-auto`}\n size=\"1.125rem\"\n ></IconButton>\n </span>\n </div>\n )\n )}\n </div>\n </div>\n </>\n );\n};\n\nexport default ActionButtons;\n","import React from 'react';\nimport { use3dddPlus } from '../../store';\nimport { shallow } from 'zustand/shallow';\nimport {\n Copy,\n IconButton,\n Paste,\n SendAObject,\n SendToBack,\n SendToFront,\n SendUnderObject,\n} from '../icon';\n\n\nexport const ContextMenu = () => {\n const [activeObj, canvas] = use3dddPlus(\n (state) => [state.activeSelection, state.fabricCanvas],\n shallow\n );\n\n // const flipX = () => {\n // activeObj.set({\n // flipX: !activeObj.flipX,\n // });\n // use3dddPlus.getState().updateModifaction(true);\n // canvas.renderAll();\n // use3dddPlus.setState({\n // showContextMenu: false,\n // });\n // };\n // const flipY = () => {\n // activeObj.set({\n // flipY: !activeObj.flipY,\n // });\n // use3dddPlus.getState().updateModifaction(true);\n // // activeObj.\n // canvas.renderAll();\n // use3dddPlus.setState({\n // showContextMenu: false,\n // });\n // };\n const sendBackwards = () => {\n canvas.sendBackwards(activeObj);\n use3dddPlus.getState().updateModifaction(true);\n use3dddPlus.setState({\n showContextMenu: false,\n });\n };\n const bringForward = () => {\n canvas.bringForward(activeObj);\n use3dddPlus.getState().updateModifaction(true);\n use3dddPlus.setState({\n showContextMenu: false,\n });\n };\n const sendToBack = () => {\n console.log('hiii');\n canvas.sendToBack(activeObj);\n use3dddPlus.getState().updateModifaction(true);\n use3dddPlus.setState({\n showContextMenu: false,\n });\n };\n const bringToFront = () => {\n canvas.bringToFront(activeObj);\n use3dddPlus.getState().updateModifaction(true);\n use3dddPlus.setState({\n showContextMenu: false,\n });\n };\n // const snapToCenter = () => {\n // activeObj.set({\n // left: canvas.width / 2,\n // originX: 'center',\n // });\n // use3dddPlus.getState().updateModifaction(true);\n // canvas.renderAll();\n // use3dddPlus.setState({\n // showContextMenu: false,\n // });\n // };\n const copy = () => {\n use3dddPlus.getState().duplicateObject();\n use3dddPlus.setState({\n showContextMenu: false,\n });\n };\n const menu = [\n {\n id: 1,\n name: 'Copy',\n onclick: copy,\n icon: <Copy />,\n },\n {\n id: 2,\n name: 'Paste',\n onclick: copy,\n icon: <Paste />,\n },\n {\n id: 3,\n name: 'Bring to front',\n onclick: bringForward,\n icon: <SendToFront />,\n },\n {\n id: 4,\n name: 'Send to back',\n onclick: sendBackwards,\n icon: <SendToBack />,\n },\n {\n id: 5,\n name: 'Bring above objects',\n onclick: bringToFront,\n icon: <SendAObject />,\n },\n {\n id: 6,\n name: 'Send under objects',\n onclick: sendToBack,\n icon: <SendUnderObject />,\n },\n // {\n // id: 7,\n // name: 'Flip Horizontal - Left/right horizontal',\n // onclick: flipX,\n // icon: <FlipH />,\n // },\n // {\n // id: 8,\n // name: 'Flip Vertical- Left/right vertical',\n // onclick: flipY,\n // icon: <FlipV />,\n // },\n // {\n // id: 9,\n // name: 'Snap to center',\n // onclick: snapToCenter,\n // icon: '',\n // },\n ];\n return (\n <ul>\n {menu.map((item, index) => {\n return (\n <li\n className=\"flex cursor-pointer hover:text-[#e11a38] border border-b-[1px] border-[#EBEBEB] px-[30px] py-[14px] \"\n onClick={item.onclick}\n key={index}\n >\n <span>\n <IconButton\n label=\"\"\n icon={item.icon}\n className=\"pointer-events-auto cursor-pointer m-auto\"\n size=\"1.125rem\"\n ></IconButton>\n </span>\n <span className=\" pl-[20px] text-sm font-bold uppercase\">\n {item.name}\n </span>\n </li>\n );\n })}\n </ul>\n );\n};\n","import React, { useRef } from 'react';\nimport './canvas.css';\nimport { use3dddPlus } from '../../store';\nimport ActionButtons from './canvasButtons'; //Importing Action button component which is displaying buttons\nimport { initCanvas } from '../../store/fabric/fabricCanvas';\nimport { shallow } from 'zustand/shallow';\nimport { ContextMenu } from '../contextMenu';\n\nconst canvas = () => {\n const [contextMenuCoordinates, showContextMenu] = use3dddPlus(\n (state) => [state.contextMenuCoordinates, state.showContextMenu],\n shallow\n );\n const canvasRef = useRef<HTMLCanvasElement | null>(null);\n const resizeCanvas = () => {\n const canvas = use3dddPlus.getState().fabricCanvas;\n const outerCanvasContainer =\n document.getElementById('fabCanvas').parentElement;\n const containerWidth = outerCanvasContainer.clientWidth;\n const scale = containerWidth / canvas.getWidth();\n const zoom = canvas.getZoom() * scale;\n canvas.setWidth(containerWidth);\n //@ts-ignore\n canvas.setHeight(parseInt(outerCanvasContainer.clientHeight));\n console.log('--->', canvas.getHeight(), canvas.getHeight());\n canvas.setViewportTransform([zoom, 0, 0, zoom, 0, 0]);\n canvas.renderAll();\n };\n React.useEffect(() => {\n const canv = initCanvas();\n use3dddPlus.setState({ fabricCanvas: canv });\n resizeCanvas();\n window.addEventListener('resize', resizeCanvas);\n }, []);\n\n return (\n <div className=\" w-full h-full relative\">\n <ActionButtons />\n <div id=\"fabCanvas\">\n <canvas ref={canvasRef} id=\"canvas\"></canvas>\n {showContextMenu && (\n <div\n style={{\n position: 'absolute',\n zIndex: 1000,\n left: contextMenuCoordinates.x,\n top: contextMenuCoordinates.y,\n backgroundColor: 'white',\n border: '1px solid #ccc',\n boxShadow: '2px 2px 5px rgba(0,0,0,0.5)',\n }}\n onBlur={() => {\n use3dddPlus.setState({ showContextMenu: false });\n }}\n >\n <ContextMenu />\n </div>\n )}\n </div>\n </div>\n );\n};\n\nexport default canvas;\n","import { fabric } from 'fabric';\n//@ts-ignore\n// import deleteIcon from '../../assets/images/delete.png';\n// //@ts-ignore\n// import rotateIcon from '../../assets/images/rotate.png';\n// //@ts-ignore\n// import settingIcon from '../../assets/images/settings.png';\nimport { use3dddPlus } from '..';\n\nexport const initCanvas = () => {\n const onObjectSelected = (e) => {\n if (e?.selected?.[0]?.colorFill) {\n use3dddPlus.setState({ colorFill: e.selected[0].colorFill });\n }\n use3dddPlus.setState({\n currentSelection: canv.getActiveObject().get('type'),\n });\n use3dddPlus.setState({ activeSelection: canv.getActiveObject() });\n getAllColors();\n };\n const onObjectDeselected = () => {\n use3dddPlus.setState({ currentSelection: 'none' });\n use3dddPlus.setState({ showContextMenu: false });\n getAllColors();\n };\n const onObjectUpdated = (e) => {\n // use3dddPlus.setState({colorFill : \"\"})\n if (e?.selected?.[0]?.colorFill) {\n use3dddPlus.setState({ colorFill: e.selected[0].colorFill });\n }\n use3dddPlus.setState({\n currentSelection: canv.getActiveObject().get('type'),\n });\n use3dddPlus.setState({ activeSelection: e.selected[0] });\n use3dddPlus.setState({ textInfo: e.selected[0].text });\n use3dddPlus.setState({ showContextMenu: false });\n getAllColors();\n };\n const onObjectMoving = (e: any) => {\n use3dddPlus.getState().updateModifaction(false);\n const obj = e.target;\n if (obj.getBoundingRect().width > obj.canvas.height || obj.getBoundingRect().height > obj.canvas.width) {\n return;\n }\n obj.setCoords();\n if (obj.getBoundingRect().top < 0 || obj.getBoundingRect().left < 0) {\n obj.top = Math.max(obj.top, obj.top - obj.getBoundingRect().top);\n obj.left = Math.max(obj.left, obj.left - obj.getBoundingRect().left);\n }\n if (obj.getBoundingRect().top + obj.getBoundingRect().height > obj.canvas.height || obj.getBoundingRect().left + obj.getBoundingRect().width > obj.canvas.width) {\n obj.top = Math.min(obj.top, obj.canvas.height - obj.getBoundingRect().height + obj.top - obj.getBoundingRect().top);\n obj.left = Math.min(obj.left, obj.canvas.width - obj.getBoundingRect().width + obj.left - obj.getBoundingRect().left);\n }\n }\n\n const canv = new fabric.Canvas('canvas', {\n centeredScaling: true,\n preserveObjectStacking: true,\n backgroundColor: '#ffff00',\n stopContextMenu: false,\n });\n // console.log('HISTORY-->',historyInit());\n let deleteImg = document.createElement('img');\n deleteImg.src =\n 'https://storage.googleapis.com/3ddplusgcp/logoEditor/assets/icons/delete.png';\n let rotateImg = document.createElement('img');\n rotateImg.src =\n 'https://storage.googleapis.com/3ddplusgcp/logoEditor/assets/icons/rotate.png';\n let settingImg = document.createElement('img');\n settingImg.src =\n 'https://storage.googleapis.com/3ddplusgcp/logoEditor/assets/icons/settings.png';\n fabric.Object.prototype.objectCaching = true;\n fabric.Object.prototype.transparentCorners = false;\n fabric.Object.prototype.cornerColor = '#14caf7';\n fabric.Object.prototype.cornerStrokeColor = '#045791';\n fabric.Object.prototype.borderColor = '#14caf7';\n fabric.Object.prototype.cornerSize = 16;\n // fabric.Object.prototype.padding = 10;\n fabric.Object.prototype.cornerStyle = 'circle';\n fabric.Object.prototype.borderDashArray = [5, 5];\n\n function renderIcon(icon) {\n return function renderIcon(ctx, left, top, fabricObject) {\n var size = this.cornerSize;\n ctx.save();\n ctx.translate(left, top);\n ctx.rotate(fabric.util.degreesToRadians(fabricObject.angle));\n ctx.drawImage(icon, -size / 2, -size / 2, size, size);\n ctx.restore();\n };\n }\n\n fabric.Object.prototype.controls.deleteControl = new fabric.Control({\n x: 0.53,\n y: -0.53,\n offsetY: -16,\n offsetX: 16,\n cursorStyle: 'pointer',\n //@ts-ignore\n mouseUpHandler: deleteObject,\n render: renderIcon(deleteImg),\n cornerSize: 28,\n });\n fabric.Object.prototype.controls.settingControl = new fabric.Control({\n x: -0.53,\n y: -0.53,\n offsetY: -16,\n offsetX: -16,\n cursorStyle: 'pointer',\n //@ts-ignore\n mouseUpHandler: function (e) {\n use3dddPlus.setState({\n showContextMenu: true,\n });\n\n const rect = canv.getElement().getBoundingClientRect();\n const x = e.clientX - rect.left;\n const y = e.clientY - rect.top;\n // You can add your context menu rendering logic here\n // Example: Render a simple alert with the coordinates\n use3dddPlus.setState({ contextMenuCoordinates: { x: x, y: y } });\n // alert(`Context menu clicked at (${x}, ${y})`);\n },\n render: renderIcon(settingImg),\n cornerSize: 28,\n });\n //@ts-ignore\n function deleteObject(eventData, transform) {\n const canvasTarget = transform.target;\n const canvas = canvasTarget.canvas;\n if (use3dddPlus.getState().selectedAll) {\n const target = transform.target._objects;\n target.forEach((element) => {\n canvas.remove(element);\n canvas.requestRenderAll();\n removeItem(element);\n });\n use3dddPlus.setState({ selectedAll: false });\n canvas.discardActiveObject().renderAll();\n } else {\n canvas.remove(canvasTarget);\n canvas.requestRenderAll();\n removeItem(canvasTarget);\n }\n }\n const removeItem = (value: any) => {\n //@ts-ignore\n var index = use3dddPlus.getState().storeAllObject.indexOf(value);\n if (index > -1) {\n use3dddPlus.getState().storeAllObject.splice(index, 1);\n }\n use3dddPlus.setState({\n storeAllObject: [...use3dddPlus.getState().storeAllObject],\n });\n };\n\n fabric.Object.prototype.controls.mtr = new fabric.Control({\n x: 0,\n y: -0.5,\n offsetY: -40,\n cursorStyle: 'crosshair',\n //@ts-ignore\n actionHandler: fabric?.controlsUtils.rotationWithSnapping,\n actionName: 'rotate',\n // mouseover:function hover(eventData,transform){\n // let target = transform.target;\n // console.log('TARGET-->',target);\n // },\n render: function renderIcon(ctx, left, top, fabricObject) {\n var size = this.cornerSize;\n ctx.save();\n ctx.translate(left, top);\n ctx.rotate(fabric.util.degreesToRadians(fabricObject.angle));\n ctx.drawImage(rotateImg, -size / 2, -size / 2, size, size);\n ctx.restore();\n },\n //@ts-ignore\n cornerSize: 28,\n withConnection: true,\n });\n const getAllColors = () => {\n if (!canv?.getObjects()) {\n return;\n }\n const allColor = new Set(\n canv\n ?.getObjects()\n ?.map((item) => {\n // Check if 'item' and 'colorFill' are not undefined or null\n if (item && item['colorFill'] != null) {\n return Object.values(item['colorFill']);\n }\n return [];\n })\n .flat()\n ); // FOR REMOVING ALL DUPLICATE COLOR CODES\n // const allColor =[];\n use3dddPlus.setState({ allColor: allColor });\n };\n canv.on('after:render', getAllColors);\n canv.on('selection:created', onObjectSelected);\n canv.on('selection:cleared', onObjectDeselected);\n canv.on('selection:updated', onObjectUpdated);\n canv.on('object:moving', onObjectMoving);\n canv.on('object:modified', function () {\n use3dddPlus.getState().updateModifaction(true);\n })\n return canv;\n};\n","import React from 'react';\n\nexport interface CardProps {\n cardClass?: string;\n children?: React.ReactNode;\n onClick?: (e: React.MouseEvent<HTMLDivElement, MouseEvent>) => void;\n style?: React.CSSProperties;\n key?:string\n \n}\n\nexport const Card = ({ cardClass,children, onClick,style,key }: CardProps) => {\n return (\n <>\n <div\n className={`card bg-base-100 relative ${cardClass}`}\n onClick={onClick}\n style={style}\n key={ key}\n >\n {children}\n </div>\n </>\n );\n};","import React from 'react';\n\nexport interface CardBodyProps {\n bodyClass?: string;\n children?: React.ReactNode;\n}\nexport const CardBody = ({ bodyClass, children }: CardBodyProps) => {\n return (\n <>\n <div className={`card-body items-center text-center ${bodyClass}`}>\n {children}\n </div>\n </>\n );\n};\n","import React from 'react';\nimport './card.css';\n\nexport interface CardMediaProps {\n alt?: string;\n imageClass?: string;\n src?: string;\n}\nexport const CardMedia = ({ alt, imageClass, src }: CardMediaProps) => {\n return (\n <>\n <div\n role=\"img\"\n aria-label={alt}\n className={`cardImage ${imageClass}`}\n style={{ backgroundImage: `url('${src}')` }}\n ></div>\n </>\n );\n};","import React from 'react';\nexport interface CardTitleProps {\n name?: string;\n titleClass?: string;\n}\nexport const CardTitle = ({ name, titleClass }: CardTitleProps) => {\n return (\n <>\n <p className={`card-title ${titleClass}`}>{name}</p>\n </>\n );\n};\n","import React, { useRef, useState } from 'react';\nimport { MdOutlineFileUpload } from 'react-icons/md';\nimport { IconButton } from '../icon';\ninterface FileUploadButtonProps {\n onFileSelect: (file: File) => void;\n}\n\nconst FileUploadButton: React.FC<FileUploadButtonProps> = ({\n onFileSelect,\n}) => {\n const fileInputRef = useRef<HTMLInputElement>(null);\n const [isDragging, setIsDragging] = useState(false);\n\n const handleFileSelect = (event: React.ChangeEvent<HTMLInputElement>) => {\n const selectedFile = event.target.files?.[0];\n\n if (selectedFile) {\n onFileSelect(selectedFile);\n }\n };\n\n const handleDragEnter = (event: React.DragEvent<HTMLDivElement>) => {\n event.preventDefault();\n setIsDragging(true);\n };\n\n const handleDragLeave = (event: React.DragEvent<HTMLDivElement>) => {\n event.preventDefault();\n setIsDragging(false);\n };\n\n const handleDrop = (event: React.DragEvent<HTMLDivElement>) => {\n event.preventDefault();\n setIsDragging(false);\n\n const droppedFile = event.dataTransfer.files[0];\n if (droppedFile) {\n onFileSelect(droppedFile);\n }\n };\n\n return (\n <>\n <div\n className={`flex items-center justify-center w-full relative h-full ${\n isDragging ? 'dragging' : ''\n }`}\n onDragEnter={handleDragEnter}\n onDragLeave={handleDragLeave}\n onDragOver={(event) => event.preventDefault()}\n onDrop={handleDrop}\n >\n <label\n htmlFor=\"file-upload\"\n className=\"flex flex-col items-center justify-center gap-y-[12px] text-center absolute -translate-x-2/4 md:-translate-y-2/4 -translate-y-[30%] left-2/4 2xl:top-2/4 top-[42%] p-[50px] border-2 border-gray-300 border-dashed rounded-lg cursor-pointer bg-gray-50 dark:hover:bg-bray-800 dark:bg-gray-700 hover:bg-gray-100 dark:border-gray-600 dark:hover:border-gray-500 dark:hover:bg-gray-600\"\n >\n <div className=\" text-center flex flex-col gap-[8px]\">\n <IconButton\n label=\"\"\n icon={<MdOutlineFileUpload />}\n className={\n 'pointer-events-auto cursor-pointer m-auto text-[#E11A38] bg-[#FCE8EB] p-[16px] h-[unset] !rounded-full'\n }\n size=\"1.125rem\"\n ></IconButton>\n <div className=\"text-[#5D5D5D] text-base font-bold\">\n Drag Files To Upload\n </div>\n <div className=\"text-[#5D5D5D] text-base font-bold\">Or</div>\n </div>\n <div>\n {' '}\n <button\n onClick={() => fileInputRef.current?.click()}\n className=\"text-center py-[11.2px] border border-[#E11A38] text-[#E11A38] font-bold px-[20px] rounded-none hover:bg-[#E11A38] hover:text-white transition-all ease-in-out duration-300 cursor-pointer max-w-[220px]\"\n >\n BROWSE FILE\n </button>\n </div>\n\n <div className=\" text-center text-[#727272] text-sm\">\n <p>Max file size: 25M</p>\n <p>Supported files types: JPG, JPEG, PNG, GIF, EPS, PDF, SVG, AI</p>\n </div>\n <input\n id=\"file-upload\"\n ref={fileInputRef}\n type=\"file\"\n onChange={handleFileSelect}\n className=\"hidden\"\n accept=\"image/png, image/jpeg , image/gif , image/svg+xml , .eps , .ai , .pdf\"\n />\n </label>\n </div>{' '}\n </>\n );\n};\n\nexport default FileUploadButton;\n","import React, { useState } from 'react';\nimport { TEXT_SIZE_9 } from '../../theme';\nimport './colorPalette.css';\n\nexport interface ColorPaletteProps {\n previousColor?: string[];\n previousClass?: string;\n mainIndex?: any;\n handleColorChange?: any;\n mainClass?: string;\n index?: any;\n boxWidth?: number;\n gap?: number;\n}\n\nexport const ColorPalette = ({\n previousColor,\n previousClass = '',\n mainIndex = '',\n handleColorChange,\n mainClass = '',\n}: ColorPaletteProps) => {\n const [selectColor, setSelectColor] = useState(null);\n const colorList = [\n 'transparent',\n '#FF0000', // Red\n '#00FF00', // Green\n '#0000FF', // Blue\n '#FFFF00', // Yellow\n '#800080', // Purple\n '#FFA500', // Orange\n '#FFC0CB', // Pink\n '#008080', // Teal\n '#A52A2A', // Brown\n '#808080', // Gray\n '#000000', // Black\n '#FFFFFF', // White\n ];\n const handleColorClick = (color, index) => {\n setSelectColor(color);\n handleColorChange(color, index);\n };\n\n return (\n <>\n <div\n className={`${mainClass} z-10 max-h-[15.4375rem] border border-[#FCE8EB] before:bg-[#ffffff] shadow-[0px_3px_6px_rgba(0,0,0,0.16)] py-[1.8125rem] px-[1.4063rem] bg-[#fff] mt-[1.875rem] mr-[1rem] absolute`}\n >\n {colorList?.length > 0 && (\n <>\n <p\n className={`${TEXT_SIZE_9} leading-[1.125rem] font-bold pb-[1.125rem] text-left`}\n >\n Choose color\n </p>\n <div\n className={`flex flex-wrap gap-x-[0.8125rem] gap-y-[0.3125rem] pb-[2.0938rem] max-h-[3.75rem] overflow-y-auto`}\n >\n {colorList?.map((color, index) => (\n <ColorBox\n key={`main-${mainIndex}-${index}`}\n color={color}\n index={index}\n onClick={() => handleColorClick(color, mainIndex)}\n boxClass={`w-[1.875rem] h-[1.875rem] ${\n selectColor === color ? 'border border-[red]' : ''\n }`}\n />\n ))}\n </div>\n </>\n )}\n {previousColor?.length > 0 && (\n <>\n <div\n className={`flex flex-row gap-x-[0.875rem] pt-[1.3438rem] border-t border-t-[#EBEBEB]`}\n >\n <p\n className={`${TEXT_SIZE_9} leading-[1.125rem] font-bold pb-[1.125rem]`}\n >\n Previously used\n </p>\n <div\n className={`flex flex-wrap gap-x-[0.8125rem] gap-y-[0.3125rem] border-b border-b-[#EBEBEB] ${previousClass}`}\n >\n {previousColor?.map((color, index) => (\n <ColorBox\n key={`previous-${mainIndex}-${index}`}\n color={color}\n index={'previous' + index}\n onClick={() =>\n handleColorClick(color, mainIndex + 'Choose' + index)\n }\n boxClass={`w-[1.875rem] h-[1.875rem] ${\n selectColor === color ? 'border border-[red]' : ''\n }`}\n />\n ))}\n </div>\n </div>\n </>\n )}\n </div>\n </>\n );\n};\n\nexport interface BoxColorProps {\n color?: string;\n index?: any;\n boxClass?: string;\n onClick?: (e: React.MouseEvent<HTMLDivElement, MouseEvent>) => void;\n onChange?: (e: React.MouseEvent<HTMLDivElement, MouseEvent>) => void;\n children?: React.ReactNode;\n}\n\nexport const ColorBox = ({\n color,\n index,\n boxClass = '',\n onClick,\n onChange,\n children,\n}: BoxColorProps) => {\n return (\n <div\n key={index}\n style={{ backgroundColor: color }}\n className={`w-10 h-10 border border-[#D6D6D6] ${boxClass}`}\n onClick={onClick}\n onChange={onChange}\n >\n {children}\n </div>\n );\n};\n","import React, { useState } from 'react';\n// import { ChromePicker } from 'react-color';\nimport { ColorPalette } from './colorPalette';\n\nexport const ColorImpl = (props) => {\n const [displayPallet, setdisplayPallet] = useState(false);\n const [, setColor] = useState(props.color);\n\n const handleColorClick = (color: string) => {\n console.log(color);\n setColor(color);\n props.handleChange(props.property, color);\n };\n return (\n <>\n <div className=\"\">\n <div\n className={`border border-gray-600 w-[30px] h-[30px] group `}\n style={{ background: props.color }}\n onClick={() => {\n setdisplayPallet((prev) => !prev);\n }}\n onBlur={() => setdisplayPallet(false)}\n >\n {displayPallet && (\n <ColorPalette\n mainClass={`left-0 ${props.mClass}`}\n handleColorChange={handleColorClick}\n />\n // <div\n // className=\"absolute\"\n // style={{ zIndex: '100' }}\n // tabIndex={0}\n // onBlur={() => setdisplayPallet(false)}\n // >\n // <ChromePicker\n // color={color.hex}\n // onChangeComplete={onChangeComplete}\n // onChange={onChangeComplete}\n // disableAlpha={true}\n // />\n // <hr />\n // </div>\n )}\n </div>\n </div>\n </>\n );\n};\n","import React, { useEffect, useState } from 'react';\nimport { use3dddPlus } from '../../store';\nimport { shallow } from 'zustand/shallow';\nimport { fabric } from 'fabric';\nimport { ColorImpl } from '../colorPallet';\nimport { Initpopup } from '../../store/fabric/Popupcanvas';\nimport { CgArrowRight } from 'react-icons/cg';\nimport { EyeDropper, IconButton } from '../icon';\nimport { GiDrop } from 'react-icons/gi';\nimport { MdOutlineCancel } from 'react-icons/md';\n// import { Button } from 'reakit';\nexport const PopUpCanvas = () => {\n const [popupCanvas, canvas, colorFill, changeSVGColor] = use3dddPlus(\n (state) => [\n state.popupCanv,\n state.fabricCanvas,\n state.colorFill,\n state.changeSVGColor,\n ],\n shallow\n );\n const [colorCount, setColorCount] = useState(3);\n\n // const colors = [\n // 'red',\n // 'green',\n // 'blue',\n // 'yellow',\n // 'purple',\n // 'indigo',\n // 'orange',\n // 'light green',\n // ];\n // const selectedColors = colors.slice(0, colorCount);\n const handleColorCountChange = (e) => {\n setColorCount(Number(e.target.value));\n };\n const resizeCanvas = () => {\n const canvas = use3dddPlus.getState().popupCanv;\n const outerCanvasContainer =\n document.getElementById('imageCanvas').parentElement;\n console.log(outerCanvasContainer);\n const containerWidth = outerCanvasContainer.clientWidth;\n const scale = containerWidth / canvas.getWidth();\n const zoom = canvas.getZoom() * scale;\n canvas.setWidth(containerWidth);\n //@ts-ignore\n canvas.setHeight(parseInt(outerCanvasContainer.clientHeight));\n canvas.setViewportTransform([zoom, 0, 0, zoom, 0, 0]);\n canvas.renderAll();\n };\n useEffect(() => {\n const popupCanv = Initpopup();\n use3dddPlus.setState({ popupCanv: popupCanv });\n resizeCanvas();\n window.addEventListener('resize', resizeCanvas);\n //FOR REMOVING COLOR\n\n popupCanv.on('mouse:down', function (event) {\n popupCanv.discardActiveObject();\n var mouseClick = popupCanv.getPointer(event.e);\n // console.log('MOUSE-CLICK-->',mouseClick);\n // Iterate through objects on the canvas and check if any intersect with the mouse click\n popupCanv.forEachObject(function (obj) {\n if (obj.type === 'path') {\n //@ts-ignore\n if (obj.containsPoint(mouseClick)) {\n popupCanv.remove(obj);\n popupCanv.renderAll();\n }\n }\n });\n });\n }, []);\n const popupCanvasCancel = () => {\n use3dddPlus.setState({ uploadImageModalDisplay: false });\n console.log(popupCanvas.getObjects()[0]);\n popupCanvas.remove(...popupCanvas.getObjects());\n };\n const popupCanvasContinue = () => {\n //@ts-ignore\n use3dddPlus.setState({ uploadImageModalDisplay: false });\n use3dddPlus.setState({ selectedStepper: undefined });\n const sel = new fabric.ActiveSelection(popupCanvas.getObjects(), {\n //@ts-ignore\n popupCanvas: popupCanvas,\n });\n popupCanvas.setActiveObject(sel);\n // popupCanvas.remove(...popupCanvas.getObjects());\n\n popupCanvas.requestRenderAll();\n let clipboard;\n popupCanvas.getActiveObject().clone(function (cloned) {\n clipboard = cloned;\n });\n if (clipboard.type === 'activeSelection') {\n clipboard.canvas = canvas;\n const objs = [];\n clipboard.forEachObject(function (obj) {\n objs.push(obj);\n });\n const alltogetherObj = new fabric.Group(objs, {});\n canvas.centerObject(alltogetherObj);\n canvas.add(alltogetherObj);\n canvas.setActiveObject(alltogetherObj);\n alltogetherObj.setCoords();\n use3dddPlus.getState().forStoringAllObject(alltogetherObj); //for pushing the data into array for layers\n } else {\n canvas.add(clipboard);\n }\n canvas.requestRenderAll();\n popupCanvas.clear();\n };\n return (\n <>\n {/* <div\n className=\"relative z-10\"\n aria-labelledby=\"modal-title\"\n role=\"dialog\"\n aria-modal=\"true\"\n style={uploadImageModalDisplay ? {} : { display: 'none' }}\n > */}\n <div className=\"flex z-10 overflow-y-auto\">\n <div className=\"flex flex-1 w-full\">\n <div className=\"relative w-full overflow-hidden bg-white\">\n <div className=\"bg-white\">\n <div className=\"flex flex-row\">\n <div className=\"flex flex-row text-center w-[70%] \">\n <div className=\" w-full h-full \">\n <div id=\"imageCanvas\">\n <canvas\n className=\"pointer\"\n id=\"popupCanvas\"\n ></canvas>\n </div>\n <div className=\"absolute bottom-[40px] flex flex-wrap left-[60px]\">\n <span className=\"border border-[#E11A38] p-1 bg-white mr-2 text-[#E11A38] \">\n <EyeDropper />\n </span>\n\n <span className=\"text-[#E11A38] text-[13px] font-bold \">\n Use the eyedropper tool do clicking on a color you wish\n to remove form you image\n </span>\n </div>\n </div>\n </div>\n <div className=\"text-left flex-1 h-[100%] px-[36px] pt-[31px]\">\n <div className=\"flex flex-col gap-y-5\">\n <h1 className=\"text-[22px] font-bold\">\n Match and Combine colors\n </h1>\n <p className=\"text-[15px]\">\n Select how many colors are in your image\n </p>\n <select\n value={colorCount}\n onChange={handleColorCountChange}\n className=\"border-[1px] border-[#D7D7D7] p-2\"\n >\n <option value={1}>1 Colors</option>\n <option value={2}>2 Colors</option>\n <option value={3}>3 Colors</option>\n <option value={4}>4 Colors</option>\n <option value={5}>5 Colors</option>\n <option value={6}>6 Colors</option>\n <option value={7}>7 Colors</option>\n <option value={8}>8 Colors</option>\n </select>\n {/* {Object.keys(colorFill)?.map((item) => {\n return (\n <>\n <ColorImpl\n handleChange={changeSVGColor}\n property={item}\n color={colorFill[item]}\n />\n </>\n );\n })} */}\n <div className=\"flex flex-col gap-y-3.5 items-center overflow-y-auto py-[5px] 2xl:h-[50vh] sm:h-[42vh] h-[42vh]\">\n {Object.keys(colorFill)?.map((item, index) => (\n <div className=\"flex flex-row items-center\" key={index}>\n <ColorImpl\n className=\"w-[30px] h-[30px] m-2 \"\n handleChange={changeSVGColor}\n property={item}\n color={colorFill[item]}\n />\n <div className=\"mx-[20px] text-[#c2c2c2]\">\n <CgArrowRight />\n </div>\n <div className=\"flex flex-row border-[1px] border-[#D6D6D6]\">\n <span className=\" border-r-[1px] border-[#D6D6D6] bg-[#fce8eb]\">\n <IconButton\n label=\"Select Color\"\n icon={<GiDrop />}\n className={\n '!rounded-none pointer-events-auto cursor-pointer flex text-[#E11A38] w-[30px] h-[30px] p-[9px]'\n }\n size=\"1.125rem\"\n ></IconButton>\n </span>\n <span className=\"py-[6px] pl-[10px] pr-[27px] font-medium text-[13px] bg-[#F1F1F1]\">\n Select Color\n </span>\n </div>\n <span className=\"\">\n <IconButton\n label=\"Delete Color\"\n icon={<MdOutlineCancel />}\n className={\n 'pointer-events-auto cursor-pointer m-autoflex w-[30px] h-[30px] p-[9px] text-[#c2c2c2]'\n }\n size=\"1rem\"\n ></IconButton>\n </span>\n </div>\n ))}\n </div>\n <div className=\" flex flex-col\">\n <button\n type=\"button\"\n onClick={popupCanvasContinue}\n className=\"mt-3 inline-flex w-full justify-center bg-white px-[110px] py-2 text-sm font-medium text-[#E11A38] shadow-sm ring-1 ring-inset ring-[#E11A38] hover:bg-gray-50 sm:mt-0 sm:w-auto\"\n >\n Continue\n </button>\n <button\n type=\"button\"\n onClick={popupCanvasCancel}\n className=\"mt-3 inline-flex w-full justify-center bg-white px-[110px] py-2 text-sm font-medium text-[#E11A38] shadow-sm ring-1 ring-inset ring-[#E11A38] hover:bg-gray-50 sm:mt-0 sm:w-auto\"\n >\n Cancel\n </button>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n {/* </div> */}\n </>\n );\n};\n","import { fabric } from 'fabric';\n\nexport const Initpopup = () => {\n const onObjectSelected = () => {\n if (!popupcanvas.getActiveObject()) {\n return;\n }\n if (popupcanvas.getActiveObject().type !== 'group') {\n return;\n }\n //@ts-ignore\n popupcanvas.getActiveObject().toActiveSelection();\n popupcanvas.requestRenderAll();\n };\n const cursorUrl =\n 'https://storage.googleapis.com/3ddplusgcp/logoEditor/assets/icons/eyedropper.svg';\n\n const popupcanvas = new fabric.Canvas('popupCanvas', {\n centeredScaling: true,\n preserveObjectStacking: true,\n backgroundColor: '#F7F7F7',\n defaultCursor: `url(\" ${cursorUrl} \"), auto`,\n hoverCursor: `url(\" ${cursorUrl} \"), auto`,\n });\n\n popupcanvas.on('selection:created', onObjectSelected);\n return popupcanvas;\n};\n","import React, { useState } from 'react';\n\nimport FileUploadButton from './fileuploadButton';\nimport { use3dddPlus } from '../../store';\nimport {shallow} from 'zustand/shallow';\nimport { PopUpCanvas } from '../canvas/popUpCanvas';\n\nexport const UploadLogo = () => {\n const [, setSelectedFile,] = useState<File | null>(null);\n const [\n tiffConvert,\n imageToSVG,\n setFile,\n uploadImageModalDisplay,\n pdfConverter,\n ] = use3dddPlus(\n (state) => [\n state.tiffConvert,\n state.imageToSVG,\n state.setFile,\n state.uploadImageModalDisplay,\n state.pdfConverter,\n ],\n shallow\n );\n const handleFileSelect = (file: File) => {\n setSelectedFile(file);\n setFile(file)\n svgConverter(file);\n // You can perform further actions with the selected file here.\n };\n\n const svgConverter = async (data) => {\n // canvas.discardActiveObject();\n const ext = data.name.substring(data.name.lastIndexOf('.') + 1);\n if (ext === 'pdf') {\n let pdfData = await pdfConverter(data);\n imageToSVG(pdfData);\n }\n if (ext === 'tif' || ext === 'tiff') {\n const tiffData = await tiffConvert(data);\n imageToSVG(tiffData);\n } else {\n let objectURL = URL.createObjectURL(data);\n imageToSVG(objectURL);\n }\n setSelectedFile(null);\n };\n return (\n <>\n <div className=\"bg-[#F7F7F7] absolute z-10 w-[90%] h-full \">\n <div className=\"relative w-full h-full\">\n <div className=\"flex justify-center w-full h-full text-center\">\n <FileUploadButton onFileSelect={handleFileSelect} />\n </div>\n <div className=\"absolute md:bottom-[20px] bottom-[10px] px-[80px]\">\n <p className=\" text-[#E11A38] text-base font-bold\">\n Privacy Notice\n </p>\n <p className=\"text-[#727272] text-sm font-medium pt-2 pb-2\">\n Your uploaded images are safe, secure, and remain your property.\n By proceeding you acknowledge that you have full legal rights and\n permissions to use the images you upload.We reserve the right to\n reject any order.\n </p>\n </div>\n </div>\n </div>\n {uploadImageModalDisplay && (\n <div className=\"bg-[#F7F7F7] absolute z-10 w-[90%] h-full\">\n <PopUpCanvas />\n </div>\n )}\n </>\n );\n};\n","import React from 'react';\nimport {\n SEARCHBAR_BORDER_COLOR,\n SEARCH_ICON_COLOR,\n TEXT_COLOR_1,\n TEXT_SIZE_3,\n} from '../../theme';\n\nexport interface SearchBarProps {\n onChange?: (e: React.ChangeEvent<HTMLInputElement>) => void;\n onKeyPress?: (e: React.KeyboardEvent<HTMLDivElement>) => void;\n onPaste?: (e: React.ClipboardEvent<HTMLInputElement>) => void;\n placeholder?: string;\n searchBarMainClass?: string;\n value?: string;\n disabled?: boolean;\n}\nexport const Searchbar = ({\n onChange,\n onKeyPress,\n onPaste,\n placeholder,\n searchBarMainClass,\n value,\n disabled,\n}: SearchBarProps) => {\n return (\n <>\n <div\n className={`${searchBarMainClass} h-[40px] relative flex w-full flex-wrap items-stretch border border-solid ${SEARCHBAR_BORDER_COLOR} outline-none transition duration-200 ease-in-out focus:z-[3] focus:shadow-[inset_0_0_0_1px_rgb(212,212,212)] focus:outline-none bg-[#FFFFFF]`}\n >\n <input\n type=\"search\"\n className={`leading-[20px] relative m-0 -mr-0.5 block w-[1px] min-w-0 focus-visible:outline-0 flex-auto bg-transparent bg-clip-padding px-[15px] py-[10px] ${TEXT_SIZE_3} font-normal ${TEXT_COLOR_1} placeholder:${TEXT_SIZE_3} placeholder:${TEXT_COLOR_1} placeholder:leading-[20px]`}\n placeholder={placeholder}\n aria-label=\"Search\"\n aria-describedby=\"button-addon3\"\n value={value}\n onChange={onChange}\n onKeyPress={onKeyPress}\n disabled={disabled}\n onPaste={onPaste}\n onClick={(e) => {\n e.currentTarget.focus();\n }}\n />\n <span\n className={`flex justify-center items-center rounded-none pl-2 pr-[14px]`}\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n className={`h-5 w-5 ${SEARCH_ICON_COLOR}`}\n >\n <path d=\"M9 3.5a5.5 5.5 0 100 11 5.5 5.5 0 000-11zM2 9a7 7 0 1112.452 4.391l3.328 3.329a.75.75 0 11-1.06 1.06l-3.329-3.328A7 7 0 012 9z\" />\n </svg>\n </span>\n </div>\n </>\n );\n};\n","import React from 'react';\nimport { Input as InputImpl, InputHTMLProps } from 'reakit';\n\nexport const input = React.forwardRef<HTMLInputElement, InputHTMLProps>(\n (props, ref) => {\n return (\n <InputImpl\n // @ts-ignore\n ref={ref}\n {...props}\n className={`${props.className} block w-full border border-dark py-2 px-4 mb-4`}\n />\n );\n }\n);\n\n","import React from \"react\";\n\nexport const SortButton = ({ label, icons, onClick, className }) => {\n return (\n <button\n onClick={onClick}\n className={`flex rounded-none gap-3 items-center p-2 mr-[24px] ${className}`}\n >\n {icons}\n {label}\n \n </button>\n );\n };\n \n\n ","import React, { useState } from 'react';\nimport { SortButton } from './sortButton';\nimport { BsSortDown } from 'react-icons/bs';\nimport { use3dddPlus } from '../../store';\nimport { shallow } from 'zustand/shallow';\nexport const SortByDropdown = () => {\n const [loadingLogo] = use3dddPlus((state) => [state.loadingLogo], shallow);\n const [isDropdownOpen, setIsDropdownOpen] = useState(false);\n\n const toggleDropdown = () => {\n setIsDropdownOpen(!isDropdownOpen);\n };\n\n return (\n <div className=\"absolute\">\n <SortButton\n onClick={toggleDropdown}\n label=\"Sort by\"\n icons={<BsSortDown />}\n className=\" bg-[#FFFFFF]\"\n />\n {isDropdownOpen && (\n <div className=\"dropdown-content h-[200px] w-[210px] bg-[#FFFFFF] flex flex-col absolute z-10\">\n {/* Dropdown content goes here */}\n <button\n className=\"flex items-center h-[45px] mt-[12px] pl-[27.85px] border-b-[1px] border-[#F4F4F4] \"\n onClick={() => {\n toggleDropdown();\n loadingLogo('&sortBy=updated_at&sortDir=DESC');\n }}\n >\n NEWEST\n </button>\n <button\n className=\"flex items-center h-[45px] pl-[27.85px] border-b-[1px] border-[#F4F4F4]\"\n onClick={() => {\n toggleDropdown();\n loadingLogo('&sortBy=updated_at&sortDir=ASC');\n }}\n >\n OLDEST\n </button>\n <button\n className=\"flex items-center h-[45px] pl-[27.85px] border-b-[1px] border-[#F4F4F4]\"\n onClick={() => {\n toggleDropdown();\n loadingLogo('&sortBy=name&sortDir=ASC');\n }}\n >\n A TO Z\n </button>\n <button\n className=\"flex items-center h-[45px] pl-[27.85px] border-[#F4F4F4]\"\n onClick={() => {\n toggleDropdown();\n loadingLogo('&sortBy=name&sortDir=DESC');\n }}\n >\n Z TO A\n </button>\n </div>\n )}\n </div>\n );\n};\n","import React from 'react';\nimport './loader.css';\n\nexport const Loader = ({ position = 'overlay', height = '100%' }) => {\n const loaderRef = React.useRef<any>();\n React.useEffect(() => {\n if (!loaderRef) return;\n loaderRef.current.style.height = height;\n }, [loaderRef]);\n return (\n <section\n ref={loaderRef}\n id=\"ls\"\n style={\n position === 'overlay'\n ? { position: 'absolute', opacity: 0.8, top: 0 }\n : {}\n }\n className=\"w-full h-full\"\n >\n <div id=\"l\"></div>\n </section>\n );\n};\n","import React, { useEffect } from 'react';\nimport { Searchbar } from '../searchbar';\nimport { Card, CardMedia, CardBody, CardTitle } from '../card';\nimport { SortByDropdown } from '../SortByDropdown';\nimport { use3dddPlus } from '../../store';\nimport { shallow } from 'zustand/shallow';\nimport { Loader } from '../loader';\n\nexport const MyLogo = ({ onApply }) => {\n const [logoSelected, setLogoSelected] = React.useState(false);\n const [\n retriveLogoDesign,\n myLogoHandler,\n loadingLogo,\n loading,\n setLogoData,\n logoData,\n ] = use3dddPlus(\n (state) => [\n state.retriveLogoDesign,\n state.myLogoHandler,\n state.loadingLogo,\n state.loading,\n state.setLogoData,\n state.logoData,\n ],\n shallow\n );\n useEffect(() => {\n loadingLogo('');\n }, []);\n const handleEditLogo = (logo) => {\n if (logo) {\n myLogoHandler(logo);\n setLogoSelected(false);\n }\n };\n const handleApplyLogo = (logo) => {\n if (logo) {\n onApply();\n setLogoSelected(false);\n }\n };\n return (\n <>\n <div className=\"bg-[#F7F7F7] absolute z-100 w-[90%] h-full pr-[56px]\">\n <div className=\" w-full flex mt-[50px] flex-row\">\n <div className=\" flex w-1/2 justify-end\">\n <SortByDropdown />\n </div>\n <div className=\" flex-1\">\n <Searchbar\n placeholder={'Search by Logo name or tags'}\n onChange={(e) => loadingLogo(e.target.value)}\n ></Searchbar>\n </div>\n </div>\n <div className=\"flex ml-[33px] mt-[30px] overflow-y-auto overflow-x-hidden h-[65vh]\">\n <div className=\"max-h-[140px] grid gap-3.5 grid-cols-3 md:grid-cols-4 lg:grid-cols-5 w-full \">\n {retriveLogoDesign.length > 0\n ? retriveLogoDesign.map((logo, index) => (\n <React.Fragment key={index}>\n <Card\n cardClass={`rounded-none bg-white cursor-pointer`}\n style={{ boxShadow: '0px 0px 6px #98989829' }}\n onClick={() => {\n if (logo) {\n setLogoData(logo);\n setLogoSelected(true);\n }\n }}\n >\n <CardMedia\n //@ts-ignore\n src={logo.logo_url}\n imageClass=\"h-[50px] mt-[26px]\"\n />\n\n <CardBody bodyClass=\"p-2.5 mt-[13px]\">\n <CardTitle\n titleClass={`text-[11px] uppercase`}\n //@ts-ignore\n name={logo.name}\n />\n </CardBody>\n </Card>\n </React.Fragment>\n ))\n : 'No Saved Mascots'}\n <div className={`flex gap-2 h-[48px]`}>\n <button\n className={`border border-[black] p-3`}\n onClick={() => handleEditLogo(logoData)}\n >\n Edit\n </button>\n <button\n onClick={() => handleApplyLogo(logoData)}\n className={`border p-3 ${\n logoSelected\n ? 'border-[#e11a38] text-[#e11a38]'\n : 'border-[black] text-black'\n }`}\n >\n Apply\n </button>\n </div>\n </div>\n </div>\n </div>\n {loading && <Loader />}\n </>\n );\n};\n","import React from 'react';\nimport { Button } from 'reakit';\n\nexport const IconButtonLabel = ({\n icon,\n onClick,\n className = '',\n label = '',\n iconPosition = 'left',\n ...props\n}) => {\n return (\n <Button\n className={`flex items-center gap-2 text-base font-bold flex-1 justify-center focus:outline-none ${className}`}\n onClick={onClick}\n {...props}\n >\n {iconPosition === 'left' && (\n <>\n {icon}\n {label}\n </>\n )}\n {iconPosition === 'right' && (\n <>\n {label}\n {icon}\n </>\n )}\n </Button>\n );\n};\n","import React from \"react\";\n\nexport const EditButton = ({ label, icons, onClick, className, children }) => {\n return (\n <button\n onClick={onClick}\n className={`flex rounded-none gap-3 items-center ${className}`}\n >\n {icons}\n {label}\n {children}\n </button>\n );\n };","import React from 'react';\nimport { TEXT_SIZE_2 } from '../../theme';\nimport { IoMdCheckmarkCircle, IconButton } from '../icon';\n\nexport interface CardCheckMarkProps {\n checkMarkClass?: string;\n size?: any;\n}\nexport const CardCheckMark = ({ checkMarkClass, size }: CardCheckMarkProps) => {\n return (\n <>\n <div\n className={`absolute top-1/2 left-2/4 ${TEXT_SIZE_2} ${checkMarkClass}`}\n style={{ transform: 'translate(-50%, -50%)' }}\n >\n <IconButton\n label={''}\n icon={<IoMdCheckmarkCircle />}\n className={`pointer-events-auto cursor-pointer`}\n size={size}\n ></IconButton>\n </div>\n </>\n );\n};\n","import React from 'react';\nimport { HiOutlineDownload, IconButton } from '../icon';\n\nexport interface CardDownIconProps {\n downloadClass?: string;\n downloadIconClass?: string;\n iconClass?: string;\n pdfUrl?: string;\n}\nexport const CardDownloadIcon = ({\n downloadClass,\n downloadIconClass,\n iconClass,\n pdfUrl,\n}: CardDownIconProps) => {\n return (\n <>\n <a\n href={pdfUrl}\n download={'Design Sheet'}\n target=\"_blank\"\n className={`flex items-center gap-[0.4375rem] ${downloadIconClass}`}\n >\n <IconButton\n label={''}\n icon={<HiOutlineDownload />}\n className={`pointer-events-auto cursor-pointer ${iconClass}`}\n size=\"1rem\"\n ></IconButton>\n\n <span className={`${downloadClass}`}>VIEW DESIGN SHEET</span>\n </a>\n </>\n );\n};\n","import React from 'react';\n\nexport interface CardFlagProps {\n flag?: string;\n flagClass?: string;\n}\nexport const CardFlag = ({ flag, flagClass }: CardFlagProps) => {\n return (\n <>\n <div className={`absolute top-0 left-0 ${flagClass}`}>{flag}</div>\n </>\n );\n};\n","import React from 'react';\nimport { TAG_TEXT_COLOR } from '../../theme';\nexport interface CardTagsProps {\n children?: React.ReactNode;\n tagsClass?: string;\n}\nexport const CardTags = ({ children, tagsClass }: CardTagsProps) => {\n return (\n <>\n <div\n className={`${tagsClass} flex capitalize rounded px-[11px] py-[5px] text-center items-center align-baseline ${TAG_TEXT_COLOR} font-normal`}\n >\n {children}\n </div>\n </>\n );\n};\n","import React from 'react';\n\nexport interface CardDescProps {\n children?: React.ReactNode;\n descriptionClass?: string;\n}\nexport const CardDescription = ({ children, descriptionClass }: CardDescProps) => {\n return (\n <>\n <p className={`${descriptionClass}`}>{children}</p>\n </>\n );\n};\n","import React from 'react';\nimport { IconButton, RxCross2 } from '../icon';\nimport { BACKDROP_BLUR, BACKDROP_BLUR_BG_COLOR, SAVERACK_TEXT_COLOR } from '../../theme';\n\nexport interface GlobalModalProps {\n backdropStyle?: string;\n children?: React.ReactNode;\n contentStyle?: string;\n crossOnClick?: () => void;\n modalStyle?: string;\n}\n\nexport const Modal = ({\n backdropStyle,\n children,\n contentStyle,\n crossOnClick,\n modalStyle,\n}: GlobalModalProps) => {\n return (\n <div>\n <div\n className={`${backdropStyle} absolute top-0 left-0 h-screen w-full ${BACKDROP_BLUR} ${BACKDROP_BLUR_BG_COLOR}`}\n ></div>\n\n <dialog\n open\n className={`${contentStyle} absolute shadow-[0 2px 8px rgba(0, 0, 0, 0.26)] ml-[auto] md:mr-[0%] mr-[auto]`}\n >\n <IconButton\n label={''}\n icon={<RxCross2 strokeWidth={1} onClick={crossOnClick} />}\n className={\n `z-10 pointer-events-auto cursor-pointer ${SAVERACK_TEXT_COLOR} font-bold !absolute right-[0.6875rem] top-[0.6875rem] px-[0.75rem] py-[1.25rem] hover:bg-[#E11A38] hover:text-[#ffffff] hover:rounded-none`\n }\n size=\"1.2rem\"\n ></IconButton>\n <div\n className={`flex flex-col justify-center gap-[1.75rem] ${modalStyle}`}\n >\n {children}\n </div>\n </dialog>\n </div>\n );\n};\n","import React from 'react';\nexport interface ModalButtonsProps {\n buttonMainClass?: string;\n buttons?: {\n buttonClass?: string;\n label?: string;\n onClick?: () => void;\n style?: React.CSSProperties;\n }[];\n}\nexport const ModalButtons = ({ buttonMainClass, buttons }: ModalButtonsProps) => {\n return (\n <div\n className={`flex flex-col lg:flex-row gap-[1.5625rem] leading-[1.4375rem] font-bold ${buttonMainClass}`}\n >\n {buttons?.map((button, index) => (\n <button\n key={index}\n onClick={button.onClick}\n className={`w-full py-[0.7188rem] rounded-none font-bold uppercase ${button.buttonClass}`}\n style={button.style}\n >\n {button.label}\n </button>\n ))}\n </div>\n );\n};\n\n","import React from 'react';\nimport { HiOutlineDownload, IconButton } from '../icon';\n\nexport interface ModalDownLoadIconProps {\n downloadClass?: string;\n downloadIconClass?: string;\n iconClass?: string;\n pdfUrl?: string;\n}\nexport const ModalDownloadIcon = ({\n downloadClass,\n downloadIconClass,\n iconClass,\n pdfUrl,\n}: ModalDownLoadIconProps) => {\n return (\n <>\n <div className={`flex justify-center items-center`}>\n <a\n href={pdfUrl}\n download={'Design Sheet'}\n target=\"_blank\"\n className={`flex items-center cursor-pointer gap-[0.6875rem] font-bold ${downloadIconClass}`}\n >\n <IconButton\n label={''}\n icon={<HiOutlineDownload />}\n className={`pointer-events-auto ${iconClass}`}\n size=\"1.1rem\"\n ></IconButton>\n\n <span className={`uppercase ${downloadClass}`}>\n VIEW DESIGN SHEET\n </span>\n </a>\n </div>\n </>\n );\n};\n","import React from 'react';\n\nexport interface ModalHeadingProps {\n children?: React.ReactNode;\n headingStyle?: string;\n}\nexport const ModalHeading = ({ children, headingStyle }: ModalHeadingProps) => {\n return (\n <>\n <div\n className={`flex flex-col gap-[1.625rem] justify-center items-center text-center ${headingStyle}`}\n >\n {children}\n </div>\n </>\n );\n};\n\n","import React from 'react';\n\nexport interface ModalLabelProps {\n children?: React.ReactNode;\n labelStyle?: string;\n}\nexport const ModalLabel = ({ children, labelStyle }: ModalLabelProps) => {\n return (\n <>\n <p className={`${labelStyle}`}>{children}</p>\n </>\n );\n};\n\n","import React from 'react';\nimport { IconButton } from '../icon';\n\nexport interface ModalStatusProps {\n icon?: JSX.Element;\n onIconClick?: () => void;\n children?: React.ReactNode;\n iconStyle?: string;\n}\nexport const ModalStatusIcon = ({\n icon,\n onIconClick,\n iconStyle,\n children,\n}: ModalStatusProps) => {\n return (\n <>\n <div className={`flex justify-center`} onClick={onIconClick}>\n <IconButton\n label={''}\n icon={icon}\n className={`pointer-events-auto cursor-pointer h-[auto] ${iconStyle}`}\n size=\"6.3rem\"\n ></IconButton>\n {children}\n </div>\n </>\n );\n};\n","import React, { useEffect } from 'react';\n//import { StepperTypes } from '../../store/actions/types';\nimport { use3dddPlus } from '../../store';\nimport { shallow } from 'zustand/shallow';\nimport {\n SELECT_BG_COLOR,\n //BORDER_COLOR,\n TEXT_SIZE_1,\n TEXT_SIZE_2,\n SELECT_TEXT_COLOR,\n BUTTON_TEXT_COLOR,\n TEXT_COLOR_1,\n} from '../../theme';\nimport {\n AddText,\n IconButton,\n MyLogo,\n ProductColor,\n RLogo,\n AddMascots,\n} from '../icon';\nimport { MdOutlineFileUpload } from 'react-icons/md';\n\nexport const LeftMenu = () => {\n const [\n setSelectedStepper,\n selectedStepper,\n addText,\n getStockLogos,\n loadingLogo,\n ] = use3dddPlus(\n (state) => [\n state.setSelectedStepper,\n state.selectedStepper,\n state.addText,\n state.getStockLogos,\n state.loadingLogo,\n ],\n shallow\n );\n const StepperList = [\n {\n name: 'Upload File',\n icon: <MdOutlineFileUpload />,\n id: 1,\n display: true,\n },\n {\n name: 'My Logos',\n icon: <MyLogo />,\n id: 2,\n display: true,\n },\n {\n name: 'Add Text',\n icon: <AddText />,\n id: 3,\n display: true,\n },\n {\n name: 'Add Mascots',\n icon: <AddMascots />,\n id: 4,\n display: true,\n },\n {\n name: 'product Color',\n icon: <ProductColor />,\n id: 5,\n display: true,\n },\n ];\n\n useEffect(() => {\n return () => {};\n }, []);\n\n return (\n <div className=\"flex flex-row md:flex-col\">\n <div\n className={` flex flex-row md:flex-col sticky md:relative md:w-[100%] md:max-w-[100%]`}\n style={{ boxShadow: '0px 0px 6px #98989829' }}\n >\n <div\n className={`${SELECT_BG_COLOR} flex justify-center cursor-pointer p-2.5 `}\n >\n <div className=\" flex flex-col items-center justify-center\">\n <span className={`stepper-icon-active ${TEXT_SIZE_2} mb-2`}>\n <IconButton\n label={''}\n icon={<RLogo />}\n size=\"2rem\"\n className={`${TEXT_COLOR_1} pointer-events-auto cursor-pointer m-auto`}\n ></IconButton>\n </span>\n <span\n className={`${SELECT_TEXT_COLOR} ${TEXT_SIZE_1} uppercase font-bold text-center`}\n >\n Logo Designer\n </span>\n </div>\n </div>\n </div>\n <div\n className={` flex h-[100%] flex-row md:flex-col sticky md:relative md:w-[100%] md:max-w-[100%]`}\n style={{ boxShadow: '0px 0px 6px #98989829' }}\n >\n {StepperList?.map((step) => (\n <div\n className={\n step.id === selectedStepper\n ? `${SELECT_BG_COLOR} flex justify-center cursor-pointer p-2.5 `\n : 'flex justify-center cursor-pointer p-2.5 '\n }\n key={step.id}\n style={!step.display ? { display: 'none' } : {}}\n >\n <div\n className=\"flex flex-col items-center justify-center \"\n onClick={(e) => {\n e.preventDefault();\n setSelectedStepper(step.id);\n if (step.id === 3) {\n addText();\n }\n if (step.id === 4) {\n getStockLogos();\n }\n if (step.id === 2) {\n loadingLogo('');\n }\n }}\n >\n <span\n className={\n step.id === selectedStepper\n ? `stepper-icon-active ${TEXT_SIZE_2} mb-2`\n : `stepper-icon ${TEXT_SIZE_2} mb-2`\n }\n >\n <IconButton\n label={''}\n icon={step.icon}\n size=\"2rem\"\n className={`${\n step.id === selectedStepper\n ? BUTTON_TEXT_COLOR\n : TEXT_COLOR_1\n } pointer-events-auto cursor-pointer m-auto`}\n ></IconButton>\n </span>\n <span\n className={\n step.id === selectedStepper\n ? `${SELECT_TEXT_COLOR} ${TEXT_SIZE_1} uppercase font-bold text-center`\n : `${TEXT_COLOR_1} ${TEXT_SIZE_1} uppercase font-bold text-center`\n }\n >\n {step.name}\n </span>\n </div>\n </div>\n ))}\n </div>\n </div>\n );\n};\n","import React from 'react';\nimport { ColorImpl } from '../colorPallet';\nimport { IconButton, FlipH, FlipV } from '../icon';\nexport const ImageEdit = ({\n nudgeMove,\n flipX,\n flipY,\n changeSVGColor,\n activeSelection,\n}) => {\n return (\n <>\n <div className=\"uppercase font-bold pt-[17px]\">Color in Canvas</div>\n <div className=\"flex gap-x-[1rem] mt-[12px]\">\n {activeSelection.colorFill &&\n Object.keys(activeSelection?.colorFill)?.map((item) => {\n return (\n <ColorImpl\n mClass={'ml-[36px]'}\n key={\n activeSelection.colorFill[item] +\n activeSelection?.ownMatrixCache?.key\n }\n handleChange={changeSVGColor}\n property={item}\n color={activeSelection.colorFill[item]}\n />\n );\n })}\n </div>\n <div>\n <div className=\"font-bold uppercase mt-[17px]\">Flip</div>\n <div className=\"flex gap-x-[1rem] mt-[12px]\">\n <IconButton\n key={`index_flipX`}\n label=\"\"\n icon={<FlipH />}\n onClick={flipX}\n className={`w-[45px] h-[45px] bg-[#fff] cursor-pointer border border-[#EBEBEB]`}\n size=\"1.8rem\"\n ></IconButton>\n <IconButton\n key={`index_flipY`}\n label=\"\"\n onClick={flipY}\n icon={<FlipV />}\n className={`w-[45px] h-[45px] bg-[#fff] cursor-pointer border border-[#EBEBEB]`}\n size=\"1.8rem\"\n ></IconButton>\n </div>\n </div>\n <div className=\"mt-[30px]\">\n <h3 className=\"font-extrabold\">Nudge</h3>\n <button\n onClick={nudgeMove}\n id=\"down\"\n className=\"font-medium text-orange-400\"\n >\n DOWN\n </button>\n <button\n onClick={nudgeMove}\n id=\"up\"\n className=\"font-medium text-orange-300 text-lime-400 px-1\"\n >\n UP\n </button>\n <button\n onClick={nudgeMove}\n id=\"left\"\n className=\"font-medium text-orange-300 text-teal-500\"\n >\n LEFT\n </button>\n <button\n onClick={nudgeMove}\n id=\"right\"\n className=\"font-medium text-orange-300 text-violet-600 px-1\"\n >\n RIGHT\n </button>\n </div>\n </>\n );\n};\n","import { use3dddPlus } from '../../store';\nimport { shallow } from 'zustand/shallow';\nimport { useEffect, useState } from 'react';\nimport { ColorImpl } from '../colorPallet';\nimport React from 'react';\nimport { Tab, initTE } from 'tw-elements';\nimport {\n BORDER_COLOR_1,\n INPUT_BG_COLOR,\n SELECT_BG_COLOR,\n TEXT_COLOR_1,\n TEXT_SIZE_3,\n TEXT_SIZE_9,\n} from '../../theme';\nimport { ImageEdit } from './imageEdit';\nimport './rightMenu.css';\nimport { FiAlignCenter, FiAlignLeft, FiAlignRight } from 'react-icons/fi';\nconst fontFamilies = [\n {\n name: 'Athletic Block',\n src: 'https://storage.googleapis.com/3ddplusgcp/logoEditor/assets/fonts/athletic.ttf',\n },\n {\n name: 'Ballpark',\n src: 'https://storage.googleapis.com/3ddplusgcp/logoEditor/assets/fonts/ballpark.TTF ',\n },\n {\n name: 'Pro Block',\n src: 'https://storage.googleapis.com/3ddplusgcp/logoEditor/assets/fonts/pro_block.woff',\n },\n {\n name: 'Full Block',\n src: 'https://storage.googleapis.com/3ddplusgcp/logoEditor/assets/fonts/full_block.woff',\n },\n {\n name: 'Brush Script',\n src: 'https://storage.googleapis.com/3ddplusgcp/logoEditor/assets/fonts/brush-script-3.ttf',\n },\n {\n name: 'City Block',\n src: 'https://storage.googleapis.com/3ddplusgcp/logoEditor/assets/fonts/cityb.woff',\n },\n {\n name: 'Tiffany',\n src: 'https://storage.googleapis.com/3ddplusgcp/logoEditor/assets/fonts/tiffany.woff',\n },\n];\n\nexport const Rightmenu = () => {\n initTE({ Tab });\n const textSelected = use3dddPlus.getState().activeSelection;\n const canvas = use3dddPlus.getState().fabricCanvas;\n const [\n colorFill,\n currentSelection,\n activeSelection,\n textInfo,\n activeObj,\n storeAllObject,\n allColor,\n setToggleSaveDesign,\n ] = use3dddPlus(\n (state) => [\n state.colorFill,\n state.currentSelection,\n state.activeSelection,\n state.textInfo,\n state.activeSelection,\n state.storeAllObject,\n state.allColor,\n state.setToggleSaveDesign,\n ],\n shallow\n );\n const [textAlignDisplay, setTextAlignDisplay] = useState(false);\n const [outlineVal, setOutlineVal] = useState(0);\n const [spacingVal, setSpacinglineVal] = useState(1);\n const [sliderValue, setSliderValue] = useState(50);\n const [fontStyle, setFontStyle] = useState({\n bold: false,\n italic: false,\n underline: false,\n });\n const [activeButton, setActiveButton] = useState<string | null>(null);\n useEffect(() => {\n if (!activeSelection) return;\n use3dddPlus.setState({ textInfo: activeSelection.text });\n }, [activeSelection]);\n\n const onTextChange = (e) => {\n const lines = e.target.value.split('\\n');\n lines.length == 1 ? setTextAlignDisplay(false) : setTextAlignDisplay(true);\n use3dddPlus.setState({ textInfo: e.target.value });\n textSelected.set('text', use3dddPlus.getState().textInfo);\n use3dddPlus.getState().forIconCapture();\n textSelected.icon = use3dddPlus.getState().iconImage;\n canvas.renderAll();\n };\n const textAlignHandler = (e) => {\n console.log(e.target.id);\n setActiveButton(e.target.id);\n textSelected.set('textAlign', e.target.id);\n use3dddPlus.getState().updateModifaction(true);\n use3dddPlus.getState().forIconCapture();\n textSelected.icon = use3dddPlus.getState().iconImage;\n canvas.renderAll();\n };\n const handleSliderChange = (event) => {\n textSelected.set('fontSize', event.target.value);\n canvas.renderAll();\n setSliderValue(event.target.value);\n };\n const fontChange = (e) => {\n fontFamilies.map((item) => {\n console.log(e, item);\n if (item.name == e.target.value) {\n const font = new FontFace(item.name, `url('${item.src}')`);\n font.load().then((value) => {\n //@ts-ignore\n document.fonts?.add(value);\n document.body.classList.add('fonts-loaded');\n textSelected.set('fontFamily', item.name);\n use3dddPlus.getState().forIconCapture();\n textSelected.icon = use3dddPlus.getState().iconImage;\n canvas.renderAll();\n });\n }\n });\n };\n const textColorChange = (property, color: any) => {\n console.log(property);\n textSelected.set({\n fill: color,\n colorFill: { layer0: color },\n });\n //textSelected.set('fill', color);\n use3dddPlus.getState().updateModifaction(true);\n use3dddPlus.getState().forIconCapture();\n textSelected.icon = use3dddPlus.getState().iconImage;\n canvas.renderAll();\n };\n const nudgeMove = (e) => {\n if (e.target.id === 'down') {\n if (textSelected.aCoords.br.y > canvas.height - 2) return;\n use3dddPlus.getState().moveDown(textSelected);\n use3dddPlus.getState().updateModifaction(true);\n } else if (e.target.id === 'up') {\n if (textSelected.aCoords.tr.y < 5) return;\n use3dddPlus.getState().moveUp(textSelected);\n use3dddPlus.getState().updateModifaction(true);\n } else if (e.target.id === 'right') {\n if (textSelected.aCoords.tr.x > canvas.height - 2) return;\n use3dddPlus.getState().moveRight(textSelected);\n use3dddPlus.getState().updateModifaction(true);\n } else if (e.target.id === 'left') {\n if (textSelected.aCoords.tl.x < 2) return;\n use3dddPlus.getState().moveLeft(textSelected);\n use3dddPlus.getState().updateModifaction(true);\n }\n };\n const textOutlineHandler = (e) => {\n setOutlineVal(e.target.valueAsNumber);\n textSelected.strokeWidth = e.target.valueAsNumber;\n use3dddPlus.getState().updateModifaction(true);\n use3dddPlus.getState().forIconCapture();\n textSelected.icon = use3dddPlus.getState().iconImage;\n canvas.renderAll();\n };\n const strokeColorChange = (property, color) => {\n console.log(property);\n textSelected.set('stroke', color);\n use3dddPlus.getState().updateModifaction(true);\n use3dddPlus.getState().forIconCapture();\n textSelected.icon = use3dddPlus.getState().iconImage;\n canvas.renderAll();\n };\n const textSpacingHandler = (e) => {\n setSpacinglineVal(e.target.valueAsNumber);\n textSelected.charSpacing = e.target.valueAsNumber;\n use3dddPlus.getState().updateModifaction(true);\n use3dddPlus.getState().forIconCapture();\n textSelected.icon = use3dddPlus.getState().iconImage;\n canvas.renderAll();\n if (textSelected.aCoords.tr.x > 480) {\n return;\n }\n };\n const textStyle = (e: any, key: string, value: any) => {\n if (fontStyle[e.target.id]) textSelected.set(key, '');\n else textSelected.set(key, value);\n setFontStyle((state) => ({ ...state, [e.target.id]: !state[e.target.id] }));\n use3dddPlus.getState().updateModifaction(true);\n use3dddPlus.getState().forIconCapture();\n textSelected.icon = use3dddPlus.getState().iconImage;\n canvas.renderAll();\n };\n const layerHandle = (element, index, num) => {\n const currentObject = [...use3dddPlus.getState().storeAllObject];\n if (num === 'minus') {\n canvas.sendToBack(element);\n use3dddPlus.setState({\n storeAllObject: changeArr(currentObject, index, index + 1),\n });\n } else {\n canvas.bringToFront(element);\n use3dddPlus.setState({\n storeAllObject: changeArr(currentObject, index, index - 1),\n });\n }\n };\n const changeArr = (arr, fromIndex, toIndex) => {\n const element = arr.splice(fromIndex, 1)[0];\n arr.splice(toIndex, 0, element);\n return arr;\n };\n const deleteElement = (item) => {\n canvas.remove(item);\n canvas.requestRenderAll();\n removeItem(item);\n };\n const removeItem = (value: any) => {\n //@ts-ignore\n var index = use3dddPlus.getState().storeAllObject.indexOf(value);\n if (index > -1) {\n use3dddPlus.getState().storeAllObject.splice(index, 1);\n }\n use3dddPlus.setState({\n storeAllObject: [...use3dddPlus.getState().storeAllObject],\n });\n };\n const changeSVGTextColor = (property, color) => {\n const previousColor = property;\n canvas.getObjects().map((data) => {\n // console.log(data.type);\n if (data.type === 'text') {\n let _C = data.fill;\n if (_C === previousColor) {\n data.set({\n fill: color,\n colorFill: { layer0: color },\n });\n }\n // canvas.renderAll();\n } else if (data.type === 'group') {\n // console.log(data);\n let objImage = data._objects;\n objImage.forEach((ele) => {\n const _C = ele.fill.includes('#') ? ele.fill : RGBToHex(ele.fill);\n console.log('ele', ele);\n if (_C === previousColor) {\n ele.set({\n fill: color,\n // colorFill : colorFill,\n });\n }\n });\n const colorFill = { ...data.colorFill };\n Object.keys(colorFill).forEach((item) => {\n console.log(item);\n if (colorFill[item] === previousColor) {\n colorFill[item] = color;\n }\n });\n data.set({\n colorFill: colorFill,\n });\n }\n });\n canvas.renderAll();\n };\n const changeSVGColor = (property, color) => {\n const fillColor = colorFill;\n const previousColor = fillColor[property];\n const SelectedObjet = use3dddPlus.getState().activeSelection;\n let objImage = SelectedObjet._objects;\n objImage.forEach((ele) => {\n const _C = ele.fill.includes('#') ? ele.fill : RGBToHex(ele.fill);\n if (_C === previousColor) {\n ele.set({\n fill: color,\n });\n }\n });\n canvas.renderAll();\n fillColor[property] = color;\n use3dddPlus.setState({ colorFill: fillColor });\n use3dddPlus.getState().updateModifaction(true);\n use3dddPlus.getState().forIconCapture();\n textSelected.icon = use3dddPlus.getState().iconImage;\n };\n\n const RGBToHex = (rgb) => {\n let sep = rgb.indexOf(',') > -1 ? ',' : ' ';\n\n rgb = rgb.substr(4).split(')')[0].split(sep);\n let r = (+rgb[0]).toString(16),\n g = (+rgb[1]).toString(16),\n b = (+rgb[2]).toString(16);\n\n if (r.length == 1) r = '0' + r;\n if (g.length == 1) g = '0' + g;\n if (b.length == 1) b = '0' + b;\n return '#' + r + g + b;\n };\n const flipX = () => {\n activeObj.set({\n flipX: !activeObj.flipX,\n });\n use3dddPlus.getState().updateModifaction(true);\n use3dddPlus.getState().forIconCapture();\n textSelected.icon = use3dddPlus.getState().iconImage;\n canvas.renderAll();\n };\n const flipY = () => {\n activeObj.set({\n flipY: !activeObj.flipY,\n });\n use3dddPlus.getState().updateModifaction(true);\n use3dddPlus.getState().forIconCapture();\n textSelected.icon = use3dddPlus.getState().iconImage;\n // activeObj.\n canvas.renderAll();\n };\n const onSave = () => {\n if (canvas.getObjects().length > 0) {\n setToggleSaveDesign('save', true, 'Save Logo', {});\n } else {\n alert('NOTHING TO SAVE...');\n }\n };\n useEffect(() => {\n const unSub = use3dddPlus.subscribe(\n (state) => state.colorFill,\n (_current, _previous) => {\n // console.log(\"_PREVIUS_COLORFIL\" , _previous);\n // console.log(\"_CURRENT_COLOR\",_current);\n }\n );\n return unSub;\n }, []);\n // console.log(\"====>\",activeSelection,currentSelection)\n return (\n <div className=\"text-left flex-1 h-[100vh] px-[36px] pt-[23px] relative \">\n <div className=\"flex flex-col \">\n <h1 className=\"text-[22px] font-bold\">Edit Design</h1>\n <ul\n className=\" flex list-none mt-[16px] flex-col md:flex-row border-b-0 pl-0\"\n role=\"tablist\"\n data-te-nav-ref\n >\n <li\n role=\"presentation\"\n className=\"flex-grow basis-0 text-center\"\n onClick={() => {\n use3dddPlus.setState({ currentSelection: 'none' });\n canvas.discardActiveObject();\n canvas.renderAll();\n }}\n >\n <a\n href=\"#tabs-properties\"\n className={`my-2 block border border-[#D6D6D6] px-[40px] py-[10px] ${TEXT_SIZE_9} font-bold uppercase leading-tight hover:text-[white] hover:bg-[#E11A38] data-[te-nav-active]:bg-[#E11A38] data-[te-nav-active]:text-[white]`}\n data-te-toggle=\"pill\"\n data-te-target=\"#tabs-properties\"\n data-te-nav-active\n role=\"tab\"\n aria-controls=\"tabs-properties\"\n aria-selected=\"true\"\n >\n Properties\n </a>\n </li>\n <li\n role=\"presentation\"\n className=\"flex-grow basis-0 text-center\"\n onClick={() => use3dddPlus.setState({ currentSelection: 'layer' })}\n >\n <a\n href=\"#tabs-layers\"\n className={`my-2 block border border-[#D6D6D6] px-[40px] py-[10px] ${TEXT_SIZE_9} font-bold uppercase leading-tight hover:text-[white] hover:bg-[#E11A38] data-[te-nav-active]:bg-[#E11A38] data-[te-nav-active]:text-[white]`}\n data-te-toggle=\"pill\"\n data-te-target=\"#tabs-layers\"\n role=\"tab\"\n aria-controls=\"tabs-layers\"\n aria-selected=\"false\"\n >\n Layers\n </a>\n </li>\n </ul>\n\n <div\n className=\"hidden opacity-100 transition-opacity duration-150 ease-linear data-[te-tab-active]:block\"\n id=\"tabs-properties\"\n role=\"tabpanel\"\n aria-labelledby=\"tabs-home-tab02\"\n data-te-tab-active\n >\n <div className=\"h-[50vh] sm:h-[55vh] 2xl:h-[60vh] overflow-y-auto overflow-x-hidden\">\n {currentSelection === 'text' && (\n <div className=\" \">\n <div className=\"uppercase font-bold text-sm mb-[8.5px]\">\n Enter Text\n </div>\n <textarea\n value={textInfo}\n onChange={onTextChange}\n className=\"w-[100%] border border-solid-[1px] border-[#9A9A9A] py-[10px] pl-[16px] mb-[16.5px]\"\n placeholder=\"LOGO TEXT\"\n />\n <div className=\"uppercase font-bold text-sm mb-[8.5px]\">\n Select Font\n </div>\n <select\n name=\"FontStyleNumber\"\n id=\"FontStyleNumber\"\n onChange={fontChange}\n className={`${INPUT_BG_COLOR} font-bold ${TEXT_COLOR_1} ${TEXT_SIZE_3} border border-solid\t ${BORDER_COLOR_1} select select-bordered w-full rounded-none focus:outline-current focus:outline-offset-0 focus:rounded-sm mb-[16.5px]`}\n >\n {fontFamilies.map((list, index) => {\n return (\n <>\n <option value={list.name} key={index}>\n {list.name}\n </option>\n </>\n );\n })}\n </select>\n <div className=\"uppercase font-bold text-sm mb-[8.5px]\">\n TEXT SIZE\n </div>\n <input\n type=\"range\"\n value={sliderValue}\n onChange={handleSliderChange}\n className=\" rangeSlider w-full mb-[16.5px]\"\n id=\"slider\"\n style={{\n background: `linear-gradient(to right, #e11a38 0%, #e11a38 ${sliderValue}%, #fff ${sliderValue}%, #fff 100%)`,\n }}\n />\n\n <div className=\"uppercase font-bold text-sm mb-[8.5px]\">\n Style\n </div>\n <div className=\"flex gap-x-[15px] mb-[16.5px]\">\n {' '}\n <button\n className={\n fontStyle.bold\n ? `${SELECT_BG_COLOR} text-[#fff] text-base cursor-pointer border font-bold border-[#EBEBEB] py-[7px] px-[39px] `\n : 'bg-[#fff] font-bold text-base cursor-pointer border border-[#EBEBEB] py-[7px] px-[39px]'\n }\n onClick={(e) => textStyle(e, 'fontWeight', 'bold')}\n id=\"bold\"\n >\n B\n </button>\n <button\n className={\n fontStyle.italic\n ? `${SELECT_BG_COLOR} text-[#fff] text-base cursor-pointer border italic border-[#EBEBEB] py-[7px] px-[39px] `\n : 'bg-[#fff] italic text-base cursor-pointer border border-[#EBEBEB] py-[7px] px-[39px]'\n }\n onClick={(e) => textStyle(e, 'fontStyle', 'italic')}\n id=\"italic\"\n >\n I\n </button>\n <button\n className={\n fontStyle.underline\n ? `${SELECT_BG_COLOR} text-[#fff] text-base cursor-pointer border underline border-[#EBEBEB] py-[7px] px-[39px] `\n : 'bg-[#fff] underline text-base cursor-pointer border border-[#EBEBEB] py-[7px] px-[39px]'\n }\n onClick={(e) =>\n textStyle(e, 'underline', !fontStyle.underline)\n }\n id=\"underline\"\n >\n U\n </button>\n </div>\n\n {textAlignDisplay === true && (\n <div className=\"textAlign\">\n <div className=\"uppercase font-bold text-sm mb-[8.5px]\">\n Align\n </div>\n <div className=\"flex gap-x-[15px] mb-[16.5px]\">\n <button\n type=\"button\"\n className={\n 'left' === activeButton\n ? `${SELECT_BG_COLOR} text-[#fff] cursor-pointer border border-[#EBEBEB] py-[7px] px-[39px] `\n : 'bg-[#fff] cursor-pointer border border-[#EBEBEB] py-[7px] px-[39px]'\n }\n id=\"left\"\n onClick={textAlignHandler}\n >\n <FiAlignLeft id=\"left\" onClick={textAlignHandler} />\n </button>\n <button\n type=\"button\"\n className={\n 'center' === activeButton\n ? `${SELECT_BG_COLOR} text-[#fff] cursor-pointer border border-[#EBEBEB] y-[7px] px-[39px] `\n : 'bg-[#fff] cursor-pointer border border-[#EBEBEB] py-[7px] px-[39px]'\n }\n id=\"center\"\n onClick={textAlignHandler}\n >\n <FiAlignCenter id=\"center\" onClick={textAlignHandler} />\n </button>\n <button\n type=\"button\"\n className={\n 'right' === activeButton\n ? `${SELECT_BG_COLOR} text-[#fff] cursor-pointer border border-[#EBEBEB] y-[7px] px-[39px] `\n : 'bg-[#fff] cursor-pointer border border-[#EBEBEB] py-[7px] px-[39px]'\n }\n id=\"right\"\n onClick={textAlignHandler}\n >\n <FiAlignRight id=\"right\" onClick={textAlignHandler} />\n </button>\n </div>\n </div>\n )}\n <div className=\"uppercase font-bold text-sm mb-[8.5px]\">\n Text Color\n </div>\n <div className=\"relative\">\n <ColorImpl\n mClass={'ml-0'}\n handleChange={textColorChange}\n property={'backgroundColor'}\n name={'backgroundColor'}\n color={activeSelection.fill}\n />\n </div>\n <div className=\"flex gap-2 mt-4\">\n <div>\n <div className=\"uppercase font-bold text-sm mb-[8.5px]\">\n Outline Size\n </div>\n <input\n type=\"number\"\n id=\"outlineSize\"\n name=\"outlineSize\"\n step=\"0.2\"\n value={outlineVal}\n className=\"border border-[#EBEBEB] py-[10px] pl-[16px] mb-[16.5px] w-[145px]\"\n onChange={textOutlineHandler}\n ></input>\n </div>\n <div>\n <div className=\"uppercase font-bold text-sm mb-[8.5px]\">\n Outline Color\n </div>\n <div className=\"relative\">\n {' '}\n <ColorImpl\n mClass={'ml-0'}\n handleChange={strokeColorChange}\n property={'backgroundColor'}\n name={'backgroundColor'}\n color={activeSelection.stroke}\n />\n </div>\n </div>\n </div>\n <div className=\"flex gap-2\">\n <div>\n <div className=\"uppercase font-bold text-sm mb-[8.5px]\">\n Letter Spacing\n </div>\n <input\n type=\"number\"\n id=\"spacing\"\n name=\"spacing\"\n step=\"10\"\n value={spacingVal}\n className=\"border border-[#EBEBEB] py-[10px] pl-[16px] mb-[16.5px] w-[145px]\"\n onChange={textSpacingHandler}\n ></input>\n </div>\n <div>\n <div className=\"uppercase font-bold text-sm mb-[8.5px]\">\n Nudge\n </div>\n <button\n onClick={nudgeMove}\n id=\"down\"\n className=\"font-medium text-orange-400\"\n >\n DOWN\n </button>\n <button\n onClick={nudgeMove}\n id=\"up\"\n className=\"font-medium text-orange-300 text-lime-400 px-1\"\n >\n UP\n </button>\n <button\n onClick={nudgeMove}\n id=\"left\"\n className=\"font-medium text-orange-300 text-teal-500\"\n >\n LEFT\n </button>\n <button\n onClick={nudgeMove}\n id=\"right\"\n className=\"font-medium text-orange-300 text-violet-600 px-1\"\n >\n RIGHT\n </button>\n </div>\n </div>\n </div>\n )}\n {currentSelection === 'group' && (\n <ImageEdit\n flipX={flipX}\n flipY={flipY}\n changeSVGColor={changeSVGColor}\n nudgeMove={nudgeMove}\n activeSelection={activeSelection}\n />\n )}\n {currentSelection === 'selectAll' && (\n <>\n <div className=\"uppercase font-bold pt-[17px]\">\n Color in Canvas\n </div>\n <div className=\"flex gap-x-[1rem] mt-[12px] mb-[12px]\">\n {allColor.length > 0 &&\n allColor?.map((item) => {\n return (\n <ColorImpl\n mClass={'ml-[36px]'}\n key={item}\n handleChange={changeSVGTextColor}\n property={item}\n color={item}\n />\n );\n })}\n </div>\n <button\n onClick={nudgeMove}\n id=\"down\"\n className=\"font-medium text-orange-400\"\n >\n DOWN\n </button>\n <button\n onClick={nudgeMove}\n id=\"up\"\n className=\"font-medium text-orange-300 text-lime-400 px-1\"\n >\n UP\n </button>\n <button\n onClick={nudgeMove}\n id=\"left\"\n className=\"font-medium text-orange-300 text-teal-500\"\n >\n LEFT\n </button>\n <button\n onClick={nudgeMove}\n id=\"right\"\n className=\"font-medium text-orange-300 text-violet-600 px-1\"\n >\n RIGHT\n </button>\n {\n // console.log(storeAllObject);\n storeAllObject.map((item, index) => {\n return (\n <div className=\"innerLayer bg-slate-300 my-1\">\n <img\n className=\"rounded-lg w-14 h-8\"\n src={item ? item['icon'] : ''}\n ></img>\n <button\n className=\"up mx-1 px-2 border-solid border-2 border-slate-500 \"\n onClick={() => layerHandle(item, index, 'plus')}\n >\n UP\n </button>\n <button\n className=\"down mx-1 px-2 border-solid border-2 border-slate-500\"\n onClick={() => layerHandle(item, index, 'minus')}\n >\n DOWN\n </button>\n <button\n className=\"close mx-1 px-2 border-solid border-2 border-slate-500\"\n onClick={() => deleteElement(item)}\n >\n DELETE\n </button>\n </div>\n );\n })\n }\n </>\n )}\n {currentSelection === 'none' && (\n <>\n <div className=\"uppercase font-bold pt-[17px]\">\n Color in Canvas\n </div>\n <div className=\"flex gap-x-[1rem] mt-[12px]\">\n {allColor.length > 0 &&\n allColor?.map((item) => {\n return (\n <ColorImpl\n mClass={'ml-[36px]'}\n key={item}\n handleChange={changeSVGTextColor}\n property={item}\n color={item}\n />\n );\n })}\n </div>\n </>\n )}\n </div>\n\n <button\n type=\"button\"\n className=\"mt-3 inline-flex justify-center bg-white px-[110px] py-2 text-sm font-medium text-[#E11A38] shadow-sm ring-1 ring-inset ring-[#E11A38] hover:bg-gray-50 sm:mt-0 w-full\"\n onClick={onSave}\n >\n Save\n </button>\n </div>\n <div\n className=\"hidden opacity-0 transition-opacity duration-150 ease-linear data-[te-tab-active]:block\"\n id=\"tabs-layers\"\n role=\"tabpanel\"\n aria-labelledby=\"tabs-profile-tab02\"\n >\n {currentSelection === 'layer' && (\n <div className=\"\">\n {storeAllObject.map((item, index) => {\n return (\n <div className=\"innerLayer bg-slate-300 my-1\">\n <img\n className=\"rounded-lg w-14 h-8\"\n src={item ? item['icon'] : ''}\n ></img>\n <button\n className=\"up mx-1 px-2 border-solid border-2 border-slate-500 \"\n onClick={() => layerHandle(item, index, 'plus')}\n >\n UP\n </button>\n <button\n className=\"down mx-1 px-2 border-solid border-2 border-slate-500\"\n onClick={() => layerHandle(item, index, 'minus')}\n >\n DOWN\n </button>\n <button\n className=\"close mx-1 px-2 border-solid border-2 border-slate-500\"\n onClick={() => deleteElement(item)}\n >\n DELETE\n </button>\n </div>\n );\n })}\n </div>\n )}\n </div>\n </div>\n </div>\n );\n};\n","import React from 'react';\nimport { MdOutlineArrowForwardIos } from 'react-icons/md';\nimport { Searchbar } from '../searchbar';\nimport { Card, CardMedia, CardBody, CardTitle } from '../card';\nimport { Button } from '../button';\nimport { shallow } from 'zustand/shallow';\nimport { use3dddPlus } from '../../store';\nimport { Loader } from '../loader';\nexport const AddMascot = () => {\n const [stockLogos, stockLogoHandler, loading] = use3dddPlus(\n (state) => [state.stockLogos, state.stockLogoHandler, state.loading],\n shallow\n );\n return (\n <>\n <div className=\"bg-[#F7F7F7] absolute z-100 w-[90%] h-full pr-[56px]\">\n <div className=\"w-full flex mt-[50px] flex-row\">\n <div className=\"w-1/2 flex justify-end\">\n <select className=\"w-[168px] mr-[24px]\">\n <option value={'all'}>All</option>\n </select>\n </div>\n <div className=\" flex-1 justify-end\">\n <Searchbar placeholder={'Search Stock Logos'}></Searchbar>\n </div>\n </div>\n <div className=\"flex flex-row gap-2\">\n <div className=\" bg-[#FFFFFF] ml-[27px] pt-[28px] w-[30%] mt-[30px]\">\n <h3 className=\"ml-[38px] mt-[28px] font-bold\">MASCOTS CATEGORY</h3>\n <Button\n label=\"Namedrops\"\n className=\"text-[15px] !w-[auto] flex-row ml-[30px] mt-[10px] bg-transparent focus:text-[#e11a38]\"\n icons={<MdOutlineArrowForwardIos />}\n onClick={undefined}\n children={undefined}\n />\n <Button\n label=\"Arrows\"\n className=\"text-[15px] !w-[auto] flex-row ml-[30px] mt-[-22px] bg-transparent focus:text-[#e11a38]\"\n icons={<MdOutlineArrowForwardIos />}\n onClick={undefined}\n children={undefined}\n />\n <Button\n label=\"Bears\"\n className=\"flex-row ml-[30px] mt-[-22px] bg-transparent focus:text-[#e11a38] text-[15px] !w-[auto]\"\n icons={<MdOutlineArrowForwardIos />}\n onClick={undefined}\n children={undefined}\n />\n <Button\n label=\"Boar\"\n className=\"flex-row ml-[30px] mt-[-22px] bg-transparent focus:text-[#e11a38] text-[15px] !w-[auto]\"\n icons={<MdOutlineArrowForwardIos />}\n onClick={undefined}\n children={undefined}\n />\n </div>\n <div className=\"flex mt-[30px] overflow-y-auto overflow-x-hidden h-[65vh] w-[70%]\">\n <div className=\"max-h-[140px] grid gap-3.5 grid-cols-3 md:grid-cols-3 lg:grid-cols-4 w-full \">\n {stockLogos.length > 0\n ? stockLogos.map((logo, index) => (\n <Card\n key={'logoImage' + index}\n cardClass={`rounded-none bg-white cursor-pointer `}\n style={{ boxShadow: '0px 0px 6px #98989829' }}\n onClick={() => stockLogoHandler(logo)}\n >\n <CardMedia src={logo} imageClass=\"h-[50px] mt-[26px]\" />\n\n <CardBody bodyClass=\"p-2.5 mt-[13px]\">\n <CardTitle\n titleClass={`text-[11px] uppercase`}\n name={'LOGO NAME'}\n />\n </CardBody>\n </Card>\n ))\n : 'No Stock Logos'}\n </div>\n </div>\n </div>\n </div>\n {loading && <Loader />}\n </>\n );\n};\n","import React from 'react';\n// import { use3dddPlus } from '../../store';\nimport { BACKDROP_BLUR, MODAL_BG_COLOR } from '../../theme';\n\nexport interface ModalProps {\n children?: React.ReactNode;\n className?: string;\n}\n\nexport const SaveDesignModal = ({ children, className = '' }: ModalProps) => {\n // const closeDesign = use3dddPlus((state) => state.setToggleSaveDesign);\n return (\n <>\n <div className={`modal modal-middle modal-open`}>\n <div className={`${className} modal-box ${MODAL_BG_COLOR} `}>\n {children}\n </div>\n <form method=\"dialog\" className={`modal-backdrop ${BACKDROP_BLUR}`}>\n <button>close</button>\n </form>\n </div>\n </>\n );\n};","import React, { useState, useEffect } from 'react';\nimport {\n BUTTON_TEXT_COLOR,\n EDIT_DESIGN_INFO_BG_COLOR_4,\n EDIT_DESIGN_INFO_INPUT_BORDER_COLOR,\n EDIT_DESIGN_INFO_TEXT_COLOR_1,\n EDIT_DESIGN_INFO_TEXT_COLOR_2,\n EDIT_DESIGN_INFO_TEXT_COLOR_3,\n INPUT_ERROR_BORDER_COLOR,\n INPUT_ERROR_TEXT_COLOR,\n SAVEBUTTON_BG_COLOR,\n SECONDARY_COLOR,\n TEXT_SIZE_12,\n TEXT_SIZE_4,\n TEXT_SIZE_5,\n TEXT_SIZE_9,\n} from '../../theme';\nimport { RxCross2 } from 'react-icons/rx';\nimport { use3dddPlus } from '../../store';\nimport { SaveDesignModal } from './saveDesignModal';\nimport './saveDesign.css';\n\nexport const SaveDesign = () => {\n const [designNameValidation, setDesignNameValidation] = useState('');\n const [tagName, setTagName] = useState('');\n const [commaInTagName, setCommaInTagName] = useState(false);\n const [\n canvas,\n designName,\n designTag,\n closeModal,\n toggleSaveDesign,\n disableSaveButton,\n saveLogo,\n uploadLogoConfig,\n ] = use3dddPlus((state) => [\n state.fabricCanvas,\n state.designName,\n state.designTag,\n state.setToggleSaveDesign,\n state.toggleSaveDesign,\n state.disableSaveButton,\n state.saveLogo,\n state.uploadLogoConfig,\n ]);\n\n useEffect(() => {\n return () => {};\n }, []);\n\n const checkValidations = () => {\n const nameValidation = designName.length >= 3;\n if (!nameValidation) {\n setDesignNameValidation('length');\n return nameValidation;\n } else {\n const reg = /^[a-zA-Z0-9 ]+$/;\n const regTest = reg.test(designName);\n if (!!regTest) {\n setDesignNameValidation('');\n return nameValidation;\n }\n return false;\n }\n };\n const onSaveHandler = async () => {\n if (!checkValidations()) return;\n const dataURL = canvas.toDataURL();\n\n const canvasData = use3dddPlus.getState().applyColorFill();\n // const canvasGetobject = canvas.getObjects();\n // canvasData.objects.forEach((element, index) => {\n // element.colorFill = canvasGetobject[index].colorFill;\n // });\n const dataCh = JSON.stringify(canvasData);\n const S3UrlPath = await uploadLogoConfig(dataCh, 117015);\n const raw = JSON.stringify({\n customer_id: 117015,\n tag: designTag.join(''),\n name: designName,\n base64_image: dataURL,\n logo_config_url: S3UrlPath,\n });\n saveLogo(raw).then(() => {\n closeModal('', false, '', {});\n alert('Logo Saved Successfully');\n });\n };\n\n useEffect(() => {\n if (tagName !== '') {\n const reg = /^[a-zA-Z0-9 ]+$/;\n const regTest = reg.test(tagName);\n\n if (!regTest) {\n setCommaInTagName(true);\n } else if (!!commaInTagName) {\n setCommaInTagName(false);\n }\n } else if (!!commaInTagName) {\n setCommaInTagName(false);\n }\n }, [tagName]);\n\n useEffect(() => {\n if (designName !== '') {\n const reg = /^[a-zA-Z0-9 ]+$/;\n const regTest = reg.test(designName);\n if (!regTest) {\n setDesignNameValidation('specialCharacter');\n } else if (designNameValidation === 'specialCharacter') {\n setDesignNameValidation('');\n }\n } else if (designNameValidation === 'specialCharacter') {\n setDesignNameValidation('');\n }\n }, [designName]);\n\n const handleTagChange = (event: any) => {\n if (event?.target?.value !== ' ') {\n setTagName(event.target.value);\n }\n };\n\n const handleKeyDown = (event: any) => {\n if (designTag.length > 4 && tagName !== '') {\n event.preventDefault();\n alert('Maximum number of tag can be 5');\n setTagName('');\n return;\n }\n\n if (\n event.key === 'Enter' ||\n event.key === 'Tab' ||\n (event.keyCode === 188 && tagName !== '') ||\n (event.type === 'blur' && tagName !== '')\n ) {\n event.preventDefault();\n\n const reg = /^[a-zA-Z0-9 ]+$/;\n const regTest = reg.test(tagName);\n if (!regTest) {\n setCommaInTagName(true);\n return;\n }\n if (!!regTest) {\n tagName !== '' && handleAdd();\n }\n } else if (tagName === '' && event.key === 'Backspace') {\n handleBackspace();\n }\n };\n\n const handleNameChange = (value) => {\n use3dddPlus.setState({ designName: value });\n if (designNameValidation === 'length') {\n setDesignNameValidation('');\n }\n };\n\n const handleAdd = () => {\n let newList = [...designTag];\n if (!newList.includes(tagName.trim())) {\n newList.push(tagName.trim());\n }\n use3dddPlus.setState({ designTag: newList.filter(Boolean) });\n setTagName('');\n };\n\n const handleBackspace = () => {\n let newList = [...designTag];\n newList.pop();\n use3dddPlus.setState({ designTag: newList.filter(Boolean) });\n };\n\n const handleDelete = (e) => {\n const newList = designTag.filter((item) => item !== e);\n use3dddPlus.setState({ designTag: newList });\n };\n const onCancelHandler = () => {\n closeModal('', false, '', {});\n };\n return (\n <SaveDesignModal\n className={`md:absolute md:right-30 rounded-none p-0 md:h-auto max-h-screen max-w-[37.125rem] w-[80%] md:w-full m-[auto]\n `}\n >\n <button\n className=\"absolute right-[0.6875rem] top-[0.6875rem] px-[0.75rem] py-[0.75rem] hover:bg-[#E11A38] hover:text-[#ffffff] hover:rounded-none\"\n onClick={() => {\n use3dddPlus.getState().goBack();\n closeModal('', false, '', {});\n }}\n >\n <RxCross2 strokeWidth={1} />\n </button>\n\n <div className={`flex h-max w-full`}>\n <div\n className={`w-full md:px-[112px] md:p-[98px] p-[30px] bg-white h-full flex justify-center`}\n >\n <div className=\"w-full\">\n <span\n className={`block mb-6 font-bold text-2xl lh-1 ${SECONDARY_COLOR} uppercase leading-[2.3125rem] font-bold ${EDIT_DESIGN_INFO_TEXT_COLOR_1} ${TEXT_SIZE_5}\n `}\n >\n {toggleSaveDesign.title}\n </span>\n <div>\n <div className=\"relative\">\n <input\n type=\"text\"\n id=\"exampleFormControlInput2\"\n name=\"designName\"\n className={`${\n designNameValidation === 'length'\n ? 'mb-[1rem]'\n : 'mb-[1.25rem]'\n } ${\n designNameValidation === 'length'\n ? `border ${INPUT_ERROR_BORDER_COLOR}`\n : `border ${EDIT_DESIGN_INFO_INPUT_BORDER_COLOR}`\n } designNameInput bg-white w-full h-[3rem] rounded-none focus:outline-none border ${EDIT_DESIGN_INFO_INPUT_BORDER_COLOR} ${TEXT_SIZE_9} py-[0.8125rem] px-4 block leading-[1.25rem] ${EDIT_DESIGN_INFO_TEXT_COLOR_3} font-medium`}\n placeholder=\" \"\n value={designName}\n onChange={(e) =>\n handleNameChange(e?.target?.value?.trimStart())\n }\n onClick={(e) => {\n e.currentTarget.focus();\n }}\n />\n <label\n htmlFor=\"exampleFormControlInput2\"\n className={`designNameLabel px-[0.125rem] absolute left-4 transition-all ${TEXT_SIZE_9} ${EDIT_DESIGN_INFO_TEXT_COLOR_2} top-1/2 transform -translate-y-1/2`}\n >\n Design Name\n </label>\n </div>\n {designNameValidation === 'length' && (\n <div\n role=\"alert\"\n className={`text-sm ${INPUT_ERROR_TEXT_COLOR} mb-[1.25rem]`}\n >\n * Please enter a name with at least 3 characters\n </div>\n )}\n {designNameValidation === 'specialCharacter' && (\n <div\n role=\"alert\"\n className={`text-sm ${INPUT_ERROR_TEXT_COLOR} mb-[1.25rem]`}\n >\n * Design Name can not have any special characters\n </div>\n )}\n <div\n className={`relative flex flex-row py-[0.695rem] border ${EDIT_DESIGN_INFO_INPUT_BORDER_COLOR} mb-5 flex-wrap place-content-start`}\n >\n <div className=\"flex flex-row gap-[0.5rem] flex-wrap items-center px-[1rem]\">\n {Array.isArray(designTag) &&\n designTag?.map((el: any, i) => (\n <div\n key={i}\n className={`${TEXT_SIZE_12} leading-[0.8125rem] flex h-[1.5rem] items-center pt-[0.375rem] pb-[0.3125rem] px-[0.5rem] rounded gap-[0.4375rem] ${EDIT_DESIGN_INFO_TEXT_COLOR_1} ${EDIT_DESIGN_INFO_BG_COLOR_4}`}\n >\n {el}\n <button onClick={() => handleDelete(el)}>\n <RxCross2\n className={`${EDIT_DESIGN_INFO_TEXT_COLOR_1} font-bold`}\n />\n </button>\n </div>\n ))}\n\n <div>\n <input\n name=\"tags\"\n type=\"text\"\n placeholder=\" \"\n className={`designTagsInput ${EDIT_DESIGN_INFO_TEXT_COLOR_3} font-medium block w-[6.25rem] focus:outline-none`}\n value={tagName}\n onChange={handleTagChange}\n onKeyDown={handleKeyDown}\n onBlur={handleKeyDown}\n id=\"exampleFormControlInput3\"\n onClick={(e) => {\n e.currentTarget.focus();\n }}\n />\n <label\n htmlFor=\"exampleFormControlInput3\"\n className={`py-[0.695rem] ${\n designTag?.length > 0 ? 'tagClass' : ''\n } designTagsLabel px-[0.125rem] ${TEXT_SIZE_9} ${EDIT_DESIGN_INFO_TEXT_COLOR_2} font-medium leading-[1.25rem] absolute transition-all top-1/2 transform -translate-y-1/2`}\n >\n Tags\n </label>\n </div>\n </div>\n </div>\n {!!commaInTagName && (\n <div\n role=\"alert\"\n className={`text-sm ${INPUT_ERROR_TEXT_COLOR} mb-5`}\n >\n * Tag Name can not have any special characters\n </div>\n )}\n\n <div\n className={`${\n !disableSaveButton ? 'flex flex-col lg:flex-row' : ''\n } gap-[19px] leading-[23px] font-bold ${TEXT_SIZE_4}`}\n >\n {toggleSaveDesign.key === 'save' && (\n <>\n <button\n className={`md:btn-md lg:w-2/5 w-full rounded-none uppercase active:bg-violet-700 ${SAVEBUTTON_BG_COLOR} ${BUTTON_TEXT_COLOR}`}\n onClick={() => onSaveHandler()}\n >\n SAVE\n </button>\n <button\n className={`md:btn-md lg:w-2/5 w-full rounded-none uppercase border border-1 border-[#5d5d5d] hover:text-[#ffffff] hover:bg-[#E11A38] hover:border-[#E11A38] justify-center items-center `}\n onClick={() => onCancelHandler()}\n >\n Cancel\n </button>\n </>\n )}\n </div>\n </div>\n </div>\n </div>\n </div>\n </SaveDesignModal>\n );\n};\n","import React from 'react';\nimport { Canvas } from '../canvas';\nimport { use3dddPlus } from '../../store';\nimport { shallow } from 'zustand/shallow';\nimport { UploadLogo } from '../uploadLogo';\nimport { Rightmenu } from '../Rightmenu';\nimport { AddMascot } from '../addMascot';\nimport { MyLogo } from '../myLogo';\nimport { SaveDesign } from '../saveDesign';\nexport const MiddleMenu = ({onApply}) => {\n const [selectedStepper, toggleSaveDesign, loadingLogo] = use3dddPlus(\n (state) => [\n state.selectedStepper,\n state.toggleSaveDesign,\n state.loadingLogo,\n ],\n shallow\n );\n React.useEffect(() => {\n if (selectedStepper === 2) loadingLogo('');\n }, []);\n return (\n <>\n <div className=\" flex flex-col md:flex-row flex-1 z-0 w-[90%] h-full\">\n <div className=\"flex w-[70%] h-[100%]\">\n <Canvas />\n </div>\n {toggleSaveDesign.status && <SaveDesign />}\n <div className=\"flex-1 z-10 h-[100%] \">\n <Rightmenu />\n </div>\n </div>\n {selectedStepper === 1 && <UploadLogo />}\n {selectedStepper === 4 && <AddMascot />}\n {selectedStepper === 2 && <MyLogo onApply={onApply}/>}\n </>\n );\n};\n","import React from 'react';\nimport './index.css';\nimport { use3dddPlus } from './store';\n// import { createRoot } from 'react-dom/client';\nimport * as Components from './components';\nimport * as services from './services';\nimport { LeftMenu } from './components/leftMenu';\nimport { MiddleMenu } from './components/middleMenu';\n// import { Modal } from './components';\n\n// import { ToastContainer, toast } from 'react-toastify';\n// Please do not use types off of a default export module or else Storybook Docs will suffer.\n// see: https://github.com/storybookjs/storybook/issues/9556\n/**\n * A custom App component. Neat!\n */\nconst LogoEditor = ({\n stepperId,\n onApply,\n customLogoColorList,\n defaultColorList,\n logoData,\n}) => {\n const [setSelectedStepper, myLogoHandler] = use3dddPlus((state) => [\n state.setSelectedStepper,\n state.myLogoHandler,\n ]);\n React.useEffect(() => {\n setSelectedStepper(stepperId);\n if (stepperId == undefined) {\n myLogoHandler(logoData);\n }\n }, [stepperId]);\n\n React.useEffect(() => {\n use3dddPlus.setState({ customUploadLogoColorList: customLogoColorList });\n }, [customLogoColorList]);\n React.useEffect(() => {\n use3dddPlus.setState({ defaultColorList: defaultColorList });\n }, [defaultColorList]);\n\n return (\n // <Modal\n // backdropStyle={`z-[7]`}\n // contentStyle={\n // 'top-0 absolute overflow-hidden border-2 border-indigo-600 roboto-bold h-[88vh] m-[auto] z-[7] !mr-[auto] max-w-[73%] w-[100%] md:w-[auto] p-0'\n // }\n // >\n <div className=\" flex flex-col md:flex-row w-full h-[88vh]\">\n <div className=\"lg:w-[10%]\">\n <LeftMenu />\n </div>\n <div className=\" flex h-full w-[90%]\">\n <MiddleMenu onApply={onApply} />\n </div>\n </div>\n // </Modal>\n );\n};\n// const container = document.getElementById('root');\n// const root = createRoot(container!); // createRoot(container!) if you use TypeScript\n// // const [customUploadLogoColorList, defaultColorList] = use3dddPlus((state) => [\n// // state.customUploadLogoColorList,\n// // state.defaultColorList,\n// // ]);\n// root.render(\n// <LogoEditor\n// stepperId={1}\n// onApply={''}\n// // customLogoColorList={customUploadLogoColorList}\n// // defaultColorList={defaultColorList}\n// logoData={[]}\n// />\n// );\n\nexport { LogoEditor, Components, use3dddPlus, services };\n"],"names":["styleInject","css","ref","insertAt","document","head","getElementsByTagName","style","createElement","type","firstChild","insertBefore","appendChild","styleSheet","cssText","createTextNode","graphqlSlice","set","get","displayLoginModal","showProductBreakUpModal","status","value","loadDesignModal","productInfoModal","toggleSaveDesign","key","title","details","showModalAfterLogin","undefined","selectedDesign","changeModel","alert","confirmDesignModal","confirmUpdateDesignModal","toggleSuccessfullDesign","designUpdateSuccessfulModal","getListFromRack","setSelectedDesign","selected","setLoadDesignModal","loadDesign","setToggleSaveDesign","setConfirmDesignModal","setConfirmUpdateDesignModal","state","setToggleSuccessfullDesign","setProductInfoModal","editDesignInfo","saveDesignModal","use3dddPlus","setState","current","getState","navigateTo","designName","designNotes","designTag","string","characters","i","charAt","Math","floor","random","length","designNumber","customerId","toggleLoginModal","setShowModalAfterLogin","disableSaveButton","_unused","share","saveRackSuccessfulModal","setSaveRackSuccessfulModal","toggleAction","toogleShowProductBreakUpModal","disableUpdate","productBreakup","baseURL","process","env","REACT_APP_LAMBDA_URL","instance","axios","create","timeout","headers","Content-Type","Authorization","responseBody","response","data","requests","url","then","post","body","put","delete","lambdaSlice","_set","_get","lambdaClient","loadingLogo","_loadingLogo","_asyncToGenerator","_regeneratorRuntime","mark","_callee","wrap","_context","prev","next","loading","Error","sent","retriveLogoDesign","abrupt","t0","console","error","stop","_x","apply","arguments","getStockLogos","_getStockLogos","_callee2","res","_context2","stockLogos","saveLogo","_saveLogo","_callee3","logo","_context3","_x2","saveDesignSlice","designImageUrl","designProofPdfUrl","designConfig","designId","hasDesignNumber","showSaveCTA","showSaveRackCTA","_oldURL","REACT_APP_IMAGE_URL_OLD","_newURL","REACT_APP_IMAGE_URL","getCookie","cname","name","ca","decodeURIComponent","cookie","split","c","substring","indexOf","setCookie","cvalue","exdays","d","Date","setTime","getTime","expires","toUTCString","clearCookie","encryptToken","CryptoJS","AES","encrypt","JSON","stringify","toString","decryptToken","ciphertext","bytes","decrypt","parse","enc","Utf8","includes","replace","texture","item","id","path","ProductMedium","Image_URL","__typename","flipY","queryString","window","location","search","URLSearchParams","REACT_APP_3DDDPLUS_PROJECTID","token","base64","jsonPayload","_window","_window$atob","atob","_window$atob$split","map","charCodeAt","slice","join","dataURI","byteString","ab","ArrayBuffer","ia","Uint8Array","File","strData","filename","link","download","href","click","removeChild","e","x","which","keycode","preventDefault","authSlice","customUploadLogoColorList","defaultColorList","priceLevel","clearLoginInfo","sessionStorage","removeItem","authType","cardCode","customerEmail","customerType","generateCustomizerToken","setInCookies","customizerToken","setItem","setCustomizerToken","getItem","_extends","isLoggedIn","historySlice","history","page","concat","goBack","previousPage","pop","fabricSlice","logoData","setLogoData","allColor","selectedStepper","setSelectedStepper","storeHistory","fabricCanvas","popupCanv","textInfo","uploadImageModalDisplay","currentSelection","activeSelection","selectedAll","colorFill","storeAllObject","iconImage","HideControls","tl","tr","bl","br","ml","mt","mr","mb","mtr","showContextMenu","forStoringAllObject","unshift","forIconCapture","activeObject","getActiveObject","dataURL","toDataURL","left","top","width","scaleX","height","scaleY","nameCounter","duplicateObject","clipboard","clone","cloned","clonedObj","discardActiveObject","evented","canvas","forEachObject","obj","add","setCoords","setActiveObject","requestRenderAll","_objects","updateModifaction","deleteButtonControls","count","skipEvent","undo","clear","renderAll","loadFromJSON","redo","moveDown","element","moveUp","moveRight","moveLeft","applyColorFill","canvasData","toJSON","canvasGetobject","getObjects","objects","forEach","index","toSet","push","contextMenuCoordinates","y","stockLogoHandler","log","logos","now","testSVG","fabric","loadSVGFromURL","options","loadedObject","util","groupSVGElements","scaleToWidth","scaleToHeight","_Fills","ele","strokeWidth","fillColor","fill","removeDuplicates","fillColors","centerObject","icon","myLogoHandler","fetch","logo_config_url","method","text","result","loadingRetrivedFiles","objImage","filter","reduce","colors","uploadLogoConfig","_uploadLogoConfig","jsonConfig","bucketName","region","S3","microTime","filePath","params","s3UrlPath","REACT_APP_BUCKET","REACT_APP_REGION","AWS","config","update","accessKeyId","REACT_APP_ACCESSKEY","secretAccessKey","REACT_APP_SECRET_ACCESSKEY","Bucket","Key","Body","ContentType","Promise","resolve","reject","putObject","err","TIFFParser","this","tiffDataView","littleEndian","fileDirectories","prototype","isLittleEndian","BOM","getBytes","TypeError","hasTowel","RangeError","getFieldTagName","fieldTag","fieldTagName","fieldTagNames","315","258","265","264","320","259","33432","306","338","266","289","288","291","290","316","270","257","256","271","281","280","272","254","274","262","284","296","278","277","305","279","273","255","263","282","283","326","327","343","328","433","434","269","336","321","346","347","285","297","317","319","532","339","559","330","292","293","325","323","324","322","301","318","344","286","529","531","530","345","287","37378","40961","36868","36867","34665","36864","33434","41728","37385","40960","33437","42016","37384","37500","37377","37510","33723","34675","700","42112","42113","34377","getFieldTypeName","fieldType","fieldTypeName","fieldTypeNames","1","2","3","4","5","6","7","8","9","10","11","12","getFieldTypeLength","fieldTypeLength","getBits","numBits","byteOffset","bitOffset","newByteOffset","totalBits","shiftRight","shiftLeft","rawBits","getUint8","getUint16","getUint32","bits","numBytes","offset","getFieldValues","typeCount","valueOffset","fieldValues","fieldValueSize","indexOffset","a","String","fromCharCode","clampColorSample","colorSample","bitsPerSample","multiplier","pow","makeRGBAFillValue","r","g","b","parseFileDirectory","numDirEntries","tiffFields","entryCount","values","nextIFDByteOffset","parseTIFF","tiffArrayBuffer","DataView","firstIFDByteOffset","fileDirectory","imageWidth","ImageWidth","imageLength","ImageLength","strips","compression","Compression","samplesPerPixel","SamplesPerPixel","sampleProperties","bitsPerPixel","hasBytesPerPixel","BitsPerSample","bitsPerSampleValues","hasBytesPerSample","bytesPerSample","bytesPerPixel","stripOffsetValues","StripOffsets","numStripOffsetValues","StripByteCounts","stripByteCountValues","ceil","stripOffset","stripByteCount","jIncrement","getHeader","pixel","sample","currentSample","m","sampleInfo","blockLength","iterations","header","getInt8","currentByte","getContext","ctx","fillStyle","RowsPerStrip","rowsPerStrip","numStrips","imageLengthModRowsPerStrip","rowsInLastStrip","numRowsInStrip","numRowsInPreviousStrip","photometricInterpretation","PhotometricInterpretation","extraSamplesValues","numExtraSamples","ExtraSamples","ColorMap","colorMapValues","colorMapSampleSize","numPixels","yPadding","j","pixelSamples","red","green","blue","opacity","k","invertValue","samples","colorMapIndex","fillRect","converterSlice","file","setFile","tiffConvert","_tiffConvert","tiffParser","canvasEl","tiffCanvas","imageUrl","arrayBuffer","imageToSVG","ImageTracer","svgstr","loadSVGFromString","_C","RGBToHex","setControlVisible","arr","rgb","sep","substr","changeSVGColor","property","color","previousColor","addText","Text","lineHeight","fontFamily","fontWeight","stroke","paintFirst","padding","fontSize","charSpacing","lockScalingFlip","layer0","setControlsVisibility","pdfConverter","_resolve","reader","FileReader","onload","readAsArrayBuffer","subscribeWithSelector","actionSlice","datasbase","Button","_ref","React","onClick","className","icons","label","children","Icon","forwardRef","props","_objectWithoutPropertiesLoose","_excluded","tooltip","useTooltipState","placement","TooltipReference","as","Tooltip","zIndex","IconButton","_ref2","_ref2$size","size","_ref2$icon","_excluded2","IconContext","Provider","RLogo","GenIcon","tag","attr","xmlns","viewBox","child","fillRule","transform","MyLogo","AddMascots","clipPath","AddText","ProductColor","FlipH","data-name","FlipV","SelectAll","rx","Copy","Paste","stroke-linecap","stroke-width","SendToBack","stroke-miterlimit","SendToFront","SendAObject","SendUnderObject","EyeDropper","Delete","ActionButtons","_use3dddPlus","shallow","canvasActions","sel","ActiveSelection","disabled","visible","MdLayers","remove","splice","CgUndo","CgRedo","CANVAS_MENU_TEXT","ContextMenu","activeObj","copy","menu","onclick","bringForward","sendBackwards","bringToFront","sendToBack","canvasRef","useRef","resizeCanvas","outerCanvasContainer","getElementById","parentElement","containerWidth","clientWidth","scale","getWidth","zoom","getZoom","setWidth","setHeight","parseInt","clientHeight","getHeight","setViewportTransform","useEffect","canv","Canvas","centeredScaling","preserveObjectStacking","backgroundColor","stopContextMenu","deleteImg","src","rotateImg","settingImg","renderIcon","fabricObject","cornerSize","save","translate","rotate","degreesToRadians","angle","drawImage","restore","Object","objectCaching","transparentCorners","cornerColor","cornerStrokeColor","borderColor","cornerStyle","borderDashArray","controls","deleteControl","Control","offsetY","offsetX","cursorStyle","mouseUpHandler","eventData","canvasTarget","target","render","settingControl","rect","getElement","getBoundingClientRect","clientX","clientY","actionHandler","controlsUtils","rotationWithSnapping","actionName","withConnection","getAllColors","Set","_canv$getObjects","flat","on","_e$selected","_e$selected$","_e$selected2","_e$selected2$","getBoundingRect","max","min","initCanvas","addEventListener","position","border","boxShadow","onBlur","Card","cardClass","CardBody","bodyClass","CardMedia","role","alt","imageClass","backgroundImage","CardTitle","titleClass","FileUploadButton","onFileSelect","fileInputRef","_useState","useState","setIsDragging","onDragEnter","event","onDragLeave","onDragOver","onDrop","droppedFile","dataTransfer","files","htmlFor","MdOutlineFileUpload","_fileInputRef$current","onChange","selectedFile","_event$target$files","accept","ColorPalette","_ref$previousClass","previousClass","_ref$mainIndex","mainIndex","handleColorChange","_ref$mainClass","mainClass","selectColor","setSelectColor","colorList","handleColorClick","TEXT_SIZE_9","ColorBox","boxClass","_ref2$boxClass","ColorImpl","displayPallet","setdisplayPallet","setColor","background","mClass","handleChange","PopUpCanvas","popupCanvas","colorCount","setColorCount","popupcanvas","defaultCursor","hoverCursor","toActiveSelection","mouseClick","getPointer","containsPoint","Number","keys","_Object$keys","CgArrowRight","GiDrop","MdOutlineCancel","objs","alltogetherObj","Group","UploadLogo","setSelectedFile","svgConverter","ext","objectURL","lastIndexOf","URL","createObjectURL","Searchbar","searchBarMainClass","placeholder","onKeyPress","onPaste","currentTarget","focus","input","InputImpl","SortButton","SortByDropdown","isDropdownOpen","setIsDropdownOpen","toggleDropdown","BsSortDown","Loader","_ref$position","_ref$height","loaderRef","onApply","_React$useState","logoSelected","setLogoSelected","Fragment","logo_url","_ref$className","_ref$label","_ref$iconPosition","iconPosition","checkMarkClass","IoMdCheckmarkCircle","downloadClass","iconClass","pdfUrl","downloadIconClass","HiOutlineDownload","flagClass","flag","tagsClass","descriptionClass","contentStyle","crossOnClick","modalStyle","backdropStyle","open","RxCross2","buttons","buttonMainClass","button","buttonClass","headingStyle","labelStyle","onIconClick","iconStyle","LeftMenu","StepperList","display","SELECT_BG_COLOR","TEXT_COLOR_1","SELECT_TEXT_COLOR","step","ImageEdit","nudgeMove","flipX","_activeSelection$ownM","ownMatrixCache","fontFamilies","Rightmenu","initTE","Tab","textSelected","textAlignDisplay","setTextAlignDisplay","_useState2","outlineVal","setOutlineVal","_useState3","spacingVal","setSpacinglineVal","_useState4","sliderValue","setSliderValue","_useState5","bold","italic","underline","fontStyle","setFontStyle","_useState6","activeButton","setActiveButton","textAlignHandler","aCoords","textStyle","_extends2","layerHandle","num","currentObject","changeArr","fromIndex","toIndex","deleteElement","changeSVGTextColor","subscribe","_current","_previous","lines","FontFace","load","_document$fonts","fonts","classList","INPUT_BG_COLOR","list","FiAlignLeft","FiAlignCenter","FiAlignRight","valueAsNumber","AddMascot","MdOutlineArrowForwardIos","SaveDesignModal","SaveDesign","designNameValidation","setDesignNameValidation","tagName","setTagName","commaInTagName","setCommaInTagName","closeModal","onSaveHandler","dataCh","S3UrlPath","raw","nameValidation","test","customer_id","base64_image","handleKeyDown","keyCode","regTest","handleAdd","handleBackspace","newList","trim","Boolean","_e$target","_e$target$value","trimStart","Array","isArray","el","TEXT_SIZE_12","EDIT_DESIGN_INFO_TEXT_COLOR_1","_event$target","onKeyDown","MiddleMenu","stepperId","customLogoColorList"],"mappings":"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"}
|