@threedddplus/logoeditor 0.0.210 → 0.0.212
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/components/customToast/customToast.d.ts +1 -1
- package/dist/logoeditor.cjs.development.js +7 -32
- 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 +8 -33
- 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":["../src/components/icon/icon.tsx","../src/components/icon/horizontalFlip.tsx","../src/components/icon/verticalFlip.tsx","../src/components/icon/error.tsx","../src/components/icon/rLogo.tsx","../src/components/icon/myLogo.tsx","../src/components/icon/addText.tsx","../src/components/icon/flipH.tsx","../src/components/icon/flipV.tsx","../src/components/icon/selectAll.tsx","../src/components/icon/copy.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/icon/snapToCenter.tsx","../src/components/customToast/customToast.tsx","../src/store/actions/toastMessages.ts","../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","../node_modules/style-inject/dist/style-inject.es.js","../src/theme.ts","../src/components/toolTip/toolTip.tsx","../src/components/canvas/canvasButtons.tsx","../src/components/canvas/nudgeButtons.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/cardtags.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/modal/modal.tsx","../src/components/SortByDropdown/sortButton.tsx","../src/components/SortByDropdown/sortByDropdown.tsx","../src/components/myLogo/myLogo.tsx","../src/hooks/debounce/useDebounce.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/carddescription.tsx","../src/components/input/input.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/loader/loader.tsx","../src/components/Rightmenu/icons.tsx","../src/components/Rightmenu/Layers.tsx","../src/components/Rightmenu/constants.ts","../src/components/canvas/errorPopUp.tsx","../src/components/Rightmenu/TextProperties.tsx","../src/components/Rightmenu/Properties.tsx","../src/services/path-warp.js","../src/components/Rightmenu/Rightmenu1.tsx","../src/components/addMascot/listDropDown.tsx","../src/components/addMascot/mockData.ts","../src/components/addMascot/addMascot.tsx","../src/components/addMascot/decorationService.ts","../src/components/saveDesign/saveDesignModal.tsx","../src/components/input/customInput.tsx","../src/components/saveDesign/saveDesign.tsx","../src/hooks/outsideAlerter.tsx","../src/components/leftMenu/colorPicker.tsx","../src/components/middleMenu/middleMenu.tsx","../src/loaders/FontLoader.tsx","../src/loaders/GoogleFontLoader.tsx","../src/assets/colors/colors.ts","../src/LogoEditor.tsx"],"sourcesContent":["import React from 'react';\r\nimport { IconContext, IconType } from 'react-icons';\r\nimport { Button, Tooltip, TooltipReference, useTooltipState } from 'reakit';\r\n\r\nexport interface IconButtonProps\r\n extends Exclude<React.ButtonHTMLAttributes<HTMLButtonElement>, 'children'> {\r\n icon?: React.ReactElement<IconType>;\r\n label: string;\r\n}\r\nconst Icon = React.forwardRef<HTMLButtonElement, IconButtonProps>(\r\n ({ label, icon, className, ...props }, ref) => {\r\n const tooltip = useTooltipState({ placement: 'top' });\r\n return (\r\n <>\r\n <TooltipReference\r\n ref={ref}\r\n {...props}\r\n {...tooltip}\r\n as={Button}\r\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`}\r\n aria-label={label}\r\n >\r\n {icon}\r\n </TooltipReference>\r\n {label && label !== '' && (\r\n <Tooltip\r\n {...tooltip}\r\n className={`font-[Roboto-Medium] font-medium mb-[5px] text-[13px] capitalize before:content-[''] before:absolute before:top-[80%] before:left-[calc(50%-7px)] before:bg-[#fce8eb] before:rotate-[44deg] before:border before:border-b-[#f3a2af] before:border-r-[#f3a2af] before:border-l-transparent before:rounded-none before:border-t-transparent before:h-[14px] before:w-[14px] !z-[100] inline-block px-3 py-2 text-[#5d5d5d] transition-opacity duration-300 bg-[#fce8eb] shadow-sm border border-[#f3a2af]`}\r\n style={{ zIndex: 10 }}\r\n >\r\n {label}\r\n </Tooltip>\r\n )}\r\n </>\r\n );\r\n }\r\n);\r\n\r\nexport const IconButton = ({\r\n label,\r\n\r\n className,\r\n size = '2rem',\r\n icon = undefined,\r\n ...props\r\n}) => {\r\n return (\r\n <IconContext.Provider\r\n value={{\r\n size: size,\r\n className: 'pointer-events-auto cursor-pointer',\r\n }}\r\n >\r\n <Icon label={label} icon={icon} className={className} {...props} />\r\n </IconContext.Provider>\r\n );\r\n};\r\n\r\n\r\nexport {\r\n IoIosColorPalette,\r\n IoMdCheckmarkCircle,\r\n IoIosArrowForward,\r\n} from 'react-icons/io';\r\nexport { HiOutlineDownload, HiDotsVertical } from 'react-icons/hi';\r\nexport {\r\n FaRegSave,\r\n FaRegShareSquare,\r\n FaPlus,\r\n FaRegListAlt,\r\n FaEye,\r\n FaEyeSlash,\r\n} from 'react-icons/fa';\r\nexport { BiReset, BiAddToQueue } from 'react-icons/bi';\r\nexport { GiBilledCap, GiCardboardBox } from 'react-icons/gi';\r\nexport { TbWindowMinimize } from 'react-icons/tb';\r\nexport { RxCross2 } from 'react-icons/rx';\r\nexport { IoInformationCircleOutline, IoLogInOutline } from 'react-icons/io5';\r\nexport { CgMenuBoxed } from 'react-icons/cg';\r\nexport { IoIosInformationCircleOutline } from 'react-icons/io';\r\nexport { LuFlipHorizontal2, LuFlipVertical2 } from 'react-icons/lu';\r\n","import { GenIcon } from 'react-icons/lib';\r\n\r\nexport const HorizontalFlip = (props) => {\r\n return GenIcon({\r\n tag: 'svg',\r\n attr: {\r\n xmlns: 'http://www.w3.org/2000/svg',\r\n width: '25.969',\r\n height: '22.478',\r\n viewBox: '0 0 25.969 22.478',\r\n },\r\n child: [\r\n // {\r\n // tag: 'defs',\r\n // attr: {},\r\n // child: [\r\n // {\r\n // tag: 'clipPath',\r\n // attr: { id: 'a' },\r\n // child: [\r\n // {\r\n // tag: 'path',\r\n // attr: { fill: '#353535', d: 'M0 0h25.969v22.478H0z' },\r\n // child: [],\r\n // },\r\n // ],\r\n // },\r\n // ],\r\n // },\r\n {\r\n tag: 'g',\r\n attr: {},\r\n child: [\r\n {\r\n tag: 'path',\r\n attr: { d: 'm25.969 3.647-10.359 8.46 10.359 8.632Z' },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\n d: 'M0 3.469v17.276l10.366-8.466L0 3.469m1.719 3.593 5.914 5.218-5.914 4.87Z',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: { d: 'M12.151 0h1.683v1.674h-1.683z' },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: { d: 'M12.154 3.462h1.677v1.686h-1.677z' },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: { d: 'M12.152 6.937h1.68v1.671h-1.68z' },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: { d: 'M12.144 10.406h1.679v1.669h-1.679z' },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: { d: 'M12.149 13.869h1.686v1.678h-1.686z' },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: { d: 'M12.143 17.334h1.686v1.683h-1.686z' },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: { d: 'M12.154 20.8h1.668v1.678h-1.668z' },\r\n child: [],\r\n },\r\n ],\r\n },\r\n ],\r\n })(props);\r\n};\r\n","import { GenIcon } from 'react-icons/lib';\r\n\r\nexport const VerticalFlip = (props) => {\r\n return GenIcon({\r\n tag: 'svg',\r\n attr: {\r\n xmlns: 'http://www.w3.org/2000/svg',\r\n width: '45',\r\n height: '45',\r\n viewBox: '0 0 45 45',\r\n },\r\n child: [\r\n {\r\n tag: 'g',\r\n attr: {},\r\n child: [\r\n {\r\n tag: 'g',\r\n attr: { fill: '#fff', stroke: '#ebebeb' },\r\n child: [\r\n {\r\n tag: 'path',\r\n attr: {\r\n d: 'M0 0h45v45H0z',\r\n stroke: 'none',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\n fill: 'none',\r\n d: 'M.5.5h44v44H.5z',\r\n },\r\n child: [],\r\n },\r\n ],\r\n },\r\n {\r\n tag: 'g',\r\n attr: {},\r\n child: [\r\n {\r\n tag: 'g',\r\n attr: {\r\n transform: 'rotate(90 12.239 21.239)',\r\n },\r\n child: [\r\n {\r\n tag: 'path',\r\n attr: {\r\n d: 'm0 3.647 10.359 8.46L0 20.74Z',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\n d: 'M25.969 3.469v17.276L15.603 12.28l10.366-8.811M24.25 7.062l-5.914 5.218 5.914 4.87Z',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\n d: 'M12.135 0h1.683v1.674h-1.683z',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\n d: 'M12.138 3.462h1.677v1.686h-1.677z',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\n d: 'M12.136 6.937h1.68v1.671h-1.68z',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\n d: 'M12.146 10.406h1.679v1.669h-1.679z',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\n d: 'M12.134 13.869h1.686v1.678h-1.686z',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\n d: 'M12.14 17.334h1.686v1.683H12.14z',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\n d: 'M12.147 20.8h1.668v1.678h-1.668z',\r\n },\r\n child: [],\r\n },\r\n ],\r\n },\r\n ],\r\n },\r\n ],\r\n },\r\n ],\r\n })(props);\r\n};\r\n","import { GenIcon } from 'react-icons/lib';\r\n\r\nexport const Error = (props) => {\r\n return GenIcon({\r\n tag: 'svg',\r\n attr: {\r\n xmlns: 'http://www.w3.org/2000/svg',\r\n width: '30',\r\n height: '30',\r\n viewBox: '0 0 30 30',\r\n },\r\n child: [\r\n {\r\n tag: 'g',\r\n attr: { transform: 'translate(-150 -259)' },\r\n child: [\r\n {\r\n tag: 'circle',\r\n attr: {\r\n cx: '15',\r\n cy: '15',\r\n r: '15',\r\n transform: 'translate(150 259)',\r\n fill: '#e11a38',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'g',\r\n attr: {},\r\n child: [\r\n {\r\n tag: 'g',\r\n attr: {\r\n fill: 'none',\r\n stroke: '#fff',\r\n 'stroke-linecap': 'round',\r\n 'stroke-width': '2',\r\n },\r\n child: [\r\n {\r\n tag: 'path',\r\n attr: { d: 'm160.439 278.488 9.484-9.484' },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: { d: 'm169.922 278.488-9.484-9.484' },\r\n child: [],\r\n },\r\n ],\r\n },\r\n ],\r\n },\r\n ],\r\n },\r\n ],\r\n })(props);\r\n};\r\n","import { GenIcon } from 'react-icons/lib';\r\n\r\nexport const RLogo = (props) => {\r\n return GenIcon({\r\n tag: 'svg',\r\n attr: {\r\n xmlns: 'http://www.w3.org/2000/svg',\r\n width: '36.672',\r\n height: '34.349',\r\n viewBox: '0 0 36.672 34.349',\r\n },\r\n child: [\r\n {\r\n tag: 'g',\r\n attr: {},\r\n child: [\r\n {\r\n tag: 'g',\r\n attr: { id: 'a' },\r\n child: [\r\n {\r\n tag: 'path',\r\n attr: {\r\n fill: 'none',\r\n fillRule: 'evenodd',\r\n transform:\"translate(-0.001)\",\r\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',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\n fill: 'none',\r\n stroke: '#fff',\r\n fillRule: 'evenodd',\r\n transform:\"translate(-1.117 -1.116)\",\r\n strokeWidth: '2px',\r\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',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\n fill: '#fff',\r\n fillRule: 'evenodd',\r\n transform:\"translate(-3.386 -6.517)\",\r\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',\r\n },\r\n child: [],\r\n },\r\n ],\r\n },\r\n ],\r\n },\r\n ],\r\n })(props);\r\n};\r\n","import { GenIcon } from 'react-icons/lib';\r\n\r\nexport const MyLogo = (props) => {\r\n return GenIcon({\r\n tag: 'svg',\r\n attr: {\r\n xmlns: 'http://www.w3.org/2000/svg',\r\n width: '26.381',\r\n height: '23.778',\r\n viewBox: '0 0 26.381 23.778',\r\n },\r\n child: [\r\n {\r\n tag: 'g',\r\n attr: {},\r\n child: [\r\n {\r\n tag: 'g',\r\n attr: { id: 'a' },\r\n child: [\r\n {\r\n tag: 'path',\r\n attr: {\r\n strokeWidth:\"1\",\r\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',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\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',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\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',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\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',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\n fill: '#5d5d5d',\r\n\r\n fillRule: 'evenodd',\r\n\r\n transform: 'translate(-78.659 -351.017)',\r\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',\r\n },\r\n child: [],\r\n },\r\n ],\r\n },\r\n ],\r\n },\r\n ],\r\n })(props);\r\n};\r\n","import { GenIcon } from 'react-icons/lib';\r\n\r\nexport const AddText = (props) => {\r\n return GenIcon({\r\n tag: 'svg',\r\n attr: {\r\n xmlns: 'http://www.w3.org/2000/svg',\r\n width: '21',\r\n height: '21',\r\n viewBox: '0 0 21 21',\r\n },\r\n\r\n child: [\r\n {\r\n tag: 'g',\r\n attr: {},\r\n child: [\r\n {\r\n tag: 'path',\r\n attr: {\r\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',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\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',\r\n },\r\n child: [],\r\n },\r\n ],\r\n },\r\n ],\r\n })(props);\r\n};\r\n","import { GenIcon } from 'react-icons/lib';\r\nexport const FlipH = (props) => {\r\n return GenIcon({\r\n tag: 'svg',\r\n attr: {\r\n xmlns: 'http://www.w3.org/2000/svg',\r\n width: '24',\r\n height: '20.774',\r\n viewBox: '0 0 24 20.774',\r\n },\r\n child: [\r\n {\r\n tag: 'defs',\r\n attr: {},\r\n child: [\r\n {\r\n tag: 'clipPath',\r\n attr: { id: 'clip-path' },\r\n child: [\r\n {\r\n tag: 'rect',\r\n attr: {\r\n id: 'Rectangle_336',\r\n 'data-name': 'Rectangle 336',\r\n width: '24',\r\n height: '20.774',\r\n fill: '#5d5d5d',\r\n },\r\n child: [],\r\n },\r\n ],\r\n },\r\n ],\r\n },\r\n {\r\n tag: 'g',\r\n attr: {\r\n id: 'Group_1196',\r\n 'data-name': 'Group 1196',\r\n transform: 'translate(24 20.774) rotate(180)',\r\n },\r\n child: [\r\n {\r\n tag: 'g',\r\n attr: {\r\n id: 'Group_577',\r\n 'data-name': 'Group 577',\r\n transform: 'translate(0 0)',\r\n 'clip-path': 'url(#clip-path)',\r\n },\r\n child: [\r\n {\r\n tag: 'path',\r\n attr: {\r\n id: 'Path_4546',\r\n 'data-name': 'Path 4546',\r\n d: 'M0,15.8,9.574,7.978,0,0Z',\r\n transform: 'translate(0 1.606)',\r\n fill: '#5d5d5d',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\n id: 'Path_4547',\r\n 'data-name': 'Path 4547',\r\n d: 'M9.58,15.967V0L0,7.824l9.58,8.143M7.991,12.646,2.525,7.823l5.466-4.5Z',\r\n transform: 'translate(14.42 1.601)',\r\n fill: '#5d5d5d',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'rect',\r\n attr: {\r\n id: 'Rectangle_329',\r\n 'data-name': 'Rectangle 329',\r\n width: '1.556',\r\n height: '1.547',\r\n transform: 'translate(11.215 19.227)',\r\n fill: '#5d5d5d',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'rect',\r\n attr: {\r\n id: 'Rectangle_330',\r\n 'data-name': 'Rectangle 330',\r\n width: '1.549',\r\n height: '1.559',\r\n transform: 'translate(11.218 16.016)',\r\n fill: '#5d5d5d',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'rect',\r\n attr: {\r\n id: 'Rectangle_331',\r\n 'data-name': 'Rectangle 331',\r\n width: '1.553',\r\n height: '1.544',\r\n transform: 'translate(11.216 12.818)',\r\n fill: '#5d5d5d',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'rect',\r\n attr: {\r\n id: 'Rectangle_332',\r\n 'data-name': 'Rectangle 332',\r\n width: '1.551',\r\n height: '1.542',\r\n transform: 'translate(11.226 9.615)',\r\n fill: '#5d5d5d',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'rect',\r\n attr: {\r\n id: 'Rectangle_333',\r\n 'data-name': 'Rectangle 333',\r\n width: '1.559',\r\n height: '1.551',\r\n transform: 'translate(11.214 6.405)',\r\n fill: '#5d5d5d',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'rect',\r\n attr: {\r\n id: 'Rectangle_334',\r\n 'data-name': 'Rectangle 334',\r\n width: '1.559',\r\n height: '1.555',\r\n transform: 'translate(11.219 3.198)',\r\n fill: '#5d5d5d',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'rect',\r\n attr: {\r\n id: 'Rectangle_335',\r\n 'data-name': 'Rectangle 335',\r\n width: '1.542',\r\n height: '1.551',\r\n transform: 'translate(11.226 0)',\r\n fill: '#5d5d5d',\r\n },\r\n child: [],\r\n },\r\n ],\r\n },\r\n ],\r\n },\r\n ],\r\n })(props);\r\n};\r\n","import { GenIcon } from 'react-icons/lib';\r\n// https://www.svgviewer.dev/ use this website to compress and load the paths\r\n// source: https://raw.githubusercontent.com/alisamar/react-icons-all-files/master/ai/AiFillAccountBook.esm.js\r\nexport const FlipV = (props) => {\r\n return GenIcon({\r\n tag: 'svg',\r\n attr: {\r\n xmlns: 'http://www.w3.org/2000/svg',\r\n width: '20.774',\r\n height: '24',\r\n viewBox: '0 0 20.774 24',\r\n },\r\n child: [\r\n {\r\n tag: 'defs',\r\n attr: {},\r\n child: [\r\n {\r\n tag: 'clipPath',\r\n attr: { id: 'clip-path' },\r\n child: [\r\n {\r\n tag: 'rect',\r\n attr: {\r\n id: 'Rectangle_336',\r\n 'data-name': 'Rectangle 336',\r\n width: '24',\r\n height: '20.774',\r\n fill: '#5d5d5d',\r\n },\r\n child: [],\r\n },\r\n ],\r\n },\r\n ],\r\n },\r\n {\r\n tag: 'g',\r\n attr: {\r\n id: 'Group_1195',\r\n 'data-name': 'Group 1195',\r\n transform: 'translate(0 24) rotate(-90)',\r\n },\r\n child: [\r\n {\r\n tag: 'g',\r\n attr: {\r\n id: 'Group_577',\r\n 'data-name': 'Group 577',\r\n transform: 'translate(0 0)',\r\n 'clip-path': 'url(#clip-path)',\r\n },\r\n child: [\r\n {\r\n tag: 'path',\r\n attr: {\r\n id: 'Path_4546',\r\n 'data-name': 'Path 4546',\r\n d: 'M0,15.8,9.574,7.978,0,0Z',\r\n transform: 'translate(0 1.606)',\r\n fill: '#5d5d5d',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\n id: 'Path_4547',\r\n 'data-name': 'Path 4547',\r\n d: 'M9.58,15.967V0L0,7.824l9.58,8.143M7.991,12.646,2.525,7.823l5.466-4.5Z',\r\n transform: 'translate(14.42 1.601)',\r\n fill: '#5d5d5d',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'rect',\r\n attr: {\r\n id: 'Rectangle_329',\r\n 'data-name': 'Rectangle 329',\r\n width: '1.556',\r\n height: '1.547',\r\n transform: 'translate(11.215 19.227)',\r\n fill: '#5d5d5d',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'rect',\r\n attr: {\r\n id: 'Rectangle_330',\r\n 'data-name': 'Rectangle 330',\r\n width: '1.549',\r\n height: '1.559',\r\n transform: 'translate(11.218 16.016)',\r\n fill: '#5d5d5d',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'rect',\r\n attr: {\r\n id: 'Rectangle_331',\r\n 'data-name': 'Rectangle 331',\r\n width: '1.553',\r\n height: '1.544',\r\n transform: 'translate(11.216 12.818)',\r\n fill: '#5d5d5d',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'rect',\r\n attr: {\r\n id: 'Rectangle_332',\r\n 'data-name': 'Rectangle 332',\r\n width: '1.551',\r\n height: '1.542',\r\n transform: 'translate(11.226 9.615)',\r\n fill: '#5d5d5d',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'rect',\r\n attr: {\r\n id: 'Rectangle_333',\r\n 'data-name': 'Rectangle 333',\r\n width: '1.559',\r\n height: '1.551',\r\n transform: 'translate(11.214 6.405)',\r\n fill: '#5d5d5d',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'rect',\r\n attr: {\r\n id: 'Rectangle_334',\r\n 'data-name': 'Rectangle 334',\r\n width: '1.559',\r\n height: '1.555',\r\n transform: 'translate(11.219 3.198)',\r\n fill: '#5d5d5d',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'rect',\r\n attr: {\r\n id: 'Rectangle_335',\r\n 'data-name': 'Rectangle 335',\r\n width: '1.542',\r\n height: '1.551',\r\n transform: 'translate(11.226 0)',\r\n fill: '#5d5d5d',\r\n },\r\n child: [],\r\n },\r\n ],\r\n },\r\n ],\r\n },\r\n ],\r\n })(props);\r\n};\r\n","import { GenIcon } from 'react-icons/lib';\r\nexport const SelectAll = (props) => {\r\n return GenIcon({\r\n tag: 'svg',\r\n\r\n attr: {\r\n xmlns: 'http://www.w3.org/2000/svg',\r\n width: '18.641',\r\n height: '18.063',\r\n viewBox: '0 0 18.641 18.063',\r\n className: 'group',\r\n ...props,\r\n },\r\n child: [\r\n {\r\n tag: 'g',\r\n attr: { 'data-name': 'Group 1075' },\r\n child: [\r\n {\r\n tag: 'g',\r\n attr: {\r\n fill: 'none',\r\n stroke: '#5d5d5d',\r\n strokeWidth: '1',\r\n },\r\n child: [\r\n {\r\n tag: 'rect',\r\n attr: { width: '16', height: '16', rx: '4', stroke: 'none' },\r\n child: [],\r\n },\r\n {\r\n tag: 'rect',\r\n attr: {\r\n x: '.75',\r\n y: '.75',\r\n width: '14.5',\r\n height: '14.5',\r\n rx: '3.25',\r\n },\r\n child: [],\r\n },\r\n ],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\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',\r\n className: 'group-hover:fill-[#E11A38]',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\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',\r\n className: 'group-hover:fill-[#E11A38]',\r\n },\r\n child: [],\r\n },\r\n ],\r\n },\r\n ],\r\n })(props);\r\n};","import { GenIcon } from 'react-icons/lib';\r\n\r\nexport const Copy = (props) => {\r\n return GenIcon({\r\n tag: 'svg',\r\n attr: {\r\n id: 'ICONS',\r\n xmlns: 'http://www.w3.org/2000/svg',\r\n width: '23.063',\r\n height: '23.063',\r\n viewBox: '0 0 23.063 23.063',\r\n },\r\n child: [\r\n {\r\n tag: 'path',\r\n attr: {\r\n id: 'Path_3956',\r\n 'data-name': 'Path 3956',\r\n d: 'M17.912,5.252a1.2,1.2,0,0,0,.026-.127A5.13,5.13,0,0,0,12.813,0H6.406A6.414,6.414,0,0,0,0,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.406V11.531a6.415,6.415,0,0,0-5.151-6.279ZM5.125,11.531v3.844a2.565,2.565,0,0,1-2.562-2.562V6.406A3.848,3.848,0,0,1,6.406,2.563h6.406a2.565,2.565,0,0,1,2.563,2.563H11.531a6.414,6.414,0,0,0-6.406,6.406ZM20.5,16.656A3.848,3.848,0,0,1,16.656,20.5H11.531a3.848,3.848,0,0,1-3.844-3.844V11.531a3.848,3.848,0,0,1,3.844-3.844h5.125A3.848,3.848,0,0,1,20.5,11.531Z',\r\n fill: '#5d5d5d',\r\n },\r\n child: [],\r\n },\r\n ],\r\n })(props);\r\n};\r\n","import { GenIcon } from 'react-icons/lib';\r\n\r\nexport const SendToBack = (props) => {\r\n return GenIcon({\r\n tag: 'svg',\r\n attr: {\r\n xmlns: 'http://www.w3.org/2000/svg',\r\n width: '26.552',\r\n height: '23.495',\r\n viewBox: '0 0 26.552 23.495',\r\n },\r\n child: [\r\n {\r\n tag: 'g',\r\n attr: {\r\n id: 'Group_654',\r\n 'data-name': 'Group 654',\r\n transform: 'translate(-17856.939 13913.36)',\r\n },\r\n child: [\r\n {\r\n tag: 'path',\r\n attr: {\r\n id: 'Path_4583',\r\n 'data-name': 'Path 4583',\r\n d: 'M0,0H14.069V14.069H0Z',\r\n transform: 'translate(17861.625 -13909.535)',\r\n fill: '#cecece',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'rect',\r\n attr: {\r\n id: 'Rectangle_387',\r\n 'data-name': 'Rectangle 387',\r\n width: '10.72',\r\n height: '7.664',\r\n transform: 'translate(17857.939 -13912.36)',\r\n fill: 'none',\r\n stroke: '#5d5d5d',\r\n 'stroke-miterlimit': '10',\r\n 'stroke-width': '2',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'rect',\r\n attr: {\r\n id: 'Rectangle_388',\r\n 'data-name': 'Rectangle 388',\r\n width: '10.72',\r\n height: '7.664',\r\n transform: 'translate(17871.771 -13898.529)',\r\n fill: 'none',\r\n stroke: '#5d5d5d',\r\n 'stroke-miterlimit': '10',\r\n 'stroke-width': '2',\r\n },\r\n child: [],\r\n },\r\n ],\r\n },\r\n ],\r\n })(props);\r\n};\r\n","import { GenIcon } from 'react-icons/lib';\r\n\r\nexport const SendToFront = (props) => {\r\n return GenIcon({\r\n tag: 'svg',\r\n attr: {\r\n xmlns: 'http://www.w3.org/2000/svg',\r\n width: '26.551',\r\n height: '23.495',\r\n viewBox: '0 0 26.551 23.495',\r\n },\r\n child: [\r\n {\r\n tag: 'g',\r\n attr: {\r\n id: 'Group_651',\r\n 'data-name': 'Group 651',\r\n transform: 'translate(-1140.036 -318.639)',\r\n },\r\n child: [\r\n {\r\n tag: 'g',\r\n attr: {\r\n id: 'Group_647',\r\n 'data-name': 'Group 647',\r\n transform: 'translate(1140.643 319.246)',\r\n },\r\n child: [\r\n {\r\n tag: 'g',\r\n attr: {\r\n id: 'Group_646',\r\n 'data-name': 'Group 646',\r\n transform: 'translate(0 0)',\r\n },\r\n child: [\r\n {\r\n tag: 'g',\r\n attr: {\r\n id: 'Group_648',\r\n 'data-name': 'Group 648',\r\n },\r\n child: [\r\n {\r\n tag: 'rect',\r\n attr: {\r\n id: 'Rectangle_387',\r\n 'data-name': 'Rectangle 387',\r\n width: '10.72',\r\n height: '7.664',\r\n transform: 'translate(0.393 0.393)',\r\n fill: 'none',\r\n stroke: '#5d5d5d',\r\n 'stroke-miterlimit': '10',\r\n 'stroke-width': '2',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'rect',\r\n attr: {\r\n id: 'Rectangle_388',\r\n 'data-name': 'Rectangle 388',\r\n width: '10.72',\r\n height: '7.664',\r\n transform: 'translate(14.225 14.225)',\r\n fill: 'none',\r\n stroke: '#5d5d5d',\r\n 'stroke-miterlimit': '10',\r\n 'stroke-width': '2',\r\n },\r\n child: [],\r\n },\r\n ],\r\n },\r\n ],\r\n },\r\n {\r\n tag: 'rect',\r\n attr: {\r\n id: 'Rectangle_390',\r\n 'data-name': 'Rectangle 390',\r\n width: '14.069',\r\n height: '14.069',\r\n transform: 'translate(4.078 3.89)',\r\n fill: '#cecece',\r\n },\r\n child: [],\r\n },\r\n ],\r\n },\r\n ],\r\n },\r\n ],\r\n })(props);\r\n};\r\n","import { GenIcon } from 'react-icons/lib';\r\nexport const SendAObject = (props) => {\r\n return GenIcon({\r\n tag: 'svg',\r\n attr: {\r\n xmlns: 'http://www.w3.org/2000/svg',\r\n width: '23.097',\r\n height: '22.481',\r\n viewBox: '0 0 23.097 22.481',\r\n },\r\n child: [\r\n {\r\n tag: 'g',\r\n attr: {\r\n id: 'Group_653',\r\n 'data-name': 'Group 653',\r\n transform: 'translate(-1140.475 -411.367)',\r\n },\r\n child: [\r\n {\r\n tag: 'g',\r\n attr: {\r\n id: 'Group_642',\r\n 'data-name': 'Group 642',\r\n transform: 'translate(1127.096 398.368)',\r\n },\r\n child: [\r\n {\r\n tag: 'g',\r\n attr: {\r\n id: 'Group_643',\r\n 'data-name': 'Group 643',\r\n transform: 'translate(13.932 13.552)',\r\n },\r\n child: [\r\n {\r\n tag: 'rect',\r\n attr: {\r\n id: 'Rectangle_383',\r\n 'data-name': 'Rectangle 383',\r\n width: '16',\r\n height: '16',\r\n transform: 'translate(0.447 0.447)',\r\n fill: 'none',\r\n stroke: '#5d5d5d',\r\n 'stroke-miterlimit': '10',\r\n 'stroke-width': '2',\r\n },\r\n child: [],\r\n },\r\n ],\r\n },\r\n ],\r\n },\r\n {\r\n tag: 'rect',\r\n attr: {\r\n id: 'Rectangle_385',\r\n 'data-name': 'Rectangle 385',\r\n width: '16',\r\n height: '16',\r\n transform: 'translate(1147.572 417.848)',\r\n fill: '#cecece',\r\n },\r\n child: [],\r\n },\r\n ],\r\n },\r\n ],\r\n })(props);\r\n};\r\n","import { GenIcon } from 'react-icons/lib';\r\nexport const SendUnderObject = (props) => {\r\n return GenIcon({\r\n tag: 'svg',\r\n attr: {\r\n xmlns: 'http://www.w3.org/2000/svg',\r\n width: '23.097',\r\n height: '22.481',\r\n viewBox: '0 0 23.097 22.481',\r\n },\r\n child: [\r\n {\r\n tag: 'g',\r\n attr: {\r\n id: 'Group_652',\r\n 'data-name': 'Group 652',\r\n transform: 'translate(-1140.475 -369.367)',\r\n },\r\n child: [\r\n {\r\n tag: 'rect',\r\n attr: {\r\n id: 'Rectangle_386',\r\n 'data-name': 'Rectangle 386',\r\n width: '16',\r\n height: '16',\r\n transform: 'translate(1147.572 375.848)',\r\n fill: '#cecece',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'g',\r\n attr: {\r\n id: 'Group_644',\r\n 'data-name': 'Group 644',\r\n transform: 'translate(1127.096 356.368)',\r\n },\r\n child: [\r\n {\r\n tag: 'g',\r\n attr: {\r\n id: 'Group_643',\r\n 'data-name': 'Group 643',\r\n transform: 'translate(13.932 13.552)',\r\n },\r\n child: [\r\n {\r\n tag: 'rect',\r\n attr: {\r\n id: 'Rectangle_383',\r\n 'data-name': 'Rectangle 383',\r\n width: '16',\r\n height: '16',\r\n transform: 'translate(0.447 0.447)',\r\n fill: 'none',\r\n stroke: '#5d5d5d',\r\n 'stroke-miterlimit': '10',\r\n 'stroke-width': '2',\r\n },\r\n child: [],\r\n },\r\n ],\r\n },\r\n ],\r\n },\r\n ],\r\n },\r\n ],\r\n })(props);\r\n};\r\n","import { GenIcon } from 'react-icons/lib';\r\n\r\nexport const EyeDropper = (props) => {\r\n return GenIcon({\r\n tag: 'svg',\r\n attr: {\r\n xmlns: 'http://www.w3.org/2000/svg',\r\n width: '21.595',\r\n height: '21.61',\r\n viewBox: '0 0 21.595 21.61',\r\n },\r\n child: [\r\n {\r\n tag: 'defs',\r\n attr: {},\r\n child: [\r\n {\r\n tag: 'clipPath',\r\n attr: { id: 'a' },\r\n child: [\r\n {\r\n tag: 'path',\r\n attr: { d: 'M0 0h21.595v21.61H0z' },\r\n child: [],\r\n },\r\n ],\r\n },\r\n ],\r\n },\r\n {\r\n tag: 'g',\r\n attr: { 'clip-path': 'url(#a)' },\r\n child: [\r\n {\r\n tag: 'path',\r\n attr: {\r\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',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\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',\r\n },\r\n child: [],\r\n },\r\n ],\r\n },\r\n ],\r\n })(props);\r\n};\r\n","import { GenIcon } from 'react-icons/lib';\r\nexport const Delete = (props) => {\r\n return GenIcon({\r\n tag: 'svg',\r\n attr: {\r\n id: 'ICONS',\r\n xmlns: 'http://www.w3.org/2000/svg',\r\n width: '18',\r\n height: '18',\r\n viewBox: '0 0 18 18',\r\n ...props,\r\n },\r\n child: [\r\n {\r\n tag: 'path',\r\n attr: {\r\n id: 'Path_3953',\r\n 'data-name': 'Path 3953',\r\n d: 'M7,8A1,1,0,0,0,6,9v4a1,1,0,0,0,2,0V9A1,1,0,0,0,7,8Z',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\n id: 'Path_3954',\r\n 'data-name': 'Path 3954',\r\n d: 'M11,8a1,1,0,0,0-1,1v4a1,1,0,0,0,2,0V9a1,1,0,0,0-1-1Z',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\n id: 'Path_3955',\r\n 'data-name': 'Path 3955',\r\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',\r\n },\r\n child: [],\r\n },\r\n ],\r\n })(props);\r\n};\r\n","import { GenIcon } from 'react-icons/lib';\r\n// https://www.svgviewer.dev/ use this website to compress and load the paths\r\n// source: https://raw.githubusercontent.com/alisamar/react-icons-all-files/master/ai/AiFillAccountBook.esm.js\r\nexport const SnapToCenter = (props) => {\r\n return GenIcon({\r\n tag: 'svg',\r\n attr: {\r\n id: 'Group_1194',\r\n 'data-name': 'Group 1194',\r\n xmlns: 'http://www.w3.org/2000/svg',\r\n width: '24',\r\n height: '24.006',\r\n viewBox: '0 0 24 24.006',\r\n },\r\n child: [\r\n {\r\n tag: 'g',\r\n attr: {\r\n id: 'Group_1196',\r\n 'data-name': 'Group 1196',\r\n },\r\n child: [\r\n {\r\n tag: 'path',\r\n attr: {\r\n id: 'Path_4767',\r\n 'data-name': 'Path 4767',\r\n d: 'M0,346.174c.043,0,.085-.008.128-.008H1.519v-1.494h1.5c.008.124,0,.248,0,.371s0,.25,0,.375v.748h1.5v1.5H6.01v1.493c-.251.016-.5.005-.747.007s-.49,0-.737,0c0,.041-.007.068-.007.1q0,.679,0,1.359c0,.019,0,.039,0,.058H0Zm3.013,2.98v-1.476a14.331,14.331,0,0,0-1.485,0v1.473Z',\r\n transform: 'translate(0 -326.668)',\r\n fill: '#5d5d5d',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\n id: 'Path_4768',\r\n 'data-name': 'Path 4768',\r\n d: 'M0,.006C.047,0,.093,0,.14,0H4.517V1.5H6.009v1.5C5.847,3,5.684,3,5.522,3h-1V4.486c-.05,0-.091.008-.131.008H3.022V5.975a14.076,14.076,0,0,1-1.5,0V4.5c-.042,0-.072-.009-.1-.009H.08A.586.586,0,0,0,0,4.506V.006M1.527,2.987c.175.022,1.4.016,1.485-.007V1.5H1.527Z',\r\n transform: 'translate(0 0)',\r\n fill: '#5d5d5d',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\n id: 'Path_4769',\r\n 'data-name': 'Path 4769',\r\n d: 'M346.317,350.672l0-1.371c0-.042,0-.084,0-.138h-1.479c-.026-.1-.034-1.291-.012-1.5.245-.014.493,0,.741-.006s.49,0,.75,0v-1.5h1.5V344.67h1.5c0,.164,0,.327,0,.489s0,.328,0,.492v.507c.13.01.254,0,.376.005s.242,0,.363,0h.741c0,.047.007.081.007.115q0,2.156,0,4.312c0,.027,0,.054-.006.082Zm1.5-3.005v1.476a13.253,13.253,0,0,0,1.483,0c.022-.162.015-1.384-.009-1.472Z',\r\n transform: 'translate(-326.798 -326.666)',\r\n fill: '#5d5d5d',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\n id: 'Path_4770',\r\n 'data-name': 'Path 4770',\r\n d: 'M350.993,4.5h-1.477V5.98a13.306,13.306,0,0,1-1.5,0V4.5h-1.493V3.014c-.256-.019-.5-.006-.752-.009s-.49,0-.743,0V1.5h1.49V.038l.017-.018s.006-.007.009-.007A.5.5,0,0,1,346.6.007h4.358a.189.189,0,0,1,.039.01Zm-2.977-1.515a14.117,14.117,0,0,0,1.489,0V1.518a13.475,13.475,0,0,0-1.489.01Z',\r\n transform: 'translate(-327 -0.007)',\r\n fill: '#5d5d5d',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\n id: 'Path_4771',\r\n 'data-name': 'Path 4771',\r\n d: 'M177.4,181.788a4.769,4.769,0,1,1,4.774-4.743,4.768,4.768,0,0,1-4.774,4.743m0-2.386a2.383,2.383,0,1,0-2.378-2.388A2.391,2.391,0,0,0,177.4,179.4',\r\n transform: 'translate(-165.386 -165.023)',\r\n fill: '#5d5d5d',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\n id: 'Path_4772',\r\n 'data-name': 'Path 4772',\r\n d: 'M172.573,28.8h1.482v1.474c-.088.023-1.322.03-1.471.008-.024-.086-.033-1.236-.011-1.483',\r\n transform: 'translate(-163.546 -27.296)',\r\n fill: '#5d5d5d',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\n id: 'Path_4773',\r\n 'data-name': 'Path 4773',\r\n d: 'M258.685,28.8h1.482v1.474c-.088.023-1.324.03-1.472.008-.024-.086-.033-1.239-.01-1.483',\r\n transform: 'translate(-245.16 -27.297)',\r\n fill: '#5d5d5d',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\n id: 'Path_4774',\r\n 'data-name': 'Path 4774',\r\n d: 'M402.37,172.387h1.486v1.472c-.094.024-1.376.026-1.486,0Z',\r\n transform: 'translate(-381.352 -163.382)',\r\n fill: '#5d5d5d',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\n id: 'Path_4775',\r\n 'data-name': 'Path 4775',\r\n d: 'M30.729,173.749H29.244v-1.49h1.485Z',\r\n transform: 'translate(-27.716 -163.261)',\r\n fill: '#5d5d5d',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\n id: 'Path_4776',\r\n 'data-name': 'Path 4776',\r\n d: 'M174.28,403.369H172.8V401.9a14.178,14.178,0,0,1,1.483,0Z',\r\n transform: 'translate(-163.771 -380.883)',\r\n fill: '#5d5d5d',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\n id: 'Path_4777',\r\n 'data-name': 'Path 4777',\r\n d: 'M258.714,402.039h1.466c.023.089.03,1.31.009,1.471a13.52,13.52,0,0,1-1.466.014,14.287,14.287,0,0,1-.009-1.485',\r\n transform: 'translate(-245.186 -381.038)',\r\n fill: '#5d5d5d',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\n id: 'Path_4778',\r\n 'data-name': 'Path 4778',\r\n d: 'M29.194,259.847V258.38a14.3,14.3,0,0,1,1.487-.006v1.473Z',\r\n transform: 'translate(-27.669 -244.862)',\r\n fill: '#5d5d5d',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\n id: 'Path_4779',\r\n 'data-name': 'Path 4779',\r\n d: 'M402.241,258.521h1.465c.023.088.028,1.336.007,1.47-.083.024-1.261.033-1.467.012a13.357,13.357,0,0,1-.006-1.482',\r\n transform: 'translate(-381.212 -245.017)',\r\n fill: '#5d5d5d',\r\n },\r\n child: [],\r\n },\r\n ],\r\n },\r\n ],\r\n })(props);\r\n};\r\n","import React from 'react';\r\nimport { toast } from 'react-toastify';\r\nexport interface toastGenProps {\r\n type: 'Error' | 'Info' | 'Warning' | 'Success';\r\n message: string;\r\n}\r\nimport { Error } from '../icon';\r\n\r\nexport function CustomToast(\r\n type: 'info' | 'error' | 'warning' | 'success',\r\n message: string,\r\n toastId: number,\r\n style?: React.CSSProperties,\r\n containerId:string = \"logoEditor\",\r\n) {\r\n const _C = toast.isActive(toastId)\r\n console.log(containerId);\r\n if(_C){\r\n return <></>;\r\n }\r\n switch (type) {\r\n case 'info':\r\n return toast.info(toastGen({ type: 'Info', message }), {\r\n toastId,\r\n style,\r\n containerId,\r\n });\r\n case 'error':\r\n return toast.error(toastGen({ type: 'Error', message }), {\r\n toastId,\r\n icon: Error,\r\n style,\r\n containerId,\r\n });\r\n case 'success':\r\n return toast.success(toastGen({ type: 'Success', message }), {\r\n toastId,\r\n style,\r\n containerId,\r\n });\r\n case 'warning':\r\n return toast.warning(toastGen({ type: 'Warning', message }), {\r\n toastId,\r\n style,\r\n containerId,\r\n });\r\n }\r\n}\r\nexport const toastGen = ({ type, message }: toastGenProps) => (\r\n <div>\r\n <div className=\"text-base font-bold leading-[22px]\">{type}</div>\r\n <div className=\"text-sm font-medium leading-[22px]\">{message}</div>\r\n </div>\r\n);\r\n","import { CustomToast as e } from '../../components/customToast';\r\n\r\nexport interface ToastMessages {\r\n deleteLogoSuccess: () => void;\r\n error: (message: string) => void;\r\n saveSuccess: () => void;\r\n somethingWentWrong: () => void;\r\n success: (message: string) => void;\r\n updateLogoSuccess: () => void;\r\n updateSuccess: () => void;\r\n warning: (message: string) => void;\r\n noOfColors: () => void;\r\n noIteminCanvas: () => void;\r\n fileSize: () => void;\r\n noChangesMade: () => void;\r\n fontsNotAvailable: () => void;\r\n pleaseSelectTheImage: () => void;\r\n pleaseSelectTheImageDulpicate: () => void;\r\n applyLogoColorNotAvailable: (decType: string) => void;\r\n saveLogoColorNotAvailable: (decType: string) => void;\r\n}\r\n\r\nexport const toastMessages: ToastMessages =\r\n// prettier-ignore\r\n{\r\n deleteLogoSuccess: () => e('success', 'Logo deleted successfully!', 1),\r\n error: (message) => e('success', message, 2),\r\n saveSuccess: () => e('success', 'You have successfully saved your Logo', 3, { width: '30rem' }),\r\n somethingWentWrong: () => e('error', 'Something Went Wrong', 4),\r\n success: (message) => e('success', message, 5),\r\n updateLogoSuccess: () => e('success', 'Logo updated successfully!', 6),\r\n updateSuccess: () => e('success', 'You have successfully updated your design', 7),\r\n warning: (message) => e('success', message, 8),\r\n noOfColors: () => e('error', 'Not more than 8 colors allowed!', 9),\r\n noIteminCanvas: () => e('error', 'No item in canvas to save', 10),\r\n fileSize: () => e('error', 'We cannot process this file because it is larger than 25MB. Please decrease the size and try again.', 11),\r\n noChangesMade: () => e('info', 'No Changes Made To Save!!!', 12),\r\n fontsNotAvailable: () => e('info', 'Fonts not availble in-order to view the proper text', 13),\r\n pleaseSelectTheImage: () => e('info', 'Please select the IMAGE / TEXT to delete', 14),\r\n pleaseSelectTheImageDulpicate: () => e('info', 'Please select the IMAGE / TEXT to duplicate', 150),\r\n applyLogoColorNotAvailable: (decType) => e('error', `A few of the colors associated with decoration \"${decType}\" are not supported. Please use the \"Edit\" option to update them with supported colors and proceed!`, 16),\r\n saveLogoColorNotAvailable: (decType) => e('error', `A few of the colors associated with decoration \"${decType}\" are not supported. Please update them with supported colors and save!`, 17),\r\n};\r\n","import { StateCreator } from 'zustand';\r\nimport { use3dddPlus } from '..';\r\nimport { Design } from '../customize/types';\r\nimport { ToastMessages, toastMessages } from './toastMessages';\r\nexport interface ActionSlice {\r\n displayLoginModal: boolean;\r\n showProductBreakUpModal: { status: boolean; value: any };\r\n loadDesignModal: boolean;\r\n productInfoModal: any;\r\n toastMessages: ToastMessages;\r\n toggleSaveLogo: {\r\n key: string;\r\n status: boolean;\r\n title: string;\r\n details: any;\r\n };\r\n showModalAfterLogin?: void;\r\n changeModel: () => void;\r\n editDesignInfo: () => void;\r\n saveDesignModal: () => void;\r\n setLoadDesignModal: (loadDesign: boolean) => void;\r\n setProductInfoModal: () => any;\r\n clearLayers: () => void;\r\n setToggleSaveLogo: (\r\n key: string,\r\n status: boolean,\r\n title: string,\r\n details: any\r\n ) => void;\r\n share: () => void;\r\n toggleLoginModal: () => void;\r\n confirmDesignModal: { status: boolean; value: string };\r\n setConfirmDesignModal: (status: boolean, value: string) => void;\r\n toggleSuccessfullDesign: boolean;\r\n setToggleSuccessfullDesign: () => void;\r\n selectedDesign: any;\r\n setSelectedDesign: (selected: Design) => void;\r\n saveRackSuccessfulModal: boolean;\r\n setSaveRackSuccessfulModal: () => void;\r\n setShowModalAfterLogin: (toggleAction: any) => void; //Due to current functionality, toggleAction can have callback function of different types\r\n disableUpdate: boolean;\r\n confirmUpdateDesignModal: boolean;\r\n setConfirmUpdateDesignModal: () => void;\r\n designUpdateSuccessfulModal: boolean;\r\n getListFromRack: () => boolean;\r\n toogleShowProductBreakUpModal: (status: boolean, value: any) => void;\r\n productBreakup: any[];\r\n logoSearchText: string;\r\n logoSortBy: string;\r\n logoSortDir: string;\r\n logoPageNo: number;\r\n logoPageSize: number;\r\n showCrossSave: boolean;\r\n}\r\n\r\nconst graphqlSlice: StateCreator<ActionSlice> = (set, get) => {\r\n return {\r\n displayLoginModal: false,\r\n showProductBreakUpModal: {\r\n status: false,\r\n value: {},\r\n },\r\n toastMessages: toastMessages,\r\n loadDesignModal: false,\r\n productInfoModal: false,\r\n toggleSaveLogo: { key: 'save', status: false, title: '', details: {} },\r\n showModalAfterLogin: undefined,\r\n selectedDesign: {},\r\n changeModel: () => {\r\n alert('function not implemented');\r\n },\r\n confirmDesignModal: { status: false, value: '' },\r\n confirmUpdateDesignModal: false,\r\n toggleSuccessfullDesign: false,\r\n designUpdateSuccessfulModal: false,\r\n getListFromRack: () => {\r\n return false;\r\n },\r\n setSelectedDesign: (selected) => {\r\n set({ selectedDesign: selected });\r\n },\r\n setLoadDesignModal: (loadDesign) => {\r\n set({ loadDesignModal: loadDesign });\r\n },\r\n clearLayers: () => use3dddPlus.setState({\r\n storeAllObject: [],\r\n }),\r\n setToggleSaveLogo: (key, status, title, details) => {\r\n set({\r\n toggleSaveLogo: {\r\n key: key,\r\n status: status,\r\n title: title,\r\n details: details,\r\n },\r\n });\r\n },\r\n setConfirmDesignModal: (status, value) => {\r\n set({ confirmDesignModal: { status: status, value: value } });\r\n },\r\n setConfirmUpdateDesignModal: () => {\r\n set((state) => ({\r\n confirmUpdateDesignModal: !state.confirmUpdateDesignModal,\r\n }));\r\n },\r\n setToggleSuccessfullDesign: () => {\r\n set((state) => ({\r\n toggleSuccessfullDesign: !state.toggleSuccessfullDesign,\r\n }));\r\n },\r\n setProductInfoModal: () => {\r\n set((state) => ({ productInfoModal: !state.productInfoModal }));\r\n },\r\n\r\n editDesignInfo: () => {\r\n alert('function not implemented');\r\n },\r\n // rack: () => {\r\n // alert('function not implemented');\r\n // },\r\n\r\n saveDesignModal: () => {\r\n try {\r\n use3dddPlus.setState({ current: 'saveCTA' });\r\n use3dddPlus.getState().navigateTo('savePopUp');\r\n use3dddPlus.setState({ logoName: '' });\r\n use3dddPlus.setState({ designNotes: '' });\r\n use3dddPlus.setState({ logoTag: [] });\r\n let string = '';\r\n const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';\r\n\r\n for (let i = 0; i < 7; i++) {\r\n string += characters.charAt(\r\n Math.floor(Math.random() * characters.length)\r\n );\r\n }\r\n use3dddPlus.setState({ designNumber: string });\r\n\r\n\r\n if (!use3dddPlus.getState().customerId) {\r\n get().toggleLoginModal();\r\n get().setShowModalAfterLogin(() => {\r\n use3dddPlus\r\n .getState()\r\n .setToggleSaveLogo('save', true, 'Save Your Design', {});\r\n });\r\n return;\r\n }\r\n get().setToggleSaveLogo('save', true, 'Save Your Design', {});\r\n use3dddPlus.setState({ disableSaveButton: false });\r\n } catch {}\r\n },\r\n\r\n \r\n share: () => {\r\n alert('function not implemented');\r\n },\r\n toggleLoginModal: () => {\r\n set((state) => ({ displayLoginModal: !state.displayLoginModal }));\r\n },\r\n\r\n saveRackSuccessfulModal: false,\r\n setSaveRackSuccessfulModal: () => {\r\n set((state) => ({\r\n saveRackSuccessfulModal: !state.saveRackSuccessfulModal,\r\n }));\r\n },\r\n setShowModalAfterLogin: (toggleAction) => {\r\n use3dddPlus.setState({ showModalAfterLogin: toggleAction });\r\n },\r\n toogleShowProductBreakUpModal: (status, value) => {\r\n set({ showProductBreakUpModal: { status: status, value: value } });\r\n },\r\n disableUpdate: false,\r\n productBreakup: [],\r\n logoSearchText: '',\r\n logoSortBy: 'updated_at',\r\n logoSortDir: 'DESC',\r\n logoPageNo: 1,\r\n logoPageSize: 14,\r\n showCrossSave: false,\r\n };\r\n};\r\n\r\nexport default graphqlSlice;\r\n","import axios, { AxiosInstance, AxiosResponse } from 'axios';\r\n\r\nexport const baseURL = process.env.REACT_APP_LAMBDA_URL;\r\n\r\n// TODO remove ts-ignore; CreateAxiosDefaults<any> not building npm package. \r\n// @ts-ignore\r\nexport const instance: AxiosInstance = axios.create({\r\n baseURL: baseURL,\r\n timeout: 15000,\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: 'jxnhh7rk7gpjtnp1o1besdaip3pd2560',\r\n },\r\n});\r\n\r\nexport const responseBody = (response: AxiosResponse) => response.data;\r\n\r\nexport const requests = {\r\n get: (url: string) => instance.get(url).then(responseBody),\r\n post: (url: string, body: {}, config?: any) => instance.post(url, body, config).then(responseBody),\r\n put: (url: string, body: {}) => instance.put(url, body).then(responseBody),\r\n delete: (url: string) => instance.delete(url).then(responseBody),\r\n};\r\n","import { StateCreator } from 'zustand';\r\nimport { requests } from '../../axios/index';\r\nimport { use3dddPlus } from '..';\r\nimport { fabric } from 'fabric';\r\n// import { AxiosRequestConfig } from 'axios';\r\n\r\n// const useSampleResponses = process.env.REACT_APP_USE_SAMPLE_RESPONSES;\r\n\r\n\r\nexport interface LambdaSlice {\r\n\r\n lambdaClient: any;\r\n\r\n loadingLogo: (data: any) => any;\r\n getStockLogos: () => void;\r\n saveLogo: (data: any) => any; \r\n vectorize: (data :any)=> any;\r\n}\r\n\r\nconst lambdaSlice: StateCreator<LambdaSlice> = (_set, _get) => {\r\n return {\r\n lambdaClient: requests,\r\n\r\n loadingLogo: async (_data:any) => {\r\n try {\r\n use3dddPlus.setState({ loading: true });\r\n if (!requests) {\r\n throw new Error('lambdaClient Not Found');\r\n }\r\n if (!use3dddPlus.getState().customerId)\r\n throw new Error('You need to login');\r\n const response = await requests.get(\r\n `/editor-logo/${use3dddPlus.getState().customerId}?searchText=${\r\n use3dddPlus.getState().logoSearchText\r\n }&sortBy=${use3dddPlus.getState().logoSortBy}&sortDir=${\r\n use3dddPlus.getState().logoSortDir\r\n }&pageSize=${use3dddPlus.getState().logoPageSize}&pageNo=${\r\n use3dddPlus.getState().logoPageNo\r\n }`\r\n );\r\n use3dddPlus.setState({ loading: false });\r\n const res = await response;\r\n use3dddPlus.getState().logoPageNo === 1 &&\r\n use3dddPlus.setState({ retriveLogoDesign: res });\r\n\r\n return response;\r\n } catch (error) {\r\n console.error(error);\r\n use3dddPlus.setState({ loading: false });\r\n throw new Error(error);\r\n }\r\n },\r\n getStockLogos: async () => {\r\n fabric.Object.prototype.hasControls = true;\r\n fabric.Object.prototype.hasBorders = true;\r\n try {\r\n use3dddPlus.setState({ loading: true });\r\n if (!requests) {\r\n throw new Error('lambdaClient Not Found');\r\n }\r\n const response = await requests.get('/mascot-logos');\r\n use3dddPlus.setState({ loading: false });\r\n const res = await response;\r\n use3dddPlus.setState({ stockLogos: res });\r\n return res;\r\n } catch (error) {\r\n console.error(error);\r\n use3dddPlus.setState({ loading: false });\r\n throw new Error(error);\r\n }\r\n },\r\n saveLogo: async (logo) => {\r\n try {\r\n use3dddPlus.setState({ loading: true });\r\n if (!requests) {\r\n throw new Error('lambdaClient Not Found');\r\n }\r\n const response = await requests.post('/editor-logo', logo);\r\n use3dddPlus.setState({ loading: false });\r\n return response;\r\n } catch (error) {\r\n console.error(error);\r\n use3dddPlus.setState({ loading: false });\r\n throw new Error(error);\r\n }\r\n },\r\n vectorize: async(data)=>{ \r\n const formData = new FormData();\r\n formData.append('image', data);\r\n console.log(data,formData)\r\n const config = {\r\n headers: {\r\n 'Content-Type': 'multipart/form-data',\r\n },\r\n };\r\n try {\r\n use3dddPlus.setState({ loading: true });\r\n if (!requests) {\r\n throw new Error('lambdaClient Not Found');\r\n }\r\n const response = await requests.post('/image-vectorizer', {'image': data} , config);\r\n use3dddPlus.setState({ loading: false });\r\n return response;\r\n } catch (error) {\r\n console.error(error);\r\n use3dddPlus.setState({ loading: false });\r\n throw new Error(error);\r\n }\r\n }\r\n };\r\n};\r\n\r\nexport default lambdaSlice;\r\n","import { StateCreator } from 'zustand';\r\nexport interface SaveDesignSlice {\r\n disableSaveButton: boolean;\r\n designNumber: string;\r\n designImageUrl: string;\r\n designProofPdfUrl: string;\r\n logoTag: string[];\r\n logoName: string;\r\n designNotes: string;\r\n designConfig: string;\r\n designId: number;\r\n hasDesignNumber: () => boolean;\r\n showSaveCTA: boolean;\r\n showSaveRackCTA: boolean;\r\n}\r\n\r\nexport const saveDesignSlice: StateCreator<SaveDesignSlice> = (_set, get) => {\r\n return {\r\n disableSaveButton: false,\r\n designNumber: '',\r\n designImageUrl: '',\r\n designProofPdfUrl: '',\r\n logoTag: [],\r\n logoName: '',\r\n designNotes: '',\r\n designConfig: '',\r\n designId: undefined,\r\n hasDesignNumber: () => !!get().designNumber,\r\n showSaveCTA: true,\r\n showSaveRackCTA: true,\r\n };\r\n};\r\n\r\nexport default SaveDesignSlice;\r\n","\r\n// import { Texture } from '../store/customize/types';\r\n\r\nconst _oldURL = process.env.REACT_APP_IMAGE_URL_OLD!;\r\nconst _newURL = process.env.REACT_APP_IMAGE_URL!;\r\nexport const URLMapping = (url: string) => {\r\n // check if th url has old or new url paths\r\n if (url.includes(_oldURL)) {\r\n return url.replace(_oldURL, _newURL);\r\n }\r\n // if it has old then relace to new\r\n else if (url.includes(_newURL)) return url;\r\n // if it doesnot have nay then add new\r\n else {\r\n return _newURL + url;\r\n }\r\n};\r\n\r\n// export const getTextureDataFromId = (id) => {\r\n// const textureData = use3dddPlus.getState().productTextures;\r\n\r\n// // const textureData = [];\r\n// return textureData.filter((texture) => texture.id === id).filter(Boolean)[0];\r\n// };\r\n//@ts-ignore\r\nexport const constructMappingItem = (texture?: any, item?: any) => {\r\n return {\r\n id: item?.id,\r\n name: item?.name,\r\n path: item?.ProductMedium.Image_URL,\r\n type: item?.__typename,\r\n flipY: texture ? texture.flipY : false,\r\n };\r\n};\r\n\r\nexport const getImageURL = (path: string) => {\r\n return process.env.REACT_APP_IMAGE_URL + path; //item?.ProductMedium?.Image_URL\r\n};\r\n","export function getCookie(cname: string) {\r\n let name = cname + '=';\r\n let decodedCookie = decodeURIComponent(document.cookie);\r\n let ca = decodedCookie.split(';');\r\n for (let i = 0; i < ca.length; i++) {\r\n let c = ca[i];\r\n while (c.charAt(0) == ' ') {\r\n c = c.substring(1);\r\n }\r\n if (c.indexOf(name) == 0) {\r\n return c.substring(name.length, c.length);\r\n }\r\n }\r\n return '';\r\n}\r\n\r\nexport function setCookie(cname: string, cvalue: any, exdays: number) {\r\n const d = new Date();\r\n d.setTime(d.getTime() + exdays * 24 * 60 * 60 * 1000);\r\n let expires = 'expires=' + d.toUTCString();\r\n document.cookie = cname + '=' + cvalue + ';' + expires + ';path=/';\r\n}\r\n\r\nexport const clearCookie = (cname: string, cvalue = '') => {\r\n const d = new Date();\r\n d.setTime(d.getTime());\r\n let expires = 'expires=' + d.toUTCString();\r\n document.cookie = cname + '=' + cvalue + ';' + expires + ';path=/';\r\n};\r\n","import CryptoJS from 'crypto-js';\r\nexport const encryptToken = (data: any) => {\r\n return CryptoJS.AES.encrypt(\r\n JSON.stringify(data),\r\n 'secret key 123'\r\n ).toString();\r\n};\r\nexport const decryptToken = (ciphertext: string) => {\r\n var bytes = CryptoJS.AES.decrypt(ciphertext, 'secret key 123');\r\n return JSON.parse(bytes.toString(CryptoJS.enc.Utf8));\r\n};\r\n\r\nexport const getProjectId = () => {\r\n const queryString = window.location.search;\r\n const urlParams = new URLSearchParams(queryString);\r\n const projectId = urlParams.get('projectId');\r\n return projectId || process.env.REACT_APP_3DDDPLUS_PROJECTID;\r\n};\r\n\r\nexport function parseJwt(token) {\r\n var base64Url = token.split('.')[1];\r\n var base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/');\r\n var jsonPayload = decodeURIComponent(\r\n window\r\n ?.atob(base64)\r\n ?.split('')\r\n ?.map(function (c) {\r\n return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);\r\n })\r\n .join('')\r\n );\r\n\r\n return JSON.parse(jsonPayload);\r\n}\r\n","//import { use3dddPlus } from '../store';\r\n\r\n// export const getDomImage = () => {\r\n// var strMime = 'image/jpeg';\r\n// const imgData = use3dddPlus.getState().gl.domElement.toDataURL(strMime);\r\n\r\n// return dataURItoBlob(imgData);\r\n// };\r\n\r\nexport function dataURItoBlob(dataURI) {\r\n // convert base64 to raw binary data held in a string\r\n // doesn't handle URLEncoded DataURIs - see SO answer #6850276 for code that does this\r\n var byteString = atob(dataURI.split(',')[1]);\r\n\r\n // separate out the mime component\r\n // var mimeString = dataURI.split(',')[0].split(':')[1].split(';')[0];\r\n\r\n // write the bytes of the string to an ArrayBuffer\r\n var ab = new ArrayBuffer(byteString.length);\r\n var ia = new Uint8Array(ab);\r\n for (var i = 0; i < byteString.length; i++) {\r\n ia[i] = byteString.charCodeAt(i);\r\n }\r\n\r\n //Old Code\r\n //write the ArrayBuffer to a blob, and you're done\r\n //var bb = new BlobBuilder();\r\n //bb.append(ab);\r\n //return bb.getBlob(mimeString);\r\n\r\n //New Code\r\n return new File([ab], new Date().getTime() + '_configuration' + '.jpg', {\r\n type: 'image/jpeg',\r\n // lastModified: new Date(),\r\n });\r\n}\r\n","// function called to save image\r\nexport const saveFile = function (strData: string, filename: string) {\r\n let link = document.createElement('a');\r\n document.body.appendChild(link);\r\n link.download = filename;\r\n link.href = strData;\r\n link.click();\r\n document.body.removeChild(link);\r\n};\r\n","// The key code condition we provided refers to the following key ranges:\r\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'.\r\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'.\r\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'.\r\n// 4. `(x >= 32 && x <= 32)`: This condition checks for the spacebar key. The key code 32 represents the space character.\r\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.\r\n\r\n\r\nexport const restrictSpecialCharacters = function (e) {\r\n const x = e.which || e.keycode;\r\n if (\r\n (x >= 97 && x <= 122) ||\r\n (x >= 48 && x <= 57) ||\r\n (x >= 65 && x <= 90) ||\r\n (x >= 32 && x <= 32)\r\n ) {\r\n return true;\r\n } else return e.preventDefault();\r\n};","import { StateCreator } from 'zustand';\r\nimport {\r\n clearCookie,\r\n decryptToken,\r\n encryptToken,\r\n getCookie,\r\n setCookie,\r\n} from '../../services';\r\nimport {\r\n clearSessionStorage,\r\n getSessionStorage,\r\n setSessionStorage,\r\n} from '../../services/sessionStorage';\r\n\r\nexport interface AuthSlice {\r\n authType?: string;\r\n cardCode?: string;\r\n customerEmail?: string;\r\n customerId?: number;\r\n customerType?: string;\r\n priceLevel: string;\r\n token?: string;\r\n clearLoginInfo: () => void;\r\n generateCustomizerToken: (setInCookies?: boolean) => void;\r\n setCustomizerToken: () => void;\r\n isLoggedIn: () => boolean;\r\n customUploadLogoColorList: any[];\r\n defaultColorList: any[];\r\n availableColorCodes: any[];\r\n customOptions: any;\r\n}\r\n\r\nexport const authSlice: StateCreator<AuthSlice> = (set, get) => {\r\n return {\r\n customUploadLogoColorList: [],\r\n defaultColorList: [],\r\n availableColorCodes: [],\r\n customOptions: {},\r\n priceLevel: '',\r\n token: '',\r\n customerId: 117015,\r\n clearLoginInfo: () => {\r\n clearCookie('customizerToken');\r\n clearSessionStorage('customizerToken');\r\n set({\r\n authType: '',\r\n cardCode: '',\r\n customerEmail: '',\r\n customerId: 117015,\r\n customerType: '',\r\n priceLevel: '',\r\n token: '',\r\n });\r\n },\r\n generateCustomizerToken: (setInCookies = true) => {\r\n const authType = get().authType;\r\n const cardCode = get().cardCode;\r\n const customerEmail = get().customerEmail;\r\n const customerId = get().customerId;\r\n const customerType = get().priceLevel;\r\n const token = get().token;\r\n\r\n const customizerToken = encryptToken({\r\n authType,\r\n cardCode,\r\n customerEmail,\r\n customerId,\r\n customerType,\r\n token,\r\n });\r\n if (setInCookies) {\r\n setCookie('customizerToken', customizerToken, 1);\r\n } else {\r\n setSessionStorage('customizerToken', customizerToken);\r\n }\r\n },\r\n setCustomizerToken: () => {\r\n const customizerToken: any =\r\n getSessionStorage('customizerToken') || getCookie('customizerToken');\r\n\r\n if (!customizerToken) return;\r\n const decrypt: any = decryptToken(customizerToken);\r\n\r\n set({\r\n ...decrypt,\r\n });\r\n },\r\n isLoggedIn: () => (!!get().customerId ? true : false),\r\n };\r\n};\r\n\r\nexport default AuthSlice;\r\n","export const clearSessionStorage = (cname: string) => {\r\n sessionStorage.removeItem(cname);\r\n};\r\n\r\nexport const getSessionStorage = (sName: string) => {\r\n return sessionStorage.getItem(sName);\r\n};\r\n\r\nexport const setSessionStorage = (cname: string, cvalue: any) => {\r\n sessionStorage.setItem(cname, cvalue);\r\n};\r\n","import { StateCreator } from 'zustand';\r\n// import { use3dddPlus } from '..';\r\n\r\nexport interface HistorySlice {\r\n history: string[];\r\n current: string;\r\n navigateTo: (page: string) => void;\r\n goBack: () => void;\r\n}\r\n\r\nexport const historySlice: StateCreator<HistorySlice> = (set, _get) => {\r\n return {\r\n history: [],\r\n current: '',\r\n navigateTo: (page: string) => {\r\n set((state) => ({\r\n history: [...state.history, state.current],\r\n current: page,\r\n }));\r\n },\r\n goBack: () => {\r\n set((state) => {\r\n if (state.history.length > 0) {\r\n const previousPage = state.history.pop()!;\r\n return {\r\n history: [...state.history],\r\n current: previousPage,\r\n };\r\n }\r\n return state;\r\n });\r\n },\r\n }\r\n}\r\nexport default HistorySlice;\r\n","import { StateCreator } from 'zustand';\r\nimport { fabric } from 'fabric';\r\nimport { use3dddPlus } from '..';\r\nimport AWS from 'aws-sdk';\r\n\r\nexport interface FabricSlice {\r\n // popCanvasOptions ?: any,\r\n availableMascots: any[];\r\n filteredMascots: any[];\r\n loading: Boolean;\r\n selectedStepper?: any;\r\n setSelectedStepper?: (selectedStepper: any) => void;\r\n hasUploadScreen?: any;\r\n setHasUploadScreen?: (hasUploadScreen: boolean) => void;\r\n storeHistory: any;\r\n count: number;\r\n stockLogos: [];\r\n retriveLogoDesign: any[];\r\n fabricCanvas: any;\r\n popupCanv: any;\r\n textInfo: string;\r\n uploadImageModalDisplay: boolean;\r\n mylogoAdded: boolean;\r\n currentSelection: string;\r\n activeSelection: any;\r\n selectedAll: boolean;\r\n colorFill: any;\r\n defaultColorFill: any[];\r\n loadedObject: any;\r\n setDefaultColorFill: (dcf: any) => void;\r\n defaultColorFillCopy: any[];\r\n setDefaultColorFillCopy: (dcf: any) => void;\r\n // colorFillPopup : {},\r\n storeAllObject: any[];\r\n iconImage: string;\r\n HideControls: any;\r\n showContextMenu: boolean;\r\n forStoringAllObject: (data: any) => void;\r\n forIconCapture: () => void;\r\n duplicateObject: () => void;\r\n deleteButtonControls: () => void;\r\n undo: () => void;\r\n redo: () => void;\r\n moveDown: (element) => void;\r\n moveUp: (element) => void;\r\n moveRight: (element) => void;\r\n moveLeft: (element) => void;\r\n applyColorFill: () => any;\r\n updateModifaction: (saveHistory: boolean) => void;\r\n nameCounter: any;\r\n guid: () => string;\r\n contextMenuCoordinates: { x: number; y: number };\r\n stockLogoHandler: (e: any) => void;\r\n loadMascots: (data: any) => void;\r\n myLogoHandler: (logo: any) => void;\r\n loadingRetrivedFiles: (data: any) => void;\r\n allColor: any;\r\n uploadLogoConfig: (jsonConfig: any, customerId: any) => any;\r\n logoData: any;\r\n setLogoData: (logo: any) => void;\r\n setAvailableMascots: (availableMascots: any[]) => void;\r\n setFilteredMascots: (filteredMascots: any[]) => void;\r\n handleMascotObjectFilterValues: (event: any) => void;\r\n filterValue: string;\r\n displayProductColor?: boolean;\r\n setDisplayProductColor?: () => void;\r\n popUpCanvasAllColor: any[];\r\n popupCanvasStoreHistory: any[];\r\n popUpCanvasCount: number;\r\n popUpCanvasApplyColorFill: () => void;\r\n popUpCanvasUpdateModification: (data: any) => void;\r\n popUpCanvasRedo: () => void;\r\n popUpCanvasUndo: () => any;\r\n forPopupCanvasReset: any;\r\n forPopupCanvasColor: any;\r\n imageData: any;\r\n horizontalLine: any;\r\n verticalLine: any;\r\n lastPosition: { top: number; left: number; scaleX?: number; scaleY?: number };\r\n setLastPosition: (lastPosition: {\r\n top: number;\r\n left: number;\r\n scaleX?: number;\r\n scaleY?: number;\r\n }) => void;\r\n validateColorAvailability: (imgColorCodes: any[]) => boolean;\r\n fontFamilies: any[],\r\n}\r\n\r\nexport const fabricSlice: StateCreator<FabricSlice> = (set, get) => {\r\n return {\r\n popUpCanvasCount: 1,\r\n popupCanvasStoreHistory: [],\r\n availableMascots: [],\r\n filteredMascots: [],\r\n logoData: null,\r\n setLogoData: (logoData) => set({ logoData }),\r\n allColor: [],\r\n loading: false,\r\n selectedStepper: 1,\r\n setSelectedStepper: (selectedStepper) => set({ selectedStepper }),\r\n hasUploadScreen: false,\r\n setHasUploadScreen: (hasUploadScreen) => set({ hasUploadScreen }),\r\n storeHistory: [],\r\n stockLogos: [],\r\n retriveLogoDesign: [],\r\n fabricCanvas: null,\r\n popupCanv: null,\r\n textInfo: 'NEW TEXT',\r\n uploadImageModalDisplay: false,\r\n mylogoAdded: false,\r\n currentSelection: 'layer',\r\n activeSelection: null,\r\n selectedAll: false,\r\n colorFill: {},\r\n defaultColorFill: [],\r\n loadedObject: [],\r\n defaultColorFillCopy: [],\r\n // colorFillPopup : {},\r\n storeAllObject: [],\r\n iconImage: '',\r\n HideControls: {\r\n tl: true,\r\n tr: true,\r\n bl: true, //false\r\n br: true,\r\n ml: false,\r\n mt: false,\r\n mr: false,\r\n mb: false,\r\n mtr: true,\r\n // 'cornerColor':'yellow'\r\n },\r\n showContextMenu: false,\r\n forStoringAllObject: (data) => {\r\n //@ts-ignore\r\n get().storeAllObject.unshift(data);\r\n },\r\n\r\n forIconCapture: () => {\r\n const activeObject = get().fabricCanvas.getActiveObject();\r\n if (activeObject) {\r\n const dataURL = activeObject.toDataURL('image/png');\r\n set({ iconImage: dataURL });\r\n }\r\n },\r\n nameCounter: 0,\r\n guid: () => {\r\n let u =\r\n Date.now().toString(16) + Math.random().toString(16) + '0'.repeat(16);\r\n return [\r\n u.substr(0, 8),\r\n u.substr(8, 4),\r\n '4000-8' + u.substr(13, 3),\r\n u.substr(16, 12),\r\n ].join('-');\r\n },\r\n duplicateObject: () => {\r\n if (get().fabricCanvas.getActiveObject() !== null) {\r\n let activeObj = get().fabricCanvas.getActiveObject();\r\n let clipboard;\r\n get()\r\n .fabricCanvas.getActiveObject()\r\n .clone((cloned) => {\r\n clipboard = cloned;\r\n clipboard.clone((clonedObj) => {\r\n get().fabricCanvas.discardActiveObject();\r\n clonedObj.set({\r\n evented: true,\r\n });\r\n if (clonedObj.type === 'activeSelection') {\r\n clonedObj.canvas = get().fabricCanvas;\r\n clonedObj.forEachObject((obj: any, index: any) => {\r\n obj.colorFill = activeObj._objects[index].colorFill;\r\n obj.id = use3dddPlus.getState().guid();\r\n // copy all path text data & clone text props as well(text with shapes applied)\r\n // if (obj.type === 'path' && obj.pathData !== undefined) {\r\n if (obj.type === 'path') {\r\n obj.pathData = activeObj._objects[index].pathData;\r\n obj.shapeSize = activeObj._objects[index].shapeSize;\r\n obj.shapeType = activeObj._objects[index].shapeType;\r\n obj.fontFamily = activeObj._objects[index].fontFamily;\r\n obj.fontWeight = activeObj._objects[index].fontWeight;\r\n obj.fontSize = activeObj._objects[index].fontSize;\r\n obj.charSpacing = activeObj._objects[index].charSpacing;\r\n obj.textAlign = activeObj._objects[index].textAlign;\r\n obj.fontStyle = activeObj._objects[index].fontStyle;\r\n obj.text = activeObj._objects[index].text;\r\n }\r\n get().fabricCanvas.add(obj);\r\n });\r\n clonedObj.setCoords();\r\n } else {\r\n clonedObj.colorFill = activeObj.colorFill;\r\n clonedObj.id = use3dddPlus.getState().guid();\r\n // copy all path text data & clone text props as well(text with shapes applied)\r\n if (\r\n activeObj.type === 'path' &&\r\n activeObj.pathData !== undefined\r\n ) {\r\n clonedObj.pathData = activeObj.pathData;\r\n clonedObj.shapeSize = activeObj.shapeSize;\r\n clonedObj.shapeType = activeObj.shapeType;\r\n clonedObj.fontFamily = activeObj.fontFamily;\r\n clonedObj.fontWeight = activeObj.fontWeight;\r\n clonedObj.fontSize = activeObj.fontSize;\r\n clonedObj.charSpacing = activeObj.charSpacing;\r\n clonedObj.textAlign = activeObj.textAlign;\r\n clonedObj.fontStyle = activeObj.fontStyle;\r\n clonedObj.text = activeObj.text;\r\n }\r\n get().fabricCanvas.add(clonedObj);\r\n }\r\n clipboard.top += 20;\r\n clipboard.left += 20;\r\n if (\r\n activeObj &&\r\n activeObj.shapeType &&\r\n activeObj.shapeType.length > 0\r\n ) {\r\n clonedObj.shapeType = activeObj.shapeType;\r\n clonedObj.shapeSize = activeObj.shapeSize;\r\n }\r\n get().fabricCanvas.setActiveObject(clonedObj);\r\n const brNew = clonedObj.getBoundingRect();\r\n if (\r\n !(\r\n brNew.width + brNew.left + 45 + 20 >=\r\n clonedObj.canvas.width ||\r\n brNew.height + brNew.top + 10 + 20 >= clonedObj.canvas.height\r\n )\r\n ) {\r\n clonedObj.set({\r\n left: clonedObj.left + 20,\r\n top: clonedObj.top + 20,\r\n });\r\n }\r\n if (\r\n clonedObj &&\r\n clonedObj._objects &&\r\n clonedObj._objects.length > 0 &&\r\n (clonedObj._objects[0].type === 'text' ||\r\n clonedObj._objects[0].type === 'group' ||\r\n (clonedObj._objects[0].type === 'path' &&\r\n clonedObj._objects[0].fontFamily))\r\n ) {\r\n clonedObj._objects.map((data) => {\r\n data.icon = data.toDataURL('image/png');\r\n get().forStoringAllObject(data);\r\n });\r\n } else {\r\n use3dddPlus.getState().forIconCapture();\r\n clonedObj.icon = use3dddPlus.getState().iconImage;\r\n get().forStoringAllObject(clonedObj);\r\n }\r\n });\r\n get().updateModifaction(true);\r\n });\r\n } else {\r\n use3dddPlus.getState().toastMessages.pleaseSelectTheImageDulpicate();\r\n }\r\n },\r\n deleteButtonControls: () => {\r\n },\r\n count: 1,\r\n skipEvent: false,\r\n undo: () => {\r\n if (get().count <= get().storeHistory.length) {\r\n get().fabricCanvas.clear().renderAll();\r\n get().fabricCanvas.loadFromJSON(\r\n get().storeHistory[\r\n get().storeHistory.length -\r\n 1 -\r\n (get().count > 1 ? get().count - 1 : 0)\r\n ]\r\n );\r\n\r\n // Remove lines\r\n get()\r\n .fabricCanvas.getObjects()\r\n .forEach((obj) => {\r\n if (obj.type === 'line') {\r\n get().fabricCanvas.remove(obj);\r\n }\r\n });\r\n\r\n // Add lines\r\n const horizontalLine = new fabric.Line(\r\n [\r\n 0,\r\n get().fabricCanvas.height / 2,\r\n get().fabricCanvas.height,\r\n get().fabricCanvas.height / 2,\r\n ],\r\n {\r\n stroke: 'red',\r\n scaleX: 11,\r\n visible: false,\r\n selectable: false,\r\n type: 'line',\r\n }\r\n );\r\n\r\n const verticalLine = new fabric.Line(\r\n [\r\n get().fabricCanvas.width / 2,\r\n 0,\r\n get().fabricCanvas.width / 2,\r\n get().fabricCanvas.width,\r\n ],\r\n {\r\n stroke: 'red',\r\n visible: false,\r\n selectable: false,\r\n type: 'line',\r\n }\r\n );\r\n\r\n horizontalLine.centerH();\r\n get().fabricCanvas.add(horizontalLine);\r\n get().fabricCanvas.add(verticalLine);\r\n\r\n get().fabricCanvas.sendToBack(horizontalLine);\r\n get().fabricCanvas.sendToBack(verticalLine);\r\n\r\n use3dddPlus.setState({ horizontalLine: horizontalLine });\r\n use3dddPlus.setState({ verticalLine: verticalLine });\r\n\r\n get().fabricCanvas.renderAll();\r\n get().count += 1;\r\n // }\r\n\r\n // Update layers\r\n use3dddPlus.getState().clearLayers();\r\n const canvasGetobject = get().fabricCanvas.getObjects();\r\n canvasGetobject.forEach((element: any) => {\r\n if (element.type !== 'line') {\r\n use3dddPlus.getState().forStoringAllObject(element);\r\n if (element.type === 'text' || 'path') {\r\n get().fabricCanvas.setActiveObject(element);\r\n use3dddPlus.getState().forIconCapture();\r\n //@ts-ignore\r\n element.icon = use3dddPlus.getState().iconImage;\r\n get().fabricCanvas.discardActiveObject();\r\n }\r\n }\r\n });\r\n }\r\n },\r\n redo: () => {\r\n if (get().count > 2) {\r\n get().fabricCanvas.clear().renderAll();\r\n let item = Math.abs(get().count - get().storeHistory.length - 2);\r\n get().fabricCanvas.loadFromJSON(get().storeHistory[item]);\r\n\r\n // Remove lines\r\n get()\r\n .fabricCanvas.getObjects()\r\n .forEach((obj) => {\r\n if (obj.type === 'line') {\r\n get().fabricCanvas.remove(obj);\r\n }\r\n });\r\n\r\n // Add lines\r\n const horizontalLine = new fabric.Line(\r\n [\r\n 0,\r\n get().fabricCanvas.height / 2,\r\n get().fabricCanvas.height,\r\n get().fabricCanvas.height / 2,\r\n ],\r\n {\r\n stroke: 'red',\r\n scaleX: 11,\r\n visible: false,\r\n selectable: false,\r\n type: 'line',\r\n }\r\n );\r\n\r\n const verticalLine = new fabric.Line(\r\n [\r\n get().fabricCanvas.width / 2,\r\n 0,\r\n get().fabricCanvas.width / 2,\r\n get().fabricCanvas.width,\r\n ],\r\n {\r\n stroke: 'red',\r\n visible: false,\r\n selectable: false,\r\n type: 'line',\r\n }\r\n );\r\n\r\n horizontalLine.centerH();\r\n get().fabricCanvas.add(horizontalLine);\r\n get().fabricCanvas.add(verticalLine);\r\n\r\n get().fabricCanvas.sendBackwards(horizontalLine);\r\n get().fabricCanvas.sendBackwards(verticalLine);\r\n\r\n use3dddPlus.setState({ horizontalLine: horizontalLine });\r\n use3dddPlus.setState({ verticalLine: verticalLine });\r\n\r\n get().fabricCanvas.renderAll();\r\n get().count -= 1;\r\n\r\n // Update layers\r\n use3dddPlus.getState().clearLayers();\r\n const canvasGetobject = get().fabricCanvas.getObjects();\r\n canvasGetobject.forEach((element: any) => {\r\n if (element.type !== 'line') {\r\n use3dddPlus.getState().forStoringAllObject(element);\r\n if (element.type === 'text' || 'path') {\r\n get().fabricCanvas.setActiveObject(element);\r\n use3dddPlus.getState().forIconCapture();\r\n //@ts-ignore\r\n element.icon = use3dddPlus.getState().iconImage;\r\n get().fabricCanvas.discardActiveObject();\r\n }\r\n }\r\n });\r\n }\r\n },\r\n moveDown: (element) => {\r\n element.top = element.top + 2;\r\n get().fabricCanvas.renderAll();\r\n },\r\n moveUp: (element) => {\r\n element.top = element.top - 2;\r\n get().fabricCanvas.renderAll();\r\n },\r\n moveRight: (element) => {\r\n element.left = element.left + 2;\r\n get().fabricCanvas.renderAll();\r\n },\r\n moveLeft: (element) => {\r\n element.left = element.left - 2;\r\n get().fabricCanvas.renderAll();\r\n },\r\n applyColorFill: () => {\r\n\r\n const canvasData = get().fabricCanvas.toJSON(['id', 'colorFill', 'shapeType', 'shapeSize', 'text', 'textAlign', 'stroke',\r\n 'strokeWidth', 'fontFamily', 'icon'\r\n ]);\r\n return canvasData;\r\n },\r\n setDefaultColorFill: (dcf: any) => {\r\n use3dddPlus.setState({ defaultColorFill: dcf });\r\n },\r\n setDefaultColorFillCopy: (dcf: any) => {\r\n use3dddPlus.setState({ defaultColorFillCopy: dcf });\r\n },\r\n\r\n updateModifaction: (toSet) => {\r\n if (toSet) {\r\n if (get().count > 1 && get().storeHistory.length > 1) {\r\n for (let i = 1; i < get().count; i++) {\r\n get().storeHistory.pop();\r\n }\r\n get().count = 1;\r\n }\r\n get().storeHistory.push(get().applyColorFill());\r\n }\r\n },\r\n\r\n contextMenuCoordinates: { x: 0, y: 0 },\r\n stockLogoHandler: (e: any) => {\r\n //@ts-ignore\r\n let logos = e + '?timestamp=' + Date.now();\r\n use3dddPlus.setState({ selectedStepper: undefined });\r\n get().loadMascots(logos);\r\n },\r\n loadMascots: (data) => {\r\n fabric.loadSVGFromURL(data, (objects, options) => {\r\n const loadedObject: any = fabric.util.groupSVGElements(\r\n objects,\r\n options\r\n );\r\n loadedObject.scaleToWidth(450);\r\n loadedObject.scaleToHeight(450);\r\n let objImage = [];\r\n let _Fills = [];\r\n //@ts-ignore\r\n if (loadedObject && loadedObject._objects) {\r\n //@ts-ignore\r\n objImage = loadedObject._objects;\r\n objImage.forEach((ele) => {\r\n ele.set({ strokeWidth: 0 });\r\n use3dddPlus.setState({ fillColor: [...ele.fill] });\r\n _Fills.push(ele.fill);\r\n });\r\n } else {\r\n //@ts-ignore\r\n objImage = loadedObject;\r\n //@ts-ignore\r\n objImage.set({ strokeWidth: 0 });\r\n //@ts-ignore\r\n use3dddPlus.setState({ fillColor: [...objImage.fill] });\r\n _Fills.push(objImage.fill);\r\n }\r\n use3dddPlus.setState({\r\n //@ts-ignore\r\n fillColor: use3dddPlus.getState().removeDuplicates(_Fills),\r\n });\r\n //@ts-ignore\r\n _Fills = use3dddPlus.getState().removeDuplicates(_Fills);\r\n const fillColors = {};\r\n _Fills.map((item, index) => {\r\n fillColors['layer' + index] = item;\r\n });\r\n use3dddPlus.setState({ colorFill: fillColors });\r\n loadedObject.set({\r\n //@ts-ignore\r\n colorFill: fillColors,\r\n });\r\n loadedObject.id = get().guid();\r\n get().fabricCanvas.add(loadedObject).renderAll();\r\n get().fabricCanvas.centerObject(loadedObject);\r\n get().fabricCanvas.setActiveObject(loadedObject);\r\n use3dddPlus.setState({ activeSelection: loadedObject });\r\n use3dddPlus.getState().forStoringAllObject(loadedObject);\r\n get()\r\n .fabricCanvas.getActiveObject()\r\n .toDataURL(function () { });\r\n use3dddPlus.getState().forIconCapture();\r\n //@ts-ignore\r\n loadedObject.icon = use3dddPlus.getState().iconImage;\r\n use3dddPlus.getState().updateModifaction(true);\r\n use3dddPlus.setState({ loading: false });\r\n });\r\n },\r\n myLogoHandler: (logo: any) => {\r\n let jsonData = logo.logo_config_url;\r\n var requestOptions = {\r\n method: 'GET',\r\n };\r\n fetch(jsonData, requestOptions)\r\n .then((response) => response.text())\r\n .then((result) => get().loadingRetrivedFiles(result))\r\n .catch((error) => console.log('error', error));\r\n },\r\n\r\n loadingRetrivedFiles: (data: any) => {\r\n let canvas = use3dddPlus.getState().fabricCanvas;\r\n canvas.loadFromJSON(JSON.parse(data), function () {\r\n const horizontalLine = new fabric.Line(\r\n [0, canvas.height / 2, canvas.height, canvas.height / 2],\r\n {\r\n stroke: 'red',\r\n scaleX: 11,\r\n visible: false,\r\n selectable: false,\r\n type: 'line',\r\n }\r\n );\r\n\r\n const verticalLine = new fabric.Line(\r\n [canvas.width / 2, 0, canvas.width / 2, canvas.width],\r\n {\r\n stroke: 'red',\r\n visible: false,\r\n selectable: false,\r\n type: 'line',\r\n }\r\n );\r\n\r\n horizontalLine.centerH();\r\n canvas.add(horizontalLine);\r\n canvas.add(verticalLine);\r\n get().fabricCanvas.sendToBack(horizontalLine);\r\n get().fabricCanvas.sendToBack(verticalLine);\r\n use3dddPlus.setState({ horizontalLine: horizontalLine });\r\n use3dddPlus.setState({ verticalLine: verticalLine });\r\n canvas.renderAll.bind(canvas);\r\n canvas.discardActiveObject();\r\n use3dddPlus.setState({ selectedStepper: undefined });\r\n // Update layers\r\n use3dddPlus.getState().clearLayers();\r\n canvas.getObjects().forEach((element) => {\r\n element.id = use3dddPlus.getState().guid();\r\n if (element.type !== 'line') {\r\n use3dddPlus.getState().forStoringAllObject(element);\r\n }\r\n canvas.setActiveObject(element);\r\n canvas.renderAll();\r\n use3dddPlus.getState().forIconCapture();\r\n element.icon = use3dddPlus.getState().iconImage;\r\n });\r\n use3dddPlus.getState().updateModifaction(true);\r\n });\r\n canvas.backgroundColor = '#ffffff';\r\n use3dddPlus.setState({ mylogoAdded: false })\r\n canvas.discardActiveObject().renderAll();\r\n },\r\n uploadLogoConfig: async (jsonConfig, customerId) => {\r\n const bucketName = process.env.REACT_APP_BUCKET;\r\n const region = process.env.REACT_APP_REGION;\r\n AWS.config.update({\r\n accessKeyId: process.env.REACT_APP_ACCESSKEY,\r\n secretAccessKey: process.env.REACT_APP_SECRET_ACCESSKEY,\r\n });\r\n const S3 = new AWS.S3({\r\n params: { Bucket: bucketName },\r\n region: region,\r\n });\r\n\r\n const microTime = Date.now();\r\n const filePath = `my-logos/logo-config/${customerId}/${microTime}.json`;\r\n const params = {\r\n Bucket: bucketName,\r\n Key: filePath,\r\n Body: jsonConfig,\r\n ContentType: 'application/json',\r\n };\r\n\r\n const s3UrlPath = `https://${bucketName}.s3.${region}.amazonaws.com/${filePath}`;\r\n return new Promise((resolve, reject) => {\r\n S3.putObject(params, function (err: any) {\r\n if (err) {\r\n console.log('Error occurred while connecting S3 bucket!', err);\r\n reject(err);\r\n } else {\r\n resolve(s3UrlPath);\r\n }\r\n });\r\n });\r\n },\r\n setAvailableMascots: (availableMascots) => set({ availableMascots }),\r\n setFilteredMascots: (filteredMascots) => set({ filteredMascots }),\r\n\r\n handleMascotObjectFilterValues: (event) => {\r\n set({\r\n filterValue: event,\r\n });\r\n if (event === 'All') {\r\n get().setFilteredMascots(\r\n get().availableMascots\r\n // get().availableMascots.map((item) => item.thumbnail)\r\n );\r\n } else {\r\n const filteredData = get().availableMascots.filter((item) =>\r\n item.tags.includes(event)\r\n );\r\n get().setFilteredMascots(filteredData);\r\n // get().setFilteredMascots(filteredData.map((item) => item.thumbnail));\r\n }\r\n },\r\n filterValue: '',\r\n displayProductColor: false,\r\n setDisplayProductColor: () => {\r\n set((state) => ({\r\n displayProductColor: !state.displayProductColor,\r\n }));\r\n },\r\n popUpCanvasAllColor: [],\r\n popUpCanvasApplyColorFill: () => {\r\n const popUpCanvasData = get().popupCanv.toJSON(['id', 'colorFill']);\r\n return popUpCanvasData;\r\n },\r\n popUpCanvasUpdateModification: (toSet) => {\r\n if (toSet) {\r\n const historyObject = {\r\n colorFill: get().colorFill,\r\n json: get().popUpCanvasApplyColorFill(),\r\n };\r\n set((state) => ({\r\n ...state,\r\n popupCanvasStoreHistory: [\r\n ...state.popupCanvasStoreHistory,\r\n historyObject,\r\n ],\r\n }));\r\n }\r\n },\r\n popUpCanvasUndo: () => {\r\n if (get().popUpCanvasCount <= get().popupCanvasStoreHistory.length) {\r\n const _V =\r\n get().popupCanvasStoreHistory.length -\r\n 1 -\r\n (get().popUpCanvasCount > 1 ? get().popUpCanvasCount - 1 : 0);\r\n if (get().popupCanvasStoreHistory[_V] && _V > 0) {\r\n const colors = get().popupCanvasStoreHistory[_V].colorFill;\r\n get().popupCanv.clear().renderAll();\r\n get().popupCanv.loadFromJSON(get().popupCanvasStoreHistory[_V].json);\r\n get()\r\n .popupCanv.getObjects()\r\n .forEach((obj) => {\r\n if (obj.type === 'line') {\r\n get().popupCanv.remove(obj);\r\n } else {\r\n obj.set({\r\n perPixelTargetFind: true,\r\n })\r\n }\r\n });\r\n\r\n const canvas = use3dddPlus.getState().popupCanv;\r\n var gridSize = 83; // Size of each grid cell\r\n var canvasWidth = canvas.width;\r\n var canvasHeight = canvas.height;\r\n var numCols = Math.ceil(canvasWidth / gridSize);\r\n var numRows = Math.ceil(canvasHeight / gridSize);\r\n\r\n // Function to create a rectangle with checkerboard pattern\r\n function createCheckerboardRect(left, top, width, height, isEvenRow) {\r\n var rect = new fabric.Rect({\r\n left: left,\r\n top: top,\r\n width: width,\r\n height: height,\r\n type: 'line',\r\n lockMovementX: true,\r\n lockMovementY: true,\r\n lockScalingX: true,\r\n lockScalingY: true,\r\n // backgroundColor:'#ccc',\r\n fill:\r\n (isEvenRow && (left / gridSize) % 2 === 0) ||\r\n (!isEvenRow && (left / gridSize) % 2 !== 0)\r\n ? '#ffffff'\r\n : '#dadadac7',\r\n });\r\n return rect;\r\n }\r\n\r\n // Create grid lines\r\n for (var i = 0; i < numCols; i++) {\r\n var x = i * gridSize;\r\n const line = new fabric.Line([x, 0, x, canvasHeight], {\r\n stroke: '#dadadac7',\r\n selectable: false,\r\n type: 'line',\r\n lockMovementX: true,\r\n lockMovementY: true,\r\n lockScalingX: true,\r\n lockScalingY: true,\r\n });\r\n canvas.add(line);\r\n canvas.sendToBack(line);\r\n }\r\n\r\n for (var j = 0; j < numRows; j++) {\r\n var y = j * gridSize;\r\n const line = new fabric.Line([0, y, canvasWidth, y], {\r\n stroke: '#FFFFFF',\r\n selectable: false,\r\n type: 'line',\r\n lockMovementX: true,\r\n lockMovementY: true,\r\n lockScalingX: true,\r\n lockScalingY: true,\r\n });\r\n canvas.add(line);\r\n canvas.sendToBack(line);\r\n }\r\n\r\n // Fill grid with checkerboard pattern\r\n for (var i = 0; i < numCols; i++) {\r\n for (var j = 0; j < numRows; j++) {\r\n var left = i * gridSize;\r\n var top = j * gridSize;\r\n var isEvenRow = j % 2 === 0;\r\n var rect = createCheckerboardRect(\r\n left,\r\n top,\r\n gridSize,\r\n gridSize,\r\n isEvenRow\r\n );\r\n canvas.add(rect);\r\n canvas.sendToBack(rect);\r\n }\r\n }\r\n\r\n set({ colorFill: colors });\r\n get().popupCanv.renderAll();\r\n get().popUpCanvasCount += 1;\r\n if (_V === 1) {\r\n use3dddPlus.setState({ popupCanvasStoreHistory: [] });\r\n use3dddPlus.getState().popUpCanvasUpdateModification(true);\r\n get().popUpCanvasCount = 1;\r\n }\r\n return colors;\r\n } else {\r\n return null;\r\n }\r\n } else {\r\n return null;\r\n }\r\n },\r\n popUpCanvasRedo: () => {\r\n if (get().popUpCanvasCount > 0) {\r\n get().popupCanv.clear().renderAll();\r\n get().popupCanv.loadFromJSON(\r\n get().popupCanvasStoreHistory[\r\n get().popupCanvasStoreHistory.length -\r\n 1 -\r\n get().popUpCanvasCount +\r\n 1\r\n ]\r\n );\r\n get().popupCanv.renderAll();\r\n get().popUpCanvasCount -= 1;\r\n }\r\n },\r\n forPopupCanvasReset: null,\r\n forPopupCanvasColor: {},\r\n imageData: null,\r\n horizontalLine: null,\r\n verticalLine: null,\r\n lastPosition: { top: 0, left: 0 },\r\n setLastPosition: (lastPosition) => set({ lastPosition }),\r\n validateColorAvailability: (imgColorCodes) => {\r\n const allowedColorCodes = use3dddPlus.getState().availableColorCodes;\r\n let validation = true;\r\n for (let index = 0; index < imgColorCodes.length; index++) {\r\n let colorCode = imgColorCodes[index];\r\n colorCode = colorCode.trim().toUpperCase();\r\n const isExit = allowedColorCodes.indexOf(colorCode);\r\n if (isExit !== -1) {\r\n continue;\r\n }\r\n validation = false;\r\n break;\r\n }\r\n return validation;\r\n },\r\n fontFamilies: [],\r\n };\r\n};\r\n\r\nexport default FabricSlice;\r\n","/* This Source Code Form is subject to the terms of the Mozilla Public\r\n * License, v. 2.0. If a copy of the MPL was not distributed with this\r\n * file, You can obtain one at http://mozilla.org/MPL/2.0/. */\r\n\r\n'use strict';\r\n\r\nexport function TIFFParser() {\r\n this.tiffDataView = undefined;\r\n this.littleEndian = undefined;\r\n this.fileDirectories = [];\r\n}\r\n\r\nTIFFParser.prototype = {\r\n isLittleEndian: function () {\r\n // Get byte order mark.\r\n var BOM = this.getBytes(2, 0);\r\n\r\n // Find out the endianness.\r\n if (BOM === 0x4949) {\r\n this.littleEndian = true;\r\n } else if (BOM === 0x4d4d) {\r\n this.littleEndian = false;\r\n } else {\r\n console.log(BOM);\r\n throw TypeError('Invalid byte order value.');\r\n }\r\n\r\n return this.littleEndian;\r\n },\r\n\r\n hasTowel: function () {\r\n // Check for towel.\r\n if (this.getBytes(2, 2) !== 42) {\r\n throw RangeError('You forgot your towel!');\r\n return false;\r\n }\r\n\r\n return true;\r\n },\r\n\r\n getFieldTagName: function (fieldTag) {\r\n // See: http://www.digitizationguidelines.gov/guidelines/TIFF_Metadata_Final.pdf\r\n // See: http://www.digitalpreservation.gov/formats/content/tiff_tags.shtml\r\n var fieldTagNames = {\r\n // TIFF Baseline\r\n 0x013b: 'Artist',\r\n 0x0102: 'BitsPerSample',\r\n 0x0109: 'CellLength',\r\n 0x0108: 'CellWidth',\r\n 0x0140: 'ColorMap',\r\n 0x0103: 'Compression',\r\n 0x8298: 'Copyright',\r\n 0x0132: 'DateTime',\r\n 0x0152: 'ExtraSamples',\r\n 0x010a: 'FillOrder',\r\n 0x0121: 'FreeByteCounts',\r\n 0x0120: 'FreeOffsets',\r\n 0x0123: 'GrayResponseCurve',\r\n 0x0122: 'GrayResponseUnit',\r\n 0x013c: 'HostComputer',\r\n 0x010e: 'ImageDescription',\r\n 0x0101: 'ImageLength',\r\n 0x0100: 'ImageWidth',\r\n 0x010f: 'Make',\r\n 0x0119: 'MaxSampleValue',\r\n 0x0118: 'MinSampleValue',\r\n 0x0110: 'Model',\r\n 0x00fe: 'NewSubfileType',\r\n 0x0112: 'Orientation',\r\n 0x0106: 'PhotometricInterpretation',\r\n 0x011c: 'PlanarConfiguration',\r\n 0x0128: 'ResolutionUnit',\r\n 0x0116: 'RowsPerStrip',\r\n 0x0115: 'SamplesPerPixel',\r\n 0x0131: 'Software',\r\n 0x0117: 'StripByteCounts',\r\n 0x0111: 'StripOffsets',\r\n 0x00ff: 'SubfileType',\r\n 0x0107: 'Threshholding',\r\n 0x011a: 'XResolution',\r\n 0x011b: 'YResolution',\r\n\r\n // TIFF Extended\r\n 0x0146: 'BadFaxLines',\r\n 0x0147: 'CleanFaxData',\r\n 0x0157: 'ClipPath',\r\n 0x0148: 'ConsecutiveBadFaxLines',\r\n 0x01b1: 'Decode',\r\n 0x01b2: 'DefaultImageColor',\r\n 0x010d: 'DocumentName',\r\n 0x0150: 'DotRange',\r\n 0x0141: 'HalftoneHints',\r\n 0x015a: 'Indexed',\r\n 0x015b: 'JPEGTables',\r\n 0x011d: 'PageName',\r\n 0x0129: 'PageNumber',\r\n 0x013d: 'Predictor',\r\n 0x013f: 'PrimaryChromaticities',\r\n 0x0214: 'ReferenceBlackWhite',\r\n 0x0153: 'SampleFormat',\r\n 0x022f: 'StripRowCounts',\r\n 0x014a: 'SubIFDs',\r\n 0x0124: 'T4Options',\r\n 0x0125: 'T6Options',\r\n 0x0145: 'TileByteCounts',\r\n 0x0143: 'TileLength',\r\n 0x0144: 'TileOffsets',\r\n 0x0142: 'TileWidth',\r\n 0x012d: 'TransferFunction',\r\n 0x013e: 'WhitePoint',\r\n 0x0158: 'XClipPathUnits',\r\n 0x011e: 'XPosition',\r\n 0x0211: 'YCbCrCoefficients',\r\n 0x0213: 'YCbCrPositioning',\r\n 0x0212: 'YCbCrSubSampling',\r\n 0x0159: 'YClipPathUnits',\r\n 0x011f: 'YPosition',\r\n\r\n // EXIF\r\n 0x9202: 'ApertureValue',\r\n 0xa001: 'ColorSpace',\r\n 0x9004: 'DateTimeDigitized',\r\n 0x9003: 'DateTimeOriginal',\r\n 0x8769: 'Exif IFD',\r\n 0x9000: 'ExifVersion',\r\n 0x829a: 'ExposureTime',\r\n 0xa300: 'FileSource',\r\n 0x9209: 'Flash',\r\n 0xa000: 'FlashpixVersion',\r\n 0x829d: 'FNumber',\r\n 0xa420: 'ImageUniqueID',\r\n 0x9208: 'LightSource',\r\n 0x927c: 'MakerNote',\r\n 0x9201: 'ShutterSpeedValue',\r\n 0x9286: 'UserComment',\r\n\r\n // IPTC\r\n 0x83bb: 'IPTC',\r\n\r\n // ICC\r\n 0x8773: 'ICC Profile',\r\n\r\n // XMP\r\n 0x02bc: 'XMP',\r\n\r\n // GDAL\r\n 0xa480: 'GDAL_METADATA',\r\n 0xa481: 'GDAL_NODATA',\r\n\r\n // Photoshop\r\n 0x8649: 'Photoshop',\r\n };\r\n\r\n var fieldTagName;\r\n\r\n if (fieldTag in fieldTagNames) {\r\n fieldTagName = fieldTagNames[fieldTag];\r\n } else {\r\n console.log('Unknown Field Tag:', fieldTag);\r\n fieldTagName = 'Tag' + fieldTag;\r\n }\r\n\r\n return fieldTagName;\r\n },\r\n\r\n getFieldTypeName: function (fieldType) {\r\n var fieldTypeNames = {\r\n 0x0001: 'BYTE',\r\n 0x0002: 'ASCII',\r\n 0x0003: 'SHORT',\r\n 0x0004: 'LONG',\r\n 0x0005: 'RATIONAL',\r\n 0x0006: 'SBYTE',\r\n 0x0007: 'UNDEFINED',\r\n 0x0008: 'SSHORT',\r\n 0x0009: 'SLONG',\r\n 0x000a: 'SRATIONAL',\r\n 0x000b: 'FLOAT',\r\n 0x000c: 'DOUBLE',\r\n };\r\n\r\n var fieldTypeName;\r\n\r\n if (fieldType in fieldTypeNames) {\r\n fieldTypeName = fieldTypeNames[fieldType];\r\n }\r\n\r\n return fieldTypeName;\r\n },\r\n\r\n getFieldTypeLength: function (fieldTypeName) {\r\n var fieldTypeLength;\r\n\r\n if (['BYTE', 'ASCII', 'SBYTE', 'UNDEFINED'].indexOf(fieldTypeName) !== -1) {\r\n fieldTypeLength = 1;\r\n } else if (['SHORT', 'SSHORT'].indexOf(fieldTypeName) !== -1) {\r\n fieldTypeLength = 2;\r\n } else if (['LONG', 'SLONG', 'FLOAT'].indexOf(fieldTypeName) !== -1) {\r\n fieldTypeLength = 4;\r\n } else if (\r\n ['RATIONAL', 'SRATIONAL', 'DOUBLE'].indexOf(fieldTypeName) !== -1\r\n ) {\r\n fieldTypeLength = 8;\r\n }\r\n\r\n return fieldTypeLength;\r\n },\r\n\r\n getBits: function (numBits, byteOffset, bitOffset) {\r\n bitOffset = bitOffset || 0;\r\n var extraBytes = Math.floor(bitOffset / 8);\r\n var newByteOffset = byteOffset + extraBytes;\r\n var totalBits = bitOffset + numBits;\r\n var shiftRight = 32 - numBits;\r\n\r\n if (totalBits <= 0) {\r\n console.log(numBits, byteOffset, bitOffset);\r\n throw RangeError('No bits requested');\r\n } else if (totalBits <= 8) {\r\n var shiftLeft = 24 + bitOffset;\r\n var rawBits = this.tiffDataView.getUint8(\r\n newByteOffset,\r\n this.littleEndian\r\n );\r\n } else if (totalBits <= 16) {\r\n var shiftLeft = 16 + bitOffset;\r\n var rawBits = this.tiffDataView.getUint16(\r\n newByteOffset,\r\n this.littleEndian\r\n );\r\n } else if (totalBits <= 32) {\r\n var shiftLeft = bitOffset;\r\n var rawBits = this.tiffDataView.getUint32(\r\n newByteOffset,\r\n this.littleEndian\r\n );\r\n } else {\r\n console.log(numBits, byteOffset, bitOffset);\r\n throw RangeError('Too many bits requested');\r\n }\r\n\r\n var chunkInfo = {\r\n bits: (rawBits << shiftLeft) >>> shiftRight,\r\n byteOffset: newByteOffset + Math.floor(totalBits / 8),\r\n bitOffset: totalBits % 8,\r\n };\r\n\r\n return chunkInfo;\r\n },\r\n\r\n getBytes: function (numBytes, offset) {\r\n if (numBytes <= 0) {\r\n console.log(numBytes, offset);\r\n throw RangeError('No bytes requested');\r\n } else if (numBytes <= 1) {\r\n return this.tiffDataView.getUint8(offset, this.littleEndian);\r\n } else if (numBytes <= 2) {\r\n return this.tiffDataView.getUint16(offset, this.littleEndian);\r\n } else if (numBytes <= 3) {\r\n return this.tiffDataView.getUint32(offset, this.littleEndian) >>> 8;\r\n } else if (numBytes <= 4) {\r\n return this.tiffDataView.getUint32(offset, this.littleEndian);\r\n } else {\r\n console.log(numBytes, offset);\r\n throw RangeError('Too many bytes requested');\r\n }\r\n },\r\n\r\n getFieldValues: function (\r\n fieldTagName,\r\n fieldTypeName,\r\n typeCount,\r\n valueOffset\r\n ) {\r\n var fieldValues = [];\r\n\r\n var fieldTypeLength = this.getFieldTypeLength(fieldTypeName);\r\n var fieldValueSize = fieldTypeLength * typeCount;\r\n\r\n if (fieldValueSize <= 4) {\r\n // The value is stored at the big end of the valueOffset.\r\n if (this.littleEndian === false) {\r\n var value = valueOffset >>> ((4 - fieldTypeLength) * 8);\r\n } else {\r\n var value = valueOffset;\r\n }\r\n\r\n fieldValues.push(value);\r\n } else {\r\n for (var i = 0; i < typeCount; i++) {\r\n var indexOffset = fieldTypeLength * i;\r\n\r\n if (fieldTypeLength >= 8) {\r\n if (['RATIONAL', 'SRATIONAL'].indexOf(fieldTypeName) !== -1) {\r\n // Numerator\r\n fieldValues.push(this.getBytes(4, valueOffset + indexOffset));\r\n // Denominator\r\n fieldValues.push(this.getBytes(4, valueOffset + indexOffset + 4));\r\n //\t\t\t\t\t} else if (['DOUBLE'].indexOf(fieldTypeName) !== -1) {\r\n //\t\t\t\t\t\tfieldValues.push(this.getBytes(4, valueOffset + indexOffset) + this.getBytes(4, valueOffset + indexOffset + 4));\r\n } else {\r\n console.log(fieldTypeName, typeCount, fieldValueSize);\r\n throw TypeError(\"Can't handle this field type or size\");\r\n }\r\n } else {\r\n fieldValues.push(\r\n this.getBytes(fieldTypeLength, valueOffset + indexOffset)\r\n );\r\n }\r\n }\r\n }\r\n\r\n if (fieldTypeName === 'ASCII') {\r\n fieldValues.forEach(function (e, i, a) {\r\n a[i] = String.fromCharCode(e);\r\n });\r\n }\r\n\r\n return fieldValues;\r\n },\r\n\r\n clampColorSample: function (colorSample, bitsPerSample) {\r\n var multiplier = Math.pow(2, 8 - bitsPerSample);\r\n\r\n return Math.floor(colorSample * multiplier + (multiplier - 1));\r\n },\r\n\r\n makeRGBAFillValue: function (r, g, b, a) {\r\n if (typeof a === 'undefined') {\r\n a = 1.0;\r\n }\r\n return 'rgba(' + r + ', ' + g + ', ' + b + ', ' + a + ')';\r\n },\r\n\r\n parseFileDirectory: function (byteOffset) {\r\n var numDirEntries = this.getBytes(2, byteOffset);\r\n\r\n var tiffFields = [];\r\n\r\n for (\r\n var i = byteOffset + 2, entryCount = 0;\r\n entryCount < numDirEntries;\r\n i += 12, entryCount++\r\n ) {\r\n var fieldTag = this.getBytes(2, i);\r\n var fieldType = this.getBytes(2, i + 2);\r\n var typeCount = this.getBytes(4, i + 4);\r\n var valueOffset = this.getBytes(4, i + 8);\r\n\r\n var fieldTagName = this.getFieldTagName(fieldTag);\r\n var fieldTypeName = this.getFieldTypeName(fieldType);\r\n\r\n var fieldValues = this.getFieldValues(\r\n fieldTagName,\r\n fieldTypeName,\r\n typeCount,\r\n valueOffset\r\n );\r\n\r\n tiffFields[fieldTagName] = { type: fieldTypeName, values: fieldValues };\r\n }\r\n\r\n this.fileDirectories.push(tiffFields);\r\n\r\n var nextIFDByteOffset = this.getBytes(4, i);\r\n\r\n if (nextIFDByteOffset === 0x00000000) {\r\n return this.fileDirectories;\r\n } else {\r\n return this.parseFileDirectory(nextIFDByteOffset);\r\n }\r\n },\r\n\r\n parseTIFF: function (tiffArrayBuffer, canvas) {\r\n canvas = canvas || document.createElement('canvas');\r\n\r\n console.log(tiffArrayBuffer);\r\n\r\n this.tiffDataView = new DataView(tiffArrayBuffer);\r\n this.canvas = canvas;\r\n\r\n this.littleEndian = this.isLittleEndian(this.tiffDataView);\r\n\r\n if (!this.hasTowel(this.tiffDataView, this.littleEndian)) {\r\n return;\r\n }\r\n\r\n var firstIFDByteOffset = this.getBytes(4, 4);\r\n\r\n this.fileDirectories = this.parseFileDirectory(firstIFDByteOffset);\r\n\r\n var fileDirectory = this.fileDirectories[0];\r\n\r\n console.log(fileDirectory);\r\n\r\n var imageWidth = fileDirectory.ImageWidth.values[0];\r\n var imageLength = fileDirectory.ImageLength.values[0];\r\n\r\n this.canvas.width = imageWidth;\r\n this.canvas.height = imageLength;\r\n\r\n var strips = [];\r\n\r\n var compression = fileDirectory.Compression\r\n ? fileDirectory.Compression.values[0]\r\n : 1;\r\n\r\n var samplesPerPixel = fileDirectory.SamplesPerPixel.values[0];\r\n\r\n var sampleProperties = [];\r\n\r\n var bitsPerPixel = 0;\r\n var hasBytesPerPixel = false;\r\n\r\n fileDirectory.BitsPerSample.values.forEach(function (\r\n bitsPerSample,\r\n i,\r\n bitsPerSampleValues\r\n ) {\r\n sampleProperties[i] = {\r\n bitsPerSample: bitsPerSample,\r\n hasBytesPerSample: false,\r\n bytesPerSample: undefined,\r\n };\r\n\r\n if (bitsPerSample % 8 === 0) {\r\n sampleProperties[i].hasBytesPerSample = true;\r\n sampleProperties[i].bytesPerSample = bitsPerSample / 8;\r\n }\r\n\r\n bitsPerPixel += bitsPerSample;\r\n },\r\n this);\r\n\r\n if (bitsPerPixel % 8 === 0) {\r\n hasBytesPerPixel = true;\r\n var bytesPerPixel = bitsPerPixel / 8;\r\n }\r\n\r\n var stripOffsetValues = fileDirectory.StripOffsets.values;\r\n var numStripOffsetValues = stripOffsetValues.length;\r\n\r\n // StripByteCounts is supposed to be required, but see if we can recover anyway.\r\n if (fileDirectory.StripByteCounts) {\r\n var stripByteCountValues = fileDirectory.StripByteCounts.values;\r\n } else {\r\n console.log('Missing StripByteCounts!');\r\n\r\n // Infer StripByteCounts, if possible.\r\n if (numStripOffsetValues === 1) {\r\n var stripByteCountValues = [\r\n Math.ceil((imageWidth * imageLength * bitsPerPixel) / 8),\r\n ];\r\n } else {\r\n throw Error('Cannot recover from missing StripByteCounts');\r\n }\r\n }\r\n\r\n // Loop through strips and decompress as necessary.\r\n for (var i = 0; i < numStripOffsetValues; i++) {\r\n var stripOffset = stripOffsetValues[i];\r\n strips[i] = [];\r\n\r\n var stripByteCount = stripByteCountValues[i];\r\n\r\n // Loop through pixels.\r\n for (\r\n var byteOffset = 0,\r\n bitOffset = 0,\r\n jIncrement = 1,\r\n getHeader = true,\r\n pixel = [],\r\n numBytes = 0,\r\n sample = 0,\r\n currentSample = 0;\r\n byteOffset < stripByteCount;\r\n byteOffset += jIncrement\r\n ) {\r\n // Decompress strip.\r\n switch (compression) {\r\n // Uncompressed\r\n case 1:\r\n // Loop through samples (sub-pixels).\r\n for (var m = 0, pixel = []; m < samplesPerPixel; m++) {\r\n if (sampleProperties[m].hasBytesPerSample) {\r\n // XXX: This is wrong!\r\n var sampleOffset = sampleProperties[m].bytesPerSample * m;\r\n\r\n pixel.push(\r\n this.getBytes(\r\n sampleProperties[m].bytesPerSample,\r\n stripOffset + byteOffset + sampleOffset\r\n )\r\n );\r\n } else {\r\n var sampleInfo = this.getBits(\r\n sampleProperties[m].bitsPerSample,\r\n stripOffset + byteOffset,\r\n bitOffset\r\n );\r\n\r\n pixel.push(sampleInfo.bits);\r\n\r\n byteOffset = sampleInfo.byteOffset - stripOffset;\r\n bitOffset = sampleInfo.bitOffset;\r\n\r\n throw RangeError('Cannot handle sub-byte bits per sample');\r\n }\r\n }\r\n\r\n strips[i].push(pixel);\r\n\r\n if (hasBytesPerPixel) {\r\n jIncrement = bytesPerPixel;\r\n } else {\r\n jIncrement = 0;\r\n\r\n throw RangeError('Cannot handle sub-byte bits per pixel');\r\n }\r\n break;\r\n\r\n // CITT Group 3 1-Dimensional Modified Huffman run-length encoding\r\n case 2:\r\n // XXX: Use PDF.js code?\r\n break;\r\n\r\n // Group 3 Fax\r\n case 3:\r\n // XXX: Use PDF.js code?\r\n break;\r\n\r\n // Group 4 Fax\r\n case 4:\r\n // XXX: Use PDF.js code?\r\n break;\r\n\r\n // LZW\r\n case 5:\r\n // XXX: Use PDF.js code?\r\n break;\r\n\r\n // Old-style JPEG (TIFF 6.0)\r\n case 6:\r\n // XXX: Use PDF.js code?\r\n break;\r\n\r\n // New-style JPEG (TIFF Specification Supplement 2)\r\n case 7:\r\n // XXX: Use PDF.js code?\r\n break;\r\n\r\n // PackBits\r\n case 32773:\r\n // Are we ready for a new block?\r\n if (getHeader) {\r\n getHeader = false;\r\n\r\n var blockLength = 1;\r\n var iterations = 1;\r\n\r\n // The header byte is signed.\r\n var header = this.tiffDataView.getInt8(\r\n stripOffset + byteOffset,\r\n this.littleEndian\r\n );\r\n\r\n if (header >= 0 && header <= 127) {\r\n // Normal pixels.\r\n blockLength = header + 1;\r\n } else if (header >= -127 && header <= -1) {\r\n // Collapsed pixels.\r\n iterations = -header + 1;\r\n } /*if (header === -128)*/ else {\r\n // Placeholder byte?\r\n getHeader = true;\r\n }\r\n } else {\r\n var currentByte = this.getBytes(1, stripOffset + byteOffset);\r\n\r\n // Duplicate bytes, if necessary.\r\n for (var m = 0; m < iterations; m++) {\r\n if (sampleProperties[sample].hasBytesPerSample) {\r\n // We're reading one byte at a time, so we need to handle multi-byte samples.\r\n currentSample =\r\n (currentSample << (8 * numBytes)) | currentByte;\r\n numBytes++;\r\n\r\n // Is our sample complete?\r\n if (numBytes === sampleProperties[sample].bytesPerSample) {\r\n pixel.push(currentSample);\r\n currentSample = numBytes = 0;\r\n sample++;\r\n }\r\n } else {\r\n throw RangeError('Cannot handle sub-byte bits per sample');\r\n }\r\n\r\n // Is our pixel complete?\r\n if (sample === samplesPerPixel) {\r\n strips[i].push(pixel);\r\n\r\n pixel = [];\r\n sample = 0;\r\n }\r\n }\r\n\r\n blockLength--;\r\n\r\n // Is our block complete?\r\n if (blockLength === 0) {\r\n getHeader = true;\r\n }\r\n }\r\n\r\n jIncrement = 1;\r\n break;\r\n\r\n // Unknown compression algorithm\r\n default:\r\n // Do not attempt to parse the image data.\r\n break;\r\n }\r\n }\r\n\r\n //\t\t\tconsole.log( strips[i] );\r\n }\r\n\r\n //\t\tconsole.log( strips );\r\n\r\n if (canvas.getContext) {\r\n var ctx = this.canvas.getContext('2d');\r\n\r\n // Set a default fill style.\r\n ctx.fillStyle = this.makeRGBAFillValue(255, 255, 255, 0);\r\n\r\n // If RowsPerStrip is missing, the whole image is in one strip.\r\n if (fileDirectory.RowsPerStrip) {\r\n var rowsPerStrip = fileDirectory.RowsPerStrip.values[0];\r\n } else {\r\n var rowsPerStrip = imageLength;\r\n }\r\n\r\n var numStrips = strips.length;\r\n\r\n var imageLengthModRowsPerStrip = imageLength % rowsPerStrip;\r\n var rowsInLastStrip =\r\n imageLengthModRowsPerStrip === 0\r\n ? rowsPerStrip\r\n : imageLengthModRowsPerStrip;\r\n\r\n var numRowsInStrip = rowsPerStrip;\r\n var numRowsInPreviousStrip = 0;\r\n\r\n var photometricInterpretation =\r\n fileDirectory.PhotometricInterpretation.values[0];\r\n\r\n var extraSamplesValues = [];\r\n var numExtraSamples = 0;\r\n\r\n if (fileDirectory.ExtraSamples) {\r\n extraSamplesValues = fileDirectory.ExtraSamples.values;\r\n numExtraSamples = extraSamplesValues.length;\r\n }\r\n\r\n if (fileDirectory.ColorMap) {\r\n var colorMapValues = fileDirectory.ColorMap.values;\r\n var colorMapSampleSize = Math.pow(2, sampleProperties[0].bitsPerSample);\r\n }\r\n\r\n // Loop through the strips in the image.\r\n for (var i = 0; i < numStrips; i++) {\r\n // The last strip may be short.\r\n if (i + 1 === numStrips) {\r\n numRowsInStrip = rowsInLastStrip;\r\n }\r\n\r\n var numPixels = strips[i].length;\r\n var yPadding = numRowsInPreviousStrip * i;\r\n\r\n // Loop through the rows in the strip.\r\n for (var y = 0, j = 0; y < numRowsInStrip, j < numPixels; y++) {\r\n // Loop through the pixels in the row.\r\n for (var x = 0; x < imageWidth; x++, j++) {\r\n var pixelSamples = strips[i][j];\r\n\r\n var red = 0;\r\n var green = 0;\r\n var blue = 0;\r\n var opacity = 1.0;\r\n\r\n if (numExtraSamples > 0) {\r\n for (var k = 0; k < numExtraSamples; k++) {\r\n if (\r\n extraSamplesValues[k] === 1 ||\r\n extraSamplesValues[k] === 2\r\n ) {\r\n // Clamp opacity to the range [0,1].\r\n opacity = pixelSamples[3 + k] / 256;\r\n\r\n break;\r\n }\r\n }\r\n }\r\n\r\n switch (photometricInterpretation) {\r\n // Bilevel or Grayscale\r\n // WhiteIsZero\r\n case 0:\r\n if (sampleProperties[0].hasBytesPerSample) {\r\n var invertValue = Math.pow(\r\n 0x10,\r\n sampleProperties[0].bytesPerSample * 2\r\n );\r\n }\r\n\r\n // Invert samples.\r\n pixelSamples.forEach(function (sample, index, samples) {\r\n samples[index] = invertValue - sample;\r\n });\r\n\r\n // Bilevel or Grayscale\r\n // BlackIsZero\r\n case 1:\r\n red =\r\n green =\r\n blue =\r\n this.clampColorSample(\r\n pixelSamples[0],\r\n sampleProperties[0].bitsPerSample\r\n );\r\n break;\r\n\r\n // RGB Full Color\r\n case 2:\r\n red = this.clampColorSample(\r\n pixelSamples[0],\r\n sampleProperties[0].bitsPerSample\r\n );\r\n green = this.clampColorSample(\r\n pixelSamples[1],\r\n sampleProperties[1].bitsPerSample\r\n );\r\n blue = this.clampColorSample(\r\n pixelSamples[2],\r\n sampleProperties[2].bitsPerSample\r\n );\r\n break;\r\n\r\n // RGB Color Palette\r\n case 3:\r\n if (colorMapValues === undefined) {\r\n throw Error('Palette image missing color map');\r\n }\r\n\r\n var colorMapIndex = pixelSamples[0];\r\n\r\n red = this.clampColorSample(colorMapValues[colorMapIndex], 16);\r\n green = this.clampColorSample(\r\n colorMapValues[colorMapSampleSize + colorMapIndex],\r\n 16\r\n );\r\n blue = this.clampColorSample(\r\n colorMapValues[2 * colorMapSampleSize + colorMapIndex],\r\n 16\r\n );\r\n break;\r\n\r\n // Transparency mask\r\n case 4:\r\n throw RangeError('Not Yet Implemented: Transparency mask');\r\n break;\r\n\r\n // CMYK\r\n case 5:\r\n throw RangeError('Not Yet Implemented: CMYK');\r\n break;\r\n\r\n // YCbCr\r\n case 6:\r\n throw RangeError('Not Yet Implemented: YCbCr');\r\n break;\r\n\r\n // CIELab\r\n case 8:\r\n throw RangeError('Not Yet Implemented: CIELab');\r\n break;\r\n\r\n // Unknown Photometric Interpretation\r\n default:\r\n throw RangeError(\r\n 'Unknown Photometric Interpretation:',\r\n photometricInterpretation\r\n );\r\n break;\r\n }\r\n\r\n ctx.fillStyle = this.makeRGBAFillValue(red, green, blue, opacity);\r\n ctx.fillRect(x, yPadding + y, 1, 1);\r\n }\r\n }\r\n\r\n numRowsInPreviousStrip = numRowsInStrip;\r\n }\r\n }\r\n\r\n /*\t\tfor (var i = 0, numFileDirectories = this.fileDirectories.length; i < numFileDirectories; i++) {\r\n // Stuff\r\n }*/\r\n\r\n return this.canvas;\r\n },\r\n};\r\n","import { StateCreator } from 'zustand';\r\nimport { TIFFParser } from '../../loaders/tiffParser';\r\nimport { use3dddPlus } from '..';\r\nimport { fabric } from 'fabric';\r\n\r\n// import ImageTracer from 'imagetracerjs';\r\n// import { optionpresets } from '../../data';\r\n\r\n// import * as pdfjsLib from 'pdfjs-dist/build/pdf';\r\n// pdfjsLib.GlobalWorkerOptions.workerSrc = `//cdnjs.cloudflare.com/ajax/libs/pdf.js/${pdfjsLib.version}/pdf.worker.js`;\r\n//@ts-ignore\r\nimport * as pdfjsLib from 'pdfjs-dist/webpack';\r\nimport { requests } from '../../axios/index';\r\n// import { PopUpCanvas } from '../../components/canvas/popUpCanvas';\r\n\r\nexport interface ConverterSlice {\r\n fillColor: string[];\r\n pdfConverter: (data: any) => void;\r\n convertPdfToImages: (buffer: any) => any;\r\n tiffConvert: (data: any) => void;\r\n aiConvert: (data: any) => any;\r\n loadImageFromURL: (\r\n data: any,\r\n canvasToLoad: fabric.Canvas,\r\n createCheckerBox?: boolean\r\n ) => any;\r\n loadDesignConcept: (data: any) => any;\r\n imageToSVG: (\r\n data: any,\r\n ext: string,\r\n isSVG?: boolean,\r\n convert?: boolean\r\n ) => void;\r\n\r\n removeDuplicates: (arr: any) => void;\r\n RGBToHex: (rgb: any) => void;\r\n changeSVGColor: (property: any, color: any) => boolean;\r\n setFile: (file: any) => void;\r\n file: any;\r\n addText: () => void;\r\n refreshColor: (colorValue: number) => void;\r\n processImage: (\r\n svgstr: any,\r\n colorValue: number,\r\n canvasToLoad: fabric.Canvas,\r\n addCheckerBox?: boolean\r\n ) => void;\r\n}\r\n\r\nexport const converterSlice: StateCreator<ConverterSlice> = (set, get) => {\r\n const processImage = (\r\n svgstr: any,\r\n colorValue: number,\r\n canvasToLoad: fabric.Canvas = use3dddPlus.getState().popupCanv,\r\n addCheckerBox = true\r\n ) => {\r\n\r\n fabric.loadSVGFromString(\r\n //@ts-ignore\r\n new String(svgstr),\r\n function (objects, options) {\r\n const svgData = getDesignConceptSVGData(svgstr);\r\n let loadedObject: any = fabric.util.groupSVGElements(objects, options);\r\n console.log(\"SVG DATA--->\", svgData);\r\n svgData.forEach((resItem) => {\r\n var path;\r\n var node;\r\n\r\n objects?.forEach((item) => {\r\n //@ts-ignore\r\n if (item.id === resItem.path) {\r\n path = item;\r\n //@ts-ignore\r\n } else if (item.id === resItem.element) {\r\n node = item;\r\n }\r\n });\r\n if (node && path) {\r\n const fontSize = resItem.node.children[0]\r\n ?.getAttribute('font-size')\r\n ?.replace('px', '');\r\n node.set({\r\n path: path,\r\n top: path.top,\r\n left: path.left,\r\n textAlign: 'center',\r\n pathStartOffset:\r\n (path.width *\r\n parseFloat(resItem.node.startOffset.baseVal.valueAsString)) /\r\n 100,\r\n // fontFamily: resItem.node.children[0].getAttribute(\"font-family\"),\r\n fontSize: fontSize || 25,\r\n });\r\n node.setCoords();\r\n }\r\n });\r\n const canvas = canvasToLoad ?? use3dddPlus.getState().popupCanv;\r\n const canvasWidth = canvas.width;\r\n const canvasHeight = canvas.height;\r\n\r\n let val = 300;\r\n if (\r\n (loadedObject.width <= 200 || loadedObject.height <= 200) &&\r\n (loadedObject.minX === -0 || loadedObject.minX)\r\n ) {\r\n val = 600;\r\n }\r\n if (\r\n Math.ceil(loadedObject.width + loadedObject.left + 45) >=\r\n Math.floor(canvasWidth)\r\n ) {\r\n loadedObject.scaleToWidth(val);\r\n } else if (\r\n Math.ceil(loadedObject.height + loadedObject.top + 10) >=\r\n Math.floor(canvasHeight)\r\n ) {\r\n loadedObject.scaleToHeight(val);\r\n } else if (Math.ceil(loadedObject.left) < 0) {\r\n loadedObject.scaleToWidth(val);\r\n } else if (Math.ceil(loadedObject.top) < 0) {\r\n loadedObject.scaleToHeight(val);\r\n } else if (loadedObject.width < 200 || loadedObject.height < 200) {\r\n loadedObject.scaleToWidth(val);\r\n }\r\n //@ts-ignore\r\n let objImage = loadedObject?._objects;\r\n if (!objImage) {\r\n objImage = [loadedObject];\r\n }\r\n let _Fills = [];\r\n let fillCounts = {};\r\n let colorObjects = {};\r\n if (objImage) {\r\n objImage.forEach((ele: any) => {\r\n ele.set({ strokeWidth: 0 });\r\n ele.set({ id: ele.id ?? use3dddPlus.getState().guid() });\r\n if (typeof ele.fill === 'string' && ele.fill !== '') {\r\n set({ fillColor: [...ele.fill] });\r\n let fillColor = ele.fill.toString();\r\n const pixelCount = ele.width * ele.height;\r\n fillCounts[fillColor] = (fillCounts[fillColor] || 0) + pixelCount;\r\n if (colorObjects[fillColor]) {\r\n colorObjects[fillColor].objects.push(ele.get('id'));\r\n } else {\r\n colorObjects[fillColor] = { objects: [ele.get('id')] };\r\n }\r\n }\r\n });\r\n }\r\n use3dddPlus.setState({ loadedObject: objImage });\r\n const sortedFillColors = Object.keys(fillCounts).sort(\r\n (a, b) => fillCounts[b] - fillCounts[a]\r\n );\r\n const topColors = sortedFillColors.slice(0, colorValue);\r\n let colorObjectsHex = {};\r\n topColors.map((e) => {\r\n if (e.search('#') === -1) {\r\n let _C: any = get().RGBToHex(e);\r\n _Fills.push(_C);\r\n colorObjects[e].hex = _C;\r\n colorObjectsHex[_C] = colorObjects[e];\r\n } else {\r\n _Fills.push(e);\r\n colorObjects[e].hex = e;\r\n colorObjectsHex[e] = colorObjects[e];\r\n }\r\n });\r\n //@ts-ignore\r\n set({ fillColor: get().removeDuplicates(_Fills) });\r\n //@ts-ignore\r\n _Fills = get().removeDuplicates(_Fills);\r\n const fillColors = {};\r\n _Fills.map((item, index) => {\r\n fillColors['layer' + index] = item;\r\n });\r\n use3dddPlus.setState({ colorFill: fillColors });\r\n\r\n // Update colors in default color fill\r\n const defaultCF = [];\r\n Object.keys(fillColors).map((cf: any) => {\r\n defaultCF.push({\r\n property: cf,\r\n default: fillColors[cf],\r\n updated: fillColors[cf],\r\n objects: colorObjectsHex[fillColors[cf]].objects,\r\n });\r\n });\r\n use3dddPlus.setState({ defaultColorFill: defaultCF });\r\n use3dddPlus.setState({ defaultColorFillCopy: defaultCF });\r\n\r\n function euclideanDistance(color1: string, color2: string): number {\r\n const c1 = new fabric.Color(color1).getSource();\r\n const c2 = new fabric.Color(color2).getSource();\r\n\r\n const diffR = c1[0] - c2[0];\r\n const diffG = c1[1] - c2[1];\r\n const diffB = c1[2] - c2[2];\r\n\r\n return Math.sqrt(diffR ** 2 + diffG ** 2 + diffB ** 2);\r\n }\r\n const colorMap: { [color: string]: string } = {};\r\n sortedFillColors.forEach((color) => {\r\n const closestColor = topColors.reduce((prev, curr) => {\r\n const prevDiff = euclideanDistance(color, prev);\r\n const currDiff = euclideanDistance(color, curr);\r\n return prevDiff < currDiff ? prev : curr;\r\n });\r\n colorMap[color] = closestColor;\r\n });\r\n if (objImage) {\r\n objImage.forEach((ele: any) => {\r\n ele.set({ fill: colorMap[ele.fill.toString()] });\r\n });\r\n }\r\n if (addCheckerBox) {\r\n loadedObject.set({\r\n colorFill: fillColors,\r\n lockMovementX: false,\r\n lockMovementY: false,\r\n })\r\n } else {\r\n loadedObject.set({\r\n colorFill: fillColors,\r\n lockMovementX: true,\r\n lockMovementY: true,\r\n //@ts-ignore\r\n // setControlVisible: true,\r\n });\r\n }\r\n // loadedObject.id = use3dddPlus.getState().guid();\r\n\r\n // loadedObject = new fabric.Group(objImage, options);\r\n use3dddPlus.getState().popupCanv?.clear();\r\n var gridSize = 83; // Size of each grid cell\r\n var numCols = Math.ceil(canvasWidth / gridSize);\r\n var numRows = Math.ceil(canvasHeight / gridSize);\r\n\r\n // Function to create a rectangle with checkerboard pattern\r\n function createCheckerboardRect(left, top, width, height, isEvenRow) {\r\n var rect = new fabric.Rect({\r\n left: left,\r\n top: top,\r\n width: width,\r\n height: height,\r\n type: 'line',\r\n lockMovementX: true,\r\n lockMovementY: true,\r\n lockScalingX: true,\r\n lockScalingY: true,\r\n // backgroundColor:'#ccc',\r\n fill:\r\n (isEvenRow && (left / gridSize) % 2 === 0) ||\r\n (!isEvenRow && (left / gridSize) % 2 !== 0)\r\n ? '#ffffff'\r\n : '#dadadac7',\r\n });\r\n return rect;\r\n }\r\n\r\n if (addCheckerBox) {\r\n // Create grid lines\r\n for (var i = 0; i < numCols; i++) {\r\n var x = i * gridSize;\r\n canvas.add(\r\n new fabric.Line([x, 0, x, canvasHeight], {\r\n stroke: '#dadadac7',\r\n selectable: false,\r\n lockMovementX: true,\r\n lockMovementY: true,\r\n lockScalingX: true,\r\n lockScalingY: true,\r\n type: 'line',\r\n })\r\n );\r\n }\r\n\r\n for (var j = 0; j < numRows; j++) {\r\n var y = j * gridSize;\r\n canvas.add(\r\n new fabric.Line([0, y, canvasWidth, y], {\r\n stroke: '#FFFFFF',\r\n selectable: false,\r\n lockMovementX: true,\r\n lockMovementY: true,\r\n lockScalingX: true,\r\n lockScalingY: true,\r\n type: 'line',\r\n })\r\n );\r\n }\r\n\r\n // Fill grid with checkerboard pattern\r\n for (var i = 0; i < numCols; i++) {\r\n for (var j = 0; j < numRows; j++) {\r\n var left = i * gridSize;\r\n var top = j * gridSize;\r\n var isEvenRow = j % 2 === 0;\r\n var rect = createCheckerboardRect(\r\n left,\r\n top,\r\n gridSize,\r\n gridSize,\r\n isEvenRow\r\n );\r\n use3dddPlus.getState()?.popupCanv?.add(rect);\r\n }\r\n }\r\n }\r\n\r\n canvas.add(loadedObject).renderAll();\r\n canvas.centerObject(loadedObject);\r\n canvas.setActiveObject(loadedObject);\r\n\r\n use3dddPlus.setState({ activeSelection: loadedObject });\r\n\r\n use3dddPlus.setState({ loading: false });\r\n use3dddPlus.getState().popUpCanvasUpdateModification(true);\r\n if (addCheckerBox) {\r\n let _objects = canvas.getObjects();\r\n _objects.forEach((element) => {\r\n if (element.type !== 'line') {\r\n element.set({\r\n perPixelTargetFind: true,\r\n });\r\n }\r\n });\r\n canvas.discardActiveObject();\r\n }\r\n }\r\n );\r\n };\r\n // IF REQURIED RE-USE IN FUTURE\r\n /* const checkFontAvailability = (fontFamily) => {\r\n const testElement = document.createElement('div');\r\n testElement.style.fontFamily = fontFamily;\r\n testElement.style.position = 'absolute';\r\n testElement.style.left = '-9999px';\r\n testElement.textContent = 'Sample text';\r\n document.body.appendChild(testElement);\r\n \r\n const computedFont = window.getComputedStyle(testElement).fontFamily;\r\n document.body.removeChild(testElement);\r\n \r\n return computedFont.includes(fontFamily);\r\n };*/\r\n\r\n const getDesignConceptSVGData = (svgData) => {\r\n const parser = new DOMParser();\r\n const xmlDoc = parser.parseFromString(svgData, 'image/svg+xml');\r\n const textElements = xmlDoc.querySelectorAll('textPath');\r\n const href = [];\r\n // const availableFonts = [];\r\n // const paths = xmlDoc.querySelectorAll('text');\r\n\r\n /*paths.forEach((path) => {\r\n const fontFamily = path.style.fontFamily;\r\n console.log('fontFamily:', fontFamily); \r\n if (fontFamily) {\r\n const isFontAvailable = checkFontAvailability(fontFamily);\r\n availableFonts.push({\r\n font:\"${fontFamily}\"\r\n })\r\n console.log(`Is the font \"${fontFamily}\" loaded?`, isFontAvailable);\r\n if(!isFontAvailable)use3dddPlus.getState().toastMessages.fontsNotAvailable();\r\n }else{\r\n use3dddPlus.getState().toastMessages.fontsNotAvailable();\r\n }\r\n });*/\r\n\r\n textElements.forEach((textElement) => {\r\n const hrefValue = textElement?.getAttribute('xlink:href') ?? textElement?.getAttribute('href');\r\n if (hrefValue) {\r\n href.push({\r\n path: hrefValue.replace('#', ''),\r\n //@ts-ignore\r\n element: textElement?.parentNode?.id,\r\n node: textElement,\r\n });\r\n }\r\n });\r\n\r\n // return { href, availableFonts }; \r\n return href;\r\n };\r\n\r\n\r\n return {\r\n fillColor: [],\r\n file: {},\r\n setFile: (file) => {\r\n set({ file });\r\n },\r\n processImage: processImage,\r\n tiffConvert: async (data) => {\r\n const tiffParser = new TIFFParser();\r\n const canvasEl = document.createElement('canvas');\r\n canvasEl.width = 800;\r\n canvasEl.height = 800;\r\n const arrayBuffer = await data.arrayBuffer();\r\n var tiffCanvas = tiffParser.parseTIFF(arrayBuffer, canvasEl);\r\n const imageUrl = tiffCanvas.toDataURL();\r\n return imageUrl;\r\n },\r\n aiConvert: async (aiFile) => {\r\n const formData = new FormData();\r\n formData.append('file', aiFile);\r\n const url = process.env.REACT_APP_MAGENTO_URL + '/rest/V1/file-conversion';\r\n const config = {\r\n headers: {\r\n Authorization: `Bearer ${process.env.REACT_APP_MAGENTO_TOKEN}`,\r\n 'Content-Type': 'multipart/form-data',\r\n },\r\n };\r\n const response = await requests.post(url, formData, config);\r\n return response;\r\n },\r\n // @ts-ignore\r\n loadImageFromURL: async (url, canvasToLoad, createCheckerBox) => {\r\n const response = await fetch(url);\r\n const blob = await response.text();\r\n get().loadDesignConcept(blob);\r\n },\r\n\r\n loadDesignConcept: (svgstr) => {\r\n fabric.loadSVGFromString(\r\n //@ts-ignore\r\n new String(svgstr),\r\n function (objects, options) {\r\n const svgData = getDesignConceptSVGData(svgstr);\r\n let loadedObject: any = fabric.util.groupSVGElements(objects, options);\r\n loadedObject.scaleToWidth(400);\r\n loadedObject.scaleToHeight(400);\r\n svgData.forEach((resItem) => {\r\n var path;\r\n var node;\r\n\r\n objects?.forEach((item) => {\r\n //@ts-ignore\r\n if (item.id === resItem.path) {\r\n path = item;\r\n //@ts-ignore\r\n } else if (item.id === resItem.element) {\r\n node = item;\r\n }\r\n });\r\n if (node && path) {\r\n const fontSize = resItem.node.children[0]\r\n ?.getAttribute('font-size')\r\n ?.replace('px', '');\r\n node.set({\r\n path: path,\r\n top: path.top,\r\n left: path.left,\r\n textAlign: 'center',\r\n pathStartOffset:\r\n (path.width *\r\n parseFloat(resItem.node.startOffset.baseVal.valueAsString)) /\r\n 100,\r\n // fontFamily: resItem.node.children[0].getAttribute(\"font-family\"),\r\n fontSize: fontSize || 25,\r\n });\r\n node.setCoords();\r\n }\r\n });\r\n\r\n let objImage = [];\r\n let _Fills = [];\r\n //@ts-ignore\r\n if (loadedObject && loadedObject._objects) {\r\n //@ts-ignore\r\n objImage = loadedObject._objects;\r\n objImage.forEach((ele) => {\r\n ele.set({ strokeWidth: 0 });\r\n use3dddPlus.setState({ fillColor: [...ele.fill] });\r\n _Fills.push(ele.fill);\r\n });\r\n } else {\r\n //@ts-ignore\r\n objImage = loadedObject;\r\n //@ts-ignore\r\n objImage.set({ strokeWidth: 0 });\r\n //@ts-ignore\r\n use3dddPlus.setState({ fillColor: [...objImage.fill] });\r\n _Fills.push(objImage.fill);\r\n }\r\n use3dddPlus.setState({\r\n //@ts-ignore\r\n fillColor: use3dddPlus.getState().removeDuplicates(_Fills),\r\n });\r\n //@ts-ignore\r\n _Fills = use3dddPlus.getState().removeDuplicates(_Fills);\r\n const fillColors = {};\r\n _Fills.map((item, index) => {\r\n fillColors['layer' + index] = item;\r\n });\r\n use3dddPlus.setState({ colorFill: fillColors });\r\n loadedObject.set({\r\n //@ts-ignore\r\n colorFill: fillColors,\r\n });\r\n\r\n const ungroup = (object) => {\r\n object.toObject = (function (toObject) {\r\n return function () {\r\n return fabric.util.object.extend(toObject.call(this), {\r\n objects: this._objects.map((obj) => obj.toObject()),\r\n });\r\n };\r\n })(object.toObject);\r\n const items = object._objects;\r\n object._restoreObjectsState();\r\n use3dddPlus.getState().fabricCanvas.remove(object);\r\n\r\n items.forEach(function (item) {\r\n if (item.id.length < 15) {\r\n use3dddPlus.getState().fabricCanvas.add(item);\r\n use3dddPlus.getState().fabricCanvas.setActiveObject(item);\r\n use3dddPlus.setState({ activeSelection: item });\r\n use3dddPlus.getState().forStoringAllObject(item);\r\n use3dddPlus.getState()\r\n .fabricCanvas.getActiveObject()\r\n .toDataURL(function () { });\r\n use3dddPlus.getState().forIconCapture();\r\n item.icon = use3dddPlus.getState().iconImage;\r\n use3dddPlus.getState().updateModifaction(true);\r\n } else {\r\n use3dddPlus.getState().fabricCanvas.remove(item);\r\n }\r\n });\r\n };\r\n use3dddPlus.getState().fabricCanvas.centerObject(loadedObject);\r\n ungroup(loadedObject);\r\n use3dddPlus.setState({ loading: false });\r\n }\r\n );\r\n },\r\n\r\n imageToSVG: (data, ext: string, isSVG = false, convert = true) => {\r\n use3dddPlus.setState({ loading: true });\r\n if (convert) {\r\n if (isSVG) {\r\n if (ext === 'vectorSVG') {\r\n use3dddPlus.setState({ loading: true });\r\n use3dddPlus.setState({ imageData: data });\r\n processImage(data, 8);\r\n } else {\r\n var reader = new FileReader();\r\n reader.onload = function (e) {\r\n use3dddPlus.setState({ imageData: e.target.result });\r\n processImage(e.target.result, 8);\r\n };\r\n reader.readAsText(data);\r\n }\r\n }\r\n } else {\r\n processImage(data, 8);\r\n }\r\n },\r\n refreshColor: (colorValue: number) => {\r\n processImage(use3dddPlus.getState().imageData, colorValue);\r\n },\r\n removeDuplicates: (arr) => {\r\n return arr.filter((item: any, index: any) => arr.indexOf(item) === index);\r\n },\r\n\r\n RGBToHex: (rgb) => {\r\n if (rgb) {\r\n if (rgb.indexOf('rgba') >= 0) {\r\n const rgba = rgb.replace(/^rgba?\\(|\\s+|\\)$/g, '').split(',');\r\n return `#${(\r\n (1 << 24) +\r\n (parseInt(rgba[0]) << 16) +\r\n (parseInt(rgba[1]) << 8) +\r\n parseInt(rgba[2])\r\n )\r\n .toString(16)\r\n .slice(1)}`;\r\n } else {\r\n let sep = rgb.indexOf(',') > -1 ? ',' : ' ';\r\n rgb = rgb.substr(4).split(')')[0].split(sep);\r\n let r = (+rgb[0]).toString(16),\r\n g = (+rgb[1]).toString(16),\r\n b = (+rgb[2]).toString(16);\r\n\r\n if (r.length == 1) r = '0' + r;\r\n if (g.length == 1) g = '0' + g;\r\n if (b.length == 1) b = '0' + b;\r\n return '#' + r + g + b;\r\n }\r\n } else {\r\n return '';\r\n }\r\n },\r\n changeSVGColor: (property, color) => {\r\n use3dddPlus.getState().popUpCanvasUpdateModification(true);\r\n const fillColor = { ...use3dddPlus.getState().colorFill };\r\n if (use3dddPlus.getState().loadedObject) {\r\n // let objImage1 = use3dddPlus.getState().popupCanv.getObjects();\r\n let objImage = use3dddPlus.getState().popupCanv.getObjects();\r\n if (objImage.length > 0) {\r\n objImage.forEach((ele: any) => {\r\n let defaultColorObject = null;\r\n if (use3dddPlus.getState().defaultColorFill) {\r\n defaultColorObject = use3dddPlus\r\n .getState()\r\n .defaultColorFill.find((dcf) => dcf.property === property);\r\n }\r\n if (\r\n ele.id &&\r\n defaultColorObject &&\r\n defaultColorObject.objects &&\r\n defaultColorObject.objects.includes(ele.id) &&\r\n typeof ele.fill === 'string' &&\r\n ele.fill !== ''\r\n ) {\r\n // const _C = (ele.fill === 'transparent' || (typeof ele.fill === 'string' && ele.fill.includes('#')) ? ele.fill : get().RGBToHex(ele.fill));\r\n // if (_C === previousColor) {\r\n ele.set({\r\n fill: color,\r\n });\r\n // }\r\n }\r\n\r\n // if(typeof ele.fill === \"string\" && ele.fill !== \"\"){\r\n // const _C = (ele.fill === 'transparent' || (typeof ele.fill === 'string' && ele.fill.includes('#')) ? ele.fill : get().RGBToHex(ele.fill));\r\n // if (_C === previousColor) {\r\n // ele.set({\r\n // fill: color,\r\n // });\r\n // }\r\n // }\r\n });\r\n use3dddPlus.getState().popupCanv.renderAll();\r\n fillColor[property] = color;\r\n // Object.keys(fillColor).forEach((fc: any) => {\r\n // if(fillColor[fc] === previousColor){\r\n // fillColor[fc] = color;\r\n // }\r\n // });\r\n use3dddPlus.setState({ colorFill: fillColor });\r\n }\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n },\r\n addText: () => {\r\n fabric.Object.prototype.hasControls = true;\r\n fabric.Object.prototype.hasBorders = true;\r\n use3dddPlus.getState().fabricCanvas.discardActiveObject();\r\n const text: any = new fabric.Text('NEW TEXT', {\r\n lineHeight: 1,\r\n fill: '#040404',\r\n fontFamily: 'Athletic Block',\r\n fontWeight: 'normal',\r\n top: use3dddPlus.getState().fabricCanvas.height / 2 - 40,\r\n left: use3dddPlus.getState().fabricCanvas.width / 2 - 205,\r\n stroke: 'transparent',\r\n strokeWidth: 0,\r\n paintFirst: 'stroke',\r\n //charSpacing: 0,\r\n padding: 10,\r\n fontSize: 50,\r\n name: 'text',\r\n charSpacing: 0,\r\n lockScalingFlip: true,\r\n });\r\n const fillColors = { layer0: text.fill, layer1: text.stroke };\r\n text.set({\r\n //@ts-ignore\r\n colorFill: fillColors,\r\n });\r\n text.id = use3dddPlus.getState().guid();\r\n use3dddPlus.getState().fabricCanvas.centerObject(text);\r\n use3dddPlus.getState().fabricCanvas.add(text);\r\n use3dddPlus.getState().fabricCanvas.setActiveObject(text);\r\n use3dddPlus.setState({ currentSelection: 'text' });\r\n //@ts-ignore\r\n use3dddPlus.getState().deleteButtonControls(text);\r\n text.setControlsVisibility(use3dddPlus.getState().HideControls);\r\n use3dddPlus.getState().nameCounter++;\r\n use3dddPlus.getState().updateModifaction(true);\r\n use3dddPlus.getState().forStoringAllObject(text); //for pushing the data into array for layers\r\n // use3dddPlus.setState({storeAllObject : });\r\n use3dddPlus.getState().forIconCapture();\r\n //@ts-ignore\r\n text.icon = use3dddPlus.getState().iconImage;\r\n },\r\n pdfConverter: (data) => {\r\n return new Promise((_resolve, reject) => {\r\n if (data) {\r\n const reader = new FileReader();\r\n reader.onload = async () => {\r\n const buffer = reader.result;\r\n try {\r\n const _B = await get().convertPdfToImages(buffer);\r\n _resolve(_B);\r\n } catch (error) {\r\n reject(error);\r\n }\r\n };\r\n reader.readAsArrayBuffer(data);\r\n } else {\r\n reject(new Error('No data provided.'));\r\n }\r\n });\r\n },\r\n // convertPdfToImages: async (buffer: any) => {\r\n // const pdf = await pdfjsLib.getDocument({ data: new Uint8Array(buffer) })\r\n // .promise;\r\n // const scale = 2;\r\n // for (let pageNum = 1; pageNum <= pdf.numPages; pageNum++) {\r\n // const page = await pdf.getPage(pageNum);\r\n // const viewport = page.getViewport({ scale });\r\n // const canvasEl = document.createElement('canvas');\r\n // canvasEl.width = viewport.width;\r\n // canvasEl.height = viewport.height;\r\n // const context = canvasEl.getContext('2d');\r\n // await page.render({\r\n // canvasContext: context,\r\n // viewport,\r\n // background: 'rgba(0,0,0,0)',\r\n // }).promise;\r\n // const imageUrl = canvasEl.toDataURL();\r\n // return imageUrl;\r\n // }\r\n // return null;\r\n // },\r\n convertPdfToImages: async (file) => {\r\n const pdf = await pdfjsLib.getDocument(file).promise;\r\n const canvas = document.createElement('canvas');\r\n if (pdf.numPages >= 0) {\r\n const page = await pdf.getPage(1);\r\n const viewport = page.getViewport({ scale: 1 });\r\n const context = canvas.getContext('2d');\r\n canvas.height = viewport.height;\r\n canvas.width = viewport.width;\r\n await page.render({ canvasContext: context, viewport: viewport })\r\n .promise;\r\n }\r\n const imageUrl = canvas.toDataURL();\r\n return imageUrl;\r\n },\r\n };\r\n};\r\nexport default ConverterSlice;\r\n","import { create, StateCreator } from 'zustand';\r\nimport {\r\n // createJSONStorage,\r\n // persist,\r\n subscribeWithSelector,\r\n} from 'zustand/middleware';\r\nimport actionSlice, { ActionSlice } from './actions';\r\nimport lambdaSlice, { LambdaSlice } from './lambda/index';\r\nimport SaveDesignSlice, { saveDesignSlice } from './saveDesign';\r\nimport AuthSlice, { authSlice } from './auth';\r\nimport HistorySlice, { historySlice } from './history';\r\nimport FabricSlice, { fabricSlice } from './fabric';\r\nimport ConverterSlice, { converterSlice} from './converters';\r\nexport type ThreedddPlus = \r\n ActionSlice &\r\n LambdaSlice &\r\n SaveDesignSlice &\r\n AuthSlice &\r\n HistorySlice &\r\n ConverterSlice &\r\n FabricSlice;\r\n\r\nexport const threedddPlusState: StateCreator<ThreedddPlus> = (...args) => {\r\n return {\r\n ...actionSlice(...args),\r\n ...lambdaSlice(...args),\r\n ...saveDesignSlice(...args),\r\n ...authSlice(...args),\r\n ...historySlice(...args),\r\n ...converterSlice(...args),\r\n ...fabricSlice(...args)\r\n };\r\n};\r\n\r\nexport const use3dddPlus = create(\r\n // persist(\r\n subscribeWithSelector<ThreedddPlus>(threedddPlusState)\r\n // , {\r\n // name: 'editor-store', // unique name\r\n // storage: createJSONStorage(() => sessionStorage), // (optional) by default, 'localStorage' is used\r\n // }\r\n // )\r\n);\r\n\r\n(window as any).datasbase = use3dddPlus;\r\n","import React from \"react\";\r\n\r\nexport const Button = ({ label, icons, onClick, className, children }) => {\r\n return (\r\n <button\r\n onClick={onClick}\r\n className={`flex rounded-none gap-3 w-full items-center p-2 m-2 ${className}`}\r\n >\r\n {icons}\r\n {label}\r\n {children}\r\n </button>\r\n );\r\n};\r\n","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","export const PRIMARY_COLOR = 'text-[#cf132b]'; //rgb(30 58 138);\r\nexport const SECONDARY_COLOR = 'text-[#e11a38]'; //rgb(156 163 175);\r\nexport const BORDER_COLOR = 'border-[#e0e0e0]'; //rgb(156 163 175)\r\nexport const BORDER_COLOR_1 = 'border-[#ecebed]';\r\nexport const BORDER_COLOR_2 = 'border-[#c2c2c2]';\r\nexport const BORDER_COLOR_3 = 'border-[#e11a38]';\r\nexport const SIDEBAR_BG_COLOR = 'bg-[#f7f7f7]';\r\nexport const SELECT_BG_COLOR = 'bg-[#e11a38]'; //rgb(203 213 225)\r\nexport const BG_COLOR_1 = 'bg-[#e11a38]'; //rgb(203 213 225)\r\nexport const SELECT_TEXT_COLOR = 'text-white'\r\nexport const TEXT_SIZE_1 = 'text-xs'; //font-size: 12px (0.75rem)\r\nexport const TEXT_SIZE_2 = 'text-2xl'; //font-size: 24px; (1.5rem)\r\nexport const TEXT_SIZE_3 = 'text-[15px]';\r\nexport const TEXT_SIZE_4 = 'text-[17px]';\r\nexport const TEXT_SIZE_5 = 'text-[28px]';\r\nexport const TEXT_SIZE_6 = 'text-[14px]';\r\nexport const TEXT_SIZE_7 = 'text-[30px]';\r\nexport const TEXT_SIZE_8 = 'text-[21px]';\r\nexport const TEXT_SIZE_9 = 'text-[13px]';\r\nexport const TEXT_SIZE_11 = 'text-[18px]';\r\nexport const TEXT_SIZE_12 = 'text-[11px]';\r\nexport const TEXT_SIZE_13 = 'text-[12px]';\r\nexport const TEXT_SIZE_14 = 'text-[16px]';\r\nexport const TEXT_SIZE_15 = 'text-[25px]';\r\nexport const TEXT_SIZE_16 = 'text-[26px]';\r\nexport const TEXT_SIZE_17 = 'text-[22px]';\r\nexport const TEXT_SIZE_18 = 'text-[16px]';\r\nexport const ACTIVE_BG_COLOR = 'bg-[#cf132b]'; //rgb(30 58 138);\r\nexport const BUTTON_TEXT_COLOR = 'text-white';\r\nexport const BUTTON_BG_COLOR = 'bg-black'; //rgb(0 0 0)\r\nexport const INPUT_BG_COLOR = 'bg-white';\r\nexport const TEXT_COLOR_1 = 'text-[#5d5d5d]';\r\nexport const BACKDROP_BLUR = 'backdrop-blur-[45px]';\r\nexport const BACKDROP_BLUR_BG_COLOR = 'bg-[#00000046]';\r\nexport const MODAL_BG_COLOR = 'bg-[#ffffff]';\r\nexport const CARD_BG_COLOR = 'bg-white'; //rgb(255 255 255)\r\nexport const INPUT_TEXT_DISABLE_COLOR = 'text-slate-300'\r\nexport const CHECKBOX_CHECKED_COLOR = '#e11a38'\r\nexport const LOAD_DESIGN_BORDER_COLOR = '#e0e0e0'\r\nexport const LOAD_DESIGN_TEXT_COLOR = 'text-[#e11a38]';\r\nexport const SEARCH_ICON_COLOR = 'text-[#727272]'\r\nexport const SEARCHBAR_BORDER_COLOR = 'border-[#bebebe]'\r\nexport const MY_DESIGN_TEXT_COLOR = 'text-[#353535]'\r\nexport const SEARCH_TEXT_COLOR = 'text-[#353535]'\r\nexport const NO_SEARCHRESULT_TEXT_COLOR_1 = 'text-[#727272]'\r\nexport const NO_SEARCHRESULT_TEXT_COLOR_2 = 'text-[#5d5d5d]'\r\nexport const CANVAS_MENU_TEXT = 'text-[#353535]';\r\nexport const CANVAS_MENU_BORDER = 'border-[#f4f4f4]';\r\nexport const CANVAS_MENU_BG_COLOR = 'bg-white';\r\nexport const CANVAS_MENU_DROPDOWN_BG_COLOR = 'bg-white';\r\nexport const DECORATION_BG_COLOR = 'bg-[#F1F1F1]'\r\nexport const DROPDOWN_BACKGROUND_COLOR = 'bg-[#FCE8EB]'\r\nexport const TAG_BG_COLOR = 'bg-[#FCE8EB]'\r\nexport const TAG_TEXT_COLOR = 'text-[#e11a38]'\r\nexport const CARD_LAST_UPDATE_COLOR = 'text-[#727272]'\r\nexport const CARD_DOWNLAOD_ICON_COLOR = 'text-[#353535]'\r\nexport const CARD_DESCRIPTION_COLOR = 'text-[#353535]'\r\nexport const FOOTER_TEXT_COLOR = 'text-[#ffffff]'\r\nexport const FOOTER_RACK_BG_COLOR = 'bg-[#E21938]'\r\nexport const FOOTER_PRICE_COLOR = 'text-[#353535]'\r\nexport const FOOTER_RACK_COUNT_COLOR = 'text-[#E21938]'\r\nexport const FOOTER_ROSTER_COLOR = 'text-[#353535]'\r\nexport const FOOTER_ROSTER_BORDER_COLOR = 'border-[#353535]'\r\nexport const FOOTER_SUMMARY_BG_COLOR = 'bg-[#353535]'\r\nexport const FOOTER_SUMMARY_TEXT_COLOR = 'text-white'\r\nexport const CONFIRMDESIGN_DISCARD_BORDER_COLOR = 'border-[#707070]';\r\nexport const CONFIRMDESIGN_TEXT_COLOR_1 = 'text-[#5d5d5d]';\r\nexport const CONFIRMDESIGN_TEXT_COLOR_2 = 'text-[#E11A38]';\r\nexport const CONFIRMDESIGN_TEXT_COLOR_3 = 'text-[#353535]';\r\nexport const CONFIRMDESIGN_TEXT_COLOR_4 = 'text-[#ffffff]';\r\nexport const CONFIRMDESIGN_SAVEBUTTON_BG_COLOR = 'bg-[#E11A38]';\r\nexport const DESIGNSUCCESS_CLOSE_BORDER_COLOR = 'border-[#707070]';\r\nexport const DESIGNSUCCESS_TEXT_COLOR_1 = 'text-[#5d5d5d]';\r\nexport const DESIGNSUCCESS_TEXT_COLOR_2 = 'text-[#E21938]';\r\nexport const DESIGNSUCCESS_TEXT_COLOR_3 = 'text-[#353535]';\r\n\r\nexport const SAVERACK_BORDER_COLOR = 'border-[#707070]'\r\nexport const SAVERACK_TEXT_COLOR = 'text-[#707070]'\r\nexport const SAVEBUTTON_BG_COLOR = 'bg-[#E11A38]'\r\nexport const TOASTER_SUCCESS_BG_COLOR = 'bg-[#D5F2EA]'\r\nexport const TOASTER_FAILURE_BG_COLOR = 'bg-[#FCE8EB]'\r\nexport const TOASTER_INFO_BG_COLOR = 'bg-[#D5E9FA]'\r\nexport const TOASTER_WARNING_BG_COLOR = 'bg-[#FFF8E7]'\r\nexport const RESET_BUTTON_BG_COLOR = 'text-[#9A9A9A]'\r\nexport const PRODUCTINFO_TEXT_COLOR_1 = 'text-[#353535]'\r\nexport const PRODUCTINFO_TEXT_COLOR_2 = 'text-[#c2c2c2]'\r\nexport const PRODUCTINFO_TEXT_COLOR_3 = 'text-[#e11a38]'\r\nexport const PRODUCTINFO_TEXT_COLOR_4 = 'text-[#5d5d5d]'\r\nexport const UPDATESUCCESS_RACK_BORDER_COLOR = 'border-[#E11938]';\r\nexport const UPDATESUCCESS_TEXT_COLOR_1 = 'text-[#E11938]';\r\nexport const RACK_CARD_BORDER_COLOR = 'border-[#e5e5e5]';\r\nexport const RACK_CARD_TEXT_COLOR_1 = 'text-[#E11A38]';\r\nexport const RACK_CARD_TEXT_COLOR_2 = 'text-[#353535]';\r\nexport const RACK_CARD_TEXT_COLOR_3 = 'text-[#9f9f9f]';\r\nexport const RACK_CARD_MENU_TEXT = 'text-[#353535]';\r\nexport const EDIT_DESIGN_INFO_TEXT_COLOR_1 = 'text-[#E11A38]';\r\nexport const EDIT_DESIGN_INFO_TEXT_COLOR_2 = 'text-[#727272]';\r\nexport const EDIT_DESIGN_INFO_TEXT_COLOR_3 = 'text-[#353535]';\r\nexport const EDIT_DESIGN_INFO_TEXT_COLOR_4 = 'text-[#ffffff]';\r\nexport const EDIT_DESIGN_INFO_INPUT_BORDER_COLOR = 'border-[#ECEBED]';\r\nexport const EDIT_DESIGN_INFO_DISABLED_BG_COLOR_1 = 'bg-[#F8F8F8]';\r\nexport const EDIT_DESIGN_INFO_BG_COLOR_2 = 'bg-[#ffffff]';\r\nexport const EDIT_DESIGN_INFO_BG_COLOR_3 = 'bg-[#e11a38]';\r\nexport const EDIT_DESIGN_INFO_BG_COLOR_4 = 'bg-[#fce8eb]';\r\nexport const INPUT_ERROR_BORDER_COLOR = 'border-[#E11A38]';\r\nexport const INPUT_ERROR_TEXT_COLOR = 'text-[#E11A38]';\r\nexport const PRICEBREAKUP_TEXT_COLOR_1 = 'text-[#353535]';\r\nexport const PRICEBREAKUP_TEXT_COLOR_2 = 'text-[#747474]';\r\nexport const PRICEBREAKUP_TEXT_BORDER_COLOR_1 = 'border-[#c2c2c2]';\r\nexport const PRICEBREAKUP_TEXT_BORDER_COLOR_2 = 'border-[#ebebeb]';","import React from 'react';\r\nimport { Tooltip, TooltipReference, useTooltipState } from 'reakit';\r\n\r\ninterface ToolTipProps {\r\n label: string;\r\n arrowOnTop?: boolean;\r\n className?: string;\r\n children: React.ReactNode | React.ReactNode[];\r\n}\r\nexport const ToolTip = ({\r\n label,\r\n arrowOnTop,\r\n className = '',\r\n children,\r\n}: ToolTipProps) => {\r\n const tooltip = useTooltipState({ placement: arrowOnTop ? 'bottom' : 'top' });\r\n return (\r\n <>\r\n <TooltipReference\r\n {...tooltip}\r\n className={`${className} flex relative items-center justify-center align-middle w-auto text-sm font-semibold first:rounded-l last:rounded-r focus:outline-none`}\r\n aria-label={label}\r\n >\r\n {children}\r\n </TooltipReference>\r\n {\r\n //@ts-ignore\r\n // <div className={styles}>\r\n <Tooltip\r\n {...tooltip}\r\n // className={`font-[Roboto-Medium] font-medium mb-[5px] text-[13px] capitalize before:content-[''] before:absolute before: ${SELECT_BG_COLOR} top-[-21%] before:left-[calc(50%-7px)] before:bg-[#fce8eb] before:rotate-[230deg] before:border before:border-b-[#f3a2af] before:border-r-[#f3a2af] before:border-l-transparent before:rounded-none before:border-t-transparent before:h-[14px] before:w-[14px] !z-[100] inline-block px-3 py-2 text-[#5d5d5d] transition-opacity duration-300 bg-[#fce8eb] shadow-sm border border-[#f3a2af] `\r\n className={`font-[Roboto-Medium] font-medium mb-[5px] text-[13px] capitalize before:content-[''] before:absolute before:left-[calc(50%-7px)] before:bg-[#fce8eb] before:rotate-[44deg] before:border ${\r\n arrowOnTop\r\n ? 'before:top-[-21%] before:border-l-[#f3a2af] before:border-t-[#f3a2af] before:border-b-transparent before:border-r-transparent'\r\n : 'before:top-[80%] before:border-b-[#f3a2af] before:border-r-[#f3a2af] before:border-l-transparent before:border-t-transparent'\r\n } before:rounded-none before:h-[14px] before:w-[14px] !z-[100] inline-block px-3 py-2 text-[#5d5d5d] transition-opacity duration-300 bg-[#fce8eb] shadow-sm border border-[#f3a2af]`}\r\n style={{ zIndex: 3 }}\r\n >\r\n {label}{' '}\r\n </Tooltip>\r\n // </div>\r\n }\r\n </>\r\n );\r\n};\r\n","import React from 'react';\r\nimport { use3dddPlus } from '../../store';\r\nimport { CANVAS_MENU_TEXT } from '../../theme';\r\nimport { Copy, Delete, IconButton, SelectAll } from '../icon';\r\nimport { MdLayers } from 'react-icons/md';\r\nimport { shallow } from 'zustand/shallow';\r\nimport { fabric } from 'fabric';\r\nimport { CgRedo, CgUndo } from 'react-icons/cg';\r\nimport { ToolTip } from '../toolTip';\r\nconst ActionButtons = () => {\r\n //@ts-ignore\r\n const [canvas, activeSelection] = use3dddPlus(\r\n (state) => [state.fabricCanvas, state.activeSelection],\r\n shallow\r\n );\r\n const selectAllHandler = () => {\r\n canvas.discardActiveObject();\r\n const sel = new fabric.ActiveSelection(\r\n canvas.getObjects().filter((obj) => obj.type !== 'line'),\r\n {\r\n canvas: canvas,\r\n }\r\n );\r\n canvas.setActiveObject(sel);\r\n canvas.requestRenderAll();\r\n use3dddPlus.getState().updateModifaction(true);\r\n use3dddPlus.setState({ selectedAll: true });\r\n use3dddPlus.setState({ currentSelection: 'selectAll' });\r\n const fillColors = {};\r\n use3dddPlus.setState({ colorFill: fillColors });\r\n };\r\n const deleteHandler = () => { \r\n if (canvas.getActiveObjects().length !== 0) {\r\n canvas.getActiveObjects().forEach((element :any) => {\r\n if(element.icon){\r\n canvas.remove(element);\r\n removeItem(element);\r\n }\r\n });\r\n // canvas.remove(activeSelection);\r\n use3dddPlus.getState().updateModifaction(true);\r\n canvas.requestRenderAll();\r\n use3dddPlus.setState({ selectedAll: false });\r\n canvas.discardActiveObject();\r\n // removeItem(activeSelection);\r\n }else{\r\n use3dddPlus.getState().toastMessages.pleaseSelectTheImage();\r\n }\r\n };\r\n const removeItem = (value: any) => {\r\n // var index = use3dddPlus.getState().storeAllObject.indexOf(value);\r\n // @ts-ignore\r\n var index = use3dddPlus\r\n .getState()\r\n .storeAllObject.findIndex((obj: any) => obj.id === value.id);\r\n if (index === -1 && value && value._objects && value._objects.length > 0) {\r\n var index = use3dddPlus\r\n .getState()\r\n //@ts-ignore\r\n .storeAllObject.indexOf(value._objects[0]);\r\n }\r\n if (index > -1) {\r\n use3dddPlus.getState().storeAllObject.splice(index, 1);\r\n }\r\n use3dddPlus.setState({\r\n storeAllObject: [...use3dddPlus.getState().storeAllObject],\r\n });\r\n };\r\n const canvasActions = [\r\n {\r\n icon: <SelectAll />,\r\n onClick: selectAllHandler,\r\n id: 'select-action',\r\n label: 'Select all',\r\n disabled: false,\r\n visible: true,\r\n },\r\n {\r\n icon: <Copy />,\r\n onClick: () => {\r\n use3dddPlus.getState().duplicateObject();\r\n },\r\n id: 'duplicate-action',\r\n label: 'Duplicate',\r\n disabled: false,\r\n visible: true,\r\n },\r\n {\r\n icon: <MdLayers />,\r\n onClick: () => {\r\n use3dddPlus.setState({ currentSelection: 'layer' });\r\n },\r\n id: 'layes-action',\r\n label: 'Layers',\r\n disabled: false,\r\n visible: true,\r\n },\r\n {\r\n icon: <Delete />,\r\n onClick: deleteHandler,\r\n id: 'delete-action',\r\n label: 'Delete',\r\n disabled: false,\r\n visible: true,\r\n },\r\n {\r\n icon: <CgUndo />,\r\n onClick: () => {\r\n use3dddPlus.getState().undo();\r\n },\r\n id: 'undo-action',\r\n label: 'Undo',\r\n disabled: false,\r\n visible: true,\r\n },\r\n {\r\n icon: <CgRedo />,\r\n onClick: () => {\r\n use3dddPlus.getState().redo();\r\n },\r\n id: 'redo-action',\r\n label: 'Redo',\r\n disabled: false,\r\n visible: true,\r\n },\r\n ];\r\n\r\n return (\r\n <>\r\n <div\r\n className=\"w-100 flex px-3 items-center z-10 h-[40px]\"\r\n style={{\r\n justifyContent: 'flex-end',\r\n }}\r\n >\r\n <div className={`flex`}>\r\n {canvasActions.map(\r\n (item) =>\r\n item?.visible && (\r\n <div\r\n key={item.id}\r\n className={`${\r\n item.disabled\r\n ? 'disableButton'\r\n : `${CANVAS_MENU_TEXT} cursor-pointer hover:text-[#e11a38] hover:underline hover:underline-offset-4 hover:decoration-2`\r\n } flex gap-[5px] items-center pt-[2.5px] font-bold uppercase mr-[30px] lg:mr-[30px] md-[20px] `}\r\n onClick={item.onClick}\r\n >\r\n <ToolTip label={item.label} arrowOnTop={true}>\r\n <span>\r\n <IconButton\r\n label=\"\"\r\n icon={item.icon}\r\n className={`${\r\n item.disabled\r\n ? 'iconDisable'\r\n : 'pointer-events-auto cursor-pointer'\r\n } m-auto`}\r\n size=\"1.125rem\"\r\n ></IconButton>\r\n </span>\r\n </ToolTip>\r\n </div>\r\n )\r\n )}\r\n </div>\r\n </div>\r\n </>\r\n );\r\n};\r\n\r\nexport default ActionButtons;\r\n","import React from 'react';\r\nimport { use3dddPlus } from '../../store';\r\n// import { CANVAS_MENU_TEXT } from '../../theme';\r\n// import { Copy, Delete, IconButton, SelectAll } from '../icon';\r\n// import { MdLayers } from 'react-icons/md';\r\n// import { shallow } from 'zustand/shallow';\r\n// import { fabric } from 'fabric';\r\n// import { CgRedo, CgUndo } from 'react-icons/cg';\r\nconst NudgeButtons = () => {\r\n // const [canvas, activeSelection] = use3dddPlus(\r\n // (state) => [state.fabricCanvas, state.activeSelection],\r\n // shallow\r\n // );\r\n // const selectAllHandler = () => {\r\n // canvas.discardActiveObject();\r\n // const sel = new fabric.ActiveSelection(canvas.getObjects(), {\r\n // canvas: canvas,\r\n // });\r\n // canvas.setActiveObject(sel);\r\n // canvas.requestRenderAll();\r\n // use3dddPlus.getState().updateModifaction(true);\r\n // use3dddPlus.setState({ selectedAll: true });\r\n // use3dddPlus.setState({ currentSelection: 'selectAll' });\r\n // const fillColors = {};\r\n // use3dddPlus.setState({ colorFill: fillColors });\r\n // };\r\n // const deleteHandler = () => {\r\n // canvas.remove(activeSelection);\r\n // use3dddPlus.getState().updateModifaction(true);\r\n // canvas.requestRenderAll();\r\n // use3dddPlus.setState({ selectedAll: false });\r\n // removeItem(activeSelection);\r\n // };\r\n // const removeItem = (value: any) => {\r\n // //@ts-ignore\r\n // var index = use3dddPlus\r\n // .getState()\r\n // .storeAllObject.findIndex((obj: any) => obj.id === value.id);\r\n // if (index > -1) {\r\n // use3dddPlus.getState().storeAllObject.splice(index, 1);\r\n // }\r\n // use3dddPlus.setState({\r\n // storeAllObject: [...use3dddPlus.getState().storeAllObject],\r\n // });\r\n // };\r\n\r\n const textSelected = use3dddPlus.getState().activeSelection;\r\n // const canvas = use3dddPlus.getState().fabricCanvas;\r\n\r\n const nudgeMove = (e) => {\r\n const brNew = textSelected.getBoundingRect();\r\n if (e.target.id === 'down') {\r\n // if (textSelected.aCoords.br.y > canvas.height - 2) return;\r\n if (brNew.height + brNew.top >= textSelected.canvas.height - 10) return;\r\n use3dddPlus.getState().moveDown(textSelected);\r\n use3dddPlus.getState().updateModifaction(true);\r\n } else if (e.target.id === 'up') {\r\n if (textSelected.aCoords.tr.y < 10) return;\r\n use3dddPlus.getState().moveUp(textSelected);\r\n use3dddPlus.getState().updateModifaction(true);\r\n } else if (e.target.id === 'right') {\r\n // if (textSelected.aCoords.tr.x > canvas.height - 2) return;\r\n if (brNew.width + brNew.left >= textSelected.canvas.width - 45) return;\r\n use3dddPlus.getState().moveRight(textSelected);\r\n use3dddPlus.getState().updateModifaction(true);\r\n } else if (e.target.id === 'left') {\r\n if (textSelected.aCoords.tl.x < 45) return;\r\n use3dddPlus.getState().moveLeft(textSelected);\r\n use3dddPlus.getState().updateModifaction(true);\r\n }\r\n };\r\n\r\n return (\r\n <>\r\n <div\r\n className=\"w-full flex items-center justify-center z-10\"\r\n style={{\r\n justifyContent: 'flex-center',\r\n }}\r\n >\r\n <div\r\n className=\"uppercase font-medium text-sm text-red-500 mx-5\"\r\n style={{ marginTop: '0.3rem', marginBottom: '0.3rem' }}\r\n >\r\n Nudge:\r\n </div>\r\n\r\n <button onClick={nudgeMove} id=\"left\">\r\n <div className=\"leftBtn pointer-events-none mx-5\">\r\n <div className=\"leftIcon float-left\">\r\n <svg\r\n transform=\"rotate(270)\"\r\n fill=\"#707070\"\r\n height=\"20px\"\r\n width=\"20px\"\r\n version=\"1.1\"\r\n id=\"Layer_1\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 512 512\"\r\n >\r\n <g>\r\n <g>\r\n <g>\r\n <path d=\"M0,0v512h512V0H0z M469.333,469.333H42.667V42.667h426.667V469.333z\" />\r\n <path d=\"M121.752,335.085L256,200.837l134.248,134.248c8.331,8.331,21.839,8.331,30.17,0c8.331-8.331,8.331-21.839,0-30.17 L271.085,155.582c-8.331-8.331-21.839-8.331-30.17,0L91.582,304.915c-8.331,8.331-8.331,21.839,0,30.17 S113.42,343.416,121.752,335.085z\" />\r\n </g>\r\n </g>\r\n </g>\r\n </svg>\r\n </div>\r\n <span className=\"pointer-events-none iconLabel float-left text-[#5d5d5d] ml-2 text-[13px] font-medium capitalize\">\r\n Left\r\n </span>\r\n </div>\r\n </button>\r\n\r\n <button onClick={nudgeMove} id=\"up\">\r\n <div className=\"upBtn pointer-events-none mx-5\">\r\n <div className=\"upIcon float-left\">\r\n <svg\r\n fill=\"#707070\"\r\n height=\"20px\"\r\n width=\"20px\"\r\n version=\"1.1\"\r\n id=\"Layer_1\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 512 512\"\r\n >\r\n <g>\r\n <g>\r\n <g>\r\n <path d=\"M0,0v512h512V0H0z M469.333,469.333H42.667V42.667h426.667V469.333z\" />\r\n <path d=\"M121.752,335.085L256,200.837l134.248,134.248c8.331,8.331,21.839,8.331,30.17,0c8.331-8.331,8.331-21.839,0-30.17 L271.085,155.582c-8.331-8.331-21.839-8.331-30.17,0L91.582,304.915c-8.331,8.331-8.331,21.839,0,30.17 S113.42,343.416,121.752,335.085z\" />\r\n </g>\r\n </g>\r\n </g>\r\n </svg>\r\n </div>\r\n <span className=\"pointer-events-none iconLabel float-left text-[#5d5d5d] ml-2 text-[13px] font-medium capitalize\">\r\n Top\r\n </span>\r\n </div>\r\n </button>\r\n\r\n <button onClick={nudgeMove} id=\"right\">\r\n <div className=\"rightBtn pointer-events-none mx-5\">\r\n <div className=\"rightIcon float-left\">\r\n <svg\r\n transform=\"rotate(90)\"\r\n fill=\"#707070\"\r\n height=\"20px\"\r\n width=\"20px\"\r\n version=\"1.1\"\r\n id=\"Layer_1\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 512 512\"\r\n >\r\n <g>\r\n <g>\r\n <g>\r\n <path d=\"M0,0v512h512V0H0z M469.333,469.333H42.667V42.667h426.667V469.333z\" />\r\n <path d=\"M121.752,335.085L256,200.837l134.248,134.248c8.331,8.331,21.839,8.331,30.17,0c8.331-8.331,8.331-21.839,0-30.17 L271.085,155.582c-8.331-8.331-21.839-8.331-30.17,0L91.582,304.915c-8.331,8.331-8.331,21.839,0,30.17 S113.42,343.416,121.752,335.085z\" />\r\n </g>\r\n </g>\r\n </g>\r\n </svg>\r\n </div>\r\n <span className=\"pointer-events-none iconLabel float-left text-[#5d5d5d] ml-2 text-[13px] font-medium capitalize\">\r\n Right\r\n </span>\r\n </div>\r\n </button>\r\n\r\n <button onClick={nudgeMove} id=\"down\">\r\n <div className=\"downBtn pointer-events-none mx-5\">\r\n <div className=\"downIcon float-left\">\r\n <svg\r\n transform=\"rotate(180)\"\r\n fill=\"#707070\"\r\n height=\"20px\"\r\n width=\"20px\"\r\n version=\"1.1\"\r\n id=\"Layer_1\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 512 512\"\r\n >\r\n <g>\r\n <g>\r\n <g>\r\n <path d=\"M0,0v512h512V0H0z M469.333,469.333H42.667V42.667h426.667V469.333z\" />\r\n <path d=\"M121.752,335.085L256,200.837l134.248,134.248c8.331,8.331,21.839,8.331,30.17,0c8.331-8.331,8.331-21.839,0-30.17 L271.085,155.582c-8.331-8.331-21.839-8.331-30.17,0L91.582,304.915c-8.331,8.331-8.331,21.839,0,30.17 S113.42,343.416,121.752,335.085z\" />\r\n </g>\r\n </g>\r\n </g>\r\n </svg>\r\n </div>\r\n <span className=\"pointer-events-none iconLabel float-left text-[#5d5d5d] ml-2 text-[13px] font-medium capitalize\">\r\n Bottom\r\n </span>\r\n </div>\r\n </button>\r\n {/* <button\r\n onClick={nudgeMove}\r\n id=\"up\"\r\n className=\"font-medium text-orange-300 text-lime-400 px-1\"\r\n >\r\n UP\r\n </button>\r\n <button\r\n onClick={nudgeMove}\r\n id=\"left\"\r\n className=\"font-medium text-orange-300 text-teal-500\"\r\n >\r\n LEFT\r\n </button>\r\n <button\r\n onClick={nudgeMove}\r\n id=\"right\"\r\n className=\"font-medium text-orange-300 text-violet-600 px-1\"\r\n >\r\n RIGHT\r\n </button> */}\r\n </div>\r\n </>\r\n );\r\n};\r\n\r\nexport default NudgeButtons;\r\n","import React from 'react';\r\nimport { use3dddPlus } from '../../store';\r\nimport { shallow } from 'zustand/shallow';\r\nimport { fabric } from 'fabric';\r\nimport {\r\n Copy,\r\n IconButton,\r\n // Paste,\r\n SendAObject,\r\n SendToBack,\r\n SendToFront,\r\n SendUnderObject,\r\n FlipH,\r\n FlipV,\r\n SnapToCenter,\r\n} from '../icon';\r\n\r\nexport const ContextMenu = () => {\r\n const [activeObj, canvas] = use3dddPlus(\r\n (state) => [state.activeSelection, state.fabricCanvas],\r\n shallow\r\n );\r\n\r\n const flipX = () => {\r\n activeObj.set({\r\n flipX: !activeObj.flipX,\r\n });\r\n use3dddPlus.getState().updateModifaction(true);\r\n canvas.renderAll();\r\n use3dddPlus.setState({\r\n showContextMenu: false,\r\n });\r\n };\r\n const flipY = () => {\r\n activeObj.set({\r\n flipY: !activeObj.flipY,\r\n });\r\n use3dddPlus.getState().updateModifaction(true);\r\n // activeObj.\r\n canvas.renderAll();\r\n use3dddPlus.setState({\r\n showContextMenu: false,\r\n });\r\n };\r\n const sendBackwards = () => {\r\n canvas.sendBackwards(activeObj);\r\n //@ts-ignore\r\n // var index = use3dddPlus.getState().storeAllObject.indexOf(activeObj);\r\n //@ts-ignore\r\n var index = use3dddPlus\r\n .getState()\r\n .storeAllObject.findIndex((obj: any) => obj.id === activeObj.id);\r\n if (index > -1) {\r\n use3dddPlus.getState().storeAllObject.splice(index, 1);\r\n //@ts-ignore\r\n use3dddPlus.getState().storeAllObject.splice(index + 1, 0, activeObj);\r\n }\r\n use3dddPlus.setState({\r\n storeAllObject: [...use3dddPlus.getState().storeAllObject],\r\n });\r\n use3dddPlus.getState().updateModifaction(true);\r\n use3dddPlus.setState({\r\n showContextMenu: false,\r\n });\r\n canvas.sendToBack(use3dddPlus.getState().verticalLine);\r\n canvas.sendToBack(use3dddPlus.getState().horizontalLine);\r\n };\r\n const bringForward = () => {\r\n canvas.bringForward(activeObj);\r\n //@ts-ignore\r\n var index = use3dddPlus\r\n .getState()\r\n .storeAllObject.findIndex((obj: any) => obj.id === activeObj.id);\r\n if (index > -1) {\r\n if (index !== 0) {\r\n use3dddPlus.getState().storeAllObject.splice(index, 1);\r\n //@ts-ignore\r\n use3dddPlus.getState().storeAllObject.splice(index - 1, 0, activeObj);\r\n }\r\n use3dddPlus.setState({\r\n storeAllObject: [...use3dddPlus.getState().storeAllObject],\r\n });\r\n }\r\n use3dddPlus.getState().updateModifaction(true);\r\n use3dddPlus.setState({\r\n showContextMenu: false,\r\n });\r\n };\r\n const sendToBack = () => {\r\n canvas.sendToBack(activeObj);\r\n //@ts-ignore\r\n var index = use3dddPlus\r\n .getState()\r\n .storeAllObject.findIndex((obj: any) => obj.id === activeObj.id);\r\n if (index > -1) {\r\n use3dddPlus.getState().storeAllObject.splice(index, 1);\r\n //@ts-ignore\r\n use3dddPlus.getState().storeAllObject.push(activeObj);\r\n }\r\n use3dddPlus.setState({\r\n storeAllObject: [...use3dddPlus.getState().storeAllObject],\r\n });\r\n use3dddPlus.getState().updateModifaction(true);\r\n use3dddPlus.setState({\r\n showContextMenu: false,\r\n });\r\n canvas.sendToBack(use3dddPlus.getState().verticalLine);\r\n canvas.sendToBack(use3dddPlus.getState().horizontalLine);\r\n };\r\n const bringToFront = () => {\r\n canvas.bringToFront(activeObj);\r\n //@ts-ignore\r\n var index = use3dddPlus\r\n .getState()\r\n .storeAllObject.findIndex((obj: any) => obj.id === activeObj.id);\r\n if (index > -1) {\r\n use3dddPlus.getState().storeAllObject.splice(index, 1);\r\n //@ts-ignore\r\n use3dddPlus.getState().storeAllObject.unshift(activeObj);\r\n\r\n use3dddPlus.setState({\r\n storeAllObject: [...use3dddPlus.getState().storeAllObject],\r\n });\r\n }\r\n use3dddPlus.getState().updateModifaction(true);\r\n use3dddPlus.setState({\r\n showContextMenu: false,\r\n });\r\n };\r\n const snapToCenter = () => {\r\n activeObj.set({\r\n left: canvas.width / 2,\r\n originX: 'center',\r\n });\r\n use3dddPlus.getState().updateModifaction(true);\r\n canvas.renderAll();\r\n use3dddPlus.setState({\r\n showContextMenu: false,\r\n });\r\n };\r\n const copy = () => {\r\n use3dddPlus.getState().duplicateObject();\r\n use3dddPlus.setState({\r\n showContextMenu: false,\r\n });\r\n };\r\n const ungroup = () => {\r\n activeObj.toObject = (function (toObject) {\r\n return function () {\r\n return fabric.util.object.extend(toObject.call(this), {\r\n objects: this._objects.map((obj) => obj.toObject()),\r\n });\r\n };\r\n })(activeObj.toObject);\r\n const items = activeObj._objects;\r\n activeObj._restoreObjectsState();\r\n use3dddPlus.getState().fabricCanvas.remove(activeObj);\r\n\r\n items.forEach(function (item) {\r\n use3dddPlus.getState().fabricCanvas.add(item);\r\n // 'id', 'colorFill','shapeType','shapeSize','text','textAlign','stroke',\r\n // 'strokeWidth','fontFamily','icon'\r\n });\r\n };\r\n\r\n const group = () => {\r\n var activeObject = use3dddPlus.getState().fabricCanvas.getActiveObject();\r\n if (activeObject.type === 'activeSelection') {\r\n activeObject.toGroup();\r\n canvas.renderAll();\r\n }\r\n };\r\n const menu = [\r\n {\r\n id: 1,\r\n name: 'COPY / PASTE ',\r\n onclick: copy,\r\n display: true,\r\n icon: <Copy />,\r\n },\r\n // {\r\n // id: 2,\r\n // name: 'Paste',\r\n // onclick: copy,\r\n // icon: <Paste />,\r\n // },\r\n {\r\n id: 3,\r\n name: 'Bring to front',\r\n onclick: bringForward,\r\n display: true,\r\n icon: <SendToFront />,\r\n },\r\n {\r\n id: 4,\r\n name: 'Send to back',\r\n onclick: sendBackwards,\r\n display: true,\r\n icon: <SendToBack />,\r\n },\r\n {\r\n id: 5,\r\n name: 'Bring above objects',\r\n onclick: bringToFront,\r\n display: true,\r\n icon: <SendAObject />,\r\n },\r\n {\r\n id: 6,\r\n name: 'Send under objects',\r\n onclick: sendToBack,\r\n display: true,\r\n icon: <SendUnderObject />,\r\n },\r\n {\r\n id: 7,\r\n name: 'Flip Horizontal',\r\n onclick: flipX,\r\n display: true,\r\n icon: <FlipH />,\r\n },\r\n {\r\n id: 8,\r\n name: 'Flip Vertical',\r\n onclick: flipY,\r\n display: true,\r\n icon: <FlipV />,\r\n },\r\n {\r\n id: 9,\r\n name: 'Snap to center',\r\n display: true,\r\n onclick: snapToCenter,\r\n icon: <SnapToCenter />,\r\n },\r\n {\r\n id: 10,\r\n name: 'group',\r\n onclick: group,\r\n display: canvas?.getActiveObject()?.type === 'activeSelection',\r\n icon: <SnapToCenter />,\r\n },\r\n {\r\n id: 10,\r\n name: 'ungroup',\r\n onclick: ungroup,\r\n display: canvas?.getActiveObject()?.type === \"group\",\r\n icon: <SnapToCenter />,\r\n },\r\n ];\r\n return (\r\n <ul>\r\n {menu.map((item, index) => {\r\n return (\r\n <li\r\n className=\"flex cursor-pointer hover:text-[#e11a38] border border-b-[1px] border-[#EBEBEB] px-[30px] py-[14px] \"\r\n onClick={item.onclick}\r\n key={index}\r\n style={!item.display ? { display: 'none' } : {}}\r\n >\r\n <span>\r\n <IconButton\r\n label=\"\"\r\n icon={item.icon}\r\n className=\"m-auto cursor-pointer pointer-events-auto\"\r\n size=\"1.125rem\"\r\n ></IconButton>\r\n </span>\r\n <span className=\" pl-[20px] text-sm font-bold uppercase\">\r\n {item.name}\r\n </span>\r\n </li>\r\n );\r\n })}\r\n </ul>\r\n );\r\n};\r\n","import React, { useRef } from 'react';\r\nimport './canvas.css';\r\nimport { use3dddPlus } from '../../store';\r\nimport ActionButtons from './canvasButtons'; //Importing Action button component which is displaying buttons\r\nimport NudgeButtons from './nudgeButtons'; //Importing Nudge button component which is displaying buttons\r\n// import ErrorPopup from './errorPopUp'; //Importing ErrorPopup Panel component which is displaying buttons\r\nimport { initCanvas } from '../../store/fabric/fabricCanvas';\r\nimport { shallow } from 'zustand/shallow';\r\nimport { ContextMenu } from '../contextMenu';\r\nimport { fabric } from 'fabric';\r\n\r\nconst canvas = () => {\r\n const [contextMenuCoordinates, showContextMenu] = use3dddPlus(\r\n (state) => [\r\n state.contextMenuCoordinates,\r\n state.showContextMenu,\r\n state.allColor,\r\n ],\r\n shallow\r\n );\r\n const canvasRef = useRef<HTMLCanvasElement | null>(null);\r\n const resizeCanvas = () => {\r\n const canvas = use3dddPlus.getState().fabricCanvas;\r\n if (document.getElementById('fabCanvas')) {\r\n const outerCanvasContainer = document.getElementById('fabCanvas');\r\n const containerWidth = outerCanvasContainer.clientWidth;\r\n const scale = containerWidth / canvas.getWidth();\r\n const zoom = canvas.getZoom() * scale;\r\n canvas.setWidth(containerWidth);\r\n //@ts-ignore\r\n canvas.setHeight(parseInt(outerCanvasContainer.clientHeight));\r\n canvas.setViewportTransform([zoom, 0, 0, zoom, 0, 0]);\r\n canvas.renderAll();\r\n }\r\n };\r\n React.useEffect(() => {\r\n fabric.Object.prototype.hasControls = true;\r\n fabric.Object.prototype.hasBorders = true;\r\n const canv = initCanvas();\r\n use3dddPlus.setState({ fabricCanvas: canv });\r\n resizeCanvas();\r\n window.addEventListener('resize', resizeCanvas);\r\n const fontFamilyURL =\r\n 'https://storage.googleapis.com/3ddplusgcp/logoEditor/assets/fonts/athletic.ttf';\r\n const font = new FontFace('Athletic Block', `url('${fontFamilyURL}')`);\r\n font.load().then((value) => {\r\n //@ts-ignore\r\n document.fonts?.add(value);\r\n document.body.classList.add('fonts-loaded');\r\n });\r\n }, []);\r\n\r\n return (\r\n <div className=\" w-full h-full relative\">\r\n <ActionButtons />\r\n <div\r\n id=\"fabCanvas\"\r\n className=\"bg-[#ffffff]\"\r\n style={{ height: 'calc(100% - 71px)' }}\r\n >\r\n <canvas ref={canvasRef} id=\"canvas\"></canvas>\r\n {showContextMenu && (\r\n <div\r\n style={{\r\n position: 'absolute',\r\n zIndex: 1000,\r\n left: contextMenuCoordinates.x - 270,\r\n top: contextMenuCoordinates.y + 55,\r\n backgroundColor: 'white',\r\n border: '1px solid #ccc',\r\n boxShadow: '2px 2px 5px rgba(0,0,0,0.5)',\r\n }}\r\n onBlur={() => {\r\n use3dddPlus.setState({ showContextMenu: false });\r\n }}\r\n >\r\n <ContextMenu />\r\n </div>\r\n )}\r\n </div>\r\n {/* {allColor && allColor.includes('transparent')\r\n ? allColor.length - 1 > 8\r\n : allColor.length > 8 && <ErrorPopup allColor={allColor} />} */}\r\n <NudgeButtons />\r\n </div>\r\n );\r\n};\r\n\r\nexport default canvas;\r\n","import { fabric } from 'fabric';\r\n//@ts-ignore\r\n// import deleteIcon from '../../assets/images/delete.png';\r\n// //@ts-ignore\r\n// import rotateIcon from '../../assets/images/rotate.png';\r\n// //@ts-ignore\r\n// import settingIcon from '../../assets/images/settings.png';\r\nimport { use3dddPlus } from '..';\r\n\r\n// @ts-ignore\r\nimport FontFaceObserver from 'fontfaceobserver';\r\n\r\nexport const initCanvas = () => {\r\n let left1 = 0;\r\n let top1 = 0;\r\n let scale1x = 0;\r\n let scale1y = 0;\r\n let width1 = 0;\r\n let height1 = 0;\r\n\r\n const onObjectSelected = (e) => {\r\n use3dddPlus.setState({ mylogoAdded: true });\r\n const obj = e.selected[0];\r\n if (e.selected.length > 1) {\r\n return;\r\n }\r\n if (!obj) return;\r\n\r\n if (e?.selected?.[0]?.colorFill) {\r\n use3dddPlus.setState({ colorFill: obj.colorFill });\r\n }\r\n\r\n const type = obj.text ? 'text' : obj.get('type');\r\n\r\n use3dddPlus.setState({\r\n currentSelection: type,\r\n });\r\n use3dddPlus.setState({ activeSelection: canv.getActiveObject() });\r\n getAllColors();\r\n };\r\n const onObjectDeselected = () => {\r\n use3dddPlus.setState({ activeSelection: null });\r\n use3dddPlus.setState({ currentSelection: 'none' });\r\n use3dddPlus.setState({ showContextMenu: false });\r\n getAllColors();\r\n };\r\n const onObjectUpdated = (e) => {\r\n const obj = e.selected[0];\r\n if (e.selected.length > 1) {\r\n return;\r\n }\r\n if (!obj) return;\r\n const colors = [];\r\n const colorFill = {};\r\n obj.traverse((node) => {\r\n if (!colors.includes(node.fill)) colors.push(node.fill);\r\n });\r\n colors.forEach((element, index) => {\r\n colorFill[`layer${index}`] = element;\r\n });\r\n obj.colorFill = colorFill;\r\n if (e?.selected?.[0]?.colorFill) {\r\n use3dddPlus.setState({ colorFill: e.selected[0].colorFill });\r\n }\r\n\r\n const type = obj.text ? 'text' : obj.get('type');\r\n use3dddPlus.setState({\r\n currentSelection: type,\r\n });\r\n use3dddPlus.setState({ activeSelection: e.selected[0] });\r\n use3dddPlus.setState({ textInfo: e.selected[0].text });\r\n use3dddPlus.setState({ showContextMenu: false });\r\n getAllColors();\r\n };\r\n const onObjectMoving = (e: any) => {\r\n // console.log('moving...modified');\r\n // use3dddPlus.setState({mylogoAdded : true});\r\n use3dddPlus.getState().updateModifaction(false);\r\n const obj = e.target;\r\n if (isNaN(e.pointer.x) || isNaN(e.pointer.y)) {\r\n obj.set({\r\n top: use3dddPlus.getState().lastPosition.top,\r\n left: use3dddPlus.getState().lastPosition.left,\r\n });\r\n return;\r\n }\r\n\r\n obj.setCoords();\r\n if (obj.getBoundingRect().top < 10 || obj.getBoundingRect().left < 45) {\r\n obj.top = Math.max(obj.top, obj.top - obj.getBoundingRect().top + 10);\r\n obj.left = Math.max(obj.left, obj.left - obj.getBoundingRect().left + 45);\r\n obj.setCoords();\r\n }\r\n if (\r\n obj.getBoundingRect().top + obj.getBoundingRect().height + 10 >\r\n obj.canvas.height ||\r\n obj.getBoundingRect().left + obj.getBoundingRect().width + 45 >\r\n obj.canvas.width\r\n ) {\r\n obj.top = Math.min(\r\n obj.top,\r\n obj.canvas.height -\r\n obj.getBoundingRect().height +\r\n obj.top -\r\n obj.getBoundingRect().top -\r\n 10\r\n );\r\n obj.left = Math.min(\r\n obj.left,\r\n obj.canvas.width -\r\n obj.getBoundingRect().width +\r\n obj.left -\r\n obj.getBoundingRect().left -\r\n 45\r\n );\r\n obj.setCoords();\r\n }\r\n\r\n const brNew = obj.getBoundingRect();\r\n if (\r\n brNew.width + brNew.left + 45 >= obj.canvas.width ||\r\n brNew.height + brNew.top + 10 >= obj.canvas.height ||\r\n brNew.left < 45 ||\r\n brNew.top < 10\r\n ) {\r\n } else {\r\n left1 = obj.left;\r\n top1 = obj.top;\r\n scale1x = obj.scaleX;\r\n scale1y = obj.scaleY;\r\n width1 = obj.width;\r\n height1 = obj.height;\r\n }\r\n\r\n if (isObjectInCenter(e.target)) {\r\n use3dddPlus.getState().verticalLine.set({ visible: true });\r\n } else {\r\n use3dddPlus.getState().verticalLine.set({ visible: false });\r\n }\r\n if (isObjectInHorizontalCenter(e.target)) {\r\n use3dddPlus.getState().verticalLine.set({ visible: true });\r\n } else {\r\n use3dddPlus.getState().verticalLine.set({ visible: false });\r\n }\r\n if (isObjectInVerticalCenter(e.target)) {\r\n use3dddPlus.getState().horizontalLine.set({ visible: true });\r\n } else {\r\n use3dddPlus.getState().horizontalLine.set({ visible: false });\r\n }\r\n use3dddPlus.getState().setLastPosition({ top: obj.top, left: obj.left });\r\n };\r\n\r\n const outerCanvasContainer = document.getElementById('fabCanvas');\r\n\r\n const fontList = new Set<string>();\r\n document.fonts.forEach((font) => fontList.add(font.family));\r\n\r\n console.log('Preloading all available fonts from the document');\r\n\r\n // Preload all the fonts\r\n Array.from(fontList).forEach((font) => {\r\n new FontFaceObserver(font)\r\n .load()\r\n .then(() => {})\r\n .catch(() => {\r\n console.log(`${font} has not loaded.`);\r\n });\r\n });\r\n\r\n const canv = new fabric.Canvas('canvas', {\r\n centeredScaling: true,\r\n preserveObjectStacking: true,\r\n // backgroundColor: '#ffff00',\r\n stopContextMenu: false,\r\n // width: 500,\r\n // height: 300,\r\n\r\n width: outerCanvasContainer.clientWidth,\r\n height: outerCanvasContainer.clientHeight,\r\n });\r\n\r\n function isObjectInCenter(obj) {\r\n const brNew = obj.getBoundingRect();\r\n var canvasCenterX = canv.width / 2;\r\n var canvasCenterY = canv.height / 2;\r\n var objCenterX = brNew.left + brNew.width / 2;\r\n var objCenterY = brNew.top + brNew.height / 2;\r\n var threshold = 5;\r\n return (\r\n Math.abs(objCenterY - canvasCenterY) < threshold &&\r\n Math.abs(objCenterX - canvasCenterX) < threshold\r\n );\r\n }\r\n\r\n function isObjectInVerticalCenter(obj) {\r\n const brNew = obj.getBoundingRect();\r\n var canvasCenterY = canv.getHeight() / 2;\r\n var scaledObjCenterY = brNew.top + brNew.height / 2;\r\n var threshold = 5;\r\n return Math.abs(scaledObjCenterY - canvasCenterY) < threshold;\r\n }\r\n\r\n function isObjectInHorizontalCenter(obj) {\r\n const brNew = obj.getBoundingRect();\r\n var canvasCenterX = canv.width / 2;\r\n var scaledObjCenterX = brNew.left + brNew.width / 2;\r\n var threshold = 5;\r\n return Math.abs(scaledObjCenterX - canvasCenterX) < threshold;\r\n }\r\n const horizontalLine = new fabric.Line(\r\n [0, canv.height / 2, canv.height, canv.height / 2],\r\n {\r\n stroke: 'red',\r\n scaleX: 11,\r\n visible: false,\r\n selectable: false,\r\n type: 'line',\r\n }\r\n );\r\n\r\n const verticalLine = new fabric.Line(\r\n [canv.width / 2, 0, canv.width / 2, canv.width],\r\n {\r\n stroke: 'red',\r\n visible: false,\r\n selectable: false,\r\n type: 'line',\r\n }\r\n );\r\n\r\n horizontalLine.centerH();\r\n canv.add(horizontalLine);\r\n canv.add(verticalLine);\r\n use3dddPlus.setState({ horizontalLine: horizontalLine });\r\n use3dddPlus.setState({ verticalLine: verticalLine });\r\n\r\n const deleteImg = document.createElement('img');\r\n deleteImg.crossOrigin = 'anonymous';\r\n deleteImg.src =\r\n 'https://storage.googleapis.com/3ddplusgcp/logoEditor/assets/icons/delete.png';\r\n const rotateImg = document.createElement('img');\r\n rotateImg.crossOrigin = 'anonymous';\r\n rotateImg.src =\r\n 'https://storage.googleapis.com/3ddplusgcp/logoEditor/assets/icons/rotate.png';\r\n const settingImg = document.createElement('img');\r\n settingImg.crossOrigin = 'anonymous';\r\n settingImg.src =\r\n 'https://storage.googleapis.com/3ddplusgcp/logoEditor/assets/icons/settings.png';\r\n fabric.Object.prototype.objectCaching = false;\r\n fabric.Object.prototype.transparentCorners = false;\r\n fabric.Object.prototype.cornerColor = '#14caf7';\r\n fabric.Object.prototype.cornerStrokeColor = '#045791';\r\n fabric.Object.prototype.borderColor = '#14caf7';\r\n fabric.Object.prototype.cornerSize = 16;\r\n // fabric.Object.prototype.padding = 10;\r\n fabric.Object.prototype.cornerStyle = 'circle';\r\n fabric.Object.prototype.borderDashArray = [5, 5];\r\n // @ts-ignore\r\n fabric.Object.prototype.traverse = function (fn: any) {\r\n fn(this);\r\n if (this._objects)\r\n for (const childNode of this._objects) {\r\n childNode.traverse(fn);\r\n }\r\n };\r\n // @ts-ignore\r\n fabric.Canvas.prototype.traverse = function (fn: any) {\r\n fn(this);\r\n if (this._objects)\r\n for (const childNode of this._objects) {\r\n childNode.traverse(fn);\r\n }\r\n };\r\n\r\n function renderIcon(icon) {\r\n return function renderIcon(ctx, left, top, fabricObject) {\r\n var size = this.cornerSize;\r\n ctx.save();\r\n ctx.translate(left, top);\r\n ctx.rotate(fabric.util.degreesToRadians(fabricObject.angle));\r\n ctx.drawImage(icon, -size / 2, -size / 2, size, size);\r\n ctx.restore();\r\n };\r\n }\r\n\r\n fabric.Object.prototype.controls.deleteControl = new fabric.Control({\r\n x: 0.53,\r\n y: -0.53,\r\n offsetY: -16,\r\n offsetX: 16,\r\n cursorStyle: 'pointer',\r\n //@ts-ignore\r\n mouseUpHandler: deleteObject,\r\n render: renderIcon(deleteImg),\r\n cornerSize: 28,\r\n });\r\n fabric.Object.prototype.controls.settingControl = new fabric.Control({\r\n x: -0.53,\r\n y: -0.53,\r\n offsetY: -16,\r\n offsetX: -16,\r\n cursorStyle: 'pointer',\r\n //@ts-ignore\r\n mouseUpHandler: function (e) {\r\n use3dddPlus.setState({\r\n showContextMenu: true,\r\n });\r\n\r\n const rect = canv.getElement().getBoundingClientRect();\r\n const x = e.clientX - rect.left;\r\n const y = e.clientY - rect.top;\r\n // You can add your context menu rendering logic here\r\n // Example: Render a simple alert with the coordinates\r\n use3dddPlus.setState({ contextMenuCoordinates: { x: x, y: y } });\r\n },\r\n render: renderIcon(settingImg),\r\n cornerSize: 28,\r\n });\r\n //@ts-ignore\r\n function deleteObject(eventData, transform) {\r\n const canvasTarget = transform.target;\r\n const canvas = canvasTarget.canvas;\r\n const activeSelection = use3dddPlus.getState().activeSelection;\r\n if (activeSelection) {\r\n if (activeSelection.icon) {\r\n canvas.remove(activeSelection);\r\n removeItem(activeSelection);\r\n } else if (activeSelection._objects) {\r\n activeSelection._objects.map((obj) => {\r\n canvas.remove(obj);\r\n removeItem(obj);\r\n });\r\n }\r\n // canvas.remove(activeSelection);\r\n use3dddPlus.getState().updateModifaction(true);\r\n canvas.requestRenderAll();\r\n use3dddPlus.setState({ selectedAll: false });\r\n canvas.discardActiveObject();\r\n // removeItem(activeSelection);\r\n }\r\n }\r\n const removeItem = (value: any) => {\r\n //@ts-ignore\r\n var index = use3dddPlus\r\n .getState()\r\n .storeAllObject.findIndex((obj: any) => obj.id === value.id);\r\n if (index === -1 && value && value._objects && value._objects.length > 0) {\r\n var index = use3dddPlus\r\n .getState()\r\n //@ts-ignore\r\n\r\n .storeAllObject.indexOf(value._objects[0]);\r\n }\r\n if (index > -1) {\r\n use3dddPlus.getState().storeAllObject.splice(index, 1);\r\n use3dddPlus.setState({\r\n storeAllObject: [...use3dddPlus.getState().storeAllObject],\r\n });\r\n }\r\n };\r\n\r\n fabric.Object.prototype.controls.mtr = new fabric.Control({\r\n x: 0,\r\n y: -0.5,\r\n offsetY: -40,\r\n cursorStyle: 'crosshair',\r\n //@ts-ignore\r\n actionHandler: fabric?.controlsUtils.rotationWithSnapping,\r\n actionName: 'rotate',\r\n render: function renderIcon(ctx, left, top, fabricObject) {\r\n var size = this.cornerSize;\r\n ctx.save();\r\n ctx.translate(left, top);\r\n ctx.rotate(fabric.util.degreesToRadians(fabricObject.angle));\r\n ctx.drawImage(rotateImg, -size / 2, -size / 2, size, size);\r\n ctx.restore();\r\n },\r\n //@ts-ignore\r\n cornerSize: 28,\r\n withConnection: true,\r\n });\r\n const getAllColors = () => {\r\n if (!canv?.getObjects()) {\r\n return;\r\n }\r\n const colors = [];\r\n use3dddPlus.getState().fabricCanvas.traverse((node) => {\r\n \r\n if (node.type === 'text' || node.type === 'path') {\r\n if (\r\n node.fill &&\r\n (node.fill === 'rgb(0,0,0)' ||\r\n node.fill === '#000' ||\r\n node.fill === '#000000')\r\n ) {\r\n use3dddPlus.getState().fabricCanvas.remove(node);\r\n // node.set({\r\n // fill: '#ffff00',\r\n // });\r\n }\r\n }\r\n\r\n if (\r\n node.stroke &&\r\n node.type !== 'line' &&\r\n node.strokeWidth !== 0 &&\r\n node.stroke !== '' &&\r\n !colors.includes(node.stroke) &&\r\n node.stroke !== 'rgb(0,0,0)'\r\n ) {\r\n colors.push(node.stroke);\r\n }\r\n if (\r\n node.fill &&\r\n node.fill !== '' &&\r\n !colors.includes(node.fill) &&\r\n node.fill !== 'rgb(0,0,0)'\r\n ) {\r\n colors.push(node.fill);\r\n }\r\n // console.log(colors);\r\n });\r\n use3dddPlus.setState({ allColor: colors });\r\n\r\n // console.log(use3dddPlus.getState().allColor);\r\n // use3dddPlus.setState({mylogoAdded : true});\r\n };\r\n canv.on('after:render', getAllColors);\r\n canv.on('selection:created', onObjectSelected);\r\n canv.on('selection:cleared', onObjectDeselected);\r\n canv.on('selection:updated', onObjectUpdated);\r\n canv.on('object:moving', onObjectMoving);\r\n canv.on('object:modified', function (e) {\r\n use3dddPlus.setState({ mylogoAdded: true });\r\n e.target.lockRotation = false;\r\n use3dddPlus.getState().updateModifaction(true);\r\n if (isObjectInCenter(e.target)) {\r\n use3dddPlus.getState().verticalLine.set({ visible: true });\r\n } else {\r\n use3dddPlus.getState().verticalLine.set({ visible: false });\r\n }\r\n if (isObjectInHorizontalCenter(e.target)) {\r\n use3dddPlus.getState().horizontalLine.set({ visible: true });\r\n } else {\r\n use3dddPlus.getState().horizontalLine.set({ visible: false });\r\n }\r\n if (isObjectInVerticalCenter(e.target)) {\r\n use3dddPlus.getState().horizontalLine.set({ visible: true });\r\n } else {\r\n use3dddPlus.getState().horizontalLine.set({ visible: false });\r\n }\r\n });\r\n\r\n canv.on('object:scaling', (e) => {\r\n const obj = e.target;\r\n if (isNaN(e.pointer.x) || isNaN(e.pointer.y)) {\r\n const { top, left, scaleX, scaleY } = use3dddPlus.getState().lastPosition;\r\n obj.set({\r\n top,\r\n left,\r\n scaleX,\r\n scaleY,\r\n });\r\n return;\r\n }\r\n obj.setCoords();\r\n const brNew = obj.getBoundingRect();\r\n if (\r\n brNew.width + brNew.left + 45 >= obj.canvas.width ||\r\n brNew.height + brNew.top + 10 >= obj.canvas.height ||\r\n brNew.left < 45 ||\r\n brNew.top < 10\r\n ) {\r\n obj.left = left1;\r\n obj.top = top1;\r\n obj.scaleX = scale1x;\r\n obj.scaleY = scale1y;\r\n obj.width = width1;\r\n obj.height = height1;\r\n } else {\r\n left1 = obj.left;\r\n top1 = obj.top;\r\n scale1x = obj.scaleX;\r\n scale1y = obj.scaleY;\r\n width1 = obj.width;\r\n height1 = obj.height;\r\n }\r\n obj.setCoords();\r\n use3dddPlus.getState().setLastPosition({\r\n top: obj.top,\r\n left: obj.left,\r\n scaleX: obj.scaleX,\r\n scaleY: obj.scaleY,\r\n });\r\n });\r\n canv.on('object:rotating', function (e) {\r\n const obj = e.target;\r\n let brNew = obj.getBoundingRect();\r\n if (obj.getBoundingRect().top - 45 < 0 || obj.getBoundingRect().left < 45) {\r\n obj.top = Math.max(obj.top, obj.top - obj.getBoundingRect().top + 45);\r\n obj.left = Math.max(obj.left, obj.left - obj.getBoundingRect().left + 45);\r\n obj.setCoords();\r\n }\r\n if (\r\n obj.getBoundingRect().top + 45 + obj.getBoundingRect().height >\r\n obj.canvas.height ||\r\n obj.getBoundingRect().left + 45 + obj.getBoundingRect().width >\r\n obj.canvas.width\r\n ) {\r\n if (\r\n obj.getBoundingRect().top - 45 < 0 ||\r\n obj.getBoundingRect().left - 45 < 0\r\n ) {\r\n obj.lockRotation = true;\r\n brNew = obj.getBoundingRect();\r\n while (\r\n Math.ceil(obj.width + obj.left + 45) >\r\n Math.floor(obj.canvas.width - 45) ||\r\n Math.ceil(obj.height + obj.top + 45) >\r\n Math.floor(obj.canvas.height - 45) ||\r\n Math.ceil(obj.left) < 0 ||\r\n Math.ceil(obj.top) < 0\r\n ) {\r\n obj.centeredRotation = true;\r\n if (obj.angle >= 0 && obj.angle <= 180) {\r\n obj.set('angle', obj.angle - 1);\r\n if (Math.ceil(brNew.top) < 45) {\r\n obj.set('top', obj.top + 4);\r\n }\r\n if (Math.ceil(brNew.left) < 45) {\r\n obj.set('left', obj.left + 4);\r\n }\r\n if (\r\n Math.ceil(brNew.width + brNew.left + 45) >\r\n Math.floor(obj.canvas.width - 45)\r\n ) {\r\n obj.set('left', brNew.left - 1);\r\n }\r\n if (\r\n Math.ceil(brNew.height + brNew.top + 45) >\r\n Math.floor(obj.canvas.height - 45)\r\n ) {\r\n obj.set('top', obj.top - 4);\r\n }\r\n } else {\r\n obj.set('angle', obj.angle + 1);\r\n if (Math.ceil(brNew.top) < 45) {\r\n obj.set('top', obj.top + 4);\r\n }\r\n if (Math.ceil(brNew.left) < 45) {\r\n obj.set('left', obj.left - 4);\r\n }\r\n if (\r\n Math.ceil(brNew.width + brNew.left + 45) >\r\n Math.floor(obj.canvas.width - 45)\r\n ) {\r\n obj.set('angle', obj.angle - 1);\r\n obj.set('left', obj.left - 1);\r\n }\r\n if (\r\n Math.ceil(obj.height + obj.top + 45) >\r\n Math.floor(obj.canvas.height - 45)\r\n ) {\r\n obj.set('top', obj.top - 4);\r\n }\r\n }\r\n canv.renderAll();\r\n brNew = obj.getBoundingRect();\r\n }\r\n } else {\r\n obj.top = Math.min(\r\n obj.top,\r\n obj.canvas.height -\r\n obj.getBoundingRect().height +\r\n obj.top -\r\n obj.getBoundingRect().top -\r\n 45\r\n );\r\n obj.left = Math.min(\r\n obj.left,\r\n obj.canvas.width -\r\n obj.getBoundingRect().width +\r\n obj.left -\r\n obj.getBoundingRect().left -\r\n 45\r\n );\r\n obj.setCoords();\r\n }\r\n }\r\n });\r\n return canv;\r\n};\r\n","import React from 'react';\r\n\r\nexport interface CardProps {\r\n cardClass?: string;\r\n children?: React.ReactNode;\r\n onClick?: (e: React.MouseEvent<HTMLDivElement, MouseEvent>) => void;\r\n style?: React.CSSProperties;\r\n key?:string\r\n \r\n}\r\n\r\nexport const Card = ({ cardClass,children, onClick,style,key }: CardProps) => {\r\n return (\r\n <>\r\n <div\r\n className={`card bg-base-100 relative ${cardClass}`}\r\n onClick={onClick}\r\n style={style}\r\n key={ key}\r\n >\r\n {children}\r\n </div>\r\n </>\r\n );\r\n};","import React from 'react';\r\n\r\nexport interface CardBodyProps {\r\n bodyClass?: string;\r\n children?: React.ReactNode;\r\n}\r\nexport const CardBody = ({ bodyClass, children }: CardBodyProps) => {\r\n return (\r\n <>\r\n <div className={`card-body ${bodyClass}`}>{children}</div>\r\n </>\r\n );\r\n};\r\n","import React from 'react';\r\nimport './card.css';\r\n\r\nexport interface CardMediaProps {\r\n alt?: string;\r\n imageClass?: string;\r\n src?: string;\r\n}\r\nexport const CardMedia = ({ alt, imageClass, src }: CardMediaProps) => {\r\n return (\r\n <>\r\n <div\r\n role=\"img\"\r\n aria-label={alt}\r\n className={`cardImage ${imageClass}`}\r\n style={{ backgroundImage: `url('${src}')` }}\r\n ></div>\r\n </>\r\n );\r\n};","import React from 'react';\r\nimport { TAG_TEXT_COLOR } from '../../theme';\r\nexport interface CardTagsProps {\r\n children?: React.ReactNode;\r\n tagsClass?: string;\r\n}\r\nexport const CardTags = ({ children, tagsClass }: CardTagsProps) => {\r\n return (\r\n <>\r\n <div\r\n className={`${tagsClass} flex capitalize rounded px-[11px] py-[5px] text-center items-center align-baseline ${TAG_TEXT_COLOR} font-normal`}\r\n >\r\n {children}\r\n </div>\r\n </>\r\n );\r\n};\r\n","import React from 'react';\r\nexport interface CardTitleProps {\r\n name?: string;\r\n titleClass?: string;\r\n}\r\nexport const CardTitle = ({ name, titleClass }: CardTitleProps) => {\r\n return (\r\n <>\r\n <p className={`card-title ${titleClass}`}>{name}</p>\r\n </>\r\n );\r\n};\r\n","import React, { useRef, useState } from 'react';\r\nimport { MdOutlineFileUpload } from 'react-icons/md';\r\nimport { IconButton } from '../icon';\r\ninterface FileUploadButtonProps {\r\n onFileSelect: (file: File) => void;\r\n}\r\n\r\nconst FileUploadButton: React.FC<FileUploadButtonProps> = ({\r\n onFileSelect,\r\n}) => {\r\n const fileInputRef = useRef<HTMLInputElement>(null);\r\n const [isDragging, setIsDragging] = useState(false);\r\n\r\n const handleFileSelect = (event: React.ChangeEvent<HTMLInputElement>) => {\r\n const selectedFile = event.target.files?.[0];\r\n\r\n if (selectedFile) {\r\n onFileSelect(selectedFile);\r\n }\r\n fileInputRef.current.value = null;\r\n };\r\n\r\n const handleDragEnter = (event: React.DragEvent<HTMLDivElement>) => {\r\n event.preventDefault();\r\n setIsDragging(true);\r\n };\r\n\r\n const handleDragLeave = (event: React.DragEvent<HTMLDivElement>) => {\r\n event.preventDefault();\r\n setIsDragging(false);\r\n };\r\n\r\n const handleDrop = (event: React.DragEvent<HTMLDivElement>) => {\r\n event.preventDefault();\r\n setIsDragging(false);\r\n\r\n const droppedFile = event.dataTransfer.files[0];\r\n if (droppedFile) {\r\n onFileSelect(droppedFile);\r\n }\r\n };\r\n\r\n return (\r\n <>\r\n <div\r\n className={`flex items-center justify-center w-full relative h-full ${\r\n isDragging ? 'dragging' : ''\r\n }`}\r\n onDragEnter={handleDragEnter}\r\n onDragLeave={handleDragLeave}\r\n onDragOver={(event) => event.preventDefault()}\r\n onDrop={handleDrop}\r\n >\r\n <label\r\n htmlFor=\"file-upload\"\r\n // className=\"w-[40vw] h-[40vh] 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\"\r\n className=\"w-[40vw] h-[40vh] 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\"\r\n >\r\n <div className=\" text-center flex flex-col gap-[8px]\">\r\n <IconButton\r\n label=\"\"\r\n icon={<MdOutlineFileUpload />}\r\n className={\r\n 'pointer-events-auto cursor-pointer m-auto text-[#E11A38] bg-[#FCE8EB] p-[16px] h-[unset] !rounded-full'\r\n }\r\n size=\"1.125rem\"\r\n ></IconButton>\r\n <div className=\"text-[#5D5D5D] text-base font-bold\">\r\n Drag Files To Upload\r\n </div>\r\n <div className=\"text-[#5D5D5D] text-base font-bold\">Or</div>\r\n </div>\r\n <div>\r\n {' '}\r\n <button\r\n onClick={() => fileInputRef.current?.click()}\r\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]\"\r\n >\r\n BROWSE FILE\r\n </button>\r\n </div>\r\n\r\n <div className=\" text-center text-[#727272] text-sm\">\r\n <p>Max file size: 25M</p>\r\n {/* <p>Supported files types: JPG, JPEG, PNG, GIF, EPS, PDF, SVG, AI</p> */}\r\n <p>Supported files types: JPG, JPEG, PNG, PDF, SVG, AI</p>\r\n </div>\r\n <input\r\n id=\"file-upload\"\r\n ref={fileInputRef}\r\n type=\"file\"\r\n onChange={handleFileSelect}\r\n className=\"hidden\"\r\n accept=\"image/png, image/jpeg , image/gif , image/svg+xml , .eps , .ai , .pdf\"\r\n />\r\n </label>\r\n </div>{' '}\r\n </>\r\n );\r\n};\r\n\r\nexport default FileUploadButton;\r\n","import React, { useState } from 'react';\r\nimport { TEXT_SIZE_9 } from '../../theme';\r\nimport './colorPalette.css';\r\nimport { ToolTip } from '../toolTip';\r\nimport { use3dddPlus } from '../../store';\r\n\r\nexport interface ColorPaletteProps {\r\n previousColor?: string[];\r\n previousClass?: string;\r\n mainIndex?: any;\r\n handleColorChange?: any;\r\n mainClass?: string;\r\n index?: any;\r\n boxWidth?: number;\r\n gap?: number;\r\n style?: any;\r\n}\r\n\r\nexport const ColorPalette = ({\r\n previousColor,\r\n previousClass = '',\r\n mainIndex = '',\r\n handleColorChange,\r\n style = {},\r\n}: // mainClass = '',\r\n ColorPaletteProps) => {\r\n const [selectColor, setSelectColor] = useState(null);\r\n const [colorList] = use3dddPlus(state => [\r\n state.defaultColorList\r\n ]);\r\n const handleColorClick = (color, index) => {\r\n setSelectColor(color);\r\n handleColorChange(color, index);\r\n };\r\n\r\n return (\r\n <>\r\n <div\r\n id=\"colorPalette\"\r\n className={`colorPalette right-[10.6rem] z-10 max-h-[16.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 h-[300px]`}\r\n style={style}\r\n >\r\n {colorList?.length > 0 && (\r\n <>\r\n <p\r\n className={`${TEXT_SIZE_9} leading-[1.125rem] font-bold pb-[1.125rem] text-left`}\r\n >\r\n Choose color\r\n </p>\r\n <div\r\n className={`flex flex-wrap gap-x-[0.8125rem] gap-y-[0.3125rem] pb-[2.0938rem] max-h-[10.9rem] overflow-y-auto`}\r\n >\r\n {colorList?.map((color, index) => (\r\n <div\r\n className=\"aspect-square border border-solid border-[#D6D6D6] cursor-pointer relative btn !p-0 !w-[1.875rem] !h-[1.875rem] min-h-[unset] rounded-none\"\r\n key={index + color.name}\r\n >\r\n <ToolTip label={color.name}>\r\n <ColorBox\r\n color={color.color}\r\n index={index}\r\n onClick={() => handleColorClick(color.color, mainIndex)}\r\n boxClass={`w-[1.875rem] h-[1.875rem] ${selectColor === color.color ? 'border border-[red]' : ''\r\n }`}\r\n />\r\n </ToolTip>\r\n </div>\r\n ))}\r\n </div>\r\n </>\r\n )}\r\n {previousColor?.length > 0 && (\r\n <>\r\n <div\r\n className={`flex flex-row gap-x-[0.875rem] pt-[1.3438rem] border-t border-t-[#EBEBEB]`}\r\n >\r\n <p\r\n className={`${TEXT_SIZE_9} leading-[1.125rem] font-bold pb-[1.125rem]`}\r\n >\r\n Previously used\r\n </p>\r\n <div\r\n className={`flex flex-wrap gap-x-[0.8125rem] gap-y-[0.3125rem] border-b border-b-[#EBEBEB] ${previousClass}`}\r\n >\r\n {previousColor?.map((color, index) => (\r\n <ColorBox\r\n color={color}\r\n index={'previous' + index}\r\n onClick={() =>\r\n handleColorClick(color, mainIndex + 'Choose' + index)\r\n }\r\n boxClass={`w-[1.875rem] h-[1.875rem] ${selectColor === color ? 'border border-[red]' : ''\r\n }`}\r\n />\r\n ))}\r\n </div>\r\n </div>\r\n </>\r\n )}\r\n </div>\r\n </>\r\n );\r\n};\r\n\r\nexport interface BoxColorProps {\r\n color?: string;\r\n index?: any;\r\n boxClass?: string;\r\n onClick?: (e: React.MouseEvent<HTMLDivElement, MouseEvent>) => void;\r\n onChange?: (e: React.MouseEvent<HTMLDivElement, MouseEvent>) => void;\r\n children?: React.ReactNode;\r\n}\r\n\r\nexport const ColorBox = ({\r\n color,\r\n index,\r\n boxClass = '',\r\n onClick,\r\n onChange,\r\n children,\r\n}: BoxColorProps) => {\r\n return (\r\n <div\r\n key={index}\r\n style={{ backgroundColor: color }}\r\n className={`w-10 h-10 border border-[#D6D6D6] ${boxClass}`}\r\n onClick={onClick}\r\n onChange={onChange}\r\n >\r\n {children}\r\n {color === 'transparent' && (\r\n <div\r\n style={{\r\n width: '2px',\r\n height: '39px',\r\n background: '#FF0000',\r\n transform: 'rotate(-45deg)',\r\n marginLeft: '13px',\r\n marginTop: '-6px',\r\n }}\r\n >\r\n \r\n </div>\r\n )}\r\n </div>\r\n );\r\n};\r\n","import React from 'react';\r\nimport { ToolTip } from '../toolTip';\r\nimport { use3dddPlus } from '../../store';\r\n\r\nexport const ColorImpl = (props) => {\r\n const getLable = (colorCode) => {\r\n const color = use3dddPlus.getState().defaultColorList.find((c) => colorCode === c.color);\r\n if (color && color.name) {\r\n return color.name;\r\n } else {\r\n return colorCode;\r\n }\r\n };\r\n\r\n return (\r\n <ToolTip label={getLable(props.color)}>\r\n <div className={props.mClass}>\r\n <div\r\n className={`border border-gray-600 w-[30px] h-[30px] group`}\r\n style={{\r\n background: props.color === 'transparent' ? '#FFFFFF' : props.color,\r\n // border:'5px solid yellow'\r\n }}\r\n onClick={(event: any) => {\r\n event.stopPropagation();\r\n event.preventDefault();\r\n\r\n props.setDisplayPallet({\r\n visible: true,\r\n property: props.property,\r\n color: '',\r\n callback: props.callback,\r\n });\r\n props.setPosition({\r\n x: event.clientX,\r\n y:\r\n window.innerHeight < event.clientY + 280\r\n ? event.clientY - 300\r\n : event.clientY,\r\n });\r\n }}\r\n >\r\n {props.color === 'transparent' && (\r\n <div\r\n style={{\r\n width: '2px',\r\n height: '39px',\r\n background: '#FF0000',\r\n transform: 'rotate(-45deg)',\r\n marginLeft: '13px',\r\n marginTop: '-6px',\r\n }}\r\n >\r\n \r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n </ToolTip>\r\n );\r\n};\r\n","import React, { useEffect, useState, useRef, useMemo } from 'react';\r\nimport { use3dddPlus } from '../../store';\r\nimport { shallow } from 'zustand/shallow';\r\nimport { fabric } from 'fabric';\r\nimport { ColorImpl, ColorPalette } from '../colorPallet';\r\nimport { Initpopup } from '../../store/fabric/Popupcanvas';\r\nimport { CgArrowRight } from 'react-icons/cg';\r\nimport { EyeDropper, IconButton } from '../icon';\r\nimport { GiDrop } from 'react-icons/gi';\r\nimport { CgRedo, CgUndo } from 'react-icons/cg';\r\nimport { MdOutlineCancel } from 'react-icons/md';\r\nimport { ToolTip } from '../toolTip';\r\n// import { Button } from 'reakit';\r\nexport const PopUpCanvas = () => {\r\n const [\r\n popupCanvas,\r\n canvas,\r\n colorFill,\r\n changeSVGColor,\r\n popUpCanvasUndo,\r\n refreshColor,\r\n defaultColorFill,\r\n setDefaultColorFill,\r\n defaultColorFillCopy,\r\n setDefaultColorFillCopy,\r\n setHasUploadScreen,\r\n availableColorCodes,\r\n ] = use3dddPlus(\r\n (state) => [\r\n state.popupCanv,\r\n state.fabricCanvas,\r\n state.colorFill,\r\n state.changeSVGColor,\r\n state.popUpCanvasUndo,\r\n state.refreshColor,\r\n state.defaultColorFill,\r\n state.setDefaultColorFill,\r\n state.defaultColorFillCopy,\r\n state.setDefaultColorFillCopy,\r\n state.setHasUploadScreen,\r\n state.availableColorCodes,\r\n ],\r\n shallow\r\n );\r\n const [colorCount, setColorCount] = useState(8);\r\n const [colorFillCount, setColorFillCount] = useState(-1);\r\n // const [defaultColorFill, setDefaultColorFill] = useState([]);\r\n const [isRefresh, setIsRefresh] = useState(false);\r\n const [isNextClicked, setIsNextClicked] = useState(false);\r\n const defaultColorFillRef = useRef([]);\r\n const [zoomLevel, setZoomLevel] = useState(1);\r\n const panSpeed = 30;\r\n\r\n const [displayPallet, setDisplayPallet] = useState({\r\n visible: false,\r\n property: '',\r\n color: '',\r\n callback: null,\r\n });\r\n const [position, setPosition] = useState(null);\r\n\r\n useEffect(() => {\r\n if (!displayPallet || !displayPallet.visible) {\r\n setDefaultColorFill(\r\n defaultColorFill.map((cf: any) => ({ ...cf, hasPallet: false }))\r\n );\r\n }\r\n }, [displayPallet]);\r\n\r\n useEffect(() => {\r\n defaultColorFillRef.current = defaultColorFill;\r\n }, [defaultColorFill]);\r\n\r\n useEffect(() => {\r\n if (colorFill && Object.keys(colorFill).length) {\r\n if (colorFillCount === -1) {\r\n setColorFillCount(Object.keys(colorFill).length);\r\n const defaultCF = [];\r\n Object.keys(colorFill).map((cf: any) => {\r\n defaultCF.push({\r\n property: cf,\r\n default: colorFill[cf],\r\n updated: colorFill[cf],\r\n objects: defaultColorFill.find((dcf) => dcf.property === cf)\r\n ?.objects,\r\n });\r\n });\r\n setDefaultColorFill(defaultCF);\r\n }\r\n\r\n if (isRefresh) {\r\n setIsRefresh(false);\r\n setTimeout(() => {\r\n Object.keys(colorFill).map((cf: any) => {\r\n const dcf = defaultColorFill.find(\r\n (dcf: any) => dcf.property === cf\r\n );\r\n if (dcf && dcf.default !== dcf.updated) {\r\n changeSVGColor(dcf.property, dcf.updated);\r\n }\r\n });\r\n }, 100);\r\n }\r\n }\r\n // setColorFillCount(-1);\r\n }, [colorFill]);\r\n\r\n useEffect(() => {\r\n if (colorFillCount && colorFillCount > 0) {\r\n setColorCount(colorFillCount);\r\n } else {\r\n setColorCount(8);\r\n }\r\n }, [colorFillCount]);\r\n\r\n const onColorUpdate = (property: any, color: any) => {\r\n // const foundIndex = defaultColorFill.findIndex(\r\n // (cf: any) => cf.property === property\r\n // );\r\n // if (foundIndex >= 0) {\r\n // defaultColorFill[foundIndex].updated = color;\r\n // }\r\n\r\n if (changeSVGColor(property, color)) {\r\n setDefaultColorFill(\r\n defaultColorFill.map(\r\n (c: any) => (c.property === property ? { ...c, updated: color } : c)\r\n // colorFill[property] === c.updated ? { ...c, updated: color } : c\r\n )\r\n );\r\n setDefaultColorFillCopy(\r\n defaultColorFillCopy.map(\r\n (c: any) => (c.property === property ? { ...c, updated: color } : c)\r\n // colorFill[property] === c.updated ? { ...c, updated: color } : c\r\n )\r\n );\r\n }\r\n };\r\n\r\n const handleColorCountChange = (e) => {\r\n setColorCount(Number(e.target.value));\r\n // use3dddPlus.setState({ colorCount: Number(e.target.value) });\r\n refreshColor(Number(e.target.value));\r\n setIsRefresh(true);\r\n };\r\n const resizeCanvas = () => {\r\n if (document.getElementById('imageCanvas')) {\r\n const canvas = use3dddPlus.getState().popupCanv;\r\n const outerCanvasContainer = document.getElementById('imageCanvas');\r\n const containerWidth = outerCanvasContainer.clientWidth;\r\n const scale = containerWidth / canvas.getWidth();\r\n const zoom = canvas.getZoom() * scale;\r\n canvas.setWidth(containerWidth);\r\n //@ts-ignore\r\n canvas.setHeight(parseInt(outerCanvasContainer.clientHeight));\r\n canvas.setViewportTransform([zoom, 0, 0, zoom, 0, 0]);\r\n canvas.renderAll();\r\n }\r\n };\r\n\r\n const removeColorPalatte = () => {\r\n setDisplayPallet({\r\n visible: false,\r\n property: '',\r\n color: '',\r\n callback: null,\r\n });\r\n };\r\n\r\n useEffect(() => {\r\n fabric.Object.prototype.hasControls = false;\r\n fabric.Object.prototype.hasBorders = false;\r\n setDefaultColorFill([]);\r\n setColorFillCount(-1);\r\n setHasUploadScreen(true);\r\n const popupCanv = Initpopup();\r\n use3dddPlus.setState({ popupCanv: popupCanv });\r\n resizeCanvas();\r\n window.addEventListener('resize', resizeCanvas);\r\n window.addEventListener('click', removeColorPalatte);\r\n //FOR REMOVING COLOR\r\n\r\n popupCanv.on('mouse:down', function (event) {\r\n use3dddPlus.getState().popUpCanvasUpdateModification(true);\r\n let removedColors = [];\r\n\r\n if (event.target.type !== \"line\") {\r\n removedColors.push(event.target.fill);\r\n popupCanv.remove(event.target);\r\n popupCanv.renderAll();\r\n }\r\n\r\n let defaultColorsCopy = defaultColorFillRef.current;\r\n removedColors.map((rc: any) => {\r\n if (popupCanv.getObjects().filter((obj: any) => obj.fill === rc).length < 1) {\r\n defaultColorsCopy = defaultColorsCopy.filter((dc: any) => dc.updated !== RGBToHex(rc));\r\n }\r\n });\r\n setDefaultColorFill(defaultColorsCopy);\r\n use3dddPlus.getState().popUpCanvasUpdateModification(true);\r\n\r\n });\r\n\r\n return () => {\r\n setHasUploadScreen(false);\r\n window.removeEventListener('click', removeColorPalatte);\r\n };\r\n }, []);\r\n\r\n const popupCanvasCancel = () => {\r\n fabric.Object.prototype.hasControls = true;\r\n fabric.Object.prototype.hasBorders = true;\r\n setDefaultColorFill([]);\r\n use3dddPlus.setState({ uploadImageModalDisplay: false });\r\n popupCanvas.remove(...popupCanvas.getObjects());\r\n use3dddPlus.setState({ colorFill: {} });\r\n use3dddPlus.setState({ popupCanvasStoreHistory: [] });\r\n use3dddPlus.setState({ popUpCanvasCount: 1 });\r\n };\r\n\r\n const popupCanvasContinue = () => {\r\n if (!conflictColors || conflictColors.length < 1) {\r\n setIsNextClicked(false);\r\n onContinue();\r\n } else {\r\n setIsNextClicked(true);\r\n }\r\n };\r\n\r\n const onContinue = () => {\r\n fabric.Object.prototype.hasControls = true;\r\n fabric.Object.prototype.hasBorders = true;\r\n //@ts-ignore\r\n use3dddPlus.setState({ uploadImageModalDisplay: false });\r\n use3dddPlus.setState({ selectedStepper: undefined });\r\n popupCanvas.getObjects().forEach((obj) => {\r\n if (obj.type === 'line') {\r\n popupCanvas.remove(obj);\r\n }\r\n });\r\n const sel = new fabric.ActiveSelection(popupCanvas.getObjects(), {\r\n //@ts-ignore\r\n popupCanvas: popupCanvas,\r\n });\r\n popupCanvas.setActiveObject(sel);\r\n\r\n popupCanvas.requestRenderAll();\r\n let clipboard;\r\n popupCanvas.getActiveObject().clone(function (cloned) {\r\n clipboard = cloned;\r\n\r\n if (clipboard && clipboard.type === 'activeSelection') {\r\n clipboard.canvas = canvas;\r\n const objs = [];\r\n clipboard.forEachObject(function (obj: any) {\r\n if (!obj.id) {\r\n obj.set({\r\n id: use3dddPlus.getState().guid()\r\n })\r\n }\r\n objs.push(obj);\r\n });\r\n\r\n const alltogetherObj = new fabric.Group(objs, {});\r\n canvas.centerObject(alltogetherObj);\r\n canvas.add(alltogetherObj);\r\n canvas.setActiveObject(alltogetherObj);\r\n alltogetherObj.set({\r\n //@ts-ignore\r\n colorFill: use3dddPlus.getState().colorFill,\r\n id: use3dddPlus.getState().guid()\r\n });\r\n alltogetherObj._objects.map((node) => {\r\n let _C = node.fill === 'transparent' || node.fill === '' || node.fill === undefined ||\r\n (typeof node.fill === 'string' && node.fill.includes('#'))\r\n ? node.fill\r\n : RGBToHex(node.fill);\r\n if (_C) {\r\n node.set({\r\n fill: _C,\r\n });\r\n }\r\n })\r\n alltogetherObj.setCoords();\r\n use3dddPlus.getState().forStoringAllObject(alltogetherObj); //for pushing the data into array for layers\r\n use3dddPlus.getState().forIconCapture();\r\n //@ts-ignore\r\n alltogetherObj.icon = use3dddPlus.getState().iconImage;\r\n } else {\r\n canvas.add(clipboard);\r\n }\r\n\r\n canvas.requestRenderAll();\r\n popupCanvas.clear();\r\n use3dddPlus.setState({ popupCanvasStoreHistory: [] });\r\n use3dddPlus.getState().updateModifaction(true);\r\n });\r\n };\r\n\r\n const RGBToHex = (rgb) => {\r\n if (rgb) {\r\n if (rgb.indexOf('rgba') >= 0) {\r\n const rgba = rgb.replace(/^rgba?\\(|\\s+|\\)$/g, '').split(',');\r\n return `#${(\r\n (1 << 24) +\r\n (parseInt(rgba[0]) << 16) +\r\n (parseInt(rgba[1]) << 8) +\r\n parseInt(rgba[2])\r\n )\r\n .toString(16)\r\n .slice(1)}`;\r\n } else {\r\n let sep = rgb.indexOf(',') > -1 ? ',' : ' ';\r\n rgb = rgb.substr(4).split(')')[0].split(sep);\r\n let r = (+rgb[0]).toString(16),\r\n g = (+rgb[1]).toString(16),\r\n b = (+rgb[2]).toString(16);\r\n\r\n if (r.length == 1) r = '0' + r;\r\n if (g.length == 1) g = '0' + g;\r\n if (b.length == 1) b = '0' + b;\r\n return '#' + r + g + b;\r\n }\r\n } else {\r\n return '';\r\n }\r\n };\r\n\r\n const resetHandler = () => {\r\n use3dddPlus.getState().popUpCanvasUpdateModification(true);\r\n const colors = use3dddPlus.getState().popupCanvasStoreHistory[0].colorFill;\r\n use3dddPlus\r\n .getState()\r\n .popupCanv.loadFromJSON(\r\n use3dddPlus.getState().popupCanvasStoreHistory[0].json\r\n );\r\n\r\n popupCanvas.getObjects().forEach((obj: any) => {\r\n if (obj.type === 'line') {\r\n popupCanvas.remove(obj);\r\n }\r\n });\r\n\r\n const canvas = use3dddPlus.getState().popupCanv;\r\n var gridSize = 83; // Size of each grid cell\r\n var canvasWidth = canvas.width;\r\n var canvasHeight = canvas.height;\r\n var numCols = Math.ceil(canvasWidth / gridSize);\r\n var numRows = Math.ceil(canvasHeight / gridSize);\r\n\r\n // Function to create a rectangle with checkerboard pattern\r\n function createCheckerboardRect(left, top, width, height, isEvenRow) {\r\n var rect = new fabric.Rect({\r\n left: left,\r\n top: top,\r\n width: width,\r\n height: height,\r\n type: 'line',\r\n lockMovementX: true,\r\n lockMovementY: true,\r\n lockScalingX: true,\r\n lockScalingY: true,\r\n // backgroundColor:'#ccc',\r\n fill:\r\n (isEvenRow && (left / gridSize) % 2 === 0) ||\r\n (!isEvenRow && (left / gridSize) % 2 !== 0)\r\n ? '#ffffff'\r\n : '#dadadac7',\r\n });\r\n return rect;\r\n }\r\n\r\n // Create grid lines\r\n for (var i = 0; i < numCols; i++) {\r\n var x = i * gridSize;\r\n const line = new fabric.Line([x, 0, x, canvasHeight], {\r\n stroke: '#dadadac7',\r\n selectable: false,\r\n type: 'line',\r\n lockMovementX: true,\r\n lockMovementY: true,\r\n lockScalingX: true,\r\n lockScalingY: true,\r\n });\r\n canvas.add(line);\r\n canvas.sendToBack(line);\r\n }\r\n\r\n for (var j = 0; j < numRows; j++) {\r\n var y = j * gridSize;\r\n const line = new fabric.Line([0, y, canvasWidth, y], {\r\n stroke: '#FFFFFF',\r\n selectable: false,\r\n type: 'line',\r\n lockMovementX: true,\r\n lockMovementY: true,\r\n lockScalingX: true,\r\n lockScalingY: true,\r\n });\r\n canvas.add(line);\r\n canvas.sendToBack(line);\r\n }\r\n\r\n // Fill grid with checkerboard pattern\r\n for (var i = 0; i < numCols; i++) {\r\n for (var j = 0; j < numRows; j++) {\r\n var left = i * gridSize;\r\n var top = j * gridSize;\r\n var isEvenRow = j % 2 === 0;\r\n var rect = createCheckerboardRect(\r\n left,\r\n top,\r\n gridSize,\r\n gridSize,\r\n isEvenRow\r\n );\r\n canvas.add(rect);\r\n canvas.sendToBack(rect);\r\n }\r\n }\r\n\r\n use3dddPlus.setState({ colorFill: colors });\r\n setDefaultColorFill(\r\n defaultColorFill.map((dcf: any) => ({ ...dcf, updated: dcf.default }))\r\n );\r\n let _objects = canvas.getObjects();\r\n _objects.forEach(element => {\r\n if (element.type === \"path\") {\r\n element.set({\r\n perPixelTargetFind: true,\r\n })\r\n }\r\n })\r\n use3dddPlus.setState({ popUpCanvasCount: 1 });\r\n };\r\n\r\n const canvasZoomIn = () => {\r\n const newZoomLevel = zoomLevel + 0.1;\r\n setZoomLevel(newZoomLevel);\r\n const center = popupCanvas.getCenter();\r\n popupCanvas.zoomToPoint({ x: center.left, y: center.top }, newZoomLevel);\r\n }\r\n const canvasZoomOut = () => {\r\n if (zoomLevel == 1) return;\r\n const newZoomLevel = zoomLevel - 0.1;\r\n setZoomLevel(newZoomLevel);\r\n const center = popupCanvas.getCenter();\r\n popupCanvas.zoomToPoint({ x: center.left, y: center.top }, newZoomLevel);\r\n }\r\n\r\n const canvasPan = (direction) => {\r\n\r\n switch (direction) {\r\n case 'Left':\r\n popupCanvas.relativePan(new fabric.Point(-panSpeed, 0));\r\n break;\r\n case 'Right':\r\n popupCanvas.relativePan(new fabric.Point(panSpeed, 0));\r\n break;\r\n case 'Up':\r\n popupCanvas.relativePan(new fabric.Point(0, -panSpeed));\r\n break;\r\n case 'Down':\r\n popupCanvas.relativePan(new fabric.Point(0, panSpeed));\r\n break;\r\n default:\r\n break;\r\n }\r\n };\r\n const onSelectColor = (item: any, event: any) => {\r\n setDefaultColorFill(\r\n defaultColorFill.map((cf: any) =>\r\n cf.property === item.property\r\n ? {\r\n ...cf,\r\n hasPallet: true,\r\n position: { x: event.clientX, y: event.clientY },\r\n }\r\n : { ...cf, hasPallet: false }\r\n )\r\n );\r\n setDisplayPallet({\r\n visible: true,\r\n property: item.property,\r\n color: item.updated,\r\n callback: onColorUpdate,\r\n });\r\n setPosition({\r\n x: event.clientX,\r\n y:\r\n window.innerHeight < event.clientY + 280\r\n ? event.clientY - 300\r\n : event.clientY,\r\n });\r\n };\r\n\r\n const onPopUpCanvasUndo = () => {\r\n const colors = popUpCanvasUndo();\r\n if (colors !== null) {\r\n let currentColors = defaultColorFill.map((c: any) =>\r\n colors[c.property] && colors[c.property].length > 0\r\n ? { ...c, updated: colors[c.property] }\r\n : c\r\n );\r\n\r\n Object.keys(colors).forEach((c: any) => {\r\n if (\r\n defaultColorFill.filter((dc: any) => dc.updated === colors[c])\r\n .length < 1\r\n ) {\r\n const colorFromDefaultCopy = defaultColorFillCopy.find(\r\n (dcc) => dcc.updated === colors[c]\r\n );\r\n if (colorFromDefaultCopy && colorFromDefaultCopy.updated) {\r\n currentColors.push(colorFromDefaultCopy);\r\n }\r\n }\r\n });\r\n setDefaultColorFill(currentColors);\r\n }\r\n\r\n };\r\n\r\n const conflictColors = useMemo(() => {\r\n return defaultColorFill.filter(\r\n (c: any) => availableColorCodes.indexOf(c.updated.toUpperCase()) < 0\r\n );\r\n }, [defaultColorFill]);\r\n\r\n return (\r\n <>\r\n {/* <div\r\n className=\"relative z-10\"\r\n aria-labelledby=\"modal-title\"\r\n role=\"dialog\"\r\n aria-modal=\"true\"\r\n style={uploadImageModalDisplay ? {} : { display: 'none' }}\r\n > */}\r\n <div className=\"flex z-5 overflow-y-auto h-full\">\r\n <div className=\"flex flex-1 w-full h-full\">\r\n <div className=\"relative w-full overflow-hidden bg-white h-full\">\r\n <div className=\"bg-white h-full\">\r\n <div className=\"flex flex-row h-full\">\r\n <div className=\"flex flex-row text-center w-[70%] h-full\">\r\n <div className=\" w-full h-full relative\">\r\n <div\r\n className=\"btnCont flex flex-wrap h-[40px] bg-[#F7F7F7]\"\r\n style={{\r\n padding: '10px',\r\n justifyContent: 'flex-end',\r\n width: '100%',\r\n }}\r\n >\r\n {/* CANVAS LEFT PANNING */}\r\n <div\r\n className=\"zoomIn cursor-pointer mr-4\"\r\n onClick={() => canvasPan(\"Left\")}\r\n >\r\n <div className=\"left float-left\">\r\n <svg\r\n fill=\"#727272\"\r\n width=\"16px\"\r\n height=\"16px\"\r\n viewBox=\"0 0 330 330\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n >\r\n <path fill=\"#040404\" id=\"XMLID_92_\"\r\n d=\"M111.213,165.004L250.607,25.607c5.858-5.858,5.858-15.355,0-21.213c-5.858-5.858-15.355-5.858-21.213,0.001\r\n l-150,150.004C76.58,157.211,75,161.026,75,165.004c0,3.979,1.581,7.794,4.394,10.607l150,149.996\r\n C232.322,328.536,236.161,330,240,330s7.678-1.464,10.607-4.394c5.858-5.858,5.858-15.355,0-21.213L111.213,165.004z\"\r\n />\r\n </svg>\r\n </div>\r\n <span className=\"iconLabel float-left text-[#727272] ml-2 text-[13px] font-bold \">\r\n Left\r\n </span>\r\n </div>\r\n {/* CANVAS RIGHT PANNING */}\r\n <div\r\n className=\"zoomIn cursor-pointer mr-4\"\r\n onClick={() => canvasPan(\"Right\")}\r\n >\r\n <div className=\"right float-left\">\r\n <svg\r\n fill=\"#727272\"\r\n width=\"16px\"\r\n height=\"16px\"\r\n viewBox=\"0 0 330 330\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n >\r\n <path fill=\"#040404\" id=\"XMLID_222_\"\r\n d=\"M250.606,154.389l-150-149.996c-5.857-5.858-15.355-5.858-21.213,0.001\r\n c-5.857,5.858-5.857,15.355,0.001,21.213l139.393,139.39L79.393,304.394c-5.857,5.858-5.857,15.355,0.001,21.213\r\n C82.322,328.536,86.161,330,90,330s7.678-1.464,10.607-4.394l149.999-150.004c2.814-2.813,4.394-6.628,4.394-10.606\r\n C255,161.018,253.42,157.202,250.606,154.389z\"\r\n />\r\n </svg>\r\n </div>\r\n <span className=\"iconLabel float-left text-[#727272] ml-2 text-[13px] font-bold \">\r\n Right\r\n </span>\r\n </div>\r\n {/* CANVAS TOP PANNING */}\r\n <div\r\n className=\"zoomIn cursor-pointer mr-4 \"\r\n onClick={() => canvasPan(\"Up\")}\r\n >\r\n <div className=\"left float-left\">\r\n <svg\r\n fill=\"#727272\"\r\n width=\"16px\"\r\n height=\"16px\"\r\n viewBox=\"0 0 330 330\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n >\r\n <path fill=\"#040404\" id=\"XMLID_224_\"\r\n d=\"M325.606,229.393l-150.004-150C172.79,76.58,168.974,75,164.996,75c-3.979,0-7.794,1.581-10.607,4.394\r\n l-149.996,150c-5.858,5.858-5.858,15.355,0,21.213c5.857,5.857,15.355,5.858,21.213,0l139.39-139.393l139.397,139.393\r\n C307.322,253.536,311.161,255,315,255c3.839,0,7.678-1.464,10.607-4.394C331.464,244.748,331.464,235.251,325.606,229.393z\"\r\n />\r\n </svg>\r\n </div>\r\n <span className=\"iconLabel float-left text-[#727272] ml-2 text-[13px] font-bold \">\r\n Up\r\n </span>\r\n </div>\r\n {/* CANVAS DOWN PANNING */}\r\n <div\r\n className=\"down cursor-pointer mr-4\"\r\n onClick={() => canvasPan(\"Down\")}\r\n >\r\n <div className=\"down float-left\">\r\n <svg\r\n fill=\"#727272\"\r\n width=\"16px\"\r\n height=\"16px\"\r\n viewBox=\"0 0 330 330\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n >\r\n <path fill=\"#040404\" id=\"XMLID_225_\"\r\n d=\"M325.607,79.393c-5.857-5.857-15.355-5.858-21.213,0.001l-139.39,139.393L25.607,79.393\r\n c-5.857-5.857-15.355-5.858-21.213,0.001c-5.858,5.858-5.858,15.355,0,21.213l150.004,150c2.813,2.813,6.628,4.393,10.606,4.393\r\n s7.794-1.581,10.606-4.394l149.996-150C331.465,94.749,331.465,85.251,325.607,79.393z\"\r\n />\r\n </svg>\r\n </div>\r\n <span className=\"iconLabel float-left text-[#727272] ml-2 text-[13px] font-bold \">\r\n Down\r\n </span>\r\n </div>\r\n {/*CANVAS ZOOM-IN */}\r\n <div\r\n className=\"zoomIn cursor-pointer mr-4\"\r\n onClick={canvasZoomIn}\r\n >\r\n <div className=\"zoomIn float-left\">\r\n <svg\r\n fill=\"#727272\"\r\n width=\"16px\"\r\n height=\"16px\"\r\n viewBox=\"0 0 24 24\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n >\r\n <path fill=\"#040404\" d=\"M16.3198574,14.9056439 L21.7071068,20.2928932 L20.2928932,21.7071068 L14.9056439,16.3198574 C13.5509601,17.3729184 11.8487115,18 10,18 C5.581722,18 2,14.418278 2,10 C2,5.581722 5.581722,2 10,2 C14.418278,2 18,5.581722 18,10 C18,11.8487115 17.3729184,13.5509601 16.3198574,14.9056439 Z M10,16 C13.3137085,16 16,13.3137085 16,10 C16,6.6862915 13.3137085,4 10,4 C6.6862915,4 4,6.6862915 4,10 C4,13.3137085 6.6862915,16 10,16 Z M9,9 L9,6 L11,6 L11,9 L14,9 L14,11 L11,11 L11,14 L9,14 L9,11 L6,11 L6,9 L9,9 Z\" />\r\n </svg>\r\n </div>\r\n <span className=\"iconLabel float-left text-[#727272] ml-2 text-[13px] font-bold \">\r\n Zoom-In\r\n </span>\r\n </div>\r\n {/* CANVAS ZOOM-OUT */}\r\n <div\r\n className=\"zoomIn cursor-pointer mr-4\"\r\n onClick={canvasZoomOut}\r\n >\r\n <div className=\"zoomIn float-left\">\r\n <svg\r\n fill=\"#000000\"\r\n width=\"16px\"\r\n height=\"16px\"\r\n viewBox=\"0 0 24 24\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n >\r\n\r\n <g id=\"Complete\">\r\n <g id=\"zoom-out\">\r\n <g>\r\n <circle cx=\"10.1\" cy=\"10.1\" fill=\"none\" r=\"8\" stroke=\"#040404\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" />\r\n <line fill=\"none\" stroke=\"#040404\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" x1=\"21.9\" x2=\"16.3\" y1=\"21.9\" y2=\"16.3\" />\r\n <line fill=\"none\" stroke=\"#040404\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" x1=\"13.1\" x2=\"7.1\" y1=\"10.1\" y2=\"10.1\" />\r\n </g>\r\n </g>\r\n </g>\r\n </svg>\r\n </div>\r\n <span className=\"iconLabel float-left text-[#727272] ml-2 text-[13px] font-bold \">\r\n Zoom-Out\r\n </span>\r\n </div>\r\n\r\n\r\n <div\r\n className=\"undoBtn cursor-pointer mr-4\"\r\n onClick={onPopUpCanvasUndo}\r\n >\r\n <div className=\"undoIcon float-left\">\r\n <CgUndo />\r\n {/* <svg\r\n fill=\"#727272\"\r\n width=\"16px\"\r\n height=\"16px\"\r\n viewBox=\"0 0 16 16\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n >\r\n <path\r\n className=\"cls-1\"\r\n d=\"M6,3.6V0L0,6l6,6V8c6-.27,7.53,3.76,7.88,5.77a.27.27,0,0,0,.53,0C17.08,2.86,6,3.6,6,3.6Z\"\r\n />\r\n </svg> */}\r\n </div>\r\n <span className=\"iconLabel float-left text-[#727272] ml-2 text-[13px] font-bold \">\r\n Undo\r\n </span>\r\n </div>\r\n <div\r\n className=\"resetBtn cursor-pointer\"\r\n onClick={(e) => {\r\n e.preventDefault()\r\n e.stopPropagation()\r\n resetHandler()\r\n }}\r\n >\r\n <div className=\"resetBtn float-left\">\r\n <CgRedo />\r\n {/* <svg\r\n fill=\"#727272\"\r\n width=\"16px\"\r\n height=\"16px\"\r\n viewBox=\"0 0 1920 1920\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n >\r\n <path\r\n d=\"M960 0v213.333c411.627 0 746.667 334.934 746.667 746.667S1371.627 1706.667 960 1706.667 213.333 1371.733 213.333 960c0-197.013 78.4-382.507 213.334-520.747v254.08H640V106.667H53.333V320h191.04C88.64 494.08 0 720.96 0 960c0 529.28 430.613 960 960 960s960-430.72 960-960S1489.387 0 960 0\"\r\n fillRule=\"evenodd\"\r\n />\r\n </svg> */}\r\n </div>\r\n <span className=\"iconLabel float-left text-[#727272] ml-2 text-[13px] font-bold \">\r\n Reset\r\n </span>\r\n </div>\r\n </div>\r\n\r\n <div\r\n id=\"imageCanvas\"\r\n style={{\r\n width: '100%',\r\n height: 'calc(100% - 75px)',\r\n overflow: 'hidden',\r\n }}\r\n >\r\n <canvas className=\"pointer\" id=\"popupCanvas\"></canvas>\r\n </div>\r\n\r\n <div\r\n className=\"flex flex-wrap justify-center w-[100%] pt-[5px] pb-[5px] bg-[#F7F7F7]\"\r\n style={{\r\n alignItems: 'center',\r\n width: '100%',\r\n height: '35px',\r\n }}\r\n >\r\n <span className=\"border border-[#E11A38] p-1 bg-white mr-2 text-[#E11A38] \">\r\n <EyeDropper />\r\n </span>\r\n\r\n <span className=\"text-[#E11A38] text-[13px] font-bold \">\r\n Use the eyedropper tool by clicking on a color you wish to remove from your image.\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n <div className=\"text-left flex-1 h-[100%] px-[25px] pt-[31px] pb-[5px] w-[30%]\">\r\n <div className=\"flex flex-col gap-y-3 h-full\">\r\n <h1 className=\"text-[22px] font-bold\">\r\n Match and Combine colors\r\n </h1>\r\n <p className=\"text-[15px]\">\r\n Select how many colors are in your image\r\n </p>\r\n <select\r\n value={colorCount}\r\n onChange={handleColorCountChange}\r\n className=\"border-[1px] border-[#D7D7D7] p-2\"\r\n >\r\n <option value={1} disabled={colorFillCount < 1}>\r\n 1 Colors\r\n </option>\r\n <option value={2} disabled={colorFillCount < 2}>\r\n 2 Colors\r\n </option>\r\n <option value={3} disabled={colorFillCount < 3}>\r\n 3 Colors\r\n </option>\r\n <option value={4} disabled={colorFillCount < 4}>\r\n 4 Colors\r\n </option>\r\n <option value={5} disabled={colorFillCount < 5}>\r\n 5 Colors\r\n </option>\r\n <option value={6} disabled={colorFillCount < 6}>\r\n 6 Colors\r\n </option>\r\n <option value={7} disabled={colorFillCount < 7}>\r\n 7 Colors\r\n </option>\r\n <option value={8} disabled={colorFillCount < 8}>\r\n 8 Colors\r\n </option>\r\n </select>\r\n {/* {Object.keys(colorFill)?.map((item) => {\r\n return (\r\n <>\r\n <ColorImpl\r\n handleChange={changeSVGColor}\r\n property={item}\r\n color={colorFill[item]}\r\n />\r\n </>\r\n );\r\n })} */}\r\n <div\r\n className={\r\n 'flex flex-col gap-y-3.5 items-center overflow-y-auto py-[5px] 2xl:h-[50vh] sm:h-[42vh] h-[42vh]'\r\n }\r\n >\r\n {defaultColorFill\r\n //@ts-ignore\r\n ?.filter((item, index) => index < colorCount)\r\n .map((item, index) => (\r\n <div\r\n className=\"flex flex-row items-center\"\r\n key={index}\r\n >\r\n <ToolTip label={item.default}>\r\n <div\r\n className=\"w-[30px] h-[30px] m-1 border-[1px] border-[#000000]\"\r\n style={{ background: item.default }}\r\n // title={item.default}\r\n ></div>\r\n </ToolTip>\r\n <div className=\"mx-[10px] text-[#c2c2c2]\">\r\n <CgArrowRight />\r\n </div>\r\n <div className=\"flex flex-row border-[1px] border-[#D6D6D6]\"\r\n onClick={(event) => {\r\n event.stopPropagation();\r\n event.preventDefault();\r\n onSelectColor(item, event);\r\n }}>\r\n <span\r\n className=\" border-r-[1px] border-[#D6D6D6] bg-[#fce8eb]\"\r\n style={{ cursor: 'pointer' }}\r\n >\r\n {item.default === item.updated ? (\r\n <IconButton\r\n label=\"\"\r\n icon={<GiDrop />}\r\n className={\r\n '!rounded-none pointer-events-auto cursor-pointer flex text-[#E11A38] w-[30px] h-[30px] p-[6px]'\r\n }\r\n size=\"1.125rem\"\r\n ></IconButton>\r\n ) : (\r\n <ColorImpl\r\n className=\"w-[30px] h-[30px] m-2\"\r\n handleChange={onColorUpdate}\r\n property={item.property}\r\n color={item.updated}\r\n // onClose={onClosePalette}\r\n setDisplayPallet={setDisplayPallet}\r\n setPosition={setPosition}\r\n callback={onColorUpdate}\r\n />\r\n )}\r\n </span>\r\n <span\r\n\r\n className=\"py-[5px] pl-[10px] pr-[6px] font-medium text-[13px] bg-[#F1F1F1] cursor-pointer\"\r\n\r\n >\r\n Select Color\r\n </span>\r\n </div>\r\n <span className=\"\">\r\n <IconButton\r\n label=\"Delete Color\"\r\n icon={<MdOutlineCancel />}\r\n onClick={() => {\r\n onColorUpdate(item.property, 'transparent');\r\n }}\r\n className={\r\n 'pointer-events-auto cursor-pointer m-autoflex w-[30px] h-[30px] p-[9px] text-[#c2c2c2]'\r\n }\r\n size=\"1rem\"\r\n ></IconButton>\r\n </span>\r\n </div>\r\n ))}\r\n </div>\r\n\r\n {isNextClicked &&\r\n conflictColors &&\r\n conflictColors.length > 0 ? (\r\n <div\r\n style={{\r\n position: 'absolute',\r\n backgroundColor: '#FFFFFF',\r\n bottom: 0,\r\n padding: '7px',\r\n }}\r\n >\r\n <IconButton\r\n label=\"Close\"\r\n icon={<MdOutlineCancel />}\r\n onClick={() => {\r\n setIsNextClicked(false);\r\n }}\r\n className={''}\r\n size=\"1.5rem\"\r\n style={{\r\n position: 'absolute',\r\n cursor: 'pointer',\r\n fontWeight: 'bold',\r\n right: 10,\r\n top: -7,\r\n color: '#FF0000',\r\n }}\r\n ></IconButton>\r\n\r\n <div\r\n className=\"text-[#E11A38]\"\r\n style={{ fontWeight: 'bold', marginBottom: '3px' }}\r\n >\r\n ERROR: CONFLICT IN COLOR USED\r\n </div>\r\n <div\r\n className=\"text-[#E11A38]\"\r\n style={{ marginBottom: '3px' }}\r\n >\r\n Note: The following colors used are not available in\r\n Richardson color palette. Please edit the colors used.\r\n </div>\r\n <div>\r\n {conflictColors.map((c: any, i: number) => {\r\n // console.log(c,i);\r\n return (\r\n <div\r\n key={'color-' + i}\r\n style={{\r\n width: '100%',\r\n height: '30px',\r\n lineHeight: '30px',\r\n backgroundColor: c.updated,\r\n textAlign: 'center',\r\n marginBottom: '3px',\r\n }}\r\n >\r\n <span\r\n style={{\r\n color: '#ffffff',\r\n mixBlendMode: 'difference',\r\n }}\r\n >\r\n {c.updated}\r\n </span>\r\n </div>\r\n );\r\n })}\r\n </div>\r\n {/* <div\r\n className=\"text-[#E11A38]\"\r\n style={{\r\n marginTop: '10px',\r\n marginBottom: '5px',\r\n fontWeight: 'bold',\r\n }}\r\n >\r\n Do you want to proceed?\r\n </div>\r\n\r\n <div className=\" flex flex-col content mb-[10px]\">\r\n <button\r\n type=\"button\"\r\n onClick={() => {\r\n setIsNextClicked(false);\r\n onContinue();\r\n }}\r\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\"\r\n >\r\n Yes\r\n </button>\r\n <button\r\n type=\"button\"\r\n onClick={() => {\r\n setIsNextClicked(false);\r\n }}\r\n className=\"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\"\r\n style={{\r\n marginTop: '10px',\r\n }}\r\n >\r\n No\r\n </button>\r\n </div> */}\r\n </div>\r\n ) : (\r\n <div className=\" flex flex-col content mb-[5px]\">\r\n <button\r\n type=\"button\"\r\n onClick={popupCanvasContinue}\r\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\"\r\n >\r\n Continue\r\n </button>\r\n <button\r\n type=\"button\"\r\n onClick={popupCanvasCancel}\r\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\"\r\n style={{\r\n marginTop: '10px',\r\n }}\r\n >\r\n Cancel\r\n </button>\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n {/* </div> */}\r\n {displayPallet && displayPallet.visible && (\r\n <ColorPalette\r\n mainClass={`left-0`}\r\n handleColorChange={(color) => {\r\n displayPallet.callback(displayPallet.property, color);\r\n setDisplayPallet({\r\n visible: false,\r\n property: '',\r\n color: '',\r\n callback: null,\r\n });\r\n }}\r\n style={\r\n position\r\n ? {\r\n position: 'fixed',\r\n left: position.x - 450,\r\n top: position.y - 5,\r\n width: '450px',\r\n }\r\n : { display: 'none' }\r\n }\r\n />\r\n )}\r\n </>\r\n );\r\n};\r\n","import { fabric } from 'fabric';\r\nimport { use3dddPlus } from '..';\r\n// @ts-ignore\r\nimport FontFaceObserver from 'fontfaceobserver';\r\nexport const Initpopup = () => {\r\n const fontList = new Set<string>();\r\n document.fonts.forEach((font) => fontList.add(font.family));\r\n // Preload all the fonts\r\n Array.from(fontList).forEach((font) => {\r\n new FontFaceObserver(font)\r\n .load()\r\n .then(() => {\r\n \r\n })\r\n .catch(() => {\r\n console.log(`${font} has not loaded.`);\r\n });\r\n });\r\n\r\n const onObjectSelected = () => {\r\n if (!popupcanvas.getActiveObject()) {\r\n return;\r\n }\r\n if (popupcanvas.getActiveObject().type !== 'group') {\r\n return;\r\n }\r\n //@ts-ignore\r\n popupcanvas.getActiveObject().toActiveSelection().viewportCenter();\r\n popupcanvas.requestRenderAll();\r\n };\r\n const getAllColorsPopupCanvas = () => {\r\n const popUpCanvasAllColor = [\r\n ...new Set(\r\n popupcanvas\r\n ?.getObjects()\r\n ?.map((item) => item['colorFill'] && Object.values(item['colorFill']))\r\n .flat()\r\n .filter(Boolean)\r\n ),\r\n ]; // FOR REMOVING ALL DUPLICATE COLOR\r\n use3dddPlus.setState({ popUpCanvasAllColor: popUpCanvasAllColor });\r\n };\r\n const cursorUrl =\r\n 'https://storage.googleapis.com/3ddplusgcp/logoEditor/assets/icons/eyedropper.svg';\r\n \r\n const outerCanvasContainer = document.getElementById('imageCanvas');\r\n\r\n const popupcanvas = new fabric.Canvas('popupCanvas', {\r\n centeredScaling: true,\r\n preserveObjectStacking: true,\r\n //backgroundColor: '#F7F7F7',\r\n defaultCursor: `url(\" ${cursorUrl} \")0 21.6, auto`,\r\n hoverCursor: `url(\" ${cursorUrl} \")0 21.6, auto`,\r\n // defaultCursor: 'pointer',\r\n // hoverCursor: 'pointer',\r\n // width: 500,\r\n // height: 300,\r\n width: outerCanvasContainer.clientWidth,\r\n height: outerCanvasContainer.clientHeight\r\n }); \r\n popupcanvas.on('after:render',getAllColorsPopupCanvas);\r\n popupcanvas.on('selection:created', onObjectSelected);\r\n return popupcanvas;\r\n};\r\n","import React, { useState } from 'react';\r\n\r\nimport FileUploadButton from './fileuploadButton';\r\nimport { use3dddPlus } from '../../store';\r\nimport { shallow } from 'zustand/shallow';\r\nimport { PopUpCanvas } from '../canvas/popUpCanvas';\r\n// import {fabric} from 'fabric';\r\n// import axios, { AxiosRequestConfig } from 'axios';\r\n\r\nexport const UploadLogo = () => {\r\n const [, setSelectedFile] = useState<File | null>(null);\r\n const [\r\n tiffConvert,\r\n imageToSVG,\r\n setFile,\r\n uploadImageModalDisplay,\r\n // pdfConverter,\r\n aiConvert,\r\n vectorize,\r\n // loadImageFromURL,\r\n ] = use3dddPlus(\r\n (state) => [\r\n state.tiffConvert,\r\n state.imageToSVG,\r\n state.setFile,\r\n state.uploadImageModalDisplay,\r\n // state.pdfConverter,\r\n state.aiConvert,\r\n // state.loadImageFromURL,\r\n state.vectorize,\r\n ],\r\n shallow\r\n );\r\n\r\n const handleFileSelect = (file: File) => {\r\n const fileSize = file.size;\r\n const fileSizeInKB = fileSize / 1024;\r\n const fileSizeInMB = fileSizeInKB / 1024;\r\n if (fileSizeInMB > 24) {\r\n use3dddPlus.getState().toastMessages.fileSize();\r\n return;\r\n }\r\n setSelectedFile(file);\r\n setFile(file);\r\n svgConverter(file);\r\n // You can perform further actions with the selected file here.\r\n };\r\n\r\n const svgConverter = async (data) => {\r\n const ext = data.name.substring(data.name.lastIndexOf('.') + 1);\r\n use3dddPlus.setState({ uploadImageModalDisplay: true });\r\n if (ext === 'svg') {\r\n imageToSVG(data, ext, true);\r\n } else if (ext === 'tif' || ext === 'tiff') {\r\n const tiffData = await tiffConvert(data);\r\n imageToSVG(tiffData, ext);\r\n } else if (ext === 'ai' || ext === 'pdf') {\r\n use3dddPlus.setState({ loading: true });\r\n let aiToSvg = await aiConvert(data);\r\n fetch(aiToSvg.s3_file_url + '?timestamp=' + Date.now())\r\n .then((response) => response.text())\r\n .then((svgText) => {\r\n imageToSVG(svgText, ext, false, false);\r\n })\r\n .catch((ex) => {\r\n console.log(ex);\r\n use3dddPlus.setState({ loading: false });\r\n });\r\n } else {\r\n use3dddPlus.setState({ loading: true });\r\n const vectorizeImage = await vectorize(data)\r\n fetch(vectorizeImage.svg_url)\r\n .then((response) => response.text())\r\n .then((svgText) => {\r\n imageToSVG(svgText, 'vectorSVG', true);\r\n use3dddPlus.setState({ loading: false });\r\n })\r\n .catch((ex) => {\r\n console.log(ex);\r\n use3dddPlus.setState({ loading: false });\r\n }); \r\n }\r\n setSelectedFile(null);\r\n };\r\n return (\r\n <>\r\n <div className=\"bg-[#F7F7F7] absolute z-[5] w-[90%] h-full \">\r\n <div className=\"relative w-full h-full\">\r\n <div className=\"flex justify-center w-full h-full text-center\">\r\n <FileUploadButton onFileSelect={handleFileSelect} />\r\n </div>\r\n <div className=\"absolute md:bottom-[20px] bottom-[10px] px-[80px]\">\r\n <p className=\" text-[#E11A38] text-base font-bold\">\r\n Privacy Notice\r\n </p>\r\n <p className=\"text-[#727272] text-sm font-medium pt-2 pb-2\">\r\n Your uploaded images are safe, secure, and remain your property.\r\n By proceeding you acknowledge that you have full legal rights and\r\n permissions to use the images you upload. We reserve the right to\r\n reject any order.\r\n </p>\r\n </div>\r\n </div>\r\n </div>\r\n {uploadImageModalDisplay && (\r\n <div className=\"bg-[#F7F7F7] absolute z-[5] w-[90%] h-full\">\r\n <PopUpCanvas />\r\n </div>\r\n )}\r\n </>\r\n );\r\n};\r\n","import React from 'react';\r\nimport {\r\n SEARCHBAR_BORDER_COLOR,\r\n SEARCH_ICON_COLOR,\r\n TEXT_COLOR_1,\r\n TEXT_SIZE_3,\r\n} from '../../theme';\r\n\r\nexport interface SearchBarProps {\r\n onChange?: (e: React.ChangeEvent<HTMLInputElement>) => void;\r\n onKeyPress?: (e: React.KeyboardEvent<HTMLDivElement>) => void;\r\n onPaste?: (e: React.ClipboardEvent<HTMLInputElement>) => void;\r\n placeholder?: string;\r\n searchBarMainClass?: string;\r\n value?: string;\r\n disabled?: boolean;\r\n}\r\nexport const Searchbar = ({\r\n onChange,\r\n onKeyPress,\r\n onPaste,\r\n placeholder,\r\n searchBarMainClass,\r\n value,\r\n disabled,\r\n}: SearchBarProps) => {\r\n return (\r\n <>\r\n <div\r\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]`}\r\n >\r\n <input\r\n type=\"search\"\r\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] !border-0`}\r\n placeholder={placeholder}\r\n aria-label=\"Search\"\r\n aria-describedby=\"button-addon3\"\r\n value={value}\r\n onChange={onChange}\r\n onKeyPress={onKeyPress}\r\n disabled={disabled}\r\n onPaste={onPaste}\r\n onClick={(e) => {\r\n e.currentTarget.focus();\r\n }}\r\n />\r\n <span\r\n className={`flex justify-center items-center rounded-none pl-2 pr-[14px]`}\r\n >\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 20 20\"\r\n fill=\"currentColor\"\r\n className={`h-5 w-5 ${SEARCH_ICON_COLOR}`}\r\n >\r\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\" />\r\n </svg>\r\n </span>\r\n </div>\r\n </>\r\n );\r\n};\r\n","import React from 'react';\r\nimport { IconButton, RxCross2 } from '../icon';\r\nimport { BACKDROP_BLUR,\r\n BACKDROP_BLUR_BG_COLOR, \r\n SAVERACK_TEXT_COLOR \r\n } from '../../theme';\r\n\r\nexport interface GlobalModalProps {\r\n backdropStyle?: string;\r\n children?: React.ReactNode;\r\n contentStyle?: string;\r\n crossOnClick?: () => void;\r\n modalStyle?: string;\r\n}\r\n\r\nexport const Modal = ({\r\n backdropStyle,\r\n children,\r\n contentStyle,\r\n crossOnClick,\r\n modalStyle,\r\n}: GlobalModalProps) => {\r\n return (\r\n <div>\r\n <div\r\n className={`${backdropStyle} absolute top-0 left-0 h-screen w-full ${BACKDROP_BLUR} ${BACKDROP_BLUR_BG_COLOR}`}\r\n ></div>\r\n\r\n <dialog\r\n open\r\n className={`${contentStyle} absolute shadow-[0 2px 8px rgba(0, 0, 0, 0.26)] ml-[auto] md:mr-[0%] mr-[auto]`}\r\n >\r\n <IconButton\r\n label={''}\r\n icon={<RxCross2 strokeWidth={1} onClick={crossOnClick} />}\r\n className={\r\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`\r\n }\r\n size=\"1.2rem\"\r\n ></IconButton>\r\n <div\r\n className={`flex flex-col justify-center gap-[1.75rem] ${modalStyle}`}\r\n >\r\n {children}\r\n </div>\r\n </dialog>\r\n </div>\r\n );\r\n};\r\n","import React from 'react';\r\n\r\nexport const SortAndFilterButton = ({\r\n label,\r\n icons,\r\n onClick,\r\n className,\r\n buttonLabelClass,\r\n}) => {\r\n return (\r\n <button\r\n onClick={onClick}\r\n className={`flex border border-[#EBEBEB] rounded-none gap-[31.5px] items-center p-2 shadow-[0px_7px_64px_rgba(0,0,0,0.07)] bg-[#FFFFFF] ${className}`}\r\n >\r\n <span className={`${buttonLabelClass}`}>{label}</span>\r\n <span>{icons}</span>\r\n </button>\r\n );\r\n};\r\n","import React, { useState, useEffect, useRef } from 'react';\r\nimport { SortAndFilterButton } from './sortButton';\r\nimport { BsSortDown } from 'react-icons/bs';\r\nimport { use3dddPlus } from '../../store';\r\nimport { shallow } from 'zustand/shallow';\r\n\r\nexport const SortByDropdown = ({ sortOptions }) => {\r\n const [loadingLogo, logoSortBy, logoSortDir] = use3dddPlus(\r\n (state) => [state.loadingLogo, state.logoSortBy, state.logoSortDir],\r\n shallow\r\n );\r\n const [isDropdownOpen, setIsDropdownOpen] = useState(false);\r\n const dropdownRef = useRef(null);\r\n\r\n const toggleDropdown = () => {\r\n setIsDropdownOpen(!isDropdownOpen);\r\n };\r\n\r\n const closeDropdown = () => {\r\n setIsDropdownOpen(false);\r\n };\r\n\r\n useEffect(() => {\r\n const handleOutsideClick = (event) => {\r\n if (dropdownRef.current && !dropdownRef.current.contains(event.target)) {\r\n closeDropdown();\r\n }\r\n };\r\n\r\n if (isDropdownOpen) {\r\n document.addEventListener('click', handleOutsideClick);\r\n }\r\n\r\n return () => {\r\n document.removeEventListener('click', handleOutsideClick);\r\n };\r\n }, [isDropdownOpen]);\r\n\r\n return (\r\n <div className=\"relative\" ref={dropdownRef}>\r\n <SortAndFilterButton\r\n onClick={toggleDropdown}\r\n label=\"Sort by\"\r\n icons={<BsSortDown size={'1.2rem'} />}\r\n buttonLabelClass={`hidden md:block`}\r\n className=\"py-[10px] px-[14.5px] text-[13px] leading-[16px] text-[#5d5d5d] font-bold\"\r\n />\r\n {isDropdownOpen && (\r\n <ul className=\"mt-[14px] shadow-[0px_7px_64px_rgba(0,0,0,0.07)] pt-[10px] dropdown-content w-[210px] md:right-0 bg-[#FFFFFF] flex flex-col absolute z-10 before:content-[''] before:absolute before:top-[-0.3125rem] before:h-[0.75rem] before:w-[0.75rem] before:bg-[white] before:rotate-45 md:before:right-[18px] md:before:left-[unset] before:left-[18px]\">\r\n {sortOptions.map((option) => (\r\n <li\r\n key={option.label}\r\n className={`${\r\n logoSortBy === option.sortBy &&\r\n logoSortDir === option.sortDir\r\n ? 'bg-[#fce8eb] text-[#e11a38]'\r\n : ''\r\n } cursor-pointer flex items-center hover:bg-[#fce8eb] hover:text-[#e11a38] py-[13px] px-[27.85px] border-b-[1px] last:border-b-0 border-[#F4F4F4] text-[14px] leading-[19px] text-[#353535] font-bold`}\r\n onClick={() => {\r\n toggleDropdown();\r\n loadingLogo(option.onClick());\r\n }}\r\n >\r\n {option.label}\r\n </li>\r\n ))}\r\n </ul>\r\n )}\r\n </div>\r\n );\r\n};\r\n","import React, { useEffect, useState, useRef } from 'react';\r\nimport { Searchbar } from '../searchbar';\r\nimport { Card, CardMedia, CardBody, CardTitle, CardTags } from '../card';\r\nimport { SortByDropdown } from '../SortByDropdown';\r\nimport { use3dddPlus } from '../../store';\r\nimport { shallow } from 'zustand/shallow';\r\nimport { fabric } from 'fabric';\r\n// import { Loader } from '../loader';\r\nimport {\r\n BORDER_COLOR_3,\r\n SELECT_BG_COLOR,\r\n TAG_BG_COLOR,\r\n TEXT_SIZE_12,\r\n} from '../../theme';\r\nimport { BsCheckLg } from 'react-icons/bs';\r\nimport { useDebounce } from '../../hooks/debounce';\r\nexport interface LogoProps {\r\n logo_id: number;\r\n customer_id: string;\r\n tag: string;\r\n name: string;\r\n logo_config_url: string;\r\n logo_url: string;\r\n logo_svg_url: string;\r\n created_at: string;\r\n}\r\nexport const MyLogo = ({ onApply }) => {\r\n const [logoSelected, setLogoSelected] = React.useState<LogoProps>();\r\n const [scrollEnd, setScrollEnd] = useState(false);\r\n const [morePages, setMorePages] = useState(true);\r\n const myRef = useRef(null);\r\n const [\r\n retriveLogoDesign,\r\n myLogoHandler,\r\n loadingLogo,\r\n setLogoData,\r\n logoData,\r\n logoSearchText,\r\n validateColorAvailability,\r\n toastMessages,\r\n customOptions\r\n ] = use3dddPlus(\r\n (state) => [\r\n state.retriveLogoDesign,\r\n state.myLogoHandler,\r\n state.loadingLogo,\r\n state.setLogoData,\r\n state.logoData,\r\n state.logoSearchText,\r\n state.validateColorAvailability,\r\n state.toastMessages,\r\n state.customOptions\r\n ],\r\n shallow\r\n );\r\n const debouncedSearchText = useDebounce(logoSearchText, 300);\r\n const handleSearchChange = (e) => {\r\n use3dddPlus.setState({\r\n logoSearchText: e.currentTarget.value,\r\n logoPageNo: 1,\r\n retriveLogoDesign: [],\r\n });\r\n setMorePages(true);\r\n };\r\n\r\n useEffect(() => {\r\n loadingLogo(debouncedSearchText);\r\n }, [debouncedSearchText]);\r\n\r\n useEffect(() => {\r\n loadingLogo('');\r\n setMorePages(true);\r\n }, []);\r\n\r\n const handleScroll = React.useCallback(() => {\r\n if (!myRef?.current) return;\r\n if (scrollEnd) return;\r\n const scrollY = myRef.current.scrollTop;\r\n const height = myRef.current.clientHeight;\r\n const scrollHeight = myRef.current.scrollHeight;\r\n const tolerance = 10;\r\n if (scrollY + height + tolerance >= scrollHeight) {\r\n setScrollEnd(true);\r\n } else if (scrollY + height + tolerance < scrollHeight) {\r\n setScrollEnd(false);\r\n }\r\n }, [myRef, scrollEnd]);\r\n const fetchData = async () => {\r\n try {\r\n use3dddPlus.setState((state) => ({\r\n logoPageNo: state.logoPageNo + 1,\r\n }));\r\n const result = await loadingLogo('');\r\n if (result.length === 0) {\r\n setScrollEnd(false);\r\n setMorePages(false);\r\n return;\r\n }\r\n if (use3dddPlus.getState().logoPageNo === 1) {\r\n use3dddPlus.setState({\r\n retriveLogoDesign: result,\r\n });\r\n } else if (use3dddPlus.getState().logoPageNo > 1) {\r\n use3dddPlus.setState((state) => {\r\n const updatedState = {\r\n retriveLogoDesign: [...state.retriveLogoDesign, ...result],\r\n };\r\n return updatedState;\r\n });\r\n }\r\n setScrollEnd(false);\r\n } catch (err) {\r\n console.error(err);\r\n }\r\n };\r\n useEffect(() => {\r\n if (scrollEnd && morePages) {\r\n setTimeout(async () => {\r\n await fetchData();\r\n }, 700);\r\n }\r\n }, [scrollEnd]);\r\n const sortOptions = [\r\n {\r\n label: 'NEWEST',\r\n sortBy: 'updated_at',\r\n sortDir: 'DESC',\r\n onClick: () => {\r\n setScrollEnd(false);\r\n use3dddPlus.setState({\r\n logoPageNo: 1,\r\n logoSortBy: 'updated_at',\r\n logoSortDir: 'DESC',\r\n });\r\n setMorePages(true);\r\n },\r\n },\r\n {\r\n label: 'OLDEST',\r\n sortBy: 'updated_at',\r\n sortDir: 'ASC',\r\n onClick: () => {\r\n setScrollEnd(false);\r\n use3dddPlus.setState({\r\n logoPageNo: 1,\r\n logoSortBy: 'updated_at',\r\n logoSortDir: 'ASC',\r\n });\r\n setMorePages(true);\r\n },\r\n },\r\n {\r\n label: 'A TO Z',\r\n sortBy: 'name',\r\n sortDir: 'ASC',\r\n onClick: () => {\r\n setScrollEnd(false);\r\n use3dddPlus.setState({\r\n logoPageNo: 1,\r\n logoSortBy: 'name',\r\n logoSortDir: 'ASC',\r\n });\r\n setMorePages(true);\r\n },\r\n },\r\n {\r\n label: 'Z TO A',\r\n sortBy: 'name',\r\n sortDir: 'DESC',\r\n onClick: () => {\r\n setScrollEnd(false);\r\n use3dddPlus.setState({\r\n logoPageNo: 1,\r\n logoSortBy: 'name',\r\n logoSortDir: 'DESC',\r\n });\r\n setMorePages(true);\r\n },\r\n },\r\n ];\r\n const handleEditLogo = (logo) => {\r\n fabric.Object.prototype.hasControls = true;\r\n fabric.Object.prototype.hasBorders = true;\r\n if (logo) {\r\n use3dddPlus.setState({\r\n logoSearchText: '',\r\n logoSortBy: 'updated_at',\r\n logoSortDir: 'DESC',\r\n logoPageNo: 1,\r\n logoPageSize: 14,\r\n });\r\n myLogoHandler(logo);\r\n setLogoSelected(logo);\r\n }\r\n };\r\n\r\n const fetchSvgImageColors = async (svgUrl) => {\r\n try {\r\n // Fetch the SVG content\r\n const response = await fetch(svgUrl);\r\n const svgText = await response.text();\r\n\r\n // Parse the SVG content into a DOM object\r\n const parser = new DOMParser();\r\n const svgDoc = parser.parseFromString(svgText, 'image/svg+xml');\r\n\r\n // Select all elements with `fill` or `stroke` attributes\r\n const elementsWithColors = svgDoc.querySelectorAll('[style],[fill],[stroke]');\r\n\r\n // Extract all color values\r\n const extractedColors = new Set();\r\n elementsWithColors.forEach((element) => {\r\n let fillColor = element.getAttribute('fill');\r\n let strokeColor = element.getAttribute('stroke');\r\n let strokeWidth = element.getAttribute('stroke-width');\r\n\r\n // Extract inline styles if present\r\n const style = element.getAttribute('style');\r\n if (style) {\r\n const styleProps = extractStyles(style);\r\n if (!fillColor && styleProps.fill) fillColor = styleProps.fill;\r\n if (!strokeColor && styleProps.stroke) strokeColor = styleProps.stroke;\r\n if (!strokeWidth && styleProps['stroke-width']) strokeWidth = styleProps['stroke-width'];\r\n }\r\n\r\n // Add fill color if valid\r\n if (fillColor && fillColor !== 'none') {\r\n extractedColors.add(rgbToHex(fillColor));\r\n }\r\n\r\n // Add stroke color only if stroke-width is not 0\r\n if (strokeColor && strokeColor !== 'none' && strokeWidth !== '0') {\r\n extractedColors.add(rgbToHex(strokeColor));\r\n }\r\n });\r\n return Array.from(extractedColors);\r\n } catch (error) {\r\n console.error(\"Error fetching or parsing SVG:\", error);\r\n return [];\r\n }\r\n };\r\n\r\n // Helper function to extract CSS properties from style attribute\r\n const extractStyles = (style) => {\r\n const styleProps = {\r\n fill: null,\r\n stroke: null,\r\n 'stroke-width': null\r\n };\r\n const styleRegex = /([\\w-]+):\\s*([^;]+)/g;\r\n let match;\r\n while ((match = styleRegex.exec(style)) !== null) {\r\n styleProps[match[1].trim()] = match[2].trim();\r\n }\r\n return styleProps;\r\n };\r\n\r\n const rgbToHex = (rgb) => {\r\n // Extract the numeric values from the rgb string\r\n const rgbArray = rgb.match(/\\d+/g);\r\n if (!rgbArray || rgbArray.length < 3) return null; // Invalid input\r\n\r\n // Convert each RGB component to a 2-digit hex value\r\n const [r, g, b] = rgbArray.map((value) =>\r\n parseInt(value, 10).toString(16).padStart(2, \"0\")\r\n );\r\n\r\n // Return the hex color\r\n return `#${r}${g}${b}`.toUpperCase();\r\n };\r\n\r\n const handleApplyLogo = async (logo) => {\r\n if (logo) {\r\n const svgColors = await fetchSvgImageColors(logo?.logo_svg_url);\r\n const validation = validateColorAvailability(svgColors);\r\n if (!validation) {\r\n const decType = customOptions?.decorationType ?? '';\r\n toastMessages.applyLogoColorNotAvailable(decType);\r\n return;\r\n }\r\n use3dddPlus.setState({\r\n logoSearchText: '',\r\n logoSortBy: 'updated_at',\r\n logoSortDir: 'DESC',\r\n logoPageNo: 1,\r\n logoPageSize: 14,\r\n });\r\n onApply();\r\n setLogoSelected(logo);\r\n }\r\n };\r\n return (\r\n <>\r\n <div className=\"bg-[#F7F7F7] absolute z-100 w-[90%] h-full pr-[56px]\">\r\n <div className=\" w-full flex mt-[50px] flex-row\">\r\n <div className=\"flex gap-4 justify-end w-full md:justify-end \">\r\n <SortByDropdown sortOptions={sortOptions} />\r\n <div className=\" w-full sm:w-[60%] md:w-[65%] lg:w-[50%] xl:w-[40%] \">\r\n <Searchbar\r\n value={logoSearchText}\r\n placeholder={'Search by Logo name or tags'}\r\n searchBarMainClass={`!h-[40px] border border-[#BEBEBE]`}\r\n onChange={handleSearchChange}\r\n />\r\n </div>\r\n </div>\r\n </div>\r\n <div\r\n className={`flex ml-[33px] mt-[30px] overflow-y-auto h-[60vh] overflow-x-hidden pr-[33px]`}\r\n onScroll={handleScroll}\r\n ref={myRef}\r\n >\r\n <div className=\"max-h-[140px] grid gap-[2vw] grid-cols-3 md:grid-cols-4 lg:grid-cols-4 xl:grid-cols-5 2xl:grid-cols-6 w-full \">\r\n {retriveLogoDesign.length > 0\r\n ? retriveLogoDesign.map((logo: LogoProps) => (\r\n <>\r\n {/* {logo.logo_svg_url && ( */}\r\n <Card\r\n cardClass={`rounded-none !bg-transparent cursor-pointer max-w-[220px] border ${logoSelected?.logo_id === logo.logo_id\r\n ? BORDER_COLOR_3\r\n : 'border-none '\r\n }`}\r\n // style={{ boxShadow: '0px 0px 6px #98989829' }}\r\n onClick={() => {\r\n if (logo) {\r\n setLogoData(logo);\r\n setLogoSelected(logo);\r\n }\r\n }}\r\n >\r\n <CardMedia\r\n src={\r\n logo.logo_url\r\n }\r\n imageClass=\"w-full h-[220px] bg-white shadow-md\"\r\n />\r\n\r\n <CardBody bodyClass=\"p-2.5 self-start grow-0\">\r\n <CardTitle\r\n titleClass={`text-[15px] text-[#353535] font-bold uppercase break-all text-left items-left`}\r\n name={logo.name}\r\n />\r\n <div className=\"flex gap-2 flex-wrap\">\r\n {logo?.tag &&\r\n logo?.tag\r\n ?.split(',')\r\n ?.filter(Boolean)\r\n ?.map((item) => (\r\n <CardTags\r\n key={`design-tag-${item}`}\r\n tagsClass={`h-[1.5rem] ${TAG_BG_COLOR}`}\r\n >\r\n <div className={`${TEXT_SIZE_12}`}>\r\n {item}\r\n </div>\r\n </CardTags>\r\n ))}\r\n </div>\r\n\r\n {logoSelected?.logo_id === logo.logo_id && (\r\n <div className=\"w-9 overflow-hidden inline-block absolute left-0 top-0\">\r\n <div\r\n className={`h-16 rotate-45 transform origin-top-right ${SELECT_BG_COLOR}`}\r\n ></div>\r\n <span className=\"absolute top-1 left-1\">\r\n <BsCheckLg\r\n size={15}\r\n color=\"white\"\r\n style={{ strokeWidth: '0.5' }}\r\n />\r\n </span>\r\n </div>\r\n )}\r\n </CardBody>\r\n </Card>\r\n {/* )} */}\r\n </>\r\n ))\r\n : 'No Saved Mascots'}\r\n </div>\r\n </div>\r\n <div className={`flex gap-[24px] h-[48px] mt-[26px] float-right`}>\r\n <button\r\n className={`border border-[#353535] w-[160px] p-3 font-bold ${!logoSelected && 'opacity-70'\r\n }`}\r\n onClick={() => handleEditLogo(logoData)}\r\n >\r\n Edit\r\n </button>\r\n <button\r\n disabled={!logoSelected}\r\n onClick={() => handleApplyLogo(logoData)}\r\n className={`border p-3 w-[160px] ${logoSelected\r\n ? 'bg-[#e11a38] border-[#e11a38] text-white font-bold '\r\n : 'bg-[#e11a38] border-[#e11a38] text-white font-bold opacity-70'\r\n }`}\r\n >\r\n Apply\r\n </button>\r\n </div>\r\n </div>\r\n </>\r\n );\r\n};\r\n","import { useState, useEffect } from 'react';\r\n\r\nexport const useDebounce = (value: any, milliSeconds: number) => {\r\n const [debouncedValue, setDebouncedValue] = useState(value);\r\n\r\n useEffect(() => {\r\n const handler = setTimeout(() => {\r\n setDebouncedValue(value);\r\n }, milliSeconds);\r\n\r\n return () => {\r\n clearTimeout(handler);\r\n };\r\n }, [value, milliSeconds]);\r\n\r\n return debouncedValue;\r\n};\r\n","import React from 'react';\r\nimport { Button } from 'reakit';\r\n\r\nexport const IconButtonLabel = ({\r\n icon,\r\n onClick,\r\n className = '',\r\n label = '',\r\n iconPosition = 'left',\r\n ...props\r\n}) => {\r\n return (\r\n <Button\r\n className={`flex items-center gap-2 text-base font-bold flex-1 justify-center focus:outline-none ${className}`}\r\n onClick={onClick}\r\n {...props}\r\n >\r\n {iconPosition === 'left' && (\r\n <>\r\n {icon}\r\n {label}\r\n </>\r\n )}\r\n {iconPosition === 'right' && (\r\n <>\r\n {label}\r\n {icon}\r\n </>\r\n )}\r\n </Button>\r\n );\r\n};\r\n","import React from \"react\";\r\n\r\nexport const EditButton = ({ label, icons, onClick, className, children }) => {\r\n return (\r\n <button\r\n onClick={onClick}\r\n className={`flex rounded-none gap-3 items-center ${className}`}\r\n >\r\n {icons}\r\n {label}\r\n {children}\r\n </button>\r\n );\r\n };","import React from 'react';\r\nimport { TEXT_SIZE_2 } from '../../theme';\r\nimport { IoMdCheckmarkCircle, IconButton } from '../icon';\r\n\r\nexport interface CardCheckMarkProps {\r\n checkMarkClass?: string;\r\n size?: any;\r\n}\r\nexport const CardCheckMark = ({ checkMarkClass, size }: CardCheckMarkProps) => {\r\n return (\r\n <>\r\n <div\r\n className={`absolute top-1/2 left-2/4 ${TEXT_SIZE_2} ${checkMarkClass}`}\r\n style={{ transform: 'translate(-50%, -50%)' }}\r\n >\r\n <IconButton\r\n label={''}\r\n icon={<IoMdCheckmarkCircle />}\r\n className={`pointer-events-auto cursor-pointer`}\r\n size={size}\r\n ></IconButton>\r\n </div>\r\n </>\r\n );\r\n};\r\n","import React from 'react';\r\nimport { HiOutlineDownload, IconButton } from '../icon';\r\n\r\nexport interface CardDownIconProps {\r\n downloadClass?: string;\r\n downloadIconClass?: string;\r\n iconClass?: string;\r\n pdfUrl?: string;\r\n}\r\nexport const CardDownloadIcon = ({\r\n downloadClass,\r\n downloadIconClass,\r\n iconClass,\r\n pdfUrl,\r\n}: CardDownIconProps) => {\r\n return (\r\n <>\r\n <a\r\n href={pdfUrl}\r\n download={'Design Sheet'}\r\n target=\"_blank\"\r\n className={`flex items-center gap-[0.4375rem] ${downloadIconClass}`}\r\n >\r\n <IconButton\r\n label={''}\r\n icon={<HiOutlineDownload />}\r\n className={`pointer-events-auto cursor-pointer ${iconClass}`}\r\n size=\"1rem\"\r\n ></IconButton>\r\n\r\n <span className={`${downloadClass}`}>VIEW DESIGN SHEET</span>\r\n </a>\r\n </>\r\n );\r\n};\r\n","import React from 'react';\r\n\r\nexport interface CardFlagProps {\r\n flag?: string;\r\n flagClass?: string;\r\n}\r\nexport const CardFlag = ({ flag, flagClass }: CardFlagProps) => {\r\n return (\r\n <>\r\n <div className={`absolute top-0 left-0 ${flagClass}`}>{flag}</div>\r\n </>\r\n );\r\n};\r\n","import React from 'react';\r\n\r\nexport interface CardDescProps {\r\n children?: React.ReactNode;\r\n descriptionClass?: string;\r\n}\r\nexport const CardDescription = ({ children, descriptionClass }: CardDescProps) => {\r\n return (\r\n <>\r\n <p className={`${descriptionClass}`}>{children}</p>\r\n </>\r\n );\r\n};\r\n","import React from 'react';\r\nimport { Input as InputImpl, InputHTMLProps } from 'reakit';\r\n\r\nexport const input = React.forwardRef<HTMLInputElement, InputHTMLProps>(\r\n (props, ref) => {\r\n return (\r\n <InputImpl\r\n // @ts-ignore\r\n ref={ref}\r\n {...props}\r\n className={`${props.className}`}\r\n />\r\n );\r\n }\r\n);\r\n","import React from 'react';\r\nexport interface ModalButtonsProps {\r\n buttonMainClass?: string;\r\n buttons?: {\r\n buttonClass?: string;\r\n label?: string;\r\n onClick?: () => void;\r\n style?: React.CSSProperties;\r\n }[];\r\n}\r\nexport const ModalButtons = ({ buttonMainClass, buttons }: ModalButtonsProps) => {\r\n return (\r\n <div\r\n className={`flex flex-col lg:flex-row gap-[1.5625rem] leading-[1.4375rem] font-bold ${buttonMainClass}`}\r\n >\r\n {buttons?.map((button, index) => (\r\n <button\r\n key={index}\r\n onClick={button.onClick}\r\n className={`w-full py-[0.7188rem] rounded-none font-bold uppercase ${button.buttonClass}`}\r\n style={button.style}\r\n >\r\n {button.label}\r\n </button>\r\n ))}\r\n </div>\r\n );\r\n};\r\n\r\n","import React from 'react';\r\nimport { HiOutlineDownload, IconButton } from '../icon';\r\n\r\nexport interface ModalDownLoadIconProps {\r\n downloadClass?: string;\r\n downloadIconClass?: string;\r\n iconClass?: string;\r\n pdfUrl?: string;\r\n}\r\nexport const ModalDownloadIcon = ({\r\n downloadClass,\r\n downloadIconClass,\r\n iconClass,\r\n pdfUrl,\r\n}: ModalDownLoadIconProps) => {\r\n return (\r\n <>\r\n <div className={`flex justify-center items-center`}>\r\n <a\r\n href={pdfUrl}\r\n download={'Design Sheet'}\r\n target=\"_blank\"\r\n className={`flex items-center cursor-pointer gap-[0.6875rem] font-bold ${downloadIconClass}`}\r\n >\r\n <IconButton\r\n label={''}\r\n icon={<HiOutlineDownload />}\r\n className={`pointer-events-auto ${iconClass}`}\r\n size=\"1.1rem\"\r\n ></IconButton>\r\n\r\n <span className={`uppercase ${downloadClass}`}>\r\n VIEW DESIGN SHEET\r\n </span>\r\n </a>\r\n </div>\r\n </>\r\n );\r\n};\r\n","import React from 'react';\r\n\r\nexport interface ModalHeadingProps {\r\n children?: React.ReactNode;\r\n headingStyle?: string;\r\n}\r\nexport const ModalHeading = ({ children, headingStyle }: ModalHeadingProps) => {\r\n return (\r\n <>\r\n <div\r\n className={`flex flex-col gap-[1.625rem] justify-center items-center text-center ${headingStyle}`}\r\n >\r\n {children}\r\n </div>\r\n </>\r\n );\r\n};\r\n\r\n","import React from 'react';\r\n\r\nexport interface ModalLabelProps {\r\n children?: React.ReactNode;\r\n labelStyle?: string;\r\n}\r\nexport const ModalLabel = ({ children, labelStyle }: ModalLabelProps) => {\r\n return (\r\n <>\r\n <p className={`${labelStyle}`}>{children}</p>\r\n </>\r\n );\r\n};\r\n\r\n","import React from 'react';\r\nimport { IconButton } from '../icon';\r\n\r\nexport interface ModalStatusProps {\r\n icon?: JSX.Element;\r\n onIconClick?: () => void;\r\n children?: React.ReactNode;\r\n iconStyle?: string;\r\n}\r\nexport const ModalStatusIcon = ({\r\n icon,\r\n onIconClick,\r\n iconStyle,\r\n children,\r\n}: ModalStatusProps) => {\r\n return (\r\n <>\r\n <div className={`flex justify-center`} onClick={onIconClick}>\r\n <IconButton\r\n label={''}\r\n icon={icon}\r\n className={`pointer-events-auto cursor-pointer h-[auto] ${iconStyle}`}\r\n size=\"6.3rem\"\r\n ></IconButton>\r\n {children}\r\n </div>\r\n </>\r\n );\r\n};\r\n","import React, { useEffect } from 'react';\r\n//import { StepperTypes } from '../../store/actions/types';\r\nimport { use3dddPlus } from '../../store';\r\nimport { shallow } from 'zustand/shallow';\r\nimport {\r\n SELECT_BG_COLOR,\r\n //BORDER_COLOR,\r\n TEXT_SIZE_1,\r\n TEXT_SIZE_2,\r\n SELECT_TEXT_COLOR,\r\n BUTTON_TEXT_COLOR,\r\n TEXT_COLOR_1,\r\n INPUT_TEXT_DISABLE_COLOR,\r\n} from '../../theme';\r\nimport { AddText, IconButton, MyLogo, RLogo } from '../icon';\r\nimport { MdOutlineFileUpload } from 'react-icons/md';\r\nimport { BiSolidColorFill } from 'react-icons/bi';\r\nimport { FaRegImage } from 'react-icons/fa6';\r\n\r\nexport const LeftMenu = () => {\r\n const [\r\n setSelectedStepper,\r\n selectedStepper,\r\n addText,\r\n getStockLogos,\r\n loadingLogo,\r\n setDisplayProductColor,\r\n hasUploadScreen,\r\n ] = use3dddPlus(\r\n (state) => [\r\n state.setSelectedStepper,\r\n state.selectedStepper,\r\n state.addText,\r\n state.getStockLogos,\r\n state.loadingLogo,\r\n state.setDisplayProductColor,\r\n state.hasUploadScreen,\r\n ],\r\n shallow\r\n );\r\n const StepperList = [\r\n {\r\n name: 'Upload File',\r\n icon: <MdOutlineFileUpload />,\r\n id: 1,\r\n display: true,\r\n },\r\n {\r\n name: 'My Logos',\r\n icon: <MyLogo />,\r\n id: 2,\r\n display: true,\r\n },\r\n {\r\n name: 'Add Text',\r\n icon: <AddText />,\r\n id: 3,\r\n display: true,\r\n },\r\n {\r\n name: 'Add Mascots',\r\n icon: <FaRegImage />,\r\n id: 4,\r\n display: true,\r\n },\r\n {\r\n name: 'product Color',\r\n icon: <BiSolidColorFill />,\r\n id: 5,\r\n display: true,\r\n },\r\n ];\r\n\r\n useEffect(() => {\r\n return () => {};\r\n }, []);\r\n\r\n return (\r\n <div className=\"flex flex-row md:flex-col\">\r\n <div\r\n className={` flex flex-row md:flex-col sticky md:relative md:w-[100%] md:max-w-[100%]`}\r\n style={{ boxShadow: '0px 0px 6px #98989829' }}\r\n >\r\n <div\r\n className={`bg-[#CB1732] flex justify-center cursor-pointer px-2.5 py-4 `}\r\n >\r\n <div className=\" flex flex-col items-center justify-center\">\r\n <span className={` ${TEXT_SIZE_2} py-2`}>\r\n <IconButton\r\n label={''}\r\n icon={<RLogo />}\r\n size=\"2rem\"\r\n className={`${TEXT_COLOR_1} pointer-events-auto cursor-pointer m-auto`}\r\n ></IconButton>\r\n </span>\r\n <span\r\n className={`${SELECT_TEXT_COLOR} ${TEXT_SIZE_1} uppercase font-bold text-center`}\r\n >\r\n Logo Designer\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n <div\r\n className={` flex h-[100%] flex-row md:flex-col sticky md:relative md:w-[100%] md:max-w-[100%]`}\r\n style={{ boxShadow: '0px 0px 6px #98989829' }}\r\n >\r\n {StepperList?.map((step) => (\r\n <div\r\n className={\r\n step.id === selectedStepper\r\n ? `${SELECT_BG_COLOR} flex justify-center cursor-pointer px-2.5 py-4 `\r\n : 'flex justify-center px-2.5 py-4 ' +\r\n (hasUploadScreen\r\n ? ''\r\n : 'cursor-pointer group hover:bg-[#e11a38]')\r\n }\r\n key={step.id}\r\n style={!step.display ? { display: 'none' } : {}}\r\n onClick={(e) => {\r\n e.preventDefault();\r\n if (!hasUploadScreen) {\r\n setSelectedStepper(step.id);\r\n if (step.id === 3) {\r\n addText();\r\n }\r\n if (step.id === 4) {\r\n getStockLogos();\r\n }\r\n if (step.id === 2) {\r\n loadingLogo('');\r\n }\r\n if (step.id === 5) {\r\n setDisplayProductColor();\r\n }\r\n }\r\n }}\r\n >\r\n <div\r\n className={`flex flex-col items-center justify-center gap-1 ${\r\n hasUploadScreen ? '' : 'group-hover:bg-[#e11a38]'\r\n }`}\r\n >\r\n <span\r\n className={\r\n step.id === selectedStepper\r\n ? ` ${TEXT_SIZE_2} py-2`\r\n : ` ${TEXT_SIZE_2} py-2`\r\n }\r\n >\r\n <IconButton\r\n label={''}\r\n icon={step.icon}\r\n size=\"2rem\"\r\n className={`${\r\n step.id === selectedStepper\r\n ? BUTTON_TEXT_COLOR\r\n : hasUploadScreen\r\n ? INPUT_TEXT_DISABLE_COLOR\r\n : TEXT_COLOR_1\r\n } pointer-events-auto m-auto group-active:text-white ${\r\n hasUploadScreen\r\n ? ''\r\n : 'cursor-pointer group-hover:text-white'\r\n }`}\r\n ></IconButton>\r\n </span>\r\n <span\r\n className={\r\n step.id === selectedStepper\r\n ? `${SELECT_TEXT_COLOR} ${TEXT_SIZE_1} uppercase font-bold text-center`\r\n : `${\r\n hasUploadScreen\r\n ? INPUT_TEXT_DISABLE_COLOR\r\n : TEXT_COLOR_1\r\n } ${TEXT_SIZE_1} uppercase font-bold text-center ${\r\n hasUploadScreen ? '' : 'group-hover:text-white'\r\n }`\r\n }\r\n >\r\n {step.name}\r\n </span>\r\n </div>\r\n </div>\r\n ))}\r\n </div>\r\n </div>\r\n );\r\n};\r\n","import React from 'react';\r\nimport './loader.css';\r\n\r\nexport const Loader = ({ position = 'overlay', height = '100%' }) => {\r\n const loaderRef = React.useRef<any>();\r\n React.useEffect(() => {\r\n if (!loaderRef) return;\r\n loaderRef.current.style.height = height;\r\n }, [loaderRef]);\r\n\r\n return (\r\n <section\r\n ref={loaderRef}\r\n id=\"ls\"\r\n style={\r\n position === 'overlay'\r\n ? { position: 'absolute', opacity: 0.8, top: 0 }\r\n : {}\r\n }\r\n className=\"w-full h-full\"\r\n >\r\n <div id=\"l\"></div>\r\n </section>)\r\n}\r\n\r\n ","import React from 'react';\r\nexport const UpIcon = ({ disabled }) => {\r\n return (\r\n <div className=\"m-auto upIcon\">\r\n <svg\r\n fill={disabled ? '#cfcccc' : '#9a9a9a'}\r\n height=\"25px\"\r\n width=\"25px\"\r\n version=\"1.1\"\r\n id=\"Layer_1\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 512 512\"\r\n >\r\n <g>\r\n <g>\r\n <g>\r\n <path d=\"M0,0v512h512V0H0z M469.333,469.333H42.667V42.667h426.667V469.333z\" />\r\n <path d=\"M121.752,335.085L256,200.837l134.248,134.248c8.331,8.331,21.839,8.331,30.17,0c8.331-8.331,8.331-21.839,0-30.17 L271.085,155.582c-8.331-8.331-21.839-8.331-30.17,0L91.582,304.915c-8.331,8.331-8.331,21.839,0,30.17 S113.42,343.416,121.752,335.085z\" />\r\n </g>\r\n </g>\r\n </g>\r\n </svg>\r\n </div>\r\n );\r\n};\r\n\r\nexport const DownIcon = ({ disabled }) => {\r\n return (\r\n <div className=\"m-auto downIcon\">\r\n <svg\r\n transform=\"rotate(180)\"\r\n fill={disabled ? '#cfcccc' : '#9a9a9a'}\r\n height=\"25px\"\r\n width=\"25px\"\r\n version=\"1.1\"\r\n id=\"Layer_1\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 512 512\"\r\n >\r\n <g>\r\n <g>\r\n <g>\r\n <path d=\"M0,0v512h512V0H0z M469.333,469.333H42.667V42.667h426.667V469.333z\" />\r\n <path d=\"M121.752,335.085L256,200.837l134.248,134.248c8.331,8.331,21.839,8.331,30.17,0c8.331-8.331,8.331-21.839,0-30.17 L271.085,155.582c-8.331-8.331-21.839-8.331-30.17,0L91.582,304.915c-8.331,8.331-8.331,21.839,0,30.17 S113.42,343.416,121.752,335.085z\" />\r\n </g>\r\n </g>\r\n </g>\r\n </svg>\r\n </div>\r\n );\r\n};\r\n\r\nexport const DeleteIcon = () => {\r\n return (\r\n <div className=\"m-auto upIcon\">\r\n <svg\r\n width=\"25px\"\r\n height=\"25px\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n >\r\n <path\r\n d=\"M10 11V17\"\r\n stroke=\"#9a9a9a\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n <path\r\n d=\"M14 11V17\"\r\n stroke=\"#9a9a9a\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n <path\r\n d=\"M4 7H20\"\r\n stroke=\"#9a9a9a\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n <path\r\n d=\"M6 7H12H18V18C18 19.6569 16.6569 21 15 21H9C7.34315 21 6 19.6569 6 18V7Z\"\r\n stroke=\"#9a9a9a\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n <path\r\n d=\"M9 5C9 3.89543 9.89543 3 11 3H13C14.1046 3 15 3.89543 15 5V7H9V5Z\"\r\n stroke=\"#9a9a9a\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n </svg>\r\n </div>\r\n );\r\n};\r\n","import React from 'react';\r\nimport { shallow } from 'zustand/shallow';\r\nimport { use3dddPlus } from '../../store';\r\nimport { DeleteIcon, UpIcon, DownIcon } from './icons';\r\n\r\ninterface LayersProps {\r\n canvas: any;\r\n onSave: () => void;\r\n}\r\n\r\ninterface StoreObject {\r\n id: string;\r\n icon: string;\r\n text?: string;\r\n}\r\n\r\nexport const Layers: React.FC<LayersProps> = ({ canvas, onSave }) => {\r\n const [storeAllObject] = use3dddPlus(\r\n (state) => [state.storeAllObject],\r\n shallow\r\n );\r\n\r\n const removeItem = (value: StoreObject) => {\r\n const index = use3dddPlus\r\n .getState()\r\n .storeAllObject.findIndex((obj: StoreObject) => obj.id === value.id);\r\n if (index > -1) {\r\n use3dddPlus.getState().storeAllObject.splice(index, 1);\r\n }\r\n use3dddPlus.setState({\r\n storeAllObject: [...use3dddPlus.getState().storeAllObject],\r\n });\r\n };\r\n\r\n const deleteElement = (item: StoreObject) => {\r\n if (canvas._objects) {\r\n canvas._objects.forEach((obj: any) => {\r\n if (obj.id === item.id) {\r\n canvas.remove(obj);\r\n }\r\n });\r\n }\r\n canvas.requestRenderAll();\r\n use3dddPlus.getState().updateModifaction(true);\r\n removeItem(item);\r\n };\r\n\r\n const changeArr = (arr: any[], fromIndex: number, toIndex: number) => {\r\n const element = arr.splice(fromIndex, 1)[0];\r\n arr.splice(toIndex, 0, element);\r\n return arr;\r\n };\r\n\r\n const layerHandle = (\r\n element: StoreObject,\r\n index: number,\r\n direction: 'plus' | 'minus'\r\n ) => {\r\n const currentObject = [...use3dddPlus.getState().storeAllObject];\r\n if (direction === 'minus') {\r\n canvas.sendBackwards(element);\r\n use3dddPlus.setState({\r\n storeAllObject: changeArr(currentObject, index, index + 1),\r\n });\r\n } else {\r\n canvas.bringForward(element);\r\n use3dddPlus.setState({\r\n storeAllObject: changeArr(currentObject, index, index - 1),\r\n });\r\n }\r\n canvas.sendToBack(use3dddPlus.getState().verticalLine);\r\n canvas.sendToBack(use3dddPlus.getState().horizontalLine);\r\n use3dddPlus.getState().updateModifaction(true);\r\n };\r\n\r\n return (\r\n <div className=\"flex flex-col w-full h-full\">\r\n <div className=\"flex flex-col flex-1 w-full gap-2 overflow-y-auto\">\r\n {storeAllObject.map((item, index) => (\r\n <div\r\n key={item.id}\r\n className=\"!flex-row border border-[#D7D7D7] h-20 flex justify-between items-center flex-wrap md:flex-nowrap w-full\"\r\n >\r\n <div className=\"border-r border-[#D7D7D7] bg-slate-200 w-20 h-20 flex items-center justify-center flex-shrink-0\">\r\n <img\r\n className={`rounded-lg p-2 ${\r\n item.text ? 'object-contain' : ''\r\n }`}\r\n style={{ height: '100%', width: 'auto', margin: 'auto' }}\r\n src={item.icon}\r\n alt=\"icon\"\r\n />\r\n </div>\r\n\r\n <div className=\"flex items-center justify-center\">\r\n <button\r\n onClick={() => deleteElement(item)}\r\n className=\"flex items-center justify-center flex-shrink-0 w-10 h-full\"\r\n >\r\n <DeleteIcon />\r\n </button>\r\n <div className=\"flex flex-col items-center justify-between flex-shrink-0 w-10\">\r\n <button\r\n disabled={index === 0}\r\n onClick={() => layerHandle(item, index, 'plus')}\r\n className=\"w-full h-9\"\r\n >\r\n <UpIcon disabled={index === 0} />\r\n </button>\r\n <button\r\n disabled={index === storeAllObject.length - 1}\r\n onClick={() => layerHandle(item, index, 'minus')}\r\n className=\"w-full h-9\"\r\n >\r\n <DownIcon\r\n disabled={index === storeAllObject.length - 1}\r\n // className=\"pointer-events-none\"\r\n />\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n ))}\r\n </div>\r\n <div className=\"flex flex-col w-full h-[10%]\">\r\n <button\r\n type=\"button\"\r\n className=\"m-auto bg-white py-2 text-sm font-medium text-[#E11A38] w-full ring-1 ring-inset ring-[#E11A38] hover:bg-[#E11A38] hover:text-white transition-colors duration-200\"\r\n onClick={onSave}\r\n >\r\n Save\r\n </button>\r\n </div>\r\n </div>\r\n\r\n // <div className=\"relative flex flex-col justify-between flex-1 h-full px-3 overflow-x-hidden\">\r\n // <div className=\"flex flex-col gap-1 overflow-y-auto\">\r\n // {storeAllObject.map((item, index) => (\r\n // <div\r\n // key={item.id}\r\n // className=\"innerLayer border border-[#D7D7D7] my-4 h-20 flex justify-between \"\r\n // >\r\n // <div className=\"imgBox border-r border-[#D7D7D7] bg-slate-200 flex w-20\">\r\n // <img\r\n // className={`rounded-lg p-2 ${item.text ? 'object-contain' : ''}`}\r\n // style={{ height: 'auto', width: 'auto', margin: 'auto' }}\r\n // src={item.icon}\r\n // alt=\"icon\"\r\n // />\r\n // </div>\r\n // <div className=\"flex-auto\">\r\n // <button\r\n // onClick={() => deleteElement(item)}\r\n // className=\"w-full h-full\"\r\n // >\r\n // <div className=\"flex justify-center pointer-events-none\">\r\n // <DeleteIcon />\r\n // </div>\r\n // </button>\r\n // </div>\r\n // <div className=\"flex flex-col justify-between w-10\">\r\n // <button\r\n // disabled={index === 0}\r\n // onClick={() => layerHandle(item, index, 'plus')}\r\n // >\r\n // <div className=\"flex justify-center pointer-events-none h-9\">\r\n // <UpIcon disabled={index === 0} />\r\n // </div>\r\n // </button>\r\n // <button\r\n // disabled={index === storeAllObject.length - 1}\r\n // onClick={() => layerHandle(item, index, 'minus')}\r\n // >\r\n // <div className=\"flex justify-center pointer-events-none h-9\">\r\n // <DownIcon disabled={index === storeAllObject.length - 1} />\r\n // </div>\r\n // </button>\r\n // </div>\r\n // </div>\r\n // ))}\r\n // </div>\r\n\r\n // <button\r\n // type=\"button\"\r\n // className=\"mt-3 bg-white py-2 text-sm font-medium text-[#E11A38] w-full ring-1 ring-inset ring-[#E11A38] absolute bottom-0 left-0 right-0\"\r\n // onClick={onSave}\r\n // >\r\n // Save\r\n // </button>\r\n // </div>\r\n );\r\n};\r\n","export const fontFamilies = [\r\n {\r\n name: 'ACCELERATOR RICHARDSON',\r\n label: 'Accel',\r\n src: \"https://storage.googleapis.com/3ddplusgcp/richardson-customizer/fonts/updated/ACCELERATOR_RICHARDSON.ttf\",\r\n },\r\n {\r\n name: 'Athletic Block',\r\n label: 'Athletic Block',\r\n src: 'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/fonts/updated/Athletic_Block.ttf',\r\n },\r\n {\r\n name: 'Ballpark',\r\n label: 'Ballpark',\r\n src: 'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/fonts/updated/Ballpark.TTF',\r\n },\r\n {\r\n name: 'Bebas Kai',\r\n label: 'BebasKai',\r\n src: 'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/fonts/updated/Bebas_Kai.otf',\r\n },\r\n {\r\n name: 'Beton CG ExtraBold',\r\n label: 'Beton CG Extra Bold',\r\n src: 'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/fonts/updated/Beton_CG_ExtraBold.otf',\r\n },\r\n {\r\n name: 'BrushScript BT',\r\n label: 'Brush Script',\r\n src: 'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/fonts/updated/BrushScript_BT.ttf',\r\n },\r\n {\r\n name: 'Century Richardson',\r\n label: 'Century',\r\n src: 'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/fonts/updated/Century_Richardson.ttf',\r\n },\r\n {\r\n name: 'CityDBol',\r\n label: 'City Block',\r\n src: 'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/fonts/updated/CityDBol.ttf',\r\n },\r\n {\r\n name: 'Condensed Block',\r\n label: 'Condensed Block',\r\n src: 'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/fonts/updated/Condensed_Block_Richardson.ttf',\r\n },\r\n {\r\n name: 'CopprplGoth Bd BT',\r\n label: 'Copper',\r\n src: 'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/fonts/updated/CopprplGoth_Bd_BT.ttf',\r\n },\r\n {\r\n name: 'Euro Block',\r\n label: 'Euro Block',\r\n src: 'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/fonts/updated/HandelGotDBol.ttf',\r\n },\r\n {\r\n name: 'Full Block',\r\n label: 'Full Block',\r\n src: 'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/fonts/updated/Full_Block_Richardson.ttf',\r\n },\r\n // {\r\n // name: 'Bebas Kai',\r\n // label: 'Heritage',\r\n // src: 'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/fonts/updated/Bebas_Kai.otf',\r\n // },\r\n {\r\n name: 'SocietyEditor Personal Use',\r\n label: 'Lakesight',\r\n src: 'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/fonts/updated/SocietyEditor_Personal_Use.ttf',\r\n },\r\n {\r\n name: 'machinen',\r\n label: 'Machine',\r\n src: 'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/fonts/updated/machinen.ttf',\r\n },\r\n {\r\n name: 'Magneto',\r\n label: 'Magento',\r\n src: 'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/fonts/updated/Magneto.ttf',\r\n },\r\n {\r\n name: 'Niramit Bold',\r\n label: 'Niramit Bold',\r\n src: 'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/fonts/updated/Niramit_Bold.ttf',\r\n },\r\n {\r\n name: 'Plain',\r\n label: 'Plain',\r\n src: 'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/fonts/updated/Plain.ttf',\r\n },\r\n {\r\n name: 'Pro Block',\r\n label: 'Pro Block',\r\n src: 'https://storage.googleapis.com/3ddplusgcp/logoEditor/assets/fonts/pro_block.woff',\r\n },\r\n {\r\n name: 'Puff',\r\n label: 'Puff',\r\n src: 'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/fonts/updated/puff.ttf',\r\n },\r\n {\r\n name: 'SocietyEditor Personal Use',\r\n label: 'Society Editor',\r\n src: 'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/fonts/updated/SocietyEditor_Personal_Use.ttf',\r\n },\r\n {\r\n name: 'Square721 BdEx BT',\r\n label: 'Square',\r\n src: 'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/fonts/updated/Square721_BdEx_BT.ttf',\r\n },\r\n {\r\n name: 'Swis721 Cn BT',\r\n label: 'Swiss Bold Condensed',\r\n src: 'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/fonts/updated/Swis721_Cn_BT.ttf',\r\n },\r\n {\r\n name: 'Stahls Tiffany - 2000',\r\n label: 'Tifanny',\r\n src: 'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/fonts/updated/Stahls_Tiffany-2000.ttf',\r\n },\r\n {\r\n name: 'Times Richardson',\r\n label: 'Times',\r\n src: 'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/fonts/updated/Times_Richardson.ttf',\r\n },\r\n {\r\n name: 'UNISCRIPT',\r\n label: 'Uni Script',\r\n src: 'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/fonts/updated/UNISCRIPT.ttf',\r\n },\r\n];\r\n\r\nexport const textShapes = [\r\n {\r\n name: 'None',\r\n src: '',\r\n },\r\n {\r\n name: 'Arc',\r\n src: '',\r\n },\r\n {\r\n name: 'Bridge',\r\n src: '',\r\n },\r\n {\r\n name: 'Bowtie',\r\n src: '',\r\n },\r\n {\r\n name: 'Vertical Arch',\r\n src: '',\r\n },\r\n {\r\n name: 'Reverse Vertical Arch',\r\n src: '',\r\n },\r\n];\r\n\r\nexport const tabs = [\r\n { id: 1, label: 'Properties' },\r\n { id: 2, label: 'Layers' },\r\n];\r\n\r\n\r\nexport const warpTypes: { [key: string]: string } = {\r\n None: '',\r\n Arc: 'WARP_ARC',\r\n Bridge: 'WARP_ARC_LOWER',\r\n Bowtie: 'WARP_BULGE',\r\n 'Vertical Arch': 'WARP_ARCH',\r\n 'Reverse Vertical Arch': 'WARP_ARCH',\r\n};\r\n\r\nexport const textProperties = [\r\n 'pathData',\r\n 'colorFill',\r\n 'id',\r\n 'shapeSize',\r\n 'shapeType',\r\n 'fill',\r\n 'fontFamily',\r\n 'fontWeight',\r\n 'stroke',\r\n 'strokeWidth',\r\n 'padding',\r\n 'fontSize',\r\n 'charSpacing',\r\n 'textAlign',\r\n 'fontStyle',\r\n 'text',\r\n];","import React from 'react';\r\n\r\nconst errorPopup = ({ allColor }) => {\r\n return (\r\n <>\r\n <div className=\"errorPanel flex z-[100] w-full py-[20px]\">\r\n <div className=\"text-[#E11A38] text-[16px] font-size-[14px] font-bold flex-col\">\r\n <span className=\"flex\">COLORS IN DESIGN ({allColor.length})</span>\r\n <span className=\"flex\">\r\n MAX COLORS EXCEEDED, REDUCE THE TOTAL COLOR COUNT TO 8 OR FEWER\r\n COLORS PER SIDE.\r\n </span>\r\n {/* <div className=\"flex mt-3\">\r\n {allColor?.map((item) => {\r\n return (\r\n <div\r\n className={`border border-[#D6D6D6] w-[30px] h-[30px] group mr-[16px]`}\r\n style={{ backgroundColor: item }}\r\n />\r\n );\r\n })} */}\r\n {/*<div\r\n className={`border border-[#D6D6D6] w-[30px] h-[30px] group bg-[#000000] mr-[16px]`}\r\n />\r\n <div\r\n className={`border border-[#D6D6D6] w-[30px] h-[30px] group bg-[#ffffff] mr-[16px]`}\r\n />\r\n <div\r\n className={`border border-[#D6D6D6] w-[30px] h-[30px] group bg-[#DE802E] mr-[16px]`}\r\n />\r\n <div\r\n className={`border border-[#D6D6D6] w-[30px] h-[30px] group bg-[#D13F42] mr-[16px]`}\r\n />\r\n <div\r\n className={`border border-[#D6D6D6] w-[30px] h-[30px] group bg-[#DE802E] mr-[16px]`}\r\n />\r\n <div\r\n className={`border border-[#D6D6D6] w-[30px] h-[30px] group bg-[#D13F42] mr-[16px]`}\r\n />\r\n <div\r\n className={`border border-[#D6D6D6] w-[30px] h-[30px] group bg-[#010101] mr-[16px]`}\r\n />\r\n <div\r\n className={`border border-[#D6D6D6] w-[30px] h-[30px] group bg-[#BBBBBB] mr-[16px]`}\r\n />\r\n <div\r\n className={`border border-[#D6D6D6] w-[30px] h-[30px] group bg-[#E4BB30] mr-[16px]`}\r\n /> */}\r\n {/* </div> */}\r\n </div>\r\n </div>\r\n </>\r\n );\r\n};\r\n\r\nexport default errorPopup;\r\n","import React, { } from 'react';\r\nimport { FiAlignLeft, FiAlignCenter, FiAlignRight } from 'react-icons/fi';\r\nimport {\r\n INPUT_BG_COLOR,\r\n TEXT_COLOR_1,\r\n TEXT_SIZE_3,\r\n BORDER_COLOR_1,\r\n SELECT_BG_COLOR,\r\n} from '../../theme';\r\nimport { ColorImpl } from '../colorPallet';\r\nimport {\r\n textShapes,\r\n} from './constants';\r\nimport { use3dddPlus } from '../../store';\r\n\r\nexport const TextProperties = ({\r\n textInfo,\r\n onTextChange,\r\n textSelected,\r\n fontChange,\r\n textStyle,\r\n activeSelection,\r\n setDisplayPallet,\r\n setPosition,\r\n textColorChange,\r\n fontStyle,\r\n textAlignDisplay,\r\n activeButton,\r\n textAlignHandler,\r\n textOutlineHandler,\r\n strokeColorChange,\r\n textSpacingHandler,\r\n textShapeChange,\r\n shapeSizeVal,\r\n textShapeSizeHandler,\r\n}) => {\r\n const fontFamilies = use3dddPlus.getState().fontFamilies;\r\n return (\r\n <div className=\"\">\r\n <div className=\"uppercase font-bold text-sm mb-[8.5px]\">Enter Text</div>\r\n <textarea\r\n value={textInfo}\r\n onChange={onTextChange}\r\n className=\"w-[100%] border border-solid-[1px] border-[#9A9A9A] py-[10px] pl-[16px] mb-[16.5px]\"\r\n placeholder=\"LOGO TEXT\"\r\n />\r\n <div className=\"uppercase font-bold text-sm mb-[8.5px]\">Select Font</div>\r\n <select\r\n name=\"FontStyleNumber\"\r\n id=\"FontStyleNumber\"\r\n value={textSelected.fontFamily}\r\n onChange={fontChange}\r\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-offset-0 focus:rounded-sm mb-[16.5px]`}\r\n >\r\n {fontFamilies.map((list) => {\r\n return (\r\n <>\r\n <option value={list.name}>{list.label}</option>\r\n </>\r\n );\r\n })}\r\n </select>\r\n\r\n <div className=\"uppercase font-bold text-sm mb-[8.5px]\">Style</div>\r\n <div className=\"flex gap-x-[15px] mb-[16.5px]\">\r\n {' '}\r\n <button\r\n disabled={\r\n textSelected &&\r\n textSelected.shapeType &&\r\n textSelected.shapeType !== 'none'\r\n }\r\n className={\r\n textSelected.fontWeight === 'bold'\r\n ? `${SELECT_BG_COLOR} text-[#fff] text-base cursor-pointer border font-bold border-[#EBEBEB] py-[7px] px-[25px] `\r\n : 'bg-[#fff] font-bold text-base cursor-pointer border border-[#EBEBEB] py-[7px] px-[25px]'\r\n }\r\n style={\r\n textSelected &&\r\n textSelected.shapeType &&\r\n textSelected.shapeType !== 'none'\r\n ? {\r\n color: '#cccccc',\r\n cursor: 'default',\r\n backgroundColor: '#ffffff',\r\n }\r\n : {}\r\n }\r\n onClick={(e) => textStyle(e, 'fontWeight', 'bold')}\r\n id=\"bold\"\r\n >\r\n B\r\n </button>\r\n <button\r\n disabled={\r\n textSelected &&\r\n textSelected.shapeType &&\r\n textSelected.shapeType !== 'none'\r\n }\r\n className={\r\n textSelected.fontStyle && textSelected.fontStyle === 'italic'\r\n ? `${SELECT_BG_COLOR} text-[#fff] text-base cursor-pointer border italic border-[#EBEBEB] py-[7px] px-[25px] `\r\n : 'bg-[#fff] italic text-base cursor-pointer border border-[#EBEBEB] py-[7px] px-[25px]'\r\n }\r\n style={\r\n textSelected &&\r\n textSelected.shapeType &&\r\n textSelected.shapeType !== 'none'\r\n ? {\r\n color: '#cccccc',\r\n cursor: 'default',\r\n backgroundColor: '#ffffff',\r\n }\r\n : {}\r\n }\r\n onClick={(e) => textStyle(e, 'fontStyle', 'italic')}\r\n id=\"italic\"\r\n >\r\n I\r\n </button>\r\n <button\r\n disabled={\r\n textSelected &&\r\n textSelected.shapeType &&\r\n textSelected.shapeType !== 'none'\r\n }\r\n className={\r\n textSelected.underline && textSelected.underline === true\r\n ? `${SELECT_BG_COLOR} text-[#fff] text-base cursor-pointer border underline border-[#EBEBEB] py-[7px] px-[25px] `\r\n : 'bg-[#fff] underline text-base cursor-pointer border border-[#EBEBEB] py-[7px] px-[25px]'\r\n }\r\n style={\r\n textSelected &&\r\n textSelected.shapeType &&\r\n textSelected.shapeType !== 'none'\r\n ? {\r\n color: '#cccccc',\r\n cursor: 'default',\r\n backgroundColor: '#ffffff',\r\n }\r\n : {}\r\n }\r\n onClick={(e) => textStyle(e, 'underline', !fontStyle.underline)}\r\n id=\"underline\"\r\n >\r\n U\r\n </button>\r\n </div>\r\n\r\n {textAlignDisplay === true && (\r\n <div className=\"textAlign\">\r\n <div className=\"uppercase font-bold text-sm mb-[8.5px]\">Align</div>\r\n <div className=\"flex gap-x-[15px] mb-[16.5px]\">\r\n <button\r\n type=\"button\"\r\n className={\r\n 'left' === activeButton\r\n ? `${SELECT_BG_COLOR} text-[#fff] cursor-pointer border border-[#EBEBEB] py-[7px] px-[25px] `\r\n : 'bg-[#fff] cursor-pointer border border-[#EBEBEB] py-[7px] px-[25px]'\r\n }\r\n id=\"left\"\r\n onClick={textAlignHandler}\r\n >\r\n <FiAlignLeft id=\"left\" onClick={textAlignHandler} />\r\n </button>\r\n <button\r\n type=\"button\"\r\n className={\r\n 'center' === activeButton\r\n ? `${SELECT_BG_COLOR} text-[#fff] cursor-pointer border border-[#EBEBEB] y-[7px] px-[25px] `\r\n : 'bg-[#fff] cursor-pointer border border-[#EBEBEB] py-[7px] px-[25px]'\r\n }\r\n id=\"center\"\r\n onClick={textAlignHandler}\r\n >\r\n <FiAlignCenter id=\"center\" onClick={textAlignHandler} />\r\n </button>\r\n <button\r\n type=\"button\"\r\n className={\r\n 'right' === activeButton\r\n ? `${SELECT_BG_COLOR} text-[#fff] cursor-pointer border border-[#EBEBEB] y-[7px] px-[25px] `\r\n : 'bg-[#fff] cursor-pointer border border-[#EBEBEB] py-[7px] px-[25px]'\r\n }\r\n id=\"right\"\r\n onClick={textAlignHandler}\r\n >\r\n <FiAlignRight id=\"right\" onClick={textAlignHandler} />\r\n </button>\r\n </div>\r\n </div>\r\n )}\r\n <div className=\"uppercase font-bold text-sm mb-[8.5px]\">Text Color</div>\r\n <div className=\"relative flex\">\r\n <ColorImpl\r\n mClass={'ml-0'}\r\n handleChange={textColorChange}\r\n property={'backgroundColor'}\r\n name={'backgroundColor'}\r\n color={activeSelection.fill}\r\n setDisplayPallet={setDisplayPallet}\r\n setPosition={setPosition}\r\n callback={textColorChange}\r\n />\r\n </div>\r\n <div className=\"flex gap-2 mt-4\">\r\n <div>\r\n <div className=\"uppercase font-bold text-sm mb-[8.5px]\">\r\n Outline Size\r\n </div>\r\n <input\r\n type=\"number\"\r\n id=\"outlineSize\"\r\n name=\"outlineSize\"\r\n step=\"0.2\"\r\n value={textSelected.strokeWidth}\r\n className=\"border border-[#EBEBEB] py-[10px] pl-[16px] mb-[16.5px] w-[145px]\"\r\n onChange={textOutlineHandler}\r\n ></input>\r\n </div>\r\n <div>\r\n <div className=\"uppercase font-bold text-sm mb-[8.5px]\">\r\n Outline Color\r\n </div>\r\n <div className=\"relative flex\">\r\n {' '}\r\n <ColorImpl\r\n mClass={'ml-0'}\r\n handleChange={strokeColorChange}\r\n property={'backgroundColor'}\r\n name={'backgroundColor'}\r\n color={activeSelection.stroke}\r\n setDisplayPallet={setDisplayPallet}\r\n setPosition={setPosition}\r\n callback={strokeColorChange}\r\n />\r\n </div>\r\n </div>\r\n </div>\r\n <div className=\"flex gap-2\">\r\n <div>\r\n <div className=\"uppercase font-bold text-sm mb-[8.5px]\">\r\n Letter Spacing\r\n </div>\r\n <input\r\n disabled={\r\n textSelected &&\r\n textSelected.shapeType &&\r\n textSelected.shapeType !== 'none'\r\n }\r\n type=\"number\"\r\n id=\"spacing\"\r\n name=\"spacing\"\r\n step=\"10\"\r\n value={textSelected.charSpacing}\r\n className=\"border border-[#EBEBEB] py-[10px] pl-[16px] mb-[16.5px] w-[145px]\"\r\n onChange={textSpacingHandler}\r\n ></input>\r\n </div>\r\n </div>\r\n <div className=\"flex gap-2\">\r\n <div className=\"w-[50%]\">\r\n <div className=\"uppercase font-bold text-sm mb-[8.5px]\">\r\n Text Shape\r\n </div>\r\n <select\r\n name=\"textShape\"\r\n id=\"textShape\"\r\n value={textSelected.shapeType ? textSelected.shapeType : 'None'}\r\n onChange={textShapeChange}\r\n // className={`${INPUT_BG_COLOR} font-bold ${TEXT_COLOR_1} ${TEXT_SIZE_3} border border-solid ${BORDER_COLOR_1} select select-bordered w-full rounded-none focus:outline-current focus:outline-offset-0 focus:rounded-sm mb-[16.5px]`}\r\n className={`${INPUT_BG_COLOR} font-bold ${TEXT_COLOR_1} ${TEXT_SIZE_3} border border-solid ${BORDER_COLOR_1} select select-bordered w-full rounded-none focus:outline-offset-0 focus:rounded-sm mb-[16.5px] ml-[2px]`}\r\n >\r\n {textShapes.map((list) => {\r\n return (\r\n <>\r\n <option value={list.name}>{list.name}</option>\r\n </>\r\n );\r\n })}\r\n </select>\r\n </div>\r\n <div className=\"w-[50%]\">\r\n <div className=\"uppercase font-bold text-sm mb-[8.5px]\">\r\n Shape Size\r\n </div>\r\n <input\r\n type=\"number\"\r\n id=\"shapeSize\"\r\n name=\"shapeSize\"\r\n step=\"10\"\r\n value={shapeSizeVal}\r\n className=\"border border-[#EBEBEB] py-[10px] pl-[16px] mb-[16.5px] w-[145px]\"\r\n onChange={textShapeSizeHandler}\r\n ></input>\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n};\r\n","import { fabric } from 'fabric';\r\nimport React, { useState, useMemo, ChangeEvent } from 'react';\r\nimport { MdOutlineCancel } from 'react-icons/md';\r\nimport { shallow } from 'zustand/shallow';\r\nimport { use3dddPlus } from '../../store';\r\nimport { load } from 'opentype.js';\r\nimport { ColorImpl } from '../colorPallet';\r\nimport { IconButton, HorizontalFlip, VerticalFlip } from '../icon';\r\nimport { textProperties, warpTypes } from './constants';\r\nimport Configuration from '../../configuration.json';\r\nimport ErrorPopup from '../canvas/errorPopUp';\r\nimport { TextProperties } from './TextProperties';\r\n\r\nconst ErrorColorDiv = ({ setIsNextClicked, conflictColors }) => {\r\n return (\r\n <div\r\n className=\"mb-[10px]\"\r\n style={{\r\n position: 'absolute',\r\n backgroundColor: '#FFFFFF',\r\n bottom: 0,\r\n padding: '7px',\r\n }}\r\n >\r\n <IconButton\r\n label=\"Close\"\r\n icon={<MdOutlineCancel />}\r\n onClick={() => {\r\n setIsNextClicked(false);\r\n }}\r\n className={''}\r\n size=\"1.5rem\"\r\n style={{\r\n position: 'absolute',\r\n cursor: 'pointer',\r\n fontWeight: 'bold',\r\n right: 10,\r\n top: -7,\r\n color: '#FF0000',\r\n }}\r\n ></IconButton>\r\n <div\r\n className=\"text-[#E11A38]\"\r\n style={{ fontWeight: 'bold', marginBottom: '3px' }}\r\n >\r\n ERROR: CONFLICT IN COLOR USED\r\n </div>\r\n <div className=\"text-[#E11A38]\" style={{ marginBottom: '3px' }}>\r\n Note: The following colors used are not available in Richardson color\r\n palette. Please edit the colors used.\r\n </div>\r\n <div>\r\n {conflictColors.map((c: string, i: number) => {\r\n return (\r\n <div\r\n key={'color-' + i}\r\n style={{\r\n width: '100%',\r\n height: '30px',\r\n lineHeight: '30px',\r\n backgroundColor: c,\r\n textAlign: 'center',\r\n marginBottom: '3px',\r\n }}\r\n >\r\n <span\r\n style={{\r\n color: '#ffffff',\r\n mixBlendMode: 'difference',\r\n }}\r\n >\r\n {c}\r\n </span>\r\n </div>\r\n );\r\n })}\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport const Properties = ({\r\n textSelected,\r\n activeTab,\r\n canvas,\r\n setIsNextClicked,\r\n onSave,\r\n conflictColors,\r\n isNextClicked,\r\n setDisplayPallet,\r\n setPosition,\r\n}) => {\r\n const [\r\n colorFill,\r\n currentSelection,\r\n activeSelection,\r\n textInfo,\r\n activeObj,\r\n allColor,\r\n fontFamilies\r\n ] = use3dddPlus(\r\n (state) => [\r\n state.colorFill,\r\n state.currentSelection,\r\n state.activeSelection,\r\n state.textInfo,\r\n state.activeSelection,\r\n state.allColor,\r\n state.fontFamilies\r\n ],\r\n shallow\r\n );\r\n\r\n const [textAlignDisplay, setTextAlignDisplay] = useState(false);\r\n\r\n const [fontStyle, setFontStyle] = useState({\r\n bold: false,\r\n italic: false,\r\n underline: false,\r\n });\r\n const [activeButton, setActiveButton] = useState<string | null>(null);\r\n const [shapeSizeVal, setShapeSizeVal] = useState(50);\r\n const [textLength, setTextLength] = useState(\r\n textSelected && textSelected.text ? textSelected.text.length : 0\r\n );\r\n const [bridgeshapeBendSize, setBridgeShapeBendSize] = useState(-25);\r\n const [bowtieshapeBendSize, setBowtieShapeBendSize] = useState(-12);\r\n\r\n const textShapeSizeHandler = (e: React.ChangeEvent<HTMLInputElement>) => {\r\n const newSize = e.target.valueAsNumber;\r\n setShapeSizeVal(newSize);\r\n\r\n const state = use3dddPlus.getState();\r\n\r\n if (textSelected) {\r\n textSelected.shapeSize = newSize;\r\n state.updateModifaction(true);\r\n state.forIconCapture();\r\n textSelected.icon = state.iconImage;\r\n setShapeSizeOnTextPath(newSize);\r\n canvas.renderAll();\r\n\r\n if (textSelected.aCoords.tr.x > 480) {\r\n return;\r\n }\r\n }\r\n };\r\n\r\n const setShapeSizeOnTextPath = (val: number) => {\r\n if (!textSelected || !textSelected.pathData) {\r\n return;\r\n }\r\n\r\n const applyTextProperties = (newTextPath: any, textSelected: any) => {\r\n textProperties.forEach((prop) => {\r\n newTextPath[prop] = textSelected[prop];\r\n });\r\n };\r\n\r\n const setNewPathDimensions = (\r\n newTextPath: any,\r\n dims: any,\r\n textSelected: any\r\n ) => {\r\n newTextPath.left = textSelected.left;\r\n newTextPath.top = textSelected.top;\r\n newTextPath.width = textSelected.width;\r\n newTextPath.height = textSelected.height;\r\n newTextPath.scaleX =\r\n textSelected.scaleX * (textSelected.width / dims.width);\r\n newTextPath.scaleY =\r\n textSelected.scaleY * (textSelected.width / dims.width);\r\n newTextPath.setCoords();\r\n newTextPath.width = dims.width;\r\n newTextPath.height = dims.height;\r\n };\r\n\r\n const state = use3dddPlus.getState();\r\n const canvas = state.fabricCanvas;\r\n // @ts-ignore\r\n const path = new Path(textSelected.pathData.toClipPathSVG());\r\n textSelected.shapeSize = val;\r\n\r\n const bendValue = val / 100 || 0;\r\n const warpType = warpTypes[textSelected.shapeType];\r\n\r\n if (warpType) {\r\n path.warp({ type: warpType, bend: bendValue });\r\n }\r\n\r\n const newTextPath = new fabric.Path(path.output());\r\n applyTextProperties(newTextPath, textSelected);\r\n // @ts-ignore\r\n const dimensions = newTextPath._calcDimensions();\r\n setNewPathDimensions(newTextPath, dimensions, textSelected);\r\n\r\n canvas.remove(textSelected);\r\n canvas.add(newTextPath);\r\n canvas.setActiveObject(newTextPath);\r\n\r\n state.activeSelection = newTextPath;\r\n state.forIconCapture();\r\n // @ts-ignore\r\n newTextPath.icon = state.iconImage;\r\n\r\n updateStoreAllObject(newTextPath);\r\n canvas.renderAll();\r\n };\r\n\r\n const onTextChange = async (e: ChangeEvent<HTMLTextAreaElement>) => {\r\n const textValue = e.target.value;\r\n const lines = textValue.split('\\n');\r\n setTextAlignDisplay(lines.length > 1);\r\n\r\n const state = use3dddPlus.getState();\r\n const isFontWithCamelCase = Configuration.fontWithCamelCase.includes(\r\n textSelected.fontFamily\r\n );\r\n const formattedText = isFontWithCamelCase\r\n ? textValue.toUpperCase()\r\n : textValue;\r\n\r\n use3dddPlus.setState({ textInfo: formattedText });\r\n textSelected.text = formattedText;\r\n const activeObj = canvas.getActiveObject();\r\n const currentSelection = activeObj.type;\r\n if (currentSelection === 'path') {\r\n await textShapeChange(textSelected.shapeType, true);\r\n }\r\n\r\n reduceFontSize();\r\n textSelected.setCoords();\r\n canvas.renderAll();\r\n reduceFontSize();\r\n canvas.renderAll();\r\n\r\n state.updateModifaction(true);\r\n state.forIconCapture();\r\n textSelected.icon = use3dddPlus.getState().iconImage;\r\n };\r\n\r\n const textAlignHandler = async (e: any) => {\r\n const textAlign = e.currentTarget.id;\r\n\r\n setActiveButton(textAlign);\r\n textSelected.set('textAlign', textAlign);\r\n\r\n if (currentSelection === 'path') {\r\n await textShapeChange(textSelected.shapeType, true);\r\n }\r\n\r\n const state = use3dddPlus.getState();\r\n state.updateModifaction(true);\r\n state.forIconCapture();\r\n textSelected.icon = use3dddPlus.getState().iconImage;\r\n\r\n canvas.requestRenderAll();\r\n };\r\n\r\n const fontChange = async (e: ChangeEvent<HTMLSelectElement>) => {\r\n const fontFamily = e.target.value;\r\n textSelected.set({ 'fontFamily': fontFamily });\r\n textSelected.set({ text: textInfo, charSpacing: 0 });\r\n\r\n if (Configuration.fontWithCamelCase.includes(fontFamily)) {\r\n textSelected.set({\r\n text: textSelected.text.toUpperCase(),\r\n charSpacing: 5,\r\n });\r\n }\r\n const activeObj = canvas.getActiveObject();\r\n const currentSelection = activeObj.type;\r\n if (currentSelection === 'path') {\r\n await textShapeChange(textSelected.shapeType, true);\r\n }\r\n\r\n const state = use3dddPlus.getState();\r\n state.updateModifaction(true);\r\n state.forIconCapture();\r\n textSelected.icon = use3dddPlus.getState().iconImage;\r\n canvas.requestRenderAll();\r\n reduceFontSize();\r\n\r\n };\r\n\r\n const textColorChange = (_property: string, color: string) => {\r\n use3dddPlus.setState({ mylogoAdded: true });\r\n textSelected.set({\r\n fill: color,\r\n colorFill: { layer0: color },\r\n });\r\n\r\n const state = use3dddPlus.getState();\r\n state.updateModifaction(true);\r\n state.forIconCapture();\r\n textSelected.icon = use3dddPlus.getState().iconImage;\r\n canvas.requestRenderAll();\r\n };\r\n\r\n const textOutlineHandler = (e: ChangeEvent<HTMLInputElement>) => {\r\n use3dddPlus.setState({ mylogoAdded: true });\r\n const activeText = canvas.getActiveObject();\r\n if (!activeText) {\r\n return;\r\n }\r\n //COMMENTED OUT FOR OUTLINE ISSUE WHILE TEXT IN PATH SHAPE\r\n // const currentSelection = activeText.type;\r\n /* if (currentSelection === 'path') {\r\n console.log(\"ds..\");\r\n textShapeChange(textSelected.shapeType, true);\r\n }*/\r\n\r\n if (activeText.type === 'text') {\r\n activeText.set({\r\n strokeWidth: parseFloat(e.target.value),\r\n });\r\n\r\n const state = use3dddPlus.getState();\r\n state.updateModifaction(true);\r\n state.forIconCapture();\r\n activeText.icon = use3dddPlus.getState().iconImage;\r\n activeText.canvas.requestRenderAll();\r\n }\r\n };\r\n\r\n const strokeColorChange = (_property: string, color: string) => {\r\n use3dddPlus.setState({ mylogoAdded: true });\r\n textSelected.set({\r\n stroke: color,\r\n colorFill: { layer0: textSelected.fill, layer1: color },\r\n });\r\n\r\n const state = use3dddPlus.getState();\r\n state.updateModifaction(true);\r\n state.forIconCapture();\r\n textSelected.icon = state.iconImage;\r\n canvas.requestRenderAll();\r\n };\r\n\r\n const textSpacingHandler = (e) => {\r\n // setSpacinglineVal(e.target.valueAsNumber);\r\n let dublicateText = textSelected;\r\n let oldCharSpacing = dublicateText.charSpacing;\r\n dublicateText.charSpacing = e.target.valueAsNumber;\r\n const brNew = dublicateText.getBoundingRect();\r\n if (\r\n brNew.width + brNew.left + 45 >= dublicateText.canvas.width ||\r\n brNew.height + brNew.top >= dublicateText.canvas.height ||\r\n brNew.left < 0 ||\r\n brNew.top < 0\r\n ) {\r\n if (textSelected.charSpacing > e.target.valueAsNumber) {\r\n textSelected.charSpacing = e.target.valueAsNumber;\r\n if (currentSelection === 'path') {\r\n textShapeChange(textSelected.shapeType, true);\r\n }\r\n use3dddPlus.getState().updateModifaction(true);\r\n use3dddPlus.getState().forIconCapture();\r\n textSelected.icon = use3dddPlus.getState().iconImage;\r\n canvas.renderAll();\r\n if (textSelected.aCoords.tr.x > 480) {\r\n return;\r\n }\r\n }\r\n } else {\r\n textSelected.charSpacing = e.target.valueAsNumber;\r\n if (currentSelection === 'path') {\r\n textShapeChange(textSelected.shapeType, true);\r\n }\r\n use3dddPlus.getState().forIconCapture();\r\n textSelected.icon = use3dddPlus.getState().iconImage;\r\n const brNew = textSelected.getBoundingRect();\r\n if (\r\n brNew.width + brNew.left + 45 >= dublicateText.canvas.width ||\r\n brNew.height + brNew.top >= dublicateText.canvas.height ||\r\n brNew.left < 0 ||\r\n brNew.top < 0\r\n ) {\r\n textSelected.charSpacing = oldCharSpacing;\r\n }\r\n use3dddPlus.getState().updateModifaction(true);\r\n canvas.renderAll();\r\n if (textSelected.aCoords.tr.x > 480) {\r\n return;\r\n }\r\n }\r\n };\r\n const textStyle = (e: any, key: string, value: any) => {\r\n if (fontStyle[e.target.id]) textSelected.set(key, '');\r\n else textSelected.set(key, value);\r\n setFontStyle((state) => ({ ...state, [e.target.id]: !state[e.target.id] }));\r\n use3dddPlus.getState().updateModifaction(true);\r\n use3dddPlus.getState().forIconCapture();\r\n textSelected.icon = use3dddPlus.getState().iconImage;\r\n canvas.renderAll();\r\n };\r\n\r\n const changeSVGTextColor = (property, color) => {\r\n use3dddPlus.setState({ mylogoAdded: true });\r\n const previousColor = property;\r\n canvas.getObjects().map((data) => {\r\n let _C = data.fill;\r\n\r\n setPropertyColor({ data, previousColor, _C, color, property: 'fill', setColorFill: true });\r\n setPropertyColor({ data, previousColor, _C: data.stroke, color, property: 'stroke', setColorFill: false });\r\n });\r\n canvas.renderAll();\r\n use3dddPlus.getState().updateModifaction(true);\r\n };\r\n //@ts-ignore\r\n const setPropertyColor = ({ data, previousColor, _C, color, property, setColorFill }) => {\r\n if (data.type === 'text') {\r\n if (_C === previousColor) {\r\n const updated: any = { [property]: color }\r\n if (setColorFill) updated.colorFill = { layer0: color }\r\n data.set(updated)\r\n }\r\n } else if (data.type === 'path') {\r\n if (_C === previousColor) {\r\n const updated: any = { [property]: color }\r\n if (setColorFill) updated.colorFill = { layer0: color }\r\n data.set(updated)\r\n }\r\n } else if (data.type === 'group') {\r\n let objImage = data._objects;\r\n objImage.forEach((ele) => {\r\n const _C =\r\n ele[property] === 'transparent' ||\r\n (typeof ele[property] === 'string' && ele[property].includes('#'))\r\n ? ele.fill\r\n : RGBToHex(ele[property]);\r\n if (_C === previousColor) {\r\n const updated: any = { [property]: color }\r\n if (setColorFill) updated.colorFill = { layer0: color }\r\n ele.set(updated)\r\n }\r\n });\r\n const colorFill = { ...data.colorFill };\r\n setColorFill && Object.keys(colorFill).forEach((item) => {\r\n if (colorFill[item] === previousColor) {\r\n colorFill[item] = color;\r\n }\r\n });\r\n setColorFill && data.set({\r\n colorFill: colorFill,\r\n });\r\n }\r\n if (data && data.icon) {\r\n data.icon = data.toDataURL('image/png');\r\n } else if (data._objects && data._objects.length) {\r\n data._objects[0].icon = data.toDataURL('image/png');\r\n }\r\n }\r\n const changeSVGColor = (property, color) => {\r\n const fillColor = colorFill;\r\n const previousColor = fillColor[property];\r\n const SelectedObjet = use3dddPlus.getState().activeSelection;\r\n SelectedObjet.traverse((ele) => {\r\n\r\n if ((ele.id !== SelectedObjet.id && SelectedObjet.type === 'group') || SelectedObjet.type !== 'group') {\r\n const _C =\r\n ele.fill === 'transparent' ||\r\n (typeof ele.fill === 'string' && ele.fill.includes('#'))\r\n ? ele.fill\r\n : RGBToHex(ele.fill);\r\n if (_C === previousColor) {\r\n ele.set({\r\n fill: color,\r\n colorFill: { layer0: color },\r\n });\r\n // colors.add(ele.fill)\r\n } else {\r\n // colors.add(ele.fill)\r\n }\r\n }\r\n });\r\n\r\n const tempColorFill = { ...SelectedObjet.colorFill };\r\n Object.keys(tempColorFill).forEach((item) => {\r\n if (tempColorFill[item] === previousColor) {\r\n tempColorFill[item] = color;\r\n }\r\n });\r\n SelectedObjet.set({\r\n colorFill: tempColorFill,\r\n });\r\n\r\n canvas.renderAll();\r\n // fillColor[property] = color;\r\n // use3dddPlus.setState({ colorFill: fillColor });\r\n use3dddPlus.setState({ colorFill: tempColorFill });\r\n use3dddPlus.getState().forIconCapture();\r\n SelectedObjet.icon = use3dddPlus.getState().iconImage;\r\n use3dddPlus.getState().updateModifaction(true);\r\n };\r\n\r\n const textToPath = async (objects) => {\r\n let promises = [];\r\n let pathObj = null;\r\n objects.forEach((object) => {\r\n promises = [\r\n ...promises,\r\n new Promise((resolve) => {\r\n if (object.type === 'text') {\r\n let fontSource = fontFamilies.filter(\r\n (o) => o.name === object.fontFamily\r\n )[0].src;\r\n load(fontSource, (error, font) => {\r\n if (error) {\r\n console.error(error);\r\n }\r\n const path = font.getPath(object.text, 0, 0, object.fontSize, {\r\n fontSize: object.get('fontSize'),\r\n fill: object.get('fill'),\r\n stroke: object.get('stroke'),\r\n strokeWidth: object.get('strokeWidth'),\r\n });\r\n const fabricPath = new fabric.Path(path.toPathData(20), {});\r\n pathObj = fabricPath;\r\n resolve(pathObj);\r\n });\r\n }\r\n }),\r\n ];\r\n });\r\n //resolve all promises\r\n await Promise.all(promises);\r\n return pathObj;\r\n };\r\n\r\n const bridgeShapeChange = () => {\r\n if (textSelected && textSelected.shapeType) {\r\n if (\r\n textSelected &&\r\n textSelected.text &&\r\n textSelected.text.length > textLength\r\n ) {\r\n if (textSelected.shapeType === 'Bridge') {\r\n setBridgeShapeBendSize(bridgeshapeBendSize + 3);\r\n } else {\r\n setBowtieShapeBendSize(bowtieshapeBendSize + 1);\r\n }\r\n } else {\r\n if (textSelected.shapeType === 'Bridge') {\r\n setBridgeShapeBendSize(bridgeshapeBendSize - 2);\r\n } else {\r\n setBowtieShapeBendSize(bowtieshapeBendSize - 1);\r\n }\r\n }\r\n if (textSelected && textSelected.text && textSelected.text.length > 10) {\r\n setBridgeShapeBendSize(-10);\r\n setBowtieShapeBendSize(-5);\r\n }\r\n setTextLength(textSelected.text.length);\r\n }\r\n };\r\n\r\n const textShapeChange = async (\r\n e,\r\n textChange = false,\r\n fontSize = null,\r\n charSpacing = null,\r\n strokeWidth = null,\r\n fontWeight = null,\r\n textAlign = null,\r\n fontStyle = null\r\n ) => {\r\n let pathData = null;\r\n let p = null;\r\n let shapeType = e && e.target ? e.target.value : e;\r\n if (!shapeType) {\r\n shapeType = textSelected.shapeType;\r\n }\r\n // setShapeType(shapeType);\r\n // if the selection is a text object then convert the text into path for shape deformation\r\n const activeObj = canvas.getActiveObject();\r\n const currentSelection = activeObj.type;\r\n if (currentSelection === 'text') {\r\n pathData = await textToPath([textSelected]);\r\n //@ts-ignore\r\n p = new Path(pathData.toClipPathSVG());\r\n setBridgeShapeBendSize(-25);\r\n setBowtieShapeBendSize(-12);\r\n setTextLength(textSelected.text.length);\r\n }\r\n // when user changes the text value & text shape is applied\r\n else if (currentSelection === 'path' && textChange) {\r\n if (textSelected.text == '' || textSelected.text.trim() == '') {\r\n textSelected.path = [];\r\n textSelected._removeCacheCanvas();\r\n canvas.renderAll();\r\n return;\r\n }\r\n // create a temp text with same properties & convert to path\r\n const text: any = new fabric.Text(textSelected.text, {\r\n lineHeight: 1,\r\n fill: textSelected.fill,\r\n fontFamily: textSelected.fontFamily,\r\n fontWeight: fontWeight ? fontWeight : textSelected.fontWeight,\r\n top: textSelected.top,\r\n left: textSelected.left,\r\n stroke: textSelected.stroke,\r\n strokeWidth: strokeWidth ? strokeWidth : textSelected.strokeWidth,\r\n fontStyle: fontStyle ? fontStyle : textSelected.fontStyle,\r\n paintFirst: 'stroke',\r\n charSpacing: charSpacing ? charSpacing : textSelected.charSpacing,\r\n padding: textSelected.padding,\r\n fontSize: fontSize ? fontSize : textSelected.fontSize,\r\n textAlign: textAlign ? textAlign : textSelected.textAlign,\r\n name: 'text',\r\n lockScalingFlip: true,\r\n centeredScaling: true,\r\n text: textSelected.text,\r\n width: textSelected.width,\r\n height: textSelected.height,\r\n });\r\n text.set({\r\n //@ts-ignore\r\n colorFill: textSelected.colorFill,\r\n fontWeight: fontWeight,\r\n });\r\n // let dims = fabricPath._calcDimensions();\r\n text.left = textSelected.left;\r\n text.top = textSelected.top;\r\n text.width = textSelected.width;\r\n text.height = textSelected.height;\r\n text.scaleX = textSelected.scaleX;\r\n text.scaleY = textSelected.scaleY;\r\n text.id = textSelected.id;\r\n\r\n pathData = await textToPath([text]);\r\n //@ts-ignore\r\n p = new Path(pathData.toClipPathSVG());\r\n }\r\n // when the selection is path but no change in the text string\r\n else if (currentSelection === 'path' && !textChange) {\r\n pathData = textSelected.pathData;\r\n //@ts-ignore\r\n p = new Path(pathData.toClipPathSVG());\r\n } else {\r\n return;\r\n }\r\n switch (shapeType) {\r\n case 'None': {\r\n setShapeSizeVal(0);\r\n textSelected.shapeType = 'None';\r\n // revert back to text type object\r\n const text: any = new fabric.Text(textSelected.text, {\r\n lineHeight: 1,\r\n fill: textSelected.fill,\r\n fontFamily: textSelected.fontFamily,\r\n fontWeight: fontWeight ? fontWeight : textSelected.fontWeight,\r\n top: textSelected.top,\r\n left: textSelected.left,\r\n stroke: textSelected.stroke,\r\n strokeWidth: strokeWidth ? strokeWidth : textSelected.strokeWidth,\r\n fontStyle: fontStyle ? fontStyle : textSelected.fontStyle,\r\n paintFirst: 'stroke',\r\n charSpacing: charSpacing ? charSpacing : textSelected.charSpacing,\r\n padding: textSelected.padding,\r\n fontSize: fontSize ? fontSize : textSelected.fontSize,\r\n textAlign: textAlign ? textAlign : textSelected.textAlign,\r\n name: 'text',\r\n lockScalingFlip: true,\r\n centeredScaling: true,\r\n text: textSelected.text,\r\n });\r\n text.set({\r\n //@ts-ignore\r\n colorFill: textSelected.colorFill,\r\n fontWeight: fontWeight,\r\n });\r\n text.scaleX = textSelected.scaleX * (textSelected.width / text.width);\r\n text.scaleY = textSelected.scaleY * (textSelected.width / text.width);\r\n window['textObj'] = text;\r\n text.setCoords();\r\n text.id = textSelected.id;\r\n\r\n // set rotation angle & position\r\n text.rotate(textSelected.angle);\r\n text.left = textSelected.left;\r\n text.top = textSelected.top;\r\n\r\n // delete the active text object\r\n canvas.remove(textSelected);\r\n textSelected._removeCacheCanvas();\r\n canvas.setActiveObject(null);\r\n canvas.renderAll();\r\n\r\n // Add the text object keeping same properties\r\n canvas.add(text);\r\n text.setCoords();\r\n\r\n // set active object as path text\r\n canvas.setActiveObject(text);\r\n use3dddPlus.setState({ activeSelection: text });\r\n\r\n //@ts-ignore\r\n use3dddPlus.getState().forIconCapture();\r\n text['icon'] = use3dddPlus.getState().iconImage;\r\n updateStoreAllObject(text);\r\n // canvas.setActiveObject(text);\r\n // use3dddPlus.setState({ activeSelection: text });\r\n canvas.renderAll();\r\n // cancel performing further functions & return back from function\r\n return;\r\n }\r\n case 'Arc': {\r\n setShapeSizeVal(50);\r\n textSelected.shapeType = 'Arc';\r\n p.warp({\r\n type: 'WARP_ARC',\r\n bend: 50 / 100 || 0,\r\n });\r\n break;\r\n }\r\n case 'Bridge': {\r\n setShapeSizeVal(-25);\r\n bridgeShapeChange();\r\n textSelected.shapeType = 'Bridge';\r\n p.warp({\r\n type: 'WARP_ARC_LOWER',\r\n bend: bridgeshapeBendSize / 100 || 0,\r\n });\r\n break;\r\n }\r\n case 'Bowtie': {\r\n setShapeSizeVal(-12);\r\n bridgeShapeChange();\r\n textSelected.shapeType = 'Bowtie';\r\n p.warp({\r\n type: 'WARP_BULGE',\r\n bend: bowtieshapeBendSize / 100 || 0,\r\n });\r\n break;\r\n }\r\n case 'Vertical Arch': {\r\n setShapeSizeVal(35);\r\n textSelected.shapeType = 'Vertical Arch';\r\n p.warp({\r\n type: 'WARP_ARCH',\r\n bend: 35 / 100 || 0,\r\n });\r\n break;\r\n }\r\n case 'Reverse Vertical Arch': {\r\n setShapeSizeVal(-35);\r\n textSelected.shapeType = 'Reverse Vertical Arch';\r\n p.warp({\r\n type: 'WARP_ARCH',\r\n bend: -35 / 100 || 0,\r\n });\r\n break;\r\n }\r\n default:\r\n break;\r\n }\r\n // take out the update path with shape type deformation\r\n let fabricPath = new fabric.Path(p.output());\r\n textSelected['pathData'] = pathData;\r\n // add object only when converting from text to path\r\n if (currentSelection === 'text') {\r\n // add the path text object on canvas\r\n canvas.add(fabricPath);\r\n fabricPath['pathData'] = pathData;\r\n fabricPath['colorFill'] = textSelected.colorFill;\r\n fabricPath['shapeSize'] = shapeSizeVal;\r\n fabricPath['shapeType'] = shapeType;\r\n // carry forward the text properties over the path for further changes\r\n fabricPath['fill'] = textSelected.fill;\r\n fabricPath['fontFamily'] = textSelected.fontFamily;\r\n fabricPath['fontWeight'] = textSelected.fontWeight;\r\n fabricPath['stroke'] = textSelected.stroke;\r\n fabricPath['strokeWidth'] = textSelected.strokeWidth;\r\n fabricPath['padding'] = textSelected.padding;\r\n fabricPath['fontSize'] = textSelected.fontSize;\r\n fabricPath['charSpacing'] = textSelected.charSpacing;\r\n fabricPath['textAlign'] = textSelected.textAlign;\r\n fabricPath['fontStyle'] = textSelected.fontStyle;\r\n fabricPath['text'] = textSelected.text;\r\n fabricPath['id'] = textSelected.id;\r\n\r\n //@ts-ignore\r\n let dims = fabricPath._calcDimensions();\r\n\r\n // Set the same position scale matching with existing text\r\n fabricPath.width = textSelected.width;\r\n fabricPath.height = textSelected.height;\r\n fabricPath.scaleX =\r\n textSelected.scaleX * (textSelected.width / dims.width);\r\n fabricPath.scaleY =\r\n textSelected.scaleY * (textSelected.width / dims.width);\r\n fabricPath.setCoords();\r\n fabricPath.width = dims.width;\r\n fabricPath.height = dims.height;\r\n // set rotation angle & position\r\n fabricPath.rotate(textSelected.angle);\r\n fabricPath.left = textSelected.left;\r\n fabricPath.top = textSelected.top;\r\n // delete the text object\r\n canvas.remove(textSelected);\r\n // set active object as path text\r\n canvas.setActiveObject(fabricPath);\r\n use3dddPlus.setState({ activeSelection: fabricPath });\r\n use3dddPlus.getState().forIconCapture();\r\n fabricPath['icon'] = use3dddPlus.getState().iconImage;\r\n updateStoreAllObject(fabricPath);\r\n }\r\n // update the text path object with new shape type\r\n else {\r\n // add new textPath\r\n let newTextPath = new fabric.Path(p.output());\r\n newTextPath['pathData'] = textSelected.pathData;\r\n newTextPath['colorFill'] = textSelected.colorFill;\r\n newTextPath['shapeSize'] = textSelected.shapeSize;\r\n newTextPath['shapeType'] = textSelected.shapeType;\r\n newTextPath['fill'] = textSelected.fill;\r\n newTextPath['fontFamily'] = textSelected.fontFamily;\r\n newTextPath['fontWeight'] = textSelected.fontWeight;\r\n newTextPath['stroke'] = textSelected.stroke;\r\n newTextPath['strokeWidth'] = textSelected.strokeWidth;\r\n newTextPath['padding'] = textSelected.padding;\r\n newTextPath['fontSize'] = textSelected.fontSize;\r\n newTextPath['charSpacing'] = textSelected.charSpacing;\r\n newTextPath['textAlign'] = textSelected.textAlign;\r\n newTextPath['fontStyle'] = textSelected.fontStyle;\r\n newTextPath['text'] = textSelected.text;\r\n // set same position & scale\r\n newTextPath['width'] = textSelected.width;\r\n newTextPath['height'] = textSelected.height;\r\n\r\n //@ts-ignore\r\n let dims = newTextPath._calcDimensions();\r\n newTextPath['scaleX'] =\r\n textSelected.scaleX * (textSelected.width / dims.width);\r\n newTextPath['scaleY'] =\r\n textSelected.scaleY * (textSelected.width / dims.width);\r\n newTextPath['id'] = textSelected.id;\r\n // set rotation angle & position\r\n newTextPath.rotate(textSelected.angle);\r\n newTextPath['left'] = textSelected.left;\r\n newTextPath['top'] = textSelected.top;\r\n // delete the active text object\r\n // var activeObj = canvas.getActiveObject();\r\n canvas.remove(activeObj);\r\n if (activeObj && activeObj !== null) {\r\n activeObj._removeCacheCanvas();\r\n }\r\n\r\n // add & set active new path text\r\n canvas.add(newTextPath);\r\n canvas.setActiveObject(newTextPath);\r\n use3dddPlus.setState({ activeSelection: newTextPath });\r\n newTextPath.setCoords();\r\n\r\n newTextPath.width = dims.width;\r\n newTextPath.height = dims.height;\r\n canvas.renderAll();\r\n use3dddPlus.getState().forIconCapture();\r\n newTextPath['icon'] = use3dddPlus.getState().iconImage;\r\n updateStoreAllObject(newTextPath);\r\n }\r\n canvas.renderAll();\r\n reduceFontSize();\r\n };\r\n const updateStoreAllObject = (text) => {\r\n use3dddPlus.getState().updateModifaction(true);\r\n\r\n var index = use3dddPlus\r\n .getState()\r\n .storeAllObject.findIndex((obj: any) => obj.id === textSelected.id);\r\n if (index > -1) {\r\n use3dddPlus.getState().storeAllObject.splice(index, 1);\r\n }\r\n use3dddPlus.getState().storeAllObject.splice(index, 0, text);\r\n };\r\n\r\n const reduceFontSize = async () => {\r\n let brNew = textSelected.getBoundingRect();\r\n let canvasWidth = 0;\r\n let canvasHeight = 0;\r\n if (textSelected && textSelected.canvas && textSelected.canvas.width) {\r\n canvasWidth = textSelected.canvas.width;\r\n canvasHeight = textSelected.canvas.height;\r\n } else {\r\n canvasWidth = canvas.width;\r\n canvasHeight = canvas.height;\r\n }\r\n while (\r\n Math.ceil(brNew.width + brNew.left + 45) >= Math.floor(canvasWidth) ||\r\n Math.ceil(brNew.height + brNew.top + 10) >= Math.floor(canvasHeight) ||\r\n Math.ceil(brNew.left) < 0 ||\r\n Math.ceil(brNew.top) < 0\r\n ) {\r\n let activeObj = canvas.getActiveObject();\r\n\r\n activeObj.scale(activeObj.scaleX * 0.99);\r\n activeObj.setCoords();\r\n activeObj = canvas.getActiveObject();\r\n brNew = activeObj.getBoundingRect();\r\n canvas.renderAll();\r\n }\r\n canvas.renderAll();\r\n };\r\n\r\n const RGBToHex = (rgb) => {\r\n if (rgb) {\r\n if (rgb.indexOf('rgba') >= 0) {\r\n const rgba = rgb.replace(/^rgba?\\(|\\s+|\\)$/g, '').split(',');\r\n return `#${(\r\n (1 << 24) +\r\n (parseInt(rgba[0]) << 16) +\r\n (parseInt(rgba[1]) << 8) +\r\n parseInt(rgba[2])\r\n )\r\n .toString(16)\r\n .slice(1)}`;\r\n } else {\r\n let sep = rgb.indexOf(',') > -1 ? ',' : ' ';\r\n rgb = rgb.substr(4).split(')')[0].split(sep);\r\n let r = (+rgb[0]).toString(16),\r\n g = (+rgb[1]).toString(16),\r\n b = (+rgb[2]).toString(16);\r\n\r\n if (r.length == 1) r = '0' + r;\r\n if (g.length == 1) g = '0' + g;\r\n if (b.length == 1) b = '0' + b;\r\n return '#' + r + g + b;\r\n }\r\n } else {\r\n return '';\r\n }\r\n };\r\n const flipX = () => {\r\n activeObj.set({\r\n flipX: !activeObj.flipX,\r\n });\r\n use3dddPlus.getState().updateModifaction(true);\r\n use3dddPlus.getState().forIconCapture();\r\n textSelected.icon = use3dddPlus.getState().iconImage;\r\n canvas.renderAll();\r\n };\r\n const flipY = () => {\r\n activeObj.set({\r\n flipY: !activeObj.flipY,\r\n });\r\n use3dddPlus.getState().updateModifaction(true);\r\n use3dddPlus.getState().forIconCapture();\r\n textSelected.icon = use3dddPlus.getState().iconImage;\r\n // activeObj.\r\n canvas.renderAll();\r\n };\r\n\r\n const mergedColors = useMemo(() => {\r\n // FOR REMOVING ALL DUPLICATE COLOR CODES\r\n if (textSelected && textSelected?.colorFill) {\r\n let tempColors = [];\r\n let uniqueColors = {};\r\n\r\n Object.keys(textSelected?.colorFill)?.forEach((item: string) => {\r\n const color = textSelected?.colorFill[item];\r\n // Check if the color is not 'rgb(0,0,0)' and not already in tempColors\r\n if (color !== 'rgb(0,0,0)' && !tempColors.includes(color) && color !== undefined) {\r\n tempColors.push(color);\r\n uniqueColors[item] = color;\r\n }\r\n });\r\n\r\n return uniqueColors;\r\n } else {\r\n return [];\r\n }\r\n }, [textSelected?.colorFill]);\r\n\r\n\r\n return (\r\n <div key={activeTab} className='flex flex-col w-full h-full'>\r\n <div\r\n className={\r\n 'overflow-y-auto overflow-x-hidden' +\r\n (!isNextClicked || !conflictColors || conflictColors.length < 1\r\n ? ' 2xl:h-[60vh] h-[50vh] sm:h-[55vh]'\r\n : '')\r\n }\r\n >\r\n {(currentSelection === 'text') && (\r\n <TextProperties\r\n activeButton={activeButton}\r\n activeSelection={activeSelection}\r\n fontStyle={fontStyle}\r\n setDisplayPallet={setDisplayPallet}\r\n setPosition={setPosition}\r\n textAlignDisplay={textAlignDisplay}\r\n textInfo={textInfo}\r\n textSelected={textSelected}\r\n shapeSizeVal={shapeSizeVal}\r\n fontChange={fontChange}\r\n onTextChange={onTextChange}\r\n strokeColorChange={strokeColorChange}\r\n textAlignHandler={textAlignHandler}\r\n textColorChange={textColorChange}\r\n textOutlineHandler={textOutlineHandler}\r\n textShapeChange={textShapeChange}\r\n textShapeSizeHandler={textShapeSizeHandler}\r\n textSpacingHandler={textSpacingHandler}\r\n textStyle={textStyle}\r\n />\r\n )}\r\n {(currentSelection === 'group' || currentSelection === 'path') && (\r\n <>\r\n <div className=\"uppercase font-bold pt-[17px]\">Colors</div>\r\n <div className=\"flex flex-wrap gap-x-[1rem] mt-[12px]\">\r\n {mergedColors &&\r\n Object.keys(mergedColors)?.map((item, i) => (\r\n <ColorImpl\r\n mClass={'mb-[10px]'}\r\n key={'color-' + i}\r\n handleChange={changeSVGColor}\r\n property={item}\r\n color={activeSelection.colorFill[item]}\r\n setDisplayPallet={setDisplayPallet}\r\n setPosition={setPosition}\r\n callback={changeSVGColor}\r\n />\r\n ))}\r\n </div>\r\n <div className=\"my-[24.5px]\">\r\n <p className=\"text-[1rem] text-[#353535] flex text-left leading-[21px] font-bold mb-[12px] uppercase\">\r\n Flip\r\n </p>\r\n <div className=\"flex gap-x-[15px]\">\r\n <IconButton\r\n label=\"\"\r\n icon={<HorizontalFlip />}\r\n className=\"!w-[5.625rem] !h-[2.625rem] bg-[#fff] cursor-pointer border border-[#EBEBEB]\"\r\n size=\"1.5rem\"\r\n onClick={flipX}\r\n />\r\n <IconButton\r\n key={`index`}\r\n label=\"\"\r\n icon={<VerticalFlip />}\r\n className=\"!w-[5.625rem] !h-[2.625rem] bg-[#fff] cursor-pointer border border-[#EBEBEB]\"\r\n size=\"2.5rem\"\r\n onClick={flipY}\r\n />\r\n </div>\r\n </div>\r\n </>\r\n )}\r\n {['selectAll', 'none'].includes(currentSelection) && (\r\n <>\r\n <div className=\"uppercase font-bold pt-[17px]\">Color in Canvas</div>\r\n <div className=\"flex flex-wrap gap-x-[1rem] mt-[12px]\">\r\n {allColor?.map((item, i) => (\r\n <ColorImpl\r\n mClass={'mb-[10px]'}\r\n key={'color-' + i}\r\n handleChange={changeSVGTextColor}\r\n property={item}\r\n color={item}\r\n setDisplayPallet={setDisplayPallet}\r\n setPosition={setPosition}\r\n callback={changeSVGTextColor}\r\n />\r\n ))}\r\n </div>\r\n {(allColor && allColor.includes('transparent')\r\n ? allColor.length - 1\r\n : allColor.length) > 8 && <ErrorPopup allColor={allColor} />}\r\n </>\r\n )}\r\n </div>\r\n {isNextClicked && conflictColors && conflictColors.length > 0 && (\r\n <ErrorColorDiv\r\n setIsNextClicked={setIsNextClicked}\r\n conflictColors={conflictColors}\r\n />\r\n )}\r\n <button\r\n type=\"button\"\r\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\"\r\n onClick={onSave}\r\n >\r\n Save\r\n </button>\r\n </div>\r\n );\r\n};\r\n","! function(t) {\r\n var s = {};\r\n\r\n function i(h) {\r\n if (s[h]) return s[h].exports;\r\n var e = s[h] = {\r\n i: h,\r\n l: !1,\r\n exports: {}\r\n };\r\n return t[h].call(e.exports, e, e.exports, i), e.l = !0, e.exports\r\n }\r\n i.m = t, i.c = s, i.d = function(t, s, h) {\r\n i.o(t, s) || Object.defineProperty(t, s, {\r\n configurable: !1,\r\n enumerable: !0,\r\n get: h\r\n })\r\n }, i.r = function(t) {\r\n Object.defineProperty(t, \"__esModule\", {\r\n value: !0\r\n })\r\n }, i.n = function(t) {\r\n var s = t && t.__esModule ? function() {\r\n return t.default\r\n } : function() {\r\n return t\r\n };\r\n return i.d(s, \"a\", s), s\r\n }, i.o = function(t, s) {\r\n return Object.prototype.hasOwnProperty.call(t, s)\r\n }, i.p = \"\", i(i.s = 4)\r\n}([function(t, s, i) {\r\n var h = i(1),\r\n e = i(3);\r\n t.exports = class {\r\n constructor(t, s) {\r\n this.source = s, this.A = new h(s.left, s.top), this.B = new h(s.right, s.top), this.C = new h(s.right, s.bottom), this.D = new h(s.left, s.bottom), this.Aleft = new h(s.left, s.top + s.height / 3), this.Atop = new h(s.left + s.width / 3, s.top), this.Btop = new h(s.right - s.width / 3, s.top), this.Bright = new h(s.right, s.top + s.height / 3), this.Cright = new h(s.right, s.bottom - s.height / 3), this.Cbottom = new h(s.right - s.width / 3, s.bottom), this.Dbottom = new h(s.left + s.width / 3, s.bottom), this.Dleft = new h(s.left, s.bottom - s.height / 3), this.ABx = 0, this.ABy = 0, this.CDx = 0, this.CDy = 0, this.BCx = 0, this.BCy = 0, this.ADx = 0, this.ADy = 0, this.STEPS = 10, this.distortX = 0, this.distortY1 = 0, this.distortY2 = 0, this.T1 = 1 / 3, this.T2 = 2 / 3, this.kAB = 0, this.kBC = 0, this.kCD = 0, this.kAD = 0, this.angle, this.sin, this.cos, this.kt, this.applyParameters(t)\r\n }\r\n applyParameters(t) {\r\n var s = this.source,\r\n i = this._parameters = new e(t);\r\n this.angle = i.bend * Math.PI / 2, this.sin = Math.sin(this.angle), this.cos = Math.cos(this.angle), this.kt = 1 + Math.pow(i.bend, 4), this.distortX = .5 * i.distortV * s.width;\r\n var h = .5 * i.distortH * s.height;\r\n switch (this.distortY1 = h * (1 - i.distortV), this.distortY2 = h * (1 + i.distortV), this.kAB = 1 - i.distortV, this.kBC = 1 + i.distortH, this.kCD = 1 + i.distortV, this.kAD = 1 - i.distortH, this.setAnchors(), i.type) {\r\n case \"WARP_ARC\":\r\n this.setArc();\r\n break;\r\n case \"WARP_ARC_LOWER\":\r\n this.setArcLower();\r\n break;\r\n case \"WARP_ARC_UPPER\":\r\n this.setArcUpper();\r\n break;\r\n case \"WARP_ARCH\":\r\n this.setArch();\r\n break;\r\n case \"WARP_BULGE\":\r\n this.setBulge();\r\n break;\r\n case \"WARP_FLAG\":\r\n this.setFlag();\r\n break;\r\n case \"WARP_FISH\":\r\n this.setFish();\r\n break;\r\n case \"WARP_RISE\":\r\n this.setRise();\r\n break;\r\n case \"WARP_INFLATE\":\r\n this.setInflate();\r\n break;\r\n case \"WARP_SQUEEZE\":\r\n this.setSqueeze();\r\n break;\r\n case \"WARP_WAVE_LOWER\":\r\n this.setWaveLower();\r\n break;\r\n case \"WARP_WAVE_UPPER\":\r\n this.setWaveUpper()\r\n }\r\n }\r\n setAnchors() {\r\n this.A.x = this.source.left + this.distortX, this.B.x = this.source.right - this.distortX, this.C.x = this.source.right + this.distortX, this.D.x = this.source.left - this.distortX, this.A.y = this.source.top + this.distortY1, this.B.y = this.source.top - this.distortY1, this.C.y = this.source.bottom + this.distortY2, this.D.y = this.source.bottom - this.distortY2\r\n }\r\n setControls() {\r\n this.Atop.x = this.A.x + this.ABx, this.Atop.y = this.A.y + this.ABy, this.Btop.x = this.B.x - this.ABx, this.Btop.y = this.B.y - this.ABy, this.Dbottom.x = this.D.x + this.CDx, this.Dbottom.y = this.D.y + this.CDy, this.Cbottom.x = this.C.x - this.CDx, this.Cbottom.y = this.C.y - this.CDy, this.Bright.x = this.B.x + this.BCx, this.Bright.y = this.B.y + this.BCy, this.Cright.x = this.C.x - this.BCx, this.Cright.y = this.C.y - this.BCy, this.Aleft.x = this.A.x + this.ADx, this.Aleft.y = this.A.y + this.ADy, this.Dleft.x = this.D.x - this.ADx, this.Dleft.y = this.D.y - this.ADy\r\n }\r\n changeCubic(t, s, i, h) {\r\n let e = this._changePoint(t),\r\n o = this._changePoint(h),\r\n r = this.getPointOn(1 / 3, t, h, s, i),\r\n n = this.getPointOn(2 / 3, t, h, s, i),\r\n a = this._changePoint(r),\r\n y = this._changePoint(n);\r\n return this.getNewSegment(e, o, a, y)\r\n }\r\n changePoint(t) {\r\n var s = this._changePoint(t);\r\n return [s.x, s.y]\r\n }\r\n _changePoint(t) {\r\n let s = this.A,\r\n i = this.Atop,\r\n e = this.Aleft,\r\n o = this.B,\r\n r = this.Btop,\r\n n = this.Bright,\r\n a = this.C,\r\n y = this.Cright,\r\n x = this.Cbottom,\r\n c = this.D,\r\n A = this.Dbottom,\r\n C = this.Dleft;\r\n var d = (t.x - this.source.x) / this.source.width,\r\n b = (t.y - this.source.y) / this.source.height,\r\n p = 1 - b,\r\n B = this.getPointOn(b, s, c, e, C),\r\n l = this.getPointOn(b, o, a, n, y),\r\n D = new h(i.x * p + A.x * b, i.y * p + A.y * b),\r\n m = new h(r.x * p + x.x * b, r.y * p + x.y * b),\r\n k = this.getPointOn(d, B, l, D, m);\r\n return new h(k.x, k.y)\r\n }\r\n getPointOn(t, s, i, e, o) {\r\n var r = new h,\r\n n = t * t * t,\r\n a = t * t;\r\n return r.x = n * (i.x + 3 * (e.x - o.x) - s.x) + 3 * a * (s.x - 2 * e.x + o.x) + 3 * t * (e.x - s.x) + s.x, r.y = n * (i.y + 3 * (e.y - o.y) - s.y) + 3 * a * (s.y - 2 * e.y + o.y) + 3 * t * (e.y - s.y) + s.y, r\r\n }\r\n setArc() {\r\n var t = this._parameters,\r\n s = this.source,\r\n i = 1 - t.distortV;\r\n t.bend > 0 ? (this.A.x -= i * (s.height - this.distortY1) * this.sin, this.B.x += i * (s.height + this.distortY1) * this.sin, this.A.y += (s.height - this.distortY1) * (1 - this.cos), this.B.y += (s.height + this.distortY1) * (1 - this.cos), this.C.x -= this.distortY2 * this.sin, this.D.x -= this.distortY2 * this.sin, this.C.y += this.distortY2 * (this.cos - 1), this.D.y -= this.distortY2 * (this.cos - 1)) : t.bend < 0 && (this.D.x += i * (s.height - this.distortY2) * this.sin, this.C.x -= i * (s.height + this.distortY2) * this.sin, this.D.y += (s.height - this.distortY2) * (this.cos - 1), this.C.y += (s.height + this.distortY2) * (this.cos - 1), this.A.x += this.distortY1 * this.sin, this.B.x += this.distortY1 * this.sin, this.A.y -= this.distortY1 * (1 - this.cos), this.B.y += this.distortY1 * (1 - this.cos)), this.calculateArms(), this.setControls(), this.Atop.x += this.ABx * (this.cos * this.kt - 1), this.Atop.y -= this.ABx * this.sin * this.kt, this.Btop.x += this.ABx * (1 - this.cos * this.kt), this.Btop.y -= this.ABx * this.sin * this.kt, this.Dbottom.x += this.CDx * (this.cos * this.kt - 1), this.Dbottom.y -= this.CDx * this.sin * this.kt, this.Cbottom.x += this.CDx * (1 - this.cos * this.kt), this.Cbottom.y -= this.CDx * this.sin * this.kt\r\n }\r\n setFish() {\r\n var t = this._parameters;\r\n this.calculateArms(), this.setControls(), this.Atop.y -= 2 * t.bend * this.kAB * (2 * this.ADy + this.BCy), this.Btop.y += 2 * t.bend * this.kAB * (this.ADy + 2 * this.BCy), this.Dbottom.y += 2 * t.bend * this.kCD * (2 * this.ADy + this.BCy), this.Cbottom.y -= 2 * t.bend * this.kCD * (this.ADy + 2 * this.BCy)\r\n }\r\n setFlag() {\r\n this.calculateArms(), this.setControls();\r\n var t = this._parameters;\r\n this.Atop.y += 3 * t.bend * this.kAB * (this.ADy + this.BCy), this.Btop.y -= 3 * t.bend * this.kAB * (this.ADy + this.BCy), this.Dbottom.y += 3 * t.bend * this.kCD * (this.ADy + this.BCy), this.Cbottom.y -= 3 * t.bend * this.kCD * (this.ADy + this.BCy)\r\n }\r\n setBulge() {\r\n this.calculateArms(), this.setControls(), this._parameters, this.Atop.x += this.ABx * (this.cos * this.kt - 1), this.Atop.y -= this.ABx * this.sin * this.kt, this.Btop.x += this.ABx * (1 - this.cos * this.kt), this.Btop.y -= this.ABx * this.sin * this.kt, this.Dbottom.x += this.CDx * (this.cos * this.kt - 1), this.Dbottom.y += this.CDx * this.sin * this.kt, this.Cbottom.x += this.CDx * (1 - this.cos * this.kt), this.Cbottom.y += this.CDx * this.sin * this.kt\r\n }\r\n setArch() {\r\n this.calculateArms(), this.setControls(), this._parameters, this.Atop.x += this.ABx * (this.cos * this.kt - 1), this.Atop.y -= this.ABx * this.sin * this.kt, this.Btop.x += this.ABx * (1 - this.cos * this.kt), this.Btop.y -= this.ABx * this.sin * this.kt, this.Dbottom.x += this.CDx * (this.cos * this.kt - 1), this.Dbottom.y -= this.CDx * this.sin * this.kt, this.Cbottom.x += this.CDx * (1 - this.cos * this.kt), this.Cbottom.y -= this.CDx * this.sin * this.kt\r\n }\r\n setArcLower() {\r\n this.calculateArms(), this.setControls(), this._parameters, this.Dbottom.x += this.CDx * (this.cos * this.kt - 1), this.Dbottom.y += this.CDx * this.sin * this.kt, this.Cbottom.x += this.CDx * (1 - this.cos * this.kt), this.Cbottom.y += this.CDx * this.sin * this.kt\r\n }\r\n setArcUpper() {\r\n this.calculateArms(), this.setControls(), this._parameters, this.Atop.x += this.ABx * (this.cos * this.kt - 1), this.Atop.y -= this.ABx * this.sin * this.kt, this.Btop.x += this.ABx * (1 - this.cos * this.kt), this.Btop.y -= this.ABx * this.sin * this.kt\r\n }\r\n setSqueeze() {\r\n this.calculateArms(), this.setControls();\r\n var t = this._parameters;\r\n this.Atop.y -= t.bend * this.kAB * this.ADy, this.Btop.y -= t.bend * this.kAB * this.BCy, this.Dbottom.y += t.bend * this.kCD * this.ADy, this.Cbottom.y += t.bend * this.kCD * this.BCy, this.Bright.x -= t.bend * this.kBC * this.ABx, this.Cright.x -= t.bend * this.kBC * this.CDx, this.Aleft.x += t.bend * this.kAD * this.ABx, this.Dleft.x += t.bend * this.kAD * this.CDx\r\n }\r\n setInflate() {\r\n this.calculateArms(), this.setControls();\r\n var t = this._parameters,\r\n s = (this.ADy + this.BCy) / 2,\r\n i = (this.ABx + this.CDx) / 2;\r\n this.Atop.y -= t.bend * this.kAB * s, this.Btop.y -= t.bend * this.kAB * s, this.Dbottom.y += t.bend * this.kCD * s, this.Cbottom.y += t.bend * this.kCD * s, this.Bright.x += t.bend * this.kBC * i, this.Cright.x += t.bend * this.kBC * i, this.Aleft.x -= t.bend * this.kAD * i, this.Dleft.x -= t.bend * this.kAD * i\r\n }\r\n setRise() {\r\n var t = this._parameters;\r\n this.A.y += t.bend * this.kAB * source.height, this.D.y += t.bend * this.kCD * source.height, this.B.y -= t.bend * this.kAB * source.height, this.C.y -= t.bend * this.kCD * source.height, this.calculateArms(), this.setControls();\r\n var s = this.ADy + this.BCy;\r\n this.Atop.y += t.bend * this.kAB * s, this.Btop.y -= t.bend * this.kAB * s, this.Dbottom.y += t.bend * this.kCD * s, this.Cbottom.y -= t.bend * this.kCD * s\r\n }\r\n setWaveUpper() {\r\n this.calculateArms(), this.setControls();\r\n var t = this._parameters;\r\n this.Atop.y += 3 * t.bend * this.kAB * (this.ADy + this.BCy), this.Btop.y -= 3 * t.bend * this.kAB * (this.ADy + this.BCy)\r\n }\r\n setWaveLower() {\r\n this.calculateArms(), this.setControls();\r\n var t = this._parameters;\r\n this.Dbottom.y += 3 * t.bend * this.kCD * (this.ADy + this.BCy), this.Cbottom.y -= 3 * t.bend * this.kCD * (this.ADy + this.BCy)\r\n }\r\n calculateArms() {\r\n this.ABx = (this.B.x - this.A.x) / 3, this.ABy = (this.B.y - this.A.y) / 3, this.CDx = (this.C.x - this.D.x) / 3, this.CDy = (this.C.y - this.D.y) / 3, this.BCx = (this.C.x - this.B.x) / 3, this.BCy = (this.C.y - this.B.y) / 3, this.ADx = (this.D.x - this.A.x) / 3, this.ADy = (this.D.y - this.A.y) / 3\r\n }\r\n getNewSegment(t, s, i, e) {\r\n var o = this.T1,\r\n r = o * o * o,\r\n n = 1 - o,\r\n a = n * n * n,\r\n y = this.T2,\r\n x = y * y * y,\r\n c = 1 - y,\r\n A = c * c * c,\r\n C = 3 * o * n,\r\n d = {};\r\n d.x = (i.x - a * t.x - r * s.x) / C, d.y = (i.y - a * t.y - r * s.y) / C;\r\n var b = 3 * y * c,\r\n p = {};\r\n p.x = (e.x - A * t.x - x * s.x) / b, p.y = (e.y - A * t.y - x * s.y) / b;\r\n var B = {};\r\n B.x = (y * d.x - o * p.x) / (n * p.x - c * d.x), B.y = (y * d.y - o * p.y) / (n * p.y - c * d.y), isNaN(B.x) && (B.x = 0), isNaN(B.y) && (B.y = 0);\r\n var l = {},\r\n D = {};\r\n D.x = d.x / (n * B.x + o), D.y = d.y / (n * B.y + o), l.x = B.x * D.x, l.y = B.y * D.y;\r\n var m = new h(l.x, l.y),\r\n k = new h(D.x, D.y);\r\n return [m.x, m.y, k.x, k.y, s.x, s.y]\r\n }\r\n }\r\n}, function(t, s) {\r\n t.exports = class {\r\n constructor(t = 0, s = 0) {\r\n if (\"number\" != typeof t || \"number\" != typeof s) throw new Exception(\"Invalid points\");\r\n let i = t || 0,\r\n h = s || 0;\r\n i && (i = parseInt(1e3 * i) / 1e3), h && (h = parseInt(1e3 * h) / 1e3), this._props = [i, h], this[0] = i, this[1] = h\r\n }\r\n set x(t) {\r\n this[0] = t, this._props[0] = t\r\n }\r\n set y(t) {\r\n this[1] = t, this._props[1] = t\r\n }\r\n get x() {\r\n return this._props[0]\r\n }\r\n get y() {\r\n return this._props[1]\r\n }\r\n }\r\n}, function(t, s) {\r\n t.exports = class {\r\n constructor(t, s, i, h) {\r\n this.x = t, this.y = s, this.width = i, this.height = h, this.top = s, this.bottom = s + h, this.left = t, this.right = t + i\r\n }\r\n }\r\n}, function(t, s, i) {\r\n i(0);\r\n t.exports = class {\r\n constructor(t) {\r\n this.type = t.type || 0, this.bend = t.bend || 0, this.distortV = t.distortV || 0, this.distortH = t.distortH || 0, this.vertical = t.vertical || !1\r\n }\r\n }\r\n}, function(t, s, i) {\r\n var h = i(1),\r\n e = i(0),\r\n o = i(2),\r\n r = \"C\",\r\n n = \"Q\",\r\n a = \"L\",\r\n y = \"M\",\r\n x = \"Z\",\r\n c = class {\r\n constructor(t) {\r\n this.data = [], this.commands = [], this.parseString(t)\r\n }\r\n parseString(t) {\r\n var s = [],\r\n i = [];\r\n t.match(/[A-Za-z][0-9\\.\\s\\,\\-]+\\d/g).forEach(t => {\r\n var h = t[0],\r\n e = t.match(/[\\d\\.\\-]+/g);\r\n s.push(h), i.push(...e.map(parseFloat))\r\n }), this.commands = s, this.data = i\r\n }\r\n scale(t, s = 0) {\r\n 0 == s && (s = t);\r\n const i = this.data;\r\n for (let h = 0; h < i.length; h += 2) i[h] *= t, i[h + 1] *= s\r\n }\r\n warp(t) {\r\n let s = new e(t, this.calcRectangle()),\r\n i = this.commands,\r\n o = this.data,\r\n n = [],\r\n a = new h,\r\n y = new h,\r\n c = new h,\r\n A = new h,\r\n C = 0,\r\n d = new h;\r\n for (let t = 0; t < i.length; t++) {\r\n switch (i[t]) {\r\n case \"L\":\r\n i[t] = r, a = new h((2 * A[0] + o[C]) / 3, (2 * A[1] + o[C + 1]) / 3), y = new h((A[0] + 2 * o[C]) / 3, (A[1] + 2 * o[C + 1]) / 3), d = new h(o[C], o[C + 1]), n = n.concat(s.changeCubic(A, a, y, d)), A = d, C += 2;\r\n break;\r\n case \"Q\":\r\n i[t] = r, a = new h((2 * o[C] + A.x) / 3, (2 * o[C + 1] + A.y) / 3), y = new h((2 * o[C] + o[C + 2]) / 3, (2 * o[C + 1] + o[C + 3]) / 3), d = new h(o[C + 2], o[C + 3]), n = n.concat(s.changeCubic(A, a, y, d)), A = d, C += 4;\r\n break;\r\n case \"M\":\r\n A = c = new h(o[C], o[C + 1]), n = n.concat(s.changePoint(A)), C += 2;\r\n break;\r\n case \"C\":\r\n n = n.concat(s.changeCubic(A, new h(o[C], o[C + 1]), new h(o[C + 2], o[C + 3]), new h(o[C + 4], o[C + 5]))), A = new h(o[C + 4], o[C + 5]), C += 6;\r\n break;\r\n case x:\r\n A = c\r\n }\r\n }\r\n this.data = n\r\n }\r\n output() {\r\n var t = [],\r\n s = this.data.slice();\r\n for (let i = 0; i < this.commands.length; i++) {\r\n let h = this.commands[i],\r\n e = 0;\r\n switch (h) {\r\n case \"M\":\r\n case \"L\":\r\n e = 2;\r\n break;\r\n case \"Q\":\r\n e = 4;\r\n break;\r\n case \"C\":\r\n e = 6\r\n }\r\n t.push(h + s.splice(0, e).join(\" \"))\r\n }\r\n return t.join(\" \")\r\n }\r\n calcRectangle() {\r\n let t = this.commands,\r\n s = this.data;\r\n for (var i, h, e = {\r\n xMin: 1 / 0,\r\n yMin: 1 / 0,\r\n xMax: -1 / 0,\r\n yMax: -1 / 0\r\n }, x = 0, c = 0; c < t.length; c++) {\r\n switch (t[c]) {\r\n case y:\r\n case a:\r\n i = s[x], h = s[x + 1], x += 2;\r\n break;\r\n case n:\r\n i = s[x + 2], h = s[x + 3], x += 4;\r\n break;\r\n case r:\r\n i = s[x + 4], h = s[x + 5], x += 6\r\n }\r\n e.xMin = Math.min(i, e.xMin), e.xMax = Math.max(i, e.xMax), e.yMin = Math.min(h, e.yMin), e.yMax = Math.max(h, e.yMax)\r\n }\r\n return e.xMax == -1 / 0 ? null : new o(e.xMin, e.yMin, e.xMax - e.xMin, e.yMax - e.yMin)\r\n }\r\n };\r\n t.exports = c, \"undefined\" != typeof window && (window.Path = c)\r\n}]);","import React, { useEffect, useMemo, useState } from 'react';\r\nimport { use3dddPlus } from '../../store';\r\nimport { shallow } from 'zustand/shallow';\r\nimport { Tab, initTE } from 'tw-elements';\r\nimport { Layers } from './Layers';\r\nimport { Properties } from './Properties';\r\nimport { tabs } from './constants';\r\nimport { ColorPalette } from '../colorPallet';\r\nimport './rightMenu.css';\r\nimport '../../services/path-warp.js';\r\n\r\nexport const Rightmenu: React.FC = () => {\r\n initTE({ Tab });\r\n\r\n const canvas = use3dddPlus.getState().fabricCanvas;\r\n const [\r\n currentSelection,\r\n activeSelection,\r\n allColor,\r\n setToggleSaveLogo,\r\n validateColorAvailability,\r\n availableColorCodes,\r\n customOptions\r\n ] =\r\n use3dddPlus(\r\n (state) => [\r\n state.currentSelection,\r\n state.activeSelection,\r\n state.allColor,\r\n state.setToggleSaveLogo,\r\n state.validateColorAvailability,\r\n state.availableColorCodes,\r\n state.customOptions\r\n ],\r\n shallow\r\n );\r\n\r\n const [activeTab, setActiveTab] = useState(1);\r\n const [isNextClicked, setIsNextClicked] = useState(false);\r\n const [displayPallet, setDisplayPallet] = useState({\r\n visible: false,\r\n property: '',\r\n color: '',\r\n callback: null,\r\n });\r\n const [position, setPosition] = useState<{ x: number; y: number } | null>(\r\n null\r\n );\r\n\r\n useEffect(() => {\r\n if (activeSelection) {\r\n use3dddPlus.setState({ textInfo: activeSelection.text });\r\n }\r\n }, [activeSelection]);\r\n\r\n useEffect(() => {\r\n switch (currentSelection) {\r\n case 'text':\r\n case 'group':\r\n case 'path':\r\n case 'selectAll':\r\n case 'none':\r\n setActiveTab(1);\r\n break;\r\n case 'layer':\r\n case 'activeSelection':\r\n setActiveTab(2);\r\n break;\r\n }\r\n }, [currentSelection]);\r\n\r\n const conflictColors = useMemo(() => {\r\n return allColor.filter((colorCode: string) => availableColorCodes.indexOf(colorCode.toUpperCase()) < 0);\r\n }, [allColor]);\r\n\r\n const onSave = () => {\r\n if (!use3dddPlus.getState().mylogoAdded) {\r\n use3dddPlus.getState().toastMessages.noChangesMade();\r\n return\r\n }\r\n const validation = validateColorAvailability(allColor);\r\n if (!validation) {\r\n const decType = customOptions?.decorationType ?? '';\r\n use3dddPlus.getState().toastMessages.saveLogoColorNotAvailable(decType);\r\n return\r\n }\r\n canvas.discardActiveObject();\r\n canvas.renderAll();\r\n if (!conflictColors || conflictColors.length < 1) {\r\n setIsNextClicked(false);\r\n use3dddPlus.setState({ showCrossSave: true });\r\n if (canvas.getObjects().length > 2) {\r\n const hasTransparent = allColor.includes('transparent');\r\n const colorCount = hasTransparent\r\n ? allColor.length - 1\r\n : allColor.length;\r\n if (colorCount < 9) {\r\n setToggleSaveLogo('save', true, 'Save Logo', {});\r\n } else {\r\n use3dddPlus.getState().toastMessages.noOfColors();\r\n }\r\n } else {\r\n use3dddPlus.getState().toastMessages.noIteminCanvas();\r\n }\r\n } else {\r\n setIsNextClicked(true);\r\n }\r\n };\r\n\r\n const removeColorPalette = () => {\r\n setDisplayPallet({\r\n visible: false,\r\n property: '',\r\n color: '',\r\n callback: null,\r\n });\r\n };\r\n\r\n useEffect(() => {\r\n window.addEventListener('click', removeColorPalette);\r\n const unSub = use3dddPlus.subscribe(\r\n (state) => state.colorFill,\r\n (_current, _previous) => {\r\n // Handle color fill changes\r\n }\r\n );\r\n return () => {\r\n window.removeEventListener('click', removeColorPalette);\r\n unSub();\r\n };\r\n }, []);\r\n\r\n return (\r\n <div className=\"relative flex flex-col flex-1 h-full gap-3 px-6 pt-6 pb-2 text-left\">\r\n <div className=\"h-10\">\r\n <h1 className=\"text-2xl font-bold\">Edit Design</h1>\r\n </div>\r\n\r\n <div className=\"flex h-10\">\r\n {tabs.map((tab) => (\r\n <button\r\n key={tab.id}\r\n className={`${activeTab === tab.id\r\n ? 'bg-[#E11A38] text-white w-1/2'\r\n : 'bg-white text-gray-800 border border-slate-300 w-1/2'\r\n } focus:outline-none uppercase text-sm font-bold h-full`}\r\n onClick={() => {\r\n setActiveTab(tab.id);\r\n if (tab.id === 1) {\r\n use3dddPlus.setState({ currentSelection: 'none' });\r\n canvas.discardActiveObject();\r\n canvas.renderAll();\r\n }\r\n if (tab.id === 2) {\r\n use3dddPlus.setState({ currentSelection: 'layer' });\r\n }\r\n }}\r\n >\r\n {tab.label}\r\n </button>\r\n ))}\r\n </div>\r\n <div className=\"flex-1 w-full h-[80%] p-1 bg-gray-100\">\r\n {activeTab === 1 && (\r\n <Properties\r\n textSelected={activeSelection}\r\n activeTab={activeTab}\r\n canvas={canvas}\r\n setIsNextClicked={setIsNextClicked}\r\n onSave={onSave}\r\n conflictColors={conflictColors}\r\n isNextClicked={isNextClicked}\r\n setDisplayPallet={setDisplayPallet}\r\n setPosition={setPosition}\r\n />\r\n )}\r\n {activeTab === 2 && (\r\n <>\r\n {(currentSelection === 'layer' ||\r\n currentSelection === 'activeSelection') && (\r\n <Layers canvas={canvas} onSave={onSave} />\r\n )}\r\n </>\r\n )}\r\n </div>\r\n {displayPallet.visible && (\r\n <ColorPalette\r\n mainClass=\"left-0\"\r\n handleColorChange={(color) => {\r\n displayPallet.callback(displayPallet.property, color);\r\n setDisplayPallet({\r\n visible: false,\r\n property: '',\r\n color: '',\r\n callback: null,\r\n });\r\n }}\r\n style={\r\n position\r\n ? {\r\n position: 'fixed',\r\n left: position.x - 450,\r\n top: position.y - 5,\r\n width: '450px',\r\n }\r\n : { display: 'none' }\r\n }\r\n />\r\n )}\r\n </div>\r\n );\r\n};\r\n","import React, { useEffect, useState } from 'react';\r\n// import { CARD_BG_COLOR } from '../../theme';\r\n// import { RiArrowDownSFill } from 'react-icons/ri';\r\nimport Select, { components } from 'react-select';\r\nconst DropdownIndicator = (props) => {\r\n return (\r\n <components.DropdownIndicator {...props}>\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 20 20\"\r\n fill=\"currentColor\"\r\n className={`h-5 w-5 text-[#727272]`}\r\n >\r\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\" />\r\n </svg>\r\n </components.DropdownIndicator>\r\n );\r\n};\r\nconst style = {\r\n control: (base,state) => ({\r\n ...base,\r\n // border: '1px solid #BEBEBE',\r\n border: state.isFocused ? 0 : 0,\r\n // This line disable the blue border\r\n boxShadow: state.isFocused ? 0 : 0,\r\n '&:hover': {\r\n border: state.isFocused ? 0 : 0\r\n },\r\n\r\n // boxShadow: 'none',\r\n // '&:focus': {\r\n // border: 0,\r\n // },\r\n // '&:hover': {\r\n // border: '1px solid #BEBEBE',\r\n // },\r\n }),\r\n option: (base, { isFocused, isSelected }) => {\r\n return {\r\n ...base,\r\n backgroundColor: isSelected ? '#e11a38' : '#FFFFFF',\r\n fontWeight: isFocused ? 700 : 400,\r\n color: isSelected && '#ffffff',\r\n ':active': {\r\n backgroundColor: isSelected && '#ffffff',\r\n color: isSelected && '#000',\r\n fontWeight: isSelected && 700,\r\n },\r\n };\r\n },\r\n};\r\nconst ListDropdown = (props) => {\r\n const { dropdownData, handleSelected } = props;\r\n const [data, setData] = useState([]);\r\n\r\n useEffect(() => {\r\n let a = [];\r\n dropdownData.forEach((element) => {\r\n a.push({ value: element, label: element });\r\n });\r\n setData(\r\n a.sort((a, b) => {\r\n if (a.label < b.label) {\r\n return -1;\r\n }\r\n if (a.label > b.label) {\r\n return 1;\r\n }\r\n return 0;\r\n })\r\n );\r\n }, [dropdownData]);\r\n return (\r\n <>\r\n <div className=\"w-full relative\">\r\n <div className=\"w-full z-10 absolute\">\r\n <Select\r\n className=\"basic-single focus:!outline-none !border-0 focus:!border-0 focus:!ring-0 !ring-0 \"\r\n defaultValue={{\r\n value: dropdownData[0],\r\n label: dropdownData[0],\r\n }}\r\n onChange={(e) => handleSelected(e.value)}\r\n isSearchable={true}\r\n name=\"categories\"\r\n options={data}\r\n components={{\r\n IndicatorSeparator: () => null,\r\n DropdownIndicator,\r\n }}\r\n styles={style}\r\n />\r\n </div>\r\n </div>\r\n </>\r\n );\r\n};\r\nexport default ListDropdown;\r\n","export const decorationData =\r\n // prettier-ignore\r\n [\r\n {id:1, code:'',name:'Direct Embroidery', description:'', type:'decoration-type', linkedNodes:[], threeD:true,icon:'DirectEmbroidaryIcon',thumbnail:'',tags:''},\r\n {id:2, code:'',name:'Leather', description:'', type:'decoration-type', linkedNodes:[], threeD:true,icon:'NewLeatherIcon',thumbnail:'',tags:''},\r\n {id:3, code:'',name:'Patch', description:'', type:'decoration-type', linkedNodes:[], threeD:true,icon:'NewPatchIcon',thumbnail:'',tags:''},\r\n {id:4, code:'',name:'Transfer', description:'', type:'decoration-type', linkedNodes:[], threeD:true,icon:'TransferIcon',thumbnail:'',tags:''},\r\n {id:5, code:'',name:'Applique', description:'', type:'decoration-type', linkedNodes:[], threeD:true,icon:'NewAppliqueIcon',thumbnail:'',tags:''},\r\n {id:6, code:'',name:'Clip', description:'', type:'decoration-type', linkedNodes:[], threeD:true,icon:'Clip',thumbnail:'',tags:''},\r\n {id:7, code:'91-APPGLHR',name:'Genuine Etched Leather', description:'', type:'decoration-sub-type', linkedNodes:[2], threeD:true,icon:'EtchedLeatherIcon',thumbnail:'',tags:''},\r\n {id:8, code:'91-APPGLDB',name:'Genuine Debossed Leather', description:'', type:'decoration-sub-type', linkedNodes:[2], threeD:true,icon:'DebossedLeatherIcon',thumbnail:'',tags:''},\r\n {id:9, code:'91-APPFLHR',name:'Faux Etched Leather ', description:'', type:'decoration-sub-type', linkedNodes:[2], threeD:true,icon:'EtchedLeatherIcon',thumbnail:'',tags:''},\r\n {id:10, code:'91-APPFLDB',name:'Faux Debossed Leather ', description:'', type:'decoration-sub-type', linkedNodes:[2], threeD:true,icon:'DebossedLeatherIcon',thumbnail:'',tags:''},\r\n// {id:11, code:'',name:'Genuine Thick Leather ', description:'', type:'decoration-sub-type', linkedNodes:[2], threeD:true,icon:'LeatherIcon',thumbnail:'',tags:''},\r\n {id:12, code:'91-PATCHEMB',name:'Embroidered Patch', description:'', type:'decoration-sub-type', linkedNodes:[3], threeD:true,icon:'EmbroideredPatchIcon',thumbnail:'',tags:''},\r\n {id:13, code:'91-PATCHSUB',name:'Sublimated Patch', description:'', type:'decoration-sub-type', linkedNodes:[3], threeD:true,icon:'SublimatedPatchIcon',thumbnail:'',tags:''},\r\n {id:14, code:'91-PATCHWOV',name:'Woven Patch', description:'', type:'decoration-sub-type', linkedNodes:[3], threeD:true,icon:'WovenPatchIcon',thumbnail:'',tags:''},\r\n {id:15, code:'91-PATCHPVC',name:'Rubber Patch', description:'', type:'decoration-sub-type', linkedNodes:[3], threeD:true,icon:'RubberPatchIcon',thumbnail:'',tags:''},\r\n {id:16, code:'91-DIRSILICONE',name:'Silicon Transfers', description:'', type:'decoration-sub-type', linkedNodes:[4], threeD:true,icon:'SiliconTransferIcon',thumbnail:'',tags:''},\r\n {id:17, code:'91-RPOLYPRESS',name:'Poly Press Transfers', description:'', type:'decoration-sub-type', linkedNodes:[4], threeD:true,icon:'PolyPressTransferIcon',thumbnail:'',tags:''},\r\n {id:18, code:'91-TRANSFC',name:'Full Color Transfer ', description:'', type:'decoration-sub-type', linkedNodes:[4], threeD:true,icon:'FullColorTransferIcon',thumbnail:'',tags:''},\r\n {id:19, code:'91-APPFTL',name:'Felt / Twill Applique', description:'', type:'decoration-sub-type', linkedNodes:[5], threeD:true,icon:'FeltAppliqueIcon',thumbnail:'',tags:''},\r\n {id:20, code:'91-WOVENFRT',name:'Woven Label Applique', description:'', type:'decoration-sub-type', linkedNodes:[5], threeD:true,icon:'WovenLabelAppliqueIcon',thumbnail:'',tags:''},\r\n {id:21, code:'91-APPFTD',name:'Distressed Twill Applique', description:'', type:'decoration-sub-type', linkedNodes:[5], threeD:true,icon:'DistressedTwillAppliqueIcon',thumbnail:'',tags:''},\r\n {id:22, code:'91-APPCRK',name:'Genuine Cork Applique', description:'', type:'decoration-sub-type', linkedNodes:[5], threeD:true,icon:'CorkAppliqueIcon',thumbnail:'',tags:''},\r\n {id:23, code:'91-CLPLTHR',name:'Natural Leather Clip', description:'', type:'decoration-sub-type', linkedNodes:[6], threeD:false,icon:'Clip',thumbnail:'',tags:''},\r\n {id:24, code:'91-CLPLTHR',name:'Faux Leather Clip ', description:'', type:'decoration-sub-type', linkedNodes:[6], threeD:false,icon:'Clip',thumbnail:'',tags:''},\r\n {id:25, code:'91-CLPWOVEN',name:'Woven Label Clip ', description:'', type:'decoration-sub-type', linkedNodes:[6], threeD:false,icon:'Clip',thumbnail:'',tags:''},\r\n {id:26, code:'',name:'Rust', description:'', type:'decoration-type-color', linkedNodes:[8], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/leather/G100.jpg',tags:''},\r\n {id:27, code:'',name:'Tan', description:'', type:'decoration-type-color', linkedNodes:[8], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/leather/G102.jpg',tags:''},\r\n {id:28, code:'',name:'Brown', description:'', type:'decoration-type-color', linkedNodes:[8], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/leather/G104.jpg',tags:''},\r\n {id:29, code:'',name:'Black', description:'', type:'decoration-type-color', linkedNodes:[8], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/leather/G106.jpg',tags:''},\r\n {id:30, code:'',name:'Apple Green', description:'', type:'decoration-type-color', linkedNodes:[9,24], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/APPLE-GREEN-thumbnail.jpg',tags:''},\r\n {id:31, code:'',name:'Balsa', description:'', type:'decoration-type-color', linkedNodes:[9,24], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/BALSA-thumbnail.jpg',tags:''},\r\n {id:32, code:'',name:'Black', description:'', type:'decoration-type-color', linkedNodes:[9,24], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/BLACK-thumbnail.jpg',tags:''},\r\n {id:33, code:'',name:'Buff', description:'', type:'decoration-type-color', linkedNodes:[9,24], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/BUFF-thumbnail.jpg',tags:''},\r\n {id:34, code:'',name:'Chili', description:'', type:'decoration-type-color', linkedNodes:[9,24], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/CHILI-thumbnail.jpg',tags:''},\r\n {id:35, code:'',name:'Graphite', description:'', type:'decoration-type-color', linkedNodes:[9,24], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/GRAPHITE-thumbnail.jpg',tags:''},\r\n {id:36, code:'',name:'Java ', description:'', type:'decoration-type-color', linkedNodes:[9,24], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/JAVA-thumbnail.jpg',tags:''},\r\n {id:37, code:'',name:'Lipstick', description:'', type:'decoration-type-color', linkedNodes:[9,24], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/LIPSTICK-thumbnail.jpg',tags:''},\r\n {id:38, code:'',name:'Ocean', description:'', type:'decoration-type-color', linkedNodes:[9,24], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/OCEAN-thumbnail.jpg',tags:''},\r\n {id:39, code:'',name:'Sage', description:'', type:'decoration-type-color', linkedNodes:[9,24], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/SAGE-thumbnail.jpg',tags:''},\r\n {id:40, code:'',name:'Snow', description:'', type:'decoration-type-color', linkedNodes:[9,24], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/SNOW-thumbnail.jpg',tags:''},\r\n {id:41, code:'',name:'Steel', description:'', type:'decoration-type-color', linkedNodes:[9,24], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/STEEL-thumbnail.jpg',tags:''},\r\n {id:42, code:'',name:'Straw', description:'', type:'decoration-type-color', linkedNodes:[9,24], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/STRAW-thumbnail.jpg',tags:''},\r\n {id:43, code:'',name:'Williamsburg', description:'', type:'decoration-type-color', linkedNodes:[9,24], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/WILLIAMSBURG-thumbnail.jpg',tags:''},\r\n {id:44, code:'',name:'Royal Metallic Silver', description:'', type:'decoration-type-color', linkedNodes:[9,24], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/ROYAL_METALLIC-thumbnail.jpg',tags:''},\r\n {id:45, code:'',name:'Rustic Brown Metallic Silver', description:'', type:'decoration-type-color', linkedNodes:[9,24], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/RUSTIC-BROWN_METALLIC-thumbnail.jpg',tags:''},\r\n {id:46, code:'',name:'Pink ', description:'', type:'decoration-type-color', linkedNodes:[9,24], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/PINK-thumbnail.jpg',tags:''},\r\n {id:47, code:'',name:'Turquoise ', description:'', type:'decoration-type-color', linkedNodes:[9,24], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/TURQUOISE-thumbnail.jpg',tags:''},\r\n {id:48, code:'',name:'Bamboo ', description:'', type:'decoration-type-color', linkedNodes:[9,24], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/BAMBOO-thumbnail.jpg',tags:''},\r\n {id:49, code:'',name:'Natural Leather', description:'', type:'decoration-type-color', linkedNodes:[7,11,23], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/NATURAL-thumbnail.jpg',tags:''},\r\n {id:50, code:'',name:'Chestnut Leather', description:'', type:'decoration-type-color', linkedNodes:[7], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/CHESTNUT-thumbnail.jpg',tags:''},\r\n {id:51, code:'',name:'Brown', description:'', type:'decoration-ink-option', linkedNodes:[26,27], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/CORK-thumbnail.jpg',tags:''},\r\n {id:52, code:'',name:'Black', description:'', type:'decoration-ink-option', linkedNodes:[28,29], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/BLACK_METALLIC-thumbnail.jpg',tags:''},\r\n {id:53, code:'',name:'Tonal', description:'', type:'decoration-ink-option', linkedNodes:[28,29], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/CORK-thumbnail.jpg',tags:''},\r\n {id:54, code:'',name:'STANDARD SQUARE', description:'(W x H): 1.81 X 1.81', type:'decoration-type-shape', linkedNodes:[7,8,9,10,11,12,13,14,15,23,24,25], threeD:false,icon:'STANDARDSQUAREICON',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/decoration-shapes/standard_square.svg',tags:''},\r\n {id:55, code:'',name:'SMALL SQUARE', description:'(W x H): 1.5 X 1.5', type:'decoration-type-shape', linkedNodes:[7,8,9,10,11,12,13,14,15], threeD:false,icon:'SMALLSQUAREICON',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/decoration-shapes/small_square.svg',tags:''},\r\n {id:56, code:'',name:'STANDARD RECTANGLE', description:'(W x H): 2.44 X 1.39', type:'decoration-type-shape', linkedNodes:[7,8,9,10,11,12,13,14,15], threeD:false,icon:'STANDARDRECTANGLEICON',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/decoration-shapes/standard_rectangle.svg',tags:''},\r\n {id:57, code:'',name:'SMALL RECTANGLE', description:'(W x H): 1.97 X 1.97', type:'decoration-type-shape', linkedNodes:[7,8,9,10,11,12,13,14,15], threeD:false,icon:'SMALLRECTANGLEICON',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/decoration-shapes/small_rectangle.svg',tags:''},\r\n {id:58, code:'',name:'ROUNDED RECTANGLE', description:'(W x H): 1.57 X 1.57', type:'decoration-type-shape', linkedNodes:[7,8,9,10,11,12,13,14,15], threeD:false,icon:'ROUNDEDRECTANGLEICON',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/decoration-shapes/rounded_rectangle.svg',tags:''},\r\n {id:59, code:'',name:'ROUNDED TOP RECTANGLE', description:'(W x H): 3.01 X 1.73', type:'decoration-type-shape', linkedNodes:[7,8,9,10,11,12,13,14,15], threeD:false,icon:'ROUNDEDTOPRECTANGLEICON',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/decoration-shapes/rounded_top_rectangle.svg',tags:''},\r\n {id:60, code:'',name:'ROUNDED BOTTOM RECTANGLE', description:'(W x H): 2.62 X 1.34', type:'decoration-type-shape', linkedNodes:[7,8,9,10,11,12,13,14,15], threeD:false,icon:'ROUNDEDBOTTOMRECTANGLEICON',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/decoration-shapes/rounded_bottom_rectangle.svg',tags:''},\r\n {id:61, code:'',name:'STANDARD CIRCLE', description:'(W x H): 3.19 X 2.02', type:'decoration-type-shape', linkedNodes:[7,8,9,10,11,12,13,14,15], threeD:false,icon:'STANDARDCIRCLEICON',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/decoration-shapes/standard_circle.svg',tags:''},\r\n {id:62, code:'',name:'SMALL CIRCLE', description:'(W x H): 2.92 X 2.11', type:'decoration-type-shape', linkedNodes:[7,8,9,10,11,12,13,14,15], threeD:false,icon:'SMALLCIRLCEICON',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/decoration-shapes/small_cirlce.svg',tags:''},\r\n {id:63, code:'',name:'STANDARD OVAL', description:'(W x H): 2.92 X 2.11', type:'decoration-type-shape', linkedNodes:[7,8,9,10,11,12,13,14,15], threeD:false,icon:'STANDARDOVALICON',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/decoration-shapes/standard_oval.svg',tags:''},\r\n {id:64, code:'',name:'SMALL OVAL', description:'(W x H): 2.92 X 2.11', type:'decoration-type-shape', linkedNodes:[7,8,9,10,11,12,13,14,15], threeD:false,icon:'SMALLOVALICON',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/decoration-shapes/small_oval.svg',tags:''},\r\n {id:65, code:'',name:'REVERED TRIANGLE', description:'(W x H): 2.92 X 2.11', type:'decoration-type-shape', linkedNodes:[7,8,9,10,11,12,13,14,15], threeD:false,icon:'REVEREDTRIANGLEICON',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/decoration-shapes/revered_triangle.svg',tags:''},\r\n {id:66, code:'',name:'BADGE', description:'(W x H): 2.92 X 2.11', type:'decoration-type-shape', linkedNodes:[7,8,9,10,11,12,13,14,15], threeD:false,icon:'BADGEICON',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/decoration-shapes/badge.svg',tags:''},\r\n {id:67, code:'',name:'HEXAGON', description:'(W x H): 2.92 X 2.11', type:'decoration-type-shape', linkedNodes:[7,8,9,10,11,12,13,14,15], threeD:false,icon:'HEXAGONICON',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/decoration-shapes/hexagon.svg',tags:''},\r\n {id:68, code:'',name:'ELONGATED HEXAGON', description:'(W x H): 2.92 X 2.11', type:'decoration-type-shape', linkedNodes:[7,8,9,10,11,12,13,14,15], threeD:false,icon:'ELONGATEDHEXAGONICON',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/decoration-shapes/elongated_hexagon.svg',tags:''},\r\n {id:69, code:'',name:'ELONGATED DIAMOND', description:'(W x H): 2.92 X 2.11', type:'decoration-type-shape', linkedNodes:[7,8,9,10,11,12,13,14,15], threeD:false,icon:'ELONGATEDDIAMONDICON',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/decoration-shapes/elongated_diamond.svg',tags:''},\r\n {id:70, code:'',name:'Marrowed', description:'', type:'decoration-edge-type', linkedNodes:[12,13,14,15], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:71, code:'',name:'Satin Stitch Edge ', description:'', type:'decoration-edge-type', linkedNodes:[12,13,14,15], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:72, code:'',name:'Custom',description:'', type:'design-type', linkedNodes:[1,2,3,4,5,6], threeD:false,icon:'CustomDecorationIcon',thumbnail:'',tags:''},\r\n {id:73, code:'',name:'Team Decoration',description:'', type:'design-type', linkedNodes:[1], threeD:false,icon:'TeamDecorationIcon',thumbnail:'',tags:''},\r\n {id:74, code:'91-F1',name:'Design Concepts', description:'', type:'design-type', linkedNodes:[1,2,3,4,5,6], threeD:false,icon:'DesignConceptsIcon',thumbnail:'',tags:''},\r\n {id:75, code:'90-ND200',name:'Text (Wordings)', description:'', type:'design-style', linkedNodes:[73], threeD:true,icon:'WordingDecorationIcon',thumbnail:'',tags:''},\r\n {id:76, code:'90-TL11C',name:'Team Letters', description:'', type:'design-style', linkedNodes:[73], threeD:true,icon:'LetterDecorationIcon',thumbnail:'',tags:''},\r\n {id:77, code:'90-ND200',name:'Stock Mascots & Objects', description:'', type:'design-style', linkedNodes:[73], threeD:true,icon:'MascotDecorationIcon',thumbnail:'',tags:''},\r\n {id:78, code:'90-ND200',name:'Team Custom', description:'', type:'design-style', linkedNodes:[73], threeD:true,icon:'TeamCustomIcon',thumbnail:'',tags:''},\r\n {id:79, code:'91-F1',name:'Custom File Upload', description:'', type:'design-style', linkedNodes:[72], threeD:false,icon:'TeamCustom',thumbnail:'',tags:''},\r\n// {id:80, code:'',name:'Supporting File Upload', description:'', type:'design-style', linkedNodes:[72], threeD:false,icon:'TeamCustom',thumbnail:'',tags:''},\r\n {id:81, code:'91-F1',name:'My Logos', description:'', type:'design-style', linkedNodes:[72], threeD:false,icon:'TeamCustom',thumbnail:'',tags:''},\r\n {id:82, code:'',name:'Athletic - Design Concepts ', description:'', type:'design-style', linkedNodes:[74], threeD:false,icon:'AthleticIcon',thumbnail:'',tags:''},\r\n {id:83, code:'',name:'Resort & Golf - Design Concepts ', description:'', type:'design-style', linkedNodes:[74], threeD:false,icon:'ResortGolfIcon',thumbnail:'',tags:''},\r\n {id:84, code:'',name:'Outdoor - Design Concepts ', description:'', type:'design-style', linkedNodes:[74], threeD:false,icon:'OutdoorIcon',thumbnail:'',tags:''},\r\n {id:85, code:'',name:'ATHLETICBLOCK', description:'ATHLETIC BLOCK', type:'design-style-letters-font', linkedNodes:[75,76], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:86, code:'',name:'BALLPARK', description:'BALL PARK', type:'design-style-letters-font', linkedNodes:[75,76], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:87, code:'',name:'BLADE', description:'BLADE', type:'design-style-letters-font', linkedNodes:[75,76], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:88, code:'',name:'BOLT', description:'BOLT', type:'design-style-letters-font', linkedNodes:[75,76], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:89, code:'',name:'CENTURY', description:'CENTURY', type:'design-style-letters-font', linkedNodes:[75,76], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:90, code:'',name:'CITYBLOCK', description:'CITY BLOCK', type:'design-style-letters-font', linkedNodes:[75,76], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:91, code:'',name:'FANCYBLOCK', description:'FANCY BLOCK', type:'design-style-letters-font', linkedNodes:[75,76], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:92, code:'',name:'FORCE', description:'FORCE', type:'design-style-letters-font', linkedNodes:[75,76], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:93, code:'',name:'FULLBLOCK', description:'FULL BLOCK', type:'design-style-letters-font', linkedNodes:[75,76], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:94, code:'',name:'HARDBALL', description:'HARD BALL', type:'design-style-letters-font', linkedNodes:[75,76], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:95, code:'',name:'JERSEYBLOCK', description:'JERSEY BLOCK', type:'design-style-letters-font', linkedNodes:[75,76], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:96, code:'',name:'OLDENGLISH', description:'OLD ENGLISH', type:'design-style-letters-font', linkedNodes:[75,76], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:97, code:'',name:'PROBLOCK', description:'PRO BLOCK', type:'design-style-letters-font', linkedNodes:[75,76], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:98, code:'',name:'SPORTSCRIPT', description:'SPORT SCRIPT', type:'design-style-letters-font', linkedNodes:[75,76], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:99, code:'',name:'TIFFANY', description:'TIFFANY', type:'design-style-letters-font', linkedNodes:[75,76], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:100, code:'',name:'UNISCRIPT', description:'UNISCRIPT', type:'design-style-letters-font', linkedNodes:[75,76], threeD:false,icon:'',thumbnail:'',tags:''},\r\n// {id:101, code:'',name:'UNISCRIPT', description:'UNISCRIPT', type:'design-style-letters-font', linkedNodes:[75,76], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:102, code:'',name:'VELO', description:'VELO', type:'design-style-letters-font', linkedNodes:[75,76], threeD:false,icon:'',thumbnail:'',tags:''},\r\n\r\n\r\n{id:103, code:'',name:'ARWH001', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/ARWH001.svg',tags:'Arrows'},\r\n{id:104, code:'',name:'ARWH002', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/ARWH002.svg',tags:'Arrows'},\r\n{id:105, code:'',name:'BASE002', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/BASE002.svg',tags:'Balls,Baseball'},\r\n {id:106, code:'',name:'BDOG001', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/BDOG001.svg',tags:'Bulldogs'},\r\n {id:107, code:'',name:'BDOG003', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/BDOG003.svg',tags:'Bulldogs'},\r\n{id:108, code:'',name:'BDOG004', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/BDOG004.svg',tags:'Bulldogs'},\r\n {id:109, code:'',name:'BEAR004', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/BEAR004.svg',tags:'Bears'},\r\n {id:110, code:'',name:'BEAR005', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/BEAR005.svg',tags:'Bears'},\r\n{id:111, code:'',name:'BJAY001', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/BJAY001.svg',tags:'Cardinals'},\r\n{id:112, code:'',name:'BOLT002', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/BOLT002.svg',tags:'Bolts'},\r\n {id:113, code:'',name:'BULL002', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/BULL002.svg',tags:'Buffalo & Bulls'},\r\n {id:114, code:'',name:'CARD001', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/CARD001.svg',tags:'Cardinals'},\r\n{id:115, code:'',name:'CARD002', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/CARD002.svg',tags:'Cardinals'},\r\n {id:116, code:'',name:'CARD006', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/CARD006.svg',tags:'Cardinals'},\r\n {id:117, code:'',name:'CATS005', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/CATS005.svg',tags:'Cats'},\r\n {id:118, code:'',name:'CATS012', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/CATS012.svg',tags:'Cats'},\r\n{id:119, code:'',name:'CLVR001', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/CLVR001.svg',tags:'Leaves'},\r\n {id:120, code:'',name:'COBR001', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/COBR001.svg',tags:'Snakes'},\r\n {id:121, code:'',name:'COWB002', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/COWB002.svg',tags:'Cowboys & Rebels'},\r\n{id:122, code:'',name:'CRSS001', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/CRSS001.svg',tags:'Shapes'},\r\n {id:123, code:'',name:'DEVL001', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/DEVL001.svg',tags:'Devils'},\r\n {id:124, code:'',name:'DRGN001', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/DRGN001.svg',tags:'Dragons'},\r\n {id:125, code:'',name:'EAGL004', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/EAGL004.svg',tags:'Eagles'},\r\n {id:126, code:'',name:'EAGL005', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/EAGL005.svg',tags:'Eagles'},\r\n// {id:127, code:'',name:'EAGL005_bu', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/EAGL005_bu.svg',tags:'Eagles'},\r\n{id:128, code:'',name:'FLAG002', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/FLAG002.svg',tags:'Flags'},\r\n// {id:129, code:'',name:'FLAG002_RIGHT', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/FLAG002_RIGHT.svg',tags:'Flags'},\r\n{id:130, code:'',name:'FLGW002', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/FLGW002.svg',tags:'Flags'},\r\n// {id:131, code:'',name:'FLGW002_bu', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/FLGW002_bu.svg',tags:'Flags'},\r\n// {id:132, code:'',name:'FLGW002_NO_BORDER', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/FLGW002_NO_BORDER.svg',tags:'Flags'},\r\n// {id:133, code:'',name:'FLGW002_RIGHT', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/FLGW002_RIGHT.svg',tags:'Flags'},\r\n// {id:134, code:'',name:'FLGW002_RIGHT_bu', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/FLGW002_RIGHT_bu.svg',tags:'Flags'},\r\n// {id:135, code:'',name:'FLGW002_RIGHT_old', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/FLGW002_RIGHT_old.svg',tags:'Flags'},\r\n{id:136, code:'',name:'FLUR001', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/FLUR001.svg',tags:'Shapes'},\r\n{id:137, code:'',name:'FTBL001', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/FTBL001.svg',tags:'Football,Balls'},\r\n// {id:138, code:'',name:'FTBL001_OG', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/FTBL001_OG.svg',tags:'Football,Balls'},\r\n {id:139, code:'',name:'GATR001', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/GATR001.svg',tags:'Gators'},\r\n{id:140, code:'',name:'GOLF004', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/GOLF004.svg',tags:'Balls'},\r\n {id:141, code:'',name:'GRIZ001', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/GRIZ001.svg',tags:'Bears'},\r\n{id:142, code:'',name:'HATC002', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/HATC002.svg',tags:'Objects,Shapes'},\r\n {id:143, code:'',name:'HAWK001', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/HAWK001.svg',tags:'Hawks'},\r\n {id:144, code:'',name:'HAWK003', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/HAWK003.svg',tags:'Hawks'},\r\n {id:145, code:'',name:'HAWK004', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/HAWK004.svg',tags:'Hawks'},\r\n {id:146, code:'',name:'HORS002', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/HORS002.svg',tags:'Horses'},\r\n {id:147, code:'',name:'HORS003', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/HORS003.svg',tags:'Horses'},\r\n {id:148, code:'',name:'HORS006', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/HORS006.svg',tags:'Horses'},\r\n {id:149, code:'',name:'HRNT005', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/HRNT005.svg',tags:'Hornets'},\r\n {id:150, code:'',name:'INDN001', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/INDN001.svg',tags:'Indians'},\r\n {id:151, code:'',name:'KNGH003', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/KNGH003.svg',tags:'Knights'},\r\n {id:152, code:'',name:'KNGH004', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/KNGH004.svg',tags:'Knights'},\r\n// {id:153, code:'',name:'KNGH005', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/KNGH005.svg',tags:'Knights'},\r\n {id:154, code:'',name:'LION003', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/LION003.svg',tags:'Lions'},\r\n {id:155, code:'',name:'LION004', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/LION004.svg',tags:'Lions'},\r\n {id:156, code:'',name:'LION008', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/LION008.svg',tags:'Lions'},\r\n {id:157, code:'',name:'LNGH003', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/LNGH003.svg',tags:'Buffalo & Bulls'},\r\n{id:158, code:'',name:'LOGR002', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/LOGR002.svg',tags:'Logger'},\r\n {id:159, code:'',name:'OWLH001', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/OWLH001.svg',tags:'Owls'},\r\n {id:160, code:'',name:'PAWP001', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/PAWP001.svg',tags:'Paws'},\r\n{id:161, code:'',name:'PAWP004', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/PAWP004.svg',tags:'Paws'},\r\n {id:162, code:'',name:'PRTE005', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/PRTE005.svg',tags:'Pirates'},\r\n {id:163, code:'',name:'PTFL001', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/PTFL001.svg',tags:'Pirates'},\r\n {id:164, code:'',name:'RAMH003', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/RAMH003.svg',tags:'Rams'},\r\n {id:165, code:'',name:'RAMH008', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/RAMH008.svg',tags:'Rams'},\r\n {id:166, code:'',name:'RAVN001', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/RAVN001.svg',tags:'Ravens'},\r\n {id:167, code:'',name:'RAVN002', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/RAVN002.svg',tags:'Ravens'},\r\n {id:168, code:'',name:'RAZR003', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/RAZR003.svg',tags:'Boar'},\r\n {id:169, code:'',name:'REBL001', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/REBL001.svg',tags:'Cowboys & Rebels'},\r\n {id:170, code:'',name:'SKLL001', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/SKLL001.svg',tags:'Skulls'},\r\n{id:171, code:'',name:'STAR003', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/STAR003.svg',tags:'Ravens'},\r\n {id:172, code:'',name:'TIGR003', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/TIGR003.svg',tags:'Tigers'},\r\n// {id:173, code:'',name:'TIGR003_bu', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/TIGR003_bu.svg',tags:'Tigers'},\r\n// {id:174, code:'',name:'TIGR003_original', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/TIGR003_original.svg',tags:'Tigers'},\r\n// {id:175, code:'',name:'TIGR004 - Original', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/TIGR004 - Original.svg',tags:'Tigers'},\r\n {id:176, code:'',name:'TIGR004', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/TIGR004.svg',tags:'Tigers'},\r\n{id:177, code:'',name:'TIGR005 - Original', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/TIGR005 - Original.svg',tags:'Tigers'},\r\n {id:178, code:'',name:'TIGR005', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/TIGR005.svg',tags:'Tigers'},\r\n {id:179, code:'',name:'TRJN002', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/TRJN002.svg',tags:'Spartans'},\r\n {id:180, code:'',name:'TRJN004', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/TRJN004.svg',tags:'Spartans'},\r\n {id:181, code:'',name:'TRJN006', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/TRJN006.svg',tags:'Spartans'},\r\n {id:182, code:'',name:'TRND003', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/TRND003.svg',tags:'Bolts'},\r\n {id:183, code:'',name:'VIKG001', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/VIKG001.svg',tags:'Cavaliers & Vikings'},\r\n {id:184, code:'',name:'VIKG006', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/VIKG006.svg',tags:'Cavaliers & Vikings'},\r\n{id:185, code:'',name:'VIPR001', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/VIPR001.svg',tags:'Snakes'},\r\n{id:186, code:'',name:'WNGF001', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/WNGF001.svg',tags:'Wings'},\r\n {id:187, code:'',name:'WOLF005', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/WOLF005.svg',tags:'Wolves'},\r\n\r\n {id:188, code:'',name:'ATHLETICBLOCK', description:'', type:'design-style-letters-font', linkedNodes:[75], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/WOLF005.svg',tags:''},\r\n {id:189, code:'',name:'BALLPARK', description:'', type:'design-style-letters-font', linkedNodes:[75], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/WOLF005.svg',tags:''},\r\n {id:190, code:'',name:'BLADE', description:'', type:'design-style-letters-font', linkedNodes:[75], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/WOLF005.svg',tags:''},\r\n {id:191, code:'',name:'BOLT', description:'', type:'design-style-letters-font', linkedNodes:[75], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/WOLF005.svg',tags:''},\r\n {id:192, code:'',name:'CENTURY', description:'', type:'design-style-letters-font', linkedNodes:[75], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/WOLF005.svg',tags:''},\r\n {id:193, code:'',name:'CITYBLOCK', description:'', type:'design-style-letters-font', linkedNodes:[75], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-poc-assets/fonts/cityb.woff',tags:''},\r\n {id:194, code:'',name:'FANCYBLOCK', description:'', type:'design-style-letters-font', linkedNodes:[75], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/WOLF005.svg',tags:''},\r\n {id:195, code:'',name:'FORCE', description:'', type:'design-style-letters-font', linkedNodes:[75], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/WOLF005.svg',tags:''},\r\n {id:196, code:'',name:'FULLBLOCK', description:'', type:'design-style-letters-font', linkedNodes:[75], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/WOLF005.svg',tags:''},\r\n {id:197, code:'',name:'HARDBALL', description:'', type:'design-style-letters-font', linkedNodes:[75], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/WOLF005.svg',tags:''},\r\n {id:198, code:'',name:'JERSEYBLOCK', description:'', type:'design-style-letters-font', linkedNodes:[75], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/WOLF005.svg',tags:''},\r\n {id:199, code:'',name:'OLDENGLISH', description:'', type:'design-style-letters-font', linkedNodes:[75], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/WOLF005.svg',tags:''},\r\n {id:200, code:'',name:'PROBLOCK', description:'', type:'design-style-letters-font', linkedNodes:[75], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-poc-assets/fonts/pro_block.woff',tags:''},\r\n {id:201, code:'',name:'SPORTSCRIPT', description:'', type:'design-style-letters-font', linkedNodes:[75], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/WOLF005.svg',tags:''},\r\n {id:202, code:'',name:'TIFFANY', description:'', type:'design-style-letters-font', linkedNodes:[75], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-poc-assets/fonts/tiffany.woff',tags:''},\r\n {id:203, code:'',name:'UNISCRIPT', description:'', type:'design-style-letters-font', linkedNodes:[75], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/WOLF005.svg',tags:''},\r\n {id:204, code:'',name:'UNISCRIPT', description:'', type:'design-style-letters-font', linkedNodes:[75], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/WOLF005.svg',tags:''},\r\n {id:205, code:'',name:'VELO', description:'', type:'design-style-letters-font', linkedNodes:[75], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/WOLF005.svg',tags:''},\r\n {id:206, code:'',name:'Teamwear', description:'', type:'teamwear', linkedNodes:[], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:207, code:'',name:'Fabric', description:'', type:'teamwear', linkedNodes:[206], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:208, code:'',name:'Templates', description:'', type:'teamwear', linkedNodes:[206], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:209, code:'',name:'Color', description:'', type:'teamwear', linkedNodes:[206], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:210, code:'',name:'Piping', description:'', type:'teamwear', linkedNodes:[206], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:211, code:'',name:'Decoration', description:'', type:'teamwear', linkedNodes:[206], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:212, code:'',name:'Brand', description:'', type:'teamwear', linkedNodes:[206], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:213, code:'',name:'Roster', description:'', type:'teamwear', linkedNodes:[206], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:214, code:'',name:'Produra', description:'Premium, Durable, Moisture Wicking, 100% Knitted Polyester with Mechanical Stretch', type:'fabric-type', linkedNodes:[207], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/fabrics/PRODURA.png',tags:'SUBLIMATION AND HYPR TWILL'},\r\n {id:215, code:'',name:'Protek', description:'Premium, Durable, Moisture Wicking, 100% Knitted Polyester with Mechanical Stretch', type:'fabric-type', linkedNodes:[207], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/fabrics/PROTEK.png',tags:'SUBLIMATION AND HYPR TWILL'},\r\n {id:216, code:'',name:'Ignite LT', description:'Premium, Durable, Lightweight, Moisture Wicking, Woven 90% Polyester / 10% Elastane with Four-Way Stretch', type:'fabric-type', linkedNodes:[207], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/fabrics/IGNITE_LT.png',tags:'SUBLIMATION ONLY'},\r\n {id:217, code:'',name:'Matrix Mesh', description:'Premium, Durable, Moisture Wicking, Knitted Pin-Dot Mesh, 90% Polyester / 10% Elastane with Four-Way Stretch', type:'fabric-type', linkedNodes:[207], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/fabrics/MATRIX_MESH.png',tags:'SUBLIMATION AND HYPR TWILL'},\r\n {id:218, code:'',name:'Dryve LT', description:'Soft, Lightweight, Moisture Wicking, 100% Knitted Polyester Mesh', type:'fabric-type', linkedNodes:[207], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/fabrics/DRYVE_LT.png',tags:'SUBLIMATION ONLY'},\r\n {id:219, code:'',name:'FLY LT', description:'Soft, Lightweight, Moisture Wicking, 100% Flat Knit Polyester', type:'fabric-type', linkedNodes:[207], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/fabrics/FLY_LT.png',tags:'SUBLIMATION ONLY'},\r\n {id:220, code:'',name:'FLX', description:'Premium, Soft, Four-Way Stretch, 90% Polyester/10% Elastine', type:'fabric-type', linkedNodes:[207], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/fabrics/FLX.png',tags:'SUBLIMATION ONLY'},\r\n {id:221, code:'',name:'PRODURA - DYED (HYPR TWILL DECORATION ONLY)', description:'', type:'fabric-type', linkedNodes:[207], threeD:false,icon:'',thumbnail:'',tags:'HYPR TWILL'},\r\n {id:222, code:'',name:'PROTEK - DYED (HYPR TWILL DECORATION ONLY)', description:'', type:'fabric-type', linkedNodes:[207], threeD:false,icon:'',thumbnail:'',tags:'HYPR TWILL'},\r\n {id:223, code:'',name:'Neck Piping', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'https://resources.uniform-customizer.io/uploadedfiles/dRGF2JCBvodIg0QY21oHbuDfz6twjAVl.png',tags:''},\r\n {id:224, code:'',name:'Center Piping', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'https://resources.uniform-customizer.io/uploadedfiles/oWpQa0fFddLuG2RJ6lBnITsIS6BcdW7g.png',tags:''},\r\n {id:225, code:'',name:'Yoke Piping', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'https://resources.uniform-customizer.io/uploadedfiles/5BEjBO66Ei1aNzvVGxE39AJzOOOiN6TT.png',tags:''},\r\n {id:226, code:'',name:'Raglan Piping', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'https://resources.uniform-customizer.io/uploadedfiles/RG6MuauqiOMWJrOEsCHJ4tC53neMxL7W.png',tags:''},\r\n {id:227, code:'',name:'Sleeve Piping 1 inch up', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'https://resources.uniform-customizer.io/uploadedfiles/kOMLERHCuUVPWRIRWIhw1FlOvtiy1eBe.png',tags:''},\r\n {id:228, code:'',name:'End of Sleeve Piping', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'https://resources.uniform-customizer.io/uploadedfiles/lr2zDaP9l792oXHqcq7CmYcuzoIrQhkj.png',tags:''},\r\n {id:229, code:'',name:'Pant', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'https://resources.uniform-customizer.io/uploadedfiles/BqGJKQ8kJdTUeY9CEGTwwYC45Ar8rvYR.png',tags:''},\r\n {id:230, code:'',name:'Pant Tunnel', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'https://resources.uniform-customizer.io/uploadedfiles/kFN2ZAjjdJEoIfnkZQThax0bALOdP90l.png',tags:''},\r\n {id:231, code:'',name:'Left Sleeve', description:'', type:'brand-type', linkedNodes:[212], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:232, code:'',name:'Back Neck', description:'', type:'brand-type', linkedNodes:[212], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:233, code:'',name:'Front Left Hip', description:'', type:'brand-type', linkedNodes:[212], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:234, code:'',name:'Back Center Tunnel', description:'', type:'brand-type', linkedNodes:[212], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:235, code:'',name:'Pro Select 2 Button End of Sleeve', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/piping/PRO%20SELECT/PTS8012CU/Pro%20Select%202%20Button%20End%20of%20Sleeve.png',tags:''},\r\n {id:236, code:'',name:'Pro Select 2 Button Neck', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/piping/PRO%20SELECT/PTS8012CU/Pro%20Select%202%20Button%20Neck.png',tags:''},\r\n {id:237, code:'',name:'Pro Select 2 Button Raglan', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/piping/PRO%20SELECT/PTS8012CU/Pro%20Select%202%20Button%20Raglan.png',tags:''},\r\n {id:238, code:'',name:'Pro Select 2 Button Sleeve 1 Inch up', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/piping/PRO%20SELECT/PTS8012CU/Pro%20Select%202%20Button%20Sleeve%201%20Inch%20Up.png',tags:''},\r\n {id:239, code:'',name:'Pro Select 2 Button Yoke', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/piping/PRO%20SELECT/PTS8012CU/Pro%20Select%202%20Button%20Yoke.png',tags:''},\r\n {id:240, code:'',name:'Pro Select Full Button Center', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/piping/PRO%20SELECT/PTS8013CU/Pro%20Select%20Full%20Button%20Center.png',tags:''},\r\n {id:241, code:'',name:'Pro Select Full Button End of Sleeve', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/piping/PRO%20SELECT/PTS8013CU/Pro%20Select%20Full%20Button%20End%20of%20Sleeve.png',tags:''},\r\n {id:242, code:'',name:'Pro Select Full Button Neck', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/piping/PRO%20SELECT/PTS8013CU/Pro%20Select%20Full%20Button%20Neck.png',tags:''},\r\n {id:243, code:'',name:'Pro Select Full Button Raglan', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/piping/PRO%20SELECT/PTS8013CU/Pro%20Select%20Full%20Button%20Raglan.png',tags:''},\r\n {id:244, code:'',name:'Pro Select Full Button Sleeve 1 Inch up', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/piping/PRO%20SELECT/PTS8013CU/Pro%20Select%20Full%20Button%20Sleeve%201%20Inch%20Up.png',tags:''},\r\n {id:245, code:'',name:'Pro Select Full Button Yoke', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/piping/PRO%20SELECT/PTS8013CU/Pro%20Select%20Full%20Button%20Yoke.png',tags:''},\r\n {id:246, code:'',name:'Pro Select Sleeveless Full Button Center', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/piping/PRO%20SELECT/PTS8014CU/Pro%20Select%20Sleeveless%20Full%20Button%20Center.png',tags:''},\r\n {id:247, code:'',name:'Pro Select Sleeveless Full Button Neck', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/piping/PRO%20SELECT/PTS8014CU/Pro%20Select%20Sleeveless%20Full%20Button%20Neck.png',tags:''},\r\n {id:248, code:'',name:'Pro Select Sleeveless Full Button Set In', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/piping/PRO%20SELECT/PTS8014CU/Pro%20Select%20Sleeveless%20Full%20Button%20Set%20In.png',tags:''},\r\n {id:249, code:'',name:'Pro Select Sleeveless Full Button Yoke', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/piping/PRO%20SELECT/PTS8014CU/Pro%20Select%20Sleeveless%20Full%20Button%20Yoke.png',tags:''},\r\n {id:250, code:'',name:'Pro Select Faux Button Center', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/piping/PRO%20SELECT/PTS8015CU/Pro%20Select%20Faux%20Button%20Center.png',tags:''},\r\n {id:251, code:'',name:'Pro Select Faux Button End of Sleeve', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/piping/PRO%20SELECT/PTS8015CU/Pro%20Select%20Faux%20Button%20End%20of%20Sleeve.png',tags:''},\r\n {id:252, code:'',name:'Pro Select Faux Button Neck', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/piping/PRO%20SELECT/PTS8015CU/Pro%20Select%20Faux%20Button%20Neck.png',tags:''},\r\n {id:253, code:'',name:'Pro Select Faux Button Raglan', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/piping/PRO%20SELECT/PTS8015CU/Pro%20Select%20Faux%20Button%20Neck.png',tags:''},\r\n {id:254, code:'',name:'Pro Select Faux Button Sleeve 1 Inch Up', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/piping/PRO%20SELECT/PTS8015CU/Pro%20Select%20Faux%20Button%20Sleeve%201%20Inch%20Up.png',tags:''},\r\n {id:255, code:'',name:'Pro Select Faux Button Yoke', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/piping/PRO%20SELECT/PTS8015CU/Pro%20Select%20Faux%20Button%20Yoke.png',tags:''},\r\n {id:256, code:'',name:'Pro Select Sleeveless Faux Button Center', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:257, code:'',name:'Pro Select Sleeveless Faux Button Neck', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:258, code:'',name:'Pro Select Sleeveless Faux Button Set In', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:259, code:'',name:'Pro Select Sleeveless Faux Button Yoke', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:260, code:'',name:'Pro Select Full Length Open Cuff Pant Piping', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:261, code:'',name:'Pro Select Full Length Open Cuff Tunnel Piping', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:262, code:'',name:'Pro Select Knicker Pant Piping', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:263, code:'',name:'Pro Select Knicker Tunnel Piping', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:264, code:'',name:'Pro Select Tapared FL Pant Piping', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:265, code:'',name:'Pro Select Tapered Tunnel Piping', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:266, code:'',name:'Select Crew Neck End of Sleeve', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:267, code:'',name:'Select Crew Neck Set In', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:268, code:'',name:'Select Crew Neck Sleeve 1 Inch up', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:269, code:'',name:'Select BSB V Neck End of Sleeve', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:270, code:'',name:'Select BSB V Neck Set In', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:271, code:'',name:'Select BSB V Neck Sleeve 1 inch up', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:272, code:'',name:'Select BSB V Neck', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:273, code:'',name:'Select 2 Button Center', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:274, code:'',name:'Select 2 Button End of Sleeve', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:275, code:'',name:'Select 2 Button Neck', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:276, code:'',name:'Select 2 Button Set In', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:277, code:'',name:'Select 2 Button Sleeve 1 inch up', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:278, code:'',name:'Select 2 Button Yoke', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:279, code:'',name:'Select Full Length Open Cuff Pant Piping', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:280, code:'',name:'Select Full Length Open Cuff Tunnel Piping', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:281, code:'',name:'Select Knicker Pant Piping', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:282, code:'',name:'Select Knicker Tunnel Piping', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:283, code:'',name:'Select Full Length Tapered Pant Piping', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:284, code:'',name:'Select Full Length Tapered Tunnel Piping', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:285, code:'',name:'Signature BSB V Neck End of Sleeve', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:286, code:'',name:'Signature BSB V Neck Neck', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:287, code:'',name:'Signature BSB V Neck Raglan', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:288, code:'',name:'Signature BSB V Neck Sleeve 1 Inch Up', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:289, code:'',name:'Signature 2 Button End of Sleeve', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:290, code:'',name:'Signature 2 Button Neck', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:291, code:'',name:'Signature 2 Button Raglan', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:292, code:'',name:'Signature 2 Button Sleeve 1 Inch Up', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:293, code:'',name:'Signature 2 Button Yoke', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:294, code:'',name:'Signature Full Button Center', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:295, code:'',name:'Signature Full Button End of Sleeve', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:296, code:'',name:'Signature Full Button Neck', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:297, code:'',name:'Signature Full Button Raglan', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:298, code:'',name:'Signature Full Button Sleeve 1 Inch Up', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:299, code:'',name:'Signature Full Button Yoke', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:300, code:'',name:'Signature Faux Button Center', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:301, code:'',name:'Signature Faux Button End of Sleeve', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:302, code:'',name:'Signature Faux Button Neck', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:303, code:'',name:'Signature Faux Button Raglan', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:304, code:'',name:'Signature Faux Button Sleeve 1 Inch Up', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:305, code:'',name:'Signature Faux Button Yoke', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:306, code:'',name:'Signature Full Length Open Cuff Back Insert Piping', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:307, code:'',name:'Signature Full Length Open Cuff Pant Piping', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:308, code:'',name:'Signature Full Length Open Cuff Tunnel Piping', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:309, code:'',name:'Signature Knicker Back Insert Piping', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:310, code:'',name:'Signature Knicker Pant Piping', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:311, code:'',name:'Signature Knicker Tunnel Piping', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:312, code:'',name:'Signature Full Length Tapered Back Insert Piping', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:313, code:'',name:'Signature Full Length Tapered Pant Piping', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:314, code:'',name:'Signature Full Length Tapered Tunnel Piping', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:315, code:'',name:'Patches Custom', description:'', type:'decoration-type-shape', linkedNodes:[3], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:316, code:'',name:'Leather Custom ', description:'', type:'decoration-type-shape', linkedNodes:[2], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:317, code:'',name:'Rust ', description:'', type:'decoration-type-color', linkedNodes:[10], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/leather/F100.jpg',tags:''},\r\n {id:318, code:'',name:'Tan', description:'', type:'decoration-type-color', linkedNodes:[10], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/leather/F102.jpg',tags:''},\r\n {id:319, code:'',name:'Brown', description:'', type:'decoration-type-color', linkedNodes:[10], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/leather/F104.jpg',tags:''},\r\n { id: 320, code: '', name: 'Black', description: '', type: 'decoration-type-color', linkedNodes: [10], threeD: false, icon: '', thumbnail: 'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/leather/F106.jpg', tags: '' },\r\n {id:321, code:'',name:'GF841_Mammoth', description:'', type:'decoration-design-concepts', linkedNodes:[2], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/design_concept/GF841_Mammoth.svg',tags:'Resort & Golf'},\r\n {id:322, code:'',name:'CL223_Backwoods', description:'', type:'decoration-design-concepts', linkedNodes:[2], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/design_concept/CL223_Backwoods.svg',tags:'Resort & Golf'},\r\n// {id:323, code:'',name:'OD924_Maine2', description:'', type:'decoration-design-concepts', linkedNodes:[2], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/design_concept/OD924_Maine2.svg',tags:'Atheletic'},\r\n// {id:324, code:'',name:'CL165_Frostburg', description:'', type:'decoration-design-concepts', linkedNodes:[2], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/design_concept/CL165_Frostburg.svg',tags:'Outdoor'},\r\n// {id:325, code:'',name:'GF857_Brookside', description:'', type:'decoration-design-concepts', linkedNodes:[2], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/design_concept/GF857_Brookside.svg',tags:'Atheletic'},\r\n// {id:326, code:'',name:'GF841_Mammoth', description:'', type:'decoration-design-concepts', linkedNodes:[1], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/design_concept/GF841_Mammoth.svg',tags:'Resort & Golf'},\r\n// {id:327, code:'',name:'CL223_Backwoods', description:'', type:'decoration-design-concepts', linkedNodes:[1], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/design_concept/CL223_Backwoods.svg',tags:'Resort & Golf'},\r\n {id:328, code:'',name:'OD924_Maine2', description:'', type:'decoration-design-concepts', linkedNodes:[1], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/design_concept/OD924_Maine2.svg',tags:'Atheletic'},\r\n {id:329, code:'',name:'CL165_Frostburg', description:'', type:'decoration-design-concepts', linkedNodes:[1], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/design_concept/CL165_Frostburg.svg',tags:'Outdoor'},\r\n {id:330, code:'',name:'GF857_Brookside', description:'', type:'decoration-design-concepts', linkedNodes:[1], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/design_concept/GF857_Brookside.svg',tags:'Atheletic'},\r\n {id:331, code:'',name:'GF841_Mammoth', description:'', type:'decoration-design-concepts', linkedNodes:[3], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/design_concept/GF841_Mammoth.svg',tags:'Resort & Golf'},\r\n {id:332, code:'',name:'CL223_Backwoods', description:'', type:'decoration-design-concepts', linkedNodes:[3], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/design_concept/CL223_Backwoods.svg',tags:'Resort & Golf'},\r\n {id:333, code:'',name:'OD924_Maine2', description:'', type:'decoration-design-concepts', linkedNodes:[3], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/design_concept/OD924_Maine2.svg',tags:'Atheletic'},\r\n {id:334, code:'',name:'CL165_Frostburg', description:'', type:'decoration-design-concepts', linkedNodes:[3], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/design_concept/CL165_Frostburg.svg',tags:'Outdoor'},\r\n {id:335, code:'',name:'GF857_Brookside', description:'', type:'decoration-design-concepts', linkedNodes:[3], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/design_concept/GF857_Brookside.svg',tags:'Atheletic'},\r\n {id:336, code:'',name:'GF841_Mammoth', description:'', type:'decoration-design-concepts', linkedNodes:[4], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/design_concept/GF841_Mammoth.svg',tags:'Resort & Golf'},\r\n {id:337, code:'',name:'CL223_Backwoods', description:'', type:'decoration-design-concepts', linkedNodes:[4], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/design_concept/CL223_Backwoods.svg',tags:'Resort & Golf'},\r\n {id:338, code:'',name:'OD924_Maine2', description:'', type:'decoration-design-concepts', linkedNodes:[4], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/design_concept/OD924_Maine2.svg',tags:'Atheletic'},\r\n {id:339, code:'',name:'CL165_Frostburg', description:'', type:'decoration-design-concepts', linkedNodes:[4], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/design_concept/CL165_Frostburg.svg',tags:'Outdoor'},\r\n {id:340, code:'',name:'GF857_Brookside', description:'', type:'decoration-design-concepts', linkedNodes:[4], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/design_concept/GF857_Brookside.svg',tags:'Atheletic'},\r\n {id:341, code:'',name:'GF841_Mammoth', description:'', type:'decoration-design-concepts', linkedNodes:[5], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/design_concept/GF841_Mammoth.svg',tags:'Resort & Golf'},\r\n {id:342, code:'',name:'CL223_Backwoods', description:'', type:'decoration-design-concepts', linkedNodes:[5], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/design_concept/CL223_Backwoods.svg',tags:'Resort & Golf'},\r\n {id:343, code:'',name:'OD924_Maine2', description:'', type:'decoration-design-concepts', linkedNodes:[5], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/design_concept/OD924_Maine2.svg',tags:'Atheletic'},\r\n {id:344, code:'',name:'CL165_Frostburg', description:'', type:'decoration-design-concepts', linkedNodes:[5], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/design_concept/CL165_Frostburg.svg',tags:'Outdoor'},\r\n {id:345, code:'',name:'GF857_Brookside', description:'', type:'decoration-design-concepts', linkedNodes:[5], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/design_concept/GF857_Brookside.svg',tags:'Atheletic'},\r\n {id:346, code:'',name:'GF841_Mammoth', description:'', type:'decoration-design-concepts', linkedNodes:[6], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/design_concept/GF841_Mammoth.svg',tags:'Resort & Golf'},\r\n {id:347, code:'',name:'CL223_Backwoods', description:'', type:'decoration-design-concepts', linkedNodes:[6], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/design_concept/CL223_Backwoods.svg',tags:'Resort & Golf'},\r\n {id:348, code:'',name:'OD924_Maine2', description:'', type:'decoration-design-concepts', linkedNodes:[6], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/design_concept/OD924_Maine2.svg',tags:'Atheletic'},\r\n {id:349, code:'',name:'CL165_Frostburg', description:'', type:'decoration-design-concepts', linkedNodes:[6], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/design_concept/CL165_Frostburg.svg',tags:'Outdoor'},\r\n { id: 350, code: '', name: 'GF857_Brookside', description: '', type: 'decoration-design-concepts', linkedNodes: [6], threeD: false, icon: '', thumbnail: 'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/design_concept/GF857_Brookside.svg', tags: 'Atheletic' },\r\n {id:351, code:'',name:'BRUSHSCRIPT', description:'BRUSHSCRIPT', type:'design-style-letters-font', linkedNodes:[75,76], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:352, code:'',name:'UNITED', description:'UNITED', type:'design-style-letters-font', linkedNodes:[76], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:353, code:'',name:'My Logos', description:'', type:'design-substyle', linkedNodes:[78], threeD:false,icon:'TeamCustom',thumbnail:'',tags:''},\r\n {id:354, code:'',name:'Custom File Upload', description:'', type:'design-substyle', linkedNodes:[78], threeD:false,icon:'TeamCustom',thumbnail:'',tags:''},\r\n];\r\n","import React from 'react';\r\n// import { MdOutlineArrowForwardIos } from 'react-icons/md';\r\n//import { Searchbar } from '../searchbar';\r\nimport { Card, CardMedia, CardBody, CardTitle } from '../card';\r\n// import { Button } from '../button';\r\nimport { shallow } from 'zustand/shallow';\r\nimport { use3dddPlus } from '../../store';\r\nimport { Loader } from '../loader';\r\nimport ListDropdown from './listDropDown';\r\nimport { getDecorationDataByTypeAndParentId } from './decorationService';\r\nimport _ from 'lodash';\r\nexport const AddMascot = () => {\r\n const [\r\n stockLogoHandler,\r\n loading,\r\n handleMascotObjectFilterValues,\r\n availableMascots,\r\n filterValue,\r\n filteredMascots,\r\n ] = use3dddPlus(\r\n (state) => [\r\n state.stockLogoHandler,\r\n state.loading,\r\n state.handleMascotObjectFilterValues,\r\n state.availableMascots,\r\n state.filterValue,\r\n state.filteredMascots,\r\n ],\r\n shallow\r\n );\r\n\r\n let dropdownData = Array.from(\r\n new Set(availableMascots.flatMap((mascot) => mascot.tags))\r\n );\r\n // Prepend 'All' to the array\r\n dropdownData.unshift('All');\r\n React.useEffect(() => {\r\n const availableMascots = getDecorationDataByTypeAndParentId(\r\n 'design-style-mascots'\r\n ).map((item) => ({\r\n ...item,\r\n tags: item.tags.split(',').filter(Boolean),\r\n }));\r\n\r\n use3dddPlus.getState().setAvailableMascots(availableMascots);\r\n use3dddPlus\r\n .getState()\r\n .setFilteredMascots(availableMascots);\r\n }, []);\r\n\r\n return (\r\n <>\r\n <div className=\"bg-[#F7F7F7] absolute z-100 w-[90%] h-full pr-[56px]\">\r\n <div className=\"w-full flex mt-[50px] flex-row \">\r\n <div className=\"w-1/2 flex justify-end\">\r\n <div className=\"text-left mr-[24px] h-[40px]\">\r\n <div className=\"w-[10vw] mb-3 \"></div>\r\n </div>\r\n </div>\r\n <div className=\" flex-1 justify-end\">\r\n <ListDropdown\r\n //placeholder=\"All \"\r\n value={filterValue}\r\n dropdownData={dropdownData}\r\n handleSelected={handleMascotObjectFilterValues}\r\n // label={'Select Stock Mascots & Objects'}\r\n labelClass={`!mb-[14.5px]`}\r\n labelSpan={`uppercase !text-[18px] !text-[#353535] !leading-[24px] !font-bold`}\r\n buttonClass={`!shadow-[0px_7px_64px_rgba(0,0,0,0.07)] border !border-[#ebebeb] text-[15px] font-bold leading-[20px] !py-[11px] !pl-[17px]`}\r\n dropdownClass={`!shadow-[0px_7px_64px_rgba(0,0,0,0.11)] !bg-[#ffffff] !max-h-[31.25rem] pt-[7px] pb-[17px]`}\r\n dropdownLiClass={`!text-[15px] leading-[20px] pl-[16px]`}\r\n />\r\n </div>\r\n </div>\r\n {/* <div className=\"flex flex-row gap-2\"> */}\r\n <div className=\"flex\">\r\n <div className=\"flex mt-[30px] overflow-y-auto overflow-x-hidden h-[65vh] w-full\">\r\n {/* <div className=\"max-h-[140px] grid gap-3.5 grid-cols-3 md:grid-cols-3 lg:grid-cols-4 w-full \"> */}\r\n <div className=\"max-h-[170px] grid gap-[2vw] grid-cols-3 md:grid-cols-5 lg:grid-cols-5 xl:grid-cols-6 2xl:grid-cols-7 w-full p-[30px]\">\r\n {filteredMascots.length > 0\r\n ? filteredMascots.map((logo, index) => (\r\n <Card\r\n key={'logoImage' + index}\r\n // cardClass={`rounded-none bg-white cursor-pointer `}\r\n cardClass={`rounded-none !bg-transparent cursor-pointer min-h-[140px] min-w-[140px] max-w-[140px] `}\r\n style={{ boxShadow: '0px 0px 6px #98989829' }}\r\n onClick={() => stockLogoHandler(logo.thumbnail)}\r\n >\r\n <CardMedia src={logo.thumbnail} imageClass=\"h-full m-[15px] mb-0\" />\r\n\r\n <CardBody bodyClass=\"p-2.5\">\r\n <CardTitle\r\n titleClass={`text-[11px] uppercase flex justify-center`}\r\n name={logo.name}\r\n />\r\n </CardBody>\r\n </Card>\r\n ))\r\n : 'No Stock Logos'}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n {loading && <Loader />}\r\n </>\r\n );\r\n};\r\n","import { decorationData } from './mockData';\r\n\r\nexport type DecorationTypes =\r\n | 'decoration-type'\r\n | 'decoration-sub-type'\r\n | 'decoration-type-color'\r\n | 'decoration-ink-option'\r\n | 'decoration-type-shape'\r\n | 'decoration-edge-type'\r\n | 'design-type'\r\n | 'design-style'\r\n | 'design-style-letters-font'\r\n | 'design-style-mascots';\r\n\r\nexport const getDecorationDataById = (id: number) => {\r\n return decorationData.filter((e) => e.id === id)?.[0];\r\n};\r\n\r\nexport const getDecorationDataByName = (name: string) => {\r\n return decorationData.filter((e) => e.name === name)?.[0];\r\n};\r\n\r\nexport const getDecorationDataByTypeAndParentId = (\r\n type: DecorationTypes,\r\n parentId?: number\r\n) => {\r\n return parentId\r\n ? decorationData.filter(\r\n (item) => item.type === type && item.linkedNodes.includes(parentId)\r\n )\r\n : decorationData.filter(\r\n (item) => item.type === type \r\n );\r\n};\r\n\r\nexport const getAllTypes = () => {\r\n return [new Set(decorationData?.map((item) => item.type))];\r\n};\r\n","import React from 'react';\r\n// import { use3dddPlus } from '../../store';\r\nimport { MODAL_BG_COLOR } from '../../theme';\r\n\r\nexport interface ModalProps {\r\n children?: React.ReactNode;\r\n className?: string;\r\n}\r\n\r\nexport const LogoEditorSaveDesignModal = ({\r\n children,\r\n className = '',\r\n}: ModalProps) => {\r\n // const closeDesign = use3dddPlus((state) => state.setToggleSaveLogo);\r\n return (\r\n <>\r\n <div\r\n className={`modal modal-middle modal-open backdrop-blur-[45px] bg-[#00000046]`}\r\n id=\"saveLogoModel\"\r\n >\r\n <div className={`${className} modal-box ${MODAL_BG_COLOR} `}>\r\n {children}\r\n </div>\r\n {/* <form method=\"dialog\" className={`modal-backdrop ${BACKDROP_BLUR}`}>\r\n <button>close</button>\r\n </form> */}\r\n </div>\r\n </>\r\n );\r\n};","import React from 'react';\r\nimport { FloatingLabel } from 'flowbite-react';\r\nimport { EDIT_DESIGN_INFO_INPUT_BORDER_COLOR } from '../../theme';\r\ninterface CustomInputProps extends React.InputHTMLAttributes<HTMLInputElement> {\r\n type: string;\r\n id: string;\r\n name: string;\r\n label: string;\r\n customLabelStyle?: string;\r\n customInputStyle?: string;\r\n onChange?: (event: React.ChangeEvent<HTMLInputElement>) => void;\r\n onBlur?: (event: React.FocusEvent<HTMLInputElement>) => void;\r\n value?: string | undefined;\r\n onKeyDown?: (event: React.KeyboardEvent<HTMLInputElement>) => void;\r\n}\r\nexport const CustomInput: React.FC<CustomInputProps> = ({\r\n type,\r\n id,\r\n name,\r\n label,\r\n customLabelStyle,\r\n customInputStyle,\r\n onChange,\r\n onBlur,\r\n value,\r\n onKeyDown,\r\n className = '',\r\n}) => {\r\n return (\r\n <div className=\"w-full\">\r\n <FloatingLabel\r\n type={type}\r\n id={id}\r\n value={value}\r\n name={name}\r\n variant=\"outlined\"\r\n label={label}\r\n onChange={onChange}\r\n onBlur={onBlur}\r\n onKeyDown={onKeyDown}\r\n theme={{\r\n label: {\r\n default: {\r\n outlined: {\r\n sm: `absolute left-4 top-2 z-10 origin-[0] -translate-y-4 transition-transform bg-white peer-focus:px-[0.125rem] px-[0.125rem] text-[#5D5D5D] duration-300 peer-placeholder-shown:top-1/2 peer-placeholder-shown:-translate-y-1/2 peer-focus:top-2 peer-focus:-translate-y-4 font-medium ${customLabelStyle} ${className}`,\r\n\r\n md: `absolute left-4 top-2 z-10 origin-[0] -translate-y-4 transition-transform bg-white peer-focus:px-[0.125rem] px-[0.125rem] text-[#5D5D5D] duration-300 peer-placeholder-shown:top-1/2 peer-placeholder-shown:-translate-y-1/2 peer-focus:top-2 peer-focus:-translate-y-4 font-medium ${customLabelStyle} ${className}`,\r\n },\r\n },\r\n },\r\n input: {\r\n default: {\r\n outlined: {\r\n sm: `border peer block w-full appearance-none rounded-none border-[#ECEBED] px-4 pb-2.5 pt-4 focus:border-[#ECEBED] focus:outline-none focus:ring-0 w-full h-[3rem] mt-0 ${customInputStyle} ${EDIT_DESIGN_INFO_INPUT_BORDER_COLOR}`,\r\n\r\n md: `border peer block w-full appearance-none rounded-none border-[#ECEBED] px-4 pb-2.5 pt-4 focus:border-[#ECEBED] focus:outline-none focus:ring-0 w-full h-[3rem] mt-0 ${customInputStyle} ${EDIT_DESIGN_INFO_INPUT_BORDER_COLOR}`,\r\n },\r\n },\r\n },\r\n helperText: {\r\n default: 'mt-0 ',\r\n success: 'mt-0 ',\r\n error: 'mt-0',\r\n },\r\n }}\r\n />\r\n </div>\r\n );\r\n};\r\n","import React, { useState, useEffect } from 'react';\r\nimport {\r\n BUTTON_TEXT_COLOR,\r\n EDIT_DESIGN_INFO_BG_COLOR_4,\r\n EDIT_DESIGN_INFO_INPUT_BORDER_COLOR,\r\n EDIT_DESIGN_INFO_TEXT_COLOR_1,\r\n EDIT_DESIGN_INFO_TEXT_COLOR_3,\r\n INPUT_ERROR_TEXT_COLOR,\r\n SAVEBUTTON_BG_COLOR,\r\n SECONDARY_COLOR,\r\n TEXT_SIZE_12,\r\n TEXT_SIZE_4,\r\n TEXT_SIZE_5,\r\n TEXT_SIZE_9,\r\n} from '../../theme';\r\nimport { RxCross2 } from 'react-icons/rx';\r\nimport { use3dddPlus } from '../../store';\r\nimport { LogoEditorSaveDesignModal } from './saveDesignModal';\r\nimport './saveDesign.css';\r\nimport { CustomInput } from '../input/customInput';\r\nimport { fabric } from 'fabric';\r\n\r\nexport const SaveDesign = ({ onSaveLogo }) => {\r\n const [designNameValidation, setDesignNameValidation] = useState('');\r\n //@ts-ignore\r\n const tempCanvas = new fabric.Canvas();\r\n let dataURL='';\r\n const [commaInTagName, setCommaInTagName] = useState(false);\r\n const [tagNameLength, setTagNameLength] = useState(false);\r\n const [isSaving, setIsSaving] = useState(false);\r\n const [\r\n canvas,\r\n logoName,\r\n logoTag,\r\n closeModal,\r\n toggleSaveLogo,\r\n disableSaveButton,\r\n saveLogo,\r\n uploadLogoConfig,\r\n setLogoData,\r\n \r\n ] = use3dddPlus((state) => [\r\n state.fabricCanvas,\r\n state.logoName,\r\n state.logoTag,\r\n state.setToggleSaveLogo,\r\n state.toggleSaveLogo,\r\n state.disableSaveButton,\r\n state.saveLogo,\r\n state.uploadLogoConfig,\r\n state.setLogoData,\r\n ]);\r\n const [tagName, setTagName] = React.useState('');\r\n\r\n const checkValidations = () => {\r\n const nameValidation = logoName.length >= 1;\r\n if (!nameValidation) {\r\n setDesignNameValidation('length');\r\n return nameValidation;\r\n } else return true;\r\n };\r\n \r\n const onSaveHandler = async () => { \r\n \r\n if (!isSaving) {\r\n if (!checkValidations()) return;\r\n setIsSaving(true);\r\n canvas.backgroundColor = null;\r\n const canvasGetobject = canvas.getObjects();\r\n canvasGetobject.forEach((obj : any) => {\r\n if (obj.type === 'line') {\r\n canvas.remove(obj);\r\n }else{\r\n obj?._objects?.forEach((ele : any) => {\r\n if(ele.fill === undefined){\r\n ele.set({\r\n scaleX :0,\r\n scaleY:0,\r\n })\r\n }\r\n });\r\n }\r\n });\r\n\r\n // saving all path text data (text with shapes applied)\r\n let pathTextsData = {};\r\n canvasGetobject.forEach((obj) => {\r\n if (obj.type === 'path' && obj.pathData !== undefined) {\r\n pathTextsData[obj.text] = {\r\n width: obj.width,\r\n height: obj.height,\r\n left: obj.left,\r\n top: obj.top,\r\n pathData: obj.pathData,\r\n shapeSize: obj.shapeSize,\r\n shapeType: obj.shapeType,\r\n fontFamily: obj.fontFamily,\r\n fontWeight: obj.fontWeight,\r\n fontSize: obj.fontSize,\r\n charSpacing: obj.charSpacing,\r\n textAlign: obj.textAlign,\r\n fontStyle: obj.fontStyle,\r\n text: obj.text,\r\n };\r\n }\r\n });\r\n const selectAllCanvasObjects = (padding: number = 20): Promise<string> => {\r\n //@ts-ignore\r\n return new Promise((resolve, reject) => {\r\n const objs = canvas.getObjects().map(obj => obj.set('active', true));\r\n const group = new fabric.ActiveSelection(objs, {\r\n canvas: canvas,\r\n originX: 'center',\r\n originY: 'center'\r\n });\r\n canvas.setActiveObject(group);\r\n canvas.requestRenderAll();\r\n \r\n group.clone((clonedGroup) => {\r\n const boundingRect = clonedGroup.getBoundingRect();\r\n const paddedWidth = boundingRect.width + 4 * padding;\r\n const paddedHeight = boundingRect.height + 6 * padding;\r\n \r\n tempCanvas.setWidth(paddedWidth);\r\n tempCanvas.setHeight(paddedHeight);\r\n clonedGroup.left = padding + boundingRect.left;\r\n clonedGroup.top = padding + boundingRect.top;\r\n clonedGroup.setCoords();\r\n \r\n tempCanvas.add(clonedGroup);\r\n clonedGroup.center();\r\n clonedGroup.setCoords();\r\n tempCanvas.requestRenderAll();\r\n const dataURL = tempCanvas.toDataURL();\r\n tempCanvas.clear();\r\n tempCanvas.dispose();\r\n clonedGroup = null;\r\n canvas.discardActiveObject();\r\n resolve(dataURL);\r\n });\r\n });\r\n };\r\n \r\n (async () => {\r\n try {\r\n dataURL = await selectAllCanvasObjects();\r\n console.log();\r\n } catch (error) {\r\n console.error('Error capturing canvas objects:', error);\r\n }\r\n })();\r\n\r\n const canvasData = use3dddPlus.getState().applyColorFill();\r\n // dataURL = canvas.toDataURL();\r\n // looping through the text shape objects & taking out text data to inject in the canvas json data & save\r\n let pathTextsKeys = Object.keys(pathTextsData);\r\n for (let i = 0; i < pathTextsKeys.length; i++) {\r\n let pathData = pathTextsData[pathTextsKeys[i]];\r\n for (let o = 0; o < canvasData.objects.length; o++) {\r\n const obj = canvasData.objects[o];\r\n if (\r\n obj.type === 'path' &&\r\n obj.left === Math.round(pathData.left * 100) / 100 &&\r\n obj.top === Math.round(pathData.top * 100) / 100 &&\r\n obj.width === Math.round(pathData.width * 100) / 100 &&\r\n obj.height === Math.round(pathData.height * 100) / 100\r\n ) {\r\n Object.assign(canvasData.objects[o], pathData);\r\n }\r\n }\r\n }\r\n \r\n const dataCh = JSON.stringify(canvasData);\r\n const S3UrlPath = await uploadLogoConfig(\r\n dataCh,\r\n use3dddPlus.getState().customerId\r\n );\r\n \r\n const canvasSvg = canvas.toSVG();\r\n closeModal('', false, '', {});\r\n const raw = JSON.stringify({\r\n customer_id: use3dddPlus.getState().customerId,\r\n tag: logoTag.join(','),\r\n name: logoName,\r\n base64_image: dataURL,\r\n svg_image: canvasSvg,\r\n logo_config_url: S3UrlPath,\r\n });\r\n\r\n const horizontalLine = new fabric.Line(\r\n [0, canvas.height / 2, canvas.height, canvas.height / 2],\r\n {\r\n stroke: 'red',\r\n scaleX: 11,\r\n visible: false,\r\n selectable: false,\r\n type: 'line',\r\n }\r\n );\r\n\r\n const verticalLine = new fabric.Line(\r\n [canvas.width / 2, 0, canvas.width / 2, canvas.width],\r\n {\r\n stroke: 'red',\r\n visible: false,\r\n selectable: false,\r\n type: 'line',\r\n }\r\n );\r\n\r\n horizontalLine.centerH();\r\n canvas.add(horizontalLine);\r\n canvas.add(verticalLine);\r\n canvas.sendBackwards(horizontalLine);\r\n canvas.sendBackwards(verticalLine);\r\n use3dddPlus.setState({ horizontalLine: horizontalLine });\r\n use3dddPlus.setState({ verticalLine: verticalLine });\r\n saveLogo(raw)\r\n .then((data) => {\r\n setIsSaving(false);\r\n onSaveLogo(data);\r\n setLogoData(data);\r\n use3dddPlus.getState().toastMessages.saveSuccess();\r\n })\r\n .catch((ex) => {\r\n setIsSaving(false);\r\n console.log('ERROR in Save Logo:', ex);\r\n });\r\n }\r\n use3dddPlus.setState({ logoName: '' });\r\n use3dddPlus.setState({ logoTag: [] });\r\n };\r\n\r\n useEffect(() => {\r\n if (tagName !== '') {\r\n const reg = /^[a-zA-Z0-9 ]+$/;\r\n const regTest = reg.test(tagName);\r\n\r\n if (!regTest) {\r\n setCommaInTagName(true);\r\n } else if (!!commaInTagName) {\r\n setCommaInTagName(false);\r\n }\r\n } else if (!!commaInTagName) {\r\n setCommaInTagName(false);\r\n }\r\n }, [tagName]);\r\n\r\n const handleTagChange = (event: any) => {\r\n if (event?.target?.value !== ' ') {\r\n setTagName(event.target.value);\r\n }\r\n };\r\n\r\n const handleKeyDown = (event: any) => {\r\n if (logoTag.length > 4 && tagName !== '') {\r\n event.preventDefault();\r\n setTagNameLength(true);\r\n setTagName('');\r\n return;\r\n } else {\r\n setTagNameLength(false);\r\n }\r\n\r\n if (\r\n event.key === 'Enter' ||\r\n event.key === 'Tab' ||\r\n (event.keyCode === 188 && tagName !== '') ||\r\n (event.type === 'blur' && tagName !== '')\r\n ) {\r\n event.preventDefault();\r\n\r\n const reg = /^[a-zA-Z0-9 ]+$/;\r\n const regTest = reg.test(tagName);\r\n if (!regTest) {\r\n setCommaInTagName(true);\r\n return;\r\n }\r\n if (!!regTest) {\r\n tagName !== '' && handleAdd();\r\n }\r\n } else if (tagName === '' && event.key === 'Backspace') {\r\n handleBackspace();\r\n }\r\n if (tagName.length !== 0 && (!!commaInTagName || !!tagNameLength)) {\r\n if (event?.type === 'blur' || event?.type === 'keydown') {\r\n setCommaInTagName(false);\r\n setTagNameLength(false);\r\n }\r\n }\r\n };\r\n\r\n const handleNameChange = (value) => {\r\n use3dddPlus.setState({ logoName: value });\r\n if (designNameValidation === 'length') {\r\n setDesignNameValidation('');\r\n }\r\n };\r\n\r\n const handleAdd = () => {\r\n let newList = [...logoTag];\r\n if (!newList.includes(tagName.trim())) {\r\n newList.push(tagName.trim());\r\n }\r\n use3dddPlus.setState({ logoTag: newList.filter(Boolean) });\r\n setTagName('');\r\n };\r\n\r\n const handleBackspace = () => {\r\n let newList = [...logoTag];\r\n newList.pop();\r\n use3dddPlus.setState({ logoTag: newList.filter(Boolean) });\r\n };\r\n\r\n const handleDelete = (e) => {\r\n const newList = logoTag.filter((item) => item !== e);\r\n use3dddPlus.setState({ logoTag: newList });\r\n };\r\n const onCancelHandler = () => {\r\n closeModal('', false, '', {});\r\n };\r\n return (\r\n <LogoEditorSaveDesignModal\r\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]\r\n `}\r\n >\r\n <button\r\n className=\"absolute right-[0.6875rem] top-[0.6875rem] px-[0.75rem] py-[0.75rem] hover:bg-[#E11A38] hover:text-[#ffffff] hover:rounded-none\"\r\n onClick={() => {\r\n use3dddPlus.getState().goBack();\r\n closeModal('', false, '', {});\r\n use3dddPlus.setState({ showCrossSave: false });\r\n \r\n }}\r\n >\r\n <RxCross2 strokeWidth={1} />\r\n </button>\r\n\r\n <div className={`flex h-max w-full`}>\r\n <div\r\n className={`w-full md:px-[112px] md:p-[98px] p-[30px] bg-white h-full flex justify-center`}\r\n >\r\n <div className=\"w-full\">\r\n <span\r\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}\r\n `}\r\n >\r\n {toggleSaveLogo.title}\r\n </span>\r\n <div>\r\n <div className=\"\">\r\n <CustomInput\r\n customLabelStyle={`${TEXT_SIZE_9} leading-[1.25rem] border-0 font-medium text-[#727272]`}\r\n value={logoName}\r\n onBlur={(e) =>\r\n handleNameChange(e?.target?.value?.trimStart())\r\n }\r\n type=\"text\"\r\n id=\"logoName\"\r\n name=\"logoName\"\r\n label=\"Design Name\"\r\n onChange={(e) =>\r\n handleNameChange(e?.target?.value?.trimStart())\r\n }\r\n customInputStyle={`${\r\n designNameValidation === 'length'\r\n ? `border border-[#e11a38]`\r\n : `border border-[#ecebed]`\r\n } text-[#727272] ${TEXT_SIZE_9} bg-transparent`}\r\n />\r\n </div>\r\n {designNameValidation === 'length' && (\r\n <div\r\n role=\"alert\"\r\n className={`text-sm ${INPUT_ERROR_TEXT_COLOR}`}\r\n >\r\n * Please enter a name with at least 1 character\r\n </div>\r\n )}\r\n {designNameValidation === 'specialCharacter' && (\r\n <div\r\n role=\"alert\"\r\n className={`text-sm ${INPUT_ERROR_TEXT_COLOR}`}\r\n >\r\n * Design Name can not have any special characters\r\n </div>\r\n )}\r\n <div\r\n className={`relative flex flex-row py-[0.695rem] border ${EDIT_DESIGN_INFO_INPUT_BORDER_COLOR} flex-wrap place-content-start mt-5 `}\r\n >\r\n <div className=\"flex flex-row gap-[0.5rem] flex-wrap items-center px-[1rem]\">\r\n {Array.isArray(logoTag) &&\r\n logoTag?.map((el: any, i) => (\r\n <div\r\n key={i}\r\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}`}\r\n >\r\n {el}\r\n <button onClick={() => handleDelete(el)}>\r\n <RxCross2\r\n className={`${EDIT_DESIGN_INFO_TEXT_COLOR_1} font-bold`}\r\n />\r\n </button>\r\n </div>\r\n ))}\r\n\r\n <div>\r\n <input\r\n name=\"tags\"\r\n type=\"text\"\r\n placeholder=\" \"\r\n className={` ${EDIT_DESIGN_INFO_TEXT_COLOR_3} font-light block w-[6.25rem] focus:outline-none !border-0 py-0 focus:border-0 peer focus:ring-0 ring-0 px-4`}\r\n value={tagName}\r\n onChange={handleTagChange}\r\n onKeyDown={handleKeyDown}\r\n onBlur={handleKeyDown}\r\n onClick={(e) => {\r\n e.currentTarget.focus();\r\n }}\r\n />\r\n <label\r\n htmlFor=\"designTags\"\r\n className={` ${\r\n logoTag?.length > 0 || !!commaInTagName\r\n ? 'py-0 !top-0 !font-[13px] !text-[#727272] !bg-white !opacity-1 !left-[1rem]'\r\n : ''\r\n } ${TEXT_SIZE_9} peer-focus:${EDIT_DESIGN_INFO_TEXT_COLOR_1} font-medium leading-[1.25rem] absolute z-10 transition-all top-2 transform -translate-y-1/2 peer-placeholder-shown:-translate-y-1/2 peer-placeholder-shown:top-1/2 peer-focus:top-0 peer-focus:font-[13px] peer-focus:!bg-white peer-focus:-translate-y-[10px] peer-focus:opacity-1 peer-placeholder-shown:text-[#727272] left-4 `}\r\n >\r\n Tags\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n {(() => {\r\n switch (true) {\r\n case !!commaInTagName && !!tagNameLength:\r\n return (\r\n <div\r\n role=\"alert\"\r\n className={`text-sm ${INPUT_ERROR_TEXT_COLOR} mb-5`}\r\n >\r\n * Tag Name can not have any special characters & Maximum\r\n number of tag can be 5\r\n </div>\r\n );\r\n case !!commaInTagName:\r\n return (\r\n <div\r\n role=\"alert\"\r\n className={`text-sm ${INPUT_ERROR_TEXT_COLOR} mb-5`}\r\n >\r\n * Tag Name can not have any special characters\r\n </div>\r\n );\r\n case !!tagNameLength:\r\n return (\r\n <div\r\n role=\"alert\"\r\n className={`text-sm ${INPUT_ERROR_TEXT_COLOR} mb-5`}\r\n >\r\n * Maximum number of tag can be 5\r\n </div>\r\n );\r\n\r\n default:\r\n return null;\r\n }\r\n })()}\r\n\r\n <div\r\n className={`${\r\n !disableSaveButton ? 'flex flex-col lg:flex-row' : ''\r\n } gap-[19px] leading-[23px] font-bold ${TEXT_SIZE_4} mt-5`}\r\n >\r\n {toggleSaveLogo.key === 'save' && (\r\n <>\r\n <button\r\n className={`md:btn-md lg:w-2/5 w-full rounded-none uppercase active:${SAVEBUTTON_BG_COLOR} ${\r\n isSaving ? 'bg-[#d77382]' : SAVEBUTTON_BG_COLOR\r\n } ${BUTTON_TEXT_COLOR} ${\r\n isSaving ? '' : 'hover:bg-[#E11A38]'\r\n }`}\r\n onClick={() => onSaveHandler()}\r\n disabled={isSaving}\r\n >\r\n SAVE\r\n </button>\r\n <button\r\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 `}\r\n onClick={() => onCancelHandler()}\r\n >\r\n Cancel\r\n </button>\r\n </>\r\n )}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </LogoEditorSaveDesignModal>\r\n );\r\n};\r\n","import React, { useRef, useEffect } from 'react';\r\n/**\r\n * Hook that alerts clicks outside of the passed ref\r\n */\r\nfunction useOutsideAlerter(ref: any, onClick: any) {\r\n useEffect(() => {\r\n /**\r\n * Alert if clicked on outside of element\r\n */\r\n function handleClickOutside(event: any) {\r\n if (ref.current && !ref.current.contains(event.target)) {\r\n // alert('You clicked outside of me!');\r\n onClick(event);\r\n }\r\n }\r\n function handleEscape(event: any) {\r\n if (event.key == 'Escape') onClick(event);\r\n }\r\n // Bind the event listener\r\n document.addEventListener('keydown', handleEscape);\r\n document.addEventListener('mousedown', handleClickOutside);\r\n return () => {\r\n // Unbind the event listener on clean up\r\n document.removeEventListener('mousedown', handleClickOutside);\r\n document.removeEventListener('keydown', handleEscape);\r\n };\r\n }, [ref]);\r\n}\r\n\r\n/**\r\n * Component that alerts if you click outside of it\r\n */\r\nfunction OutsideAlerter(props: any) {\r\n const wrapperRef = useRef(null);\r\n useOutsideAlerter(wrapperRef, props.onClick);\r\n\r\n return <div ref={wrapperRef}>{props.children}</div>;\r\n}\r\n\r\nexport default OutsideAlerter;\r\n","import React, { useState } from 'react';\r\nimport { ChromePicker } from 'react-color';\r\nimport { use3dddPlus } from '../../store';\r\nimport { shallow } from 'zustand/shallow';\r\nimport OutsideAlerter from '../../hooks/outsideAlerter';\r\nexport const ColorPicker = () => {\r\n const [setDisplayProductColor, displayProductColor] = use3dddPlus(\r\n (state) => [state.setDisplayProductColor, state.displayProductColor],\r\n shallow\r\n );\r\n const [currentColor, setCurrentColor] = useState('#fff');\r\n\r\n const handleOnChange = (color) => {\r\n setCurrentColor(color.hex);\r\n const canvas = use3dddPlus.getState().fabricCanvas;\r\n canvas.backgroundColor = color.hex;\r\n canvas.renderAll();\r\n };\r\n\r\n return (\r\n <div className=\"absolute\">\r\n {displayProductColor && (\r\n <div className=\"relative top-[25vh] left-5 flex\">\r\n <OutsideAlerter onClick={() => setDisplayProductColor()}>\r\n <ChromePicker\r\n color={currentColor}\r\n onChange={handleOnChange}\r\n // onChangeComplete={handleOnChange}\r\n disableAlpha={true}\r\n onClose={() => setDisplayProductColor()}\r\n />\r\n </OutsideAlerter>\r\n </div>\r\n )}\r\n </div>\r\n );\r\n};\r\n","import React from 'react';\r\nimport { Canvas } from '../canvas';\r\nimport { use3dddPlus } from '../../store';\r\nimport { shallow } from 'zustand/shallow';\r\nimport { UploadLogo } from '../uploadLogo';\r\nimport { Rightmenu } from '../Rightmenu';\r\nimport { AddMascot } from '../addMascot';\r\nimport { MyLogo } from '../myLogo';\r\nimport { SaveDesign } from '../saveDesign';\r\nimport {ColorPicker} from '../leftMenu/colorPicker'\r\nexport const MiddleMenu = ({ onApply, onSaveLogo }) => {\r\n const [selectedStepper, toggleSaveLogo, loadingLogo] = use3dddPlus(\r\n (state) => [state.selectedStepper, state.toggleSaveLogo, state.loadingLogo],\r\n shallow\r\n );\r\n React.useEffect(() => {\r\n if (selectedStepper === 2) loadingLogo('');\r\n }, []);\r\n return (\r\n <>\r\n <div className=\" flex flex-col md:flex-row flex-1 z-0 w-[90%] h-full\">\r\n <div className=\"flex w-[70%] h-[100%]\">\r\n <Canvas />\r\n </div>\r\n {toggleSaveLogo.status && <SaveDesign onSaveLogo={onSaveLogo} />}\r\n <div className=\"flex-1 z-[7] h-full\">\r\n <Rightmenu />\r\n </div>\r\n </div>\r\n {selectedStepper === 1 && <UploadLogo />}\r\n {selectedStepper === 4 && <AddMascot />}\r\n {selectedStepper === 2 && <MyLogo onApply={onApply} />}\r\n {selectedStepper === 5 && <ColorPicker />}\r\n </>\r\n );\r\n};\r\n","// FontLoader.ts\r\n\r\nimport { useEffect } from 'react';\r\n\r\nconst FontLoader = ({ fontPath }) => {\r\n useEffect(() => {\r\n const timeStamp = Date.now();\r\n // @ts-ignore\r\n const font = new FontFace(\r\n fontPath.name,\r\n `url('${fontPath.src}?timestamp=${timeStamp})`\r\n );\r\n font\r\n .load()\r\n .then((value) => {\r\n //@ts-ignore\r\n document.fonts?.add(value);\r\n document.body.classList.add('fonts-loaded');\r\n })\r\n .catch((error) => {\r\n console.error('Font is not available', error);\r\n });\r\n }, [fontPath]);\r\n\r\n return null;\r\n};\r\n\r\nexport default FontLoader;\r\n","import { useEffect } from 'react';\r\n\r\nconst LoadGoogleFonts = () => {\r\n useEffect(() => {\r\n // Fetch the fonts JSON\r\n fetch('https://storage.googleapis.com/3ddplusgcp/richardson-customizer/fonts/googleFonts.json')\r\n .then((response) => response.json())\r\n .then((data) => {\r\n console.log(data);\r\n const { fonts } = data;\r\n fonts.forEach((fontUrl) => {\r\n const link = document.createElement('link');\r\n link.href = fontUrl;\r\n link.rel = 'stylesheet';\r\n document.head.appendChild(link);\r\n });\r\n console.log(\"Loaded dsssuuuu...\");\r\n })\r\n .catch((error) => console.error('Error loading fonts:', error));\r\n }, []);\r\n\r\n return null; // This component doesn't render anything\r\n};\r\n\r\nexport default LoadGoogleFonts;\r\n","export const defaultColorNames = [\r\n { color: 'transparent', name: 'Transparent' },\r\n { color: '#040404', name: 'Black' },\r\n { color: '#FFFFFF', name: 'White' },\r\n { color: '#D7DEE2', name: 'Light Silver' },\r\n { color: '#C6C8C8', name: 'Heather Grey' },\r\n { color: '#BDBDC0', name: 'Silver' },\r\n { color: '#6C7A89', name: 'Steel Grey' },\r\n { color: '#5F6162', name: 'Charcoal' },\r\n { color: '#3B4548', name: 'Asphalt' },\r\n { color: '#12242C', name: 'Graphite' },\r\n { color: '#FAF7ED', name: 'Cream' },\r\n { color: '#E9E7D9', name: 'Eggshell' },\r\n { color: '#E9D7B7', name: 'Khaki' },\r\n { color: '#BFA881', name: 'Beige' },\r\n { color: '#C09B7B', name: 'Taupe' },\r\n { color: '#93715B', name: 'Light Brown' },\r\n { color: '#624B36', name: 'Medium Brown' },\r\n { color: '#532D23', name: 'Brown' },\r\n { color: '#482925', name: 'Walnut' },\r\n { color: '#332322', name: 'Dark Walnut' },\r\n { color: '#362519', name: 'Mud' },\r\n { color: '#5F452F', name: 'Bark' },\r\n { color: '#D6D1C3', name: 'Stone' },\r\n { color: '#C2C2B8', name: 'Dark Stone' },\r\n { color: '#BDA998', name: 'Camo Stone' },\r\n { color: '#867E72', name: 'Putty' },\r\n { color: '#766A5B', name: 'Driftwood' },\r\n { color: '#857262', name: 'Desert Brown' },\r\n { color: '#67451F', name: 'Buck Mesh' },\r\n { color: '#824323', name: 'Buck' },\r\n { color: '#8C4522', name: 'Copper' },\r\n { color: '#C16A27', name: 'Toast' },\r\n { color: '#CE8A2D', name: 'Mustard' },\r\n { color: '#CB9E59', name: 'Old Gold' },\r\n { color: '#F4B716', name: 'Dark Cal Gold' },\r\n { color: '#ED9717', name: 'Dark Gold' },\r\n { color: '#FFB81C', name: 'Gold - Ath' },\r\n { color: '#F5DDA2', name: 'Vegas Gold' },\r\n { color: '#DEB66A', name: 'Brass' },\r\n { color: '#EFC78D', name: 'Tan' },\r\n { color: '#F6D75E', name: 'Lt. Cal Gold' },\r\n { color: '#FFF9B7', name: 'Mellow Yellow' },\r\n { color: '#FDED00', name: 'Lemon' },\r\n { color: '#FCC614', name: 'Yellow' },\r\n { color: '#FBB66E', name: 'Honey' },\r\n { color: '#FCAE77', name: 'Light Peach' },\r\n { color: '#F3751F', name: 'Gold Orange' },\r\n { color: '#F5831E', name: 'Tenn. Orange' },\r\n { color: '#E86432', name: 'Salmon' },\r\n { color: '#E45224', name: 'Orange' },\r\n { color: '#94321D', name: 'Texas Orange' },\r\n { color: '#F27D66', name: 'Southern Peach' },\r\n { color: '#F4AC96', name: 'Peach' },\r\n { color: '#F5A2C6', name: 'Cotton Candy' },\r\n { color: '#F283B4', name: 'Pink' },\r\n { color: '#DD2825', name: 'Red-Orange' },\r\n { color: '#B82026', name: 'Red' },\r\n { color: '#7D1523', name: 'Cardinal' },\r\n { color: '#581C28', name: 'Burgundy' },\r\n { color: '#451112', name: 'Maroon' },\r\n { color: '#8E2056', name: 'Violet' },\r\n { color: '#DE1761', name: 'Fuchsia' },\r\n { color: '#CE9F9F', name: 'Light Rose' },\r\n { color: '#AB6B6C', name: 'Dark Rose' },\r\n { color: '#B790C2', name: 'Pale Lilac' },\r\n { color: '#A276B3', name: 'Lavender' },\r\n { color: '#4856A6', name: 'Lilac' },\r\n { color: '#5E1B56', name: 'Grape' },\r\n { color: '#48236E', name: 'Purple' },\r\n { color: '#7BBEE8', name: 'Columbia Blue' },\r\n { color: '#1B91D0', name: 'Sky Blue' },\r\n { color: '#16B1D1', name: 'Aqua' },\r\n { color: '#0A96BD', name: 'Cyan' },\r\n { color: '#0080C1', name: 'Bright Blue' },\r\n { color: '#2481B3', name: 'Baltic Blue' },\r\n { color: '#005F9C', name: 'Air Force Blue' },\r\n { color: '#0D5EA0', name: 'Royal' },\r\n { color: '#163959', name: 'Denim' },\r\n { color: '#0B162E', name: 'Navy' },\r\n { color: '#063E44', name: 'Forest Teal' },\r\n { color: '#8BD6D4', name: 'Aruba Blue' },\r\n { color: '#6AC4CC', name: 'Southern Mint' },\r\n { color: '#007680', name: 'Blue Teal' },\r\n { color: '#007189', name: 'Surf Blue' },\r\n { color: '#53878B', name: 'Bahama Blue' },\r\n { color: '#84B5B2', name: 'Smoke Blue' },\r\n { color: '#00A192', name: 'Green Teal' },\r\n { color: '#05A17E', name: 'Mint' },\r\n { color: '#AADAC9', name: 'Light Mint' },\r\n { color: '#CDE4B4', name: 'Patina Green' },\r\n { color: '#AECBAC', name: 'Willow' },\r\n { color: '#72C164', name: 'Key Lime' },\r\n { color: '#00A34A', name: 'Emerald' },\r\n { color: '#00A84E', name: 'Emerald Maderia' },\r\n { color: '#00643B', name: 'Irish Green' },\r\n { color: '#0B5935', name: 'Kelly' },\r\n { color: '#364D44', name: 'Spruce' },\r\n { color: '#005028', name: 'Dark Green' },\r\n { color: '#004125', name: 'Dark Pine' },\r\n { color: '#3F7336', name: 'Lime Green' },\r\n { color: '#81A046', name: 'D Sport Green' },\r\n { color: '#9BA997', name: 'Spring Green' },\r\n { color: '#89906D', name: 'Light Olive' },\r\n { color: '#667360', name: 'Mute Green' },\r\n { color: '#747C32', name: 'Moss' },\r\n { color: '#3D471F', name: 'Olive' },\r\n { color: '#454126', name: 'Army Olive' },\r\n { color: '#535435', name: 'Loden Mesh' },\r\n { color: '#39392A', name: 'Sage' },\r\n { color: '#59501C', name: 'Army Gold' },\r\n { color: '#BEA82F', name: 'Green Gold' },\r\n { color: '#E64677', name: 'Neon Pink' },\r\n { color: '#F37F95', name: 'Optic Pink' },\r\n { color: '#F04D30', name: 'Blaze Orange' },\r\n { color: '#F26920', name: 'Neon Orange' },\r\n { color: '#F8ED4D', name: 'Neon Yellow' },\r\n { color: '#C6FF19', name: 'Optic Green' },\r\n { color: '#85C44B', name: 'Neon Green' },\r\n];\r\n","import React, { useEffect, useState } from 'react';\r\nimport { Modal } from './components';\r\nimport { ToastContainer, Bounce } from 'react-toastify';\r\nimport { LeftMenu } from './components/leftMenu';\r\nimport { Loader } from './components/loader';\r\nimport { MiddleMenu } from './components/middleMenu';\r\nimport FontLoader from './loaders/FontLoader';\r\nimport { use3dddPlus } from './store';\r\nimport 'react-toastify/dist/ReactToastify.css';\r\nimport './index.css';\r\nimport LoadGoogleFonts from './loaders/GoogleFontLoader';\r\nimport { defaultColorNames } from './assets/colors/colors';\r\n\r\nconst LogoEditor = ({\r\n stepperId,\r\n onApply,\r\n customLogoColorList,\r\n defaultColorList,\r\n logoData,\r\n customerId,\r\n onSaveLogo,\r\n onClose,\r\n options = {}\r\n}) => {\r\n const [\r\n setSelectedStepper,\r\n loading,\r\n myLogoHandler,\r\n toggleSaveLogo\r\n ] = use3dddPlus((state) => [\r\n state.setSelectedStepper,\r\n state.loading,\r\n state.myLogoHandler,\r\n state.toggleSaveLogo,\r\n ]);\r\n const [fontList, setFontList] = useState([]);\r\n\r\n useEffect(() => {\r\n setSelectedStepper(stepperId);\r\n }, [stepperId]);\r\n\r\n useEffect(() => {\r\n setSelectedStepper(stepperId);\r\n if (stepperId === undefined) {\r\n myLogoHandler(logoData);\r\n }\r\n const colorList = (defaultColorList && defaultColorList.length > 0) ? defaultColorList : defaultColorNames;\r\n const availableColorCodes = colorList.map(item => item.color.toUpperCase());\r\n use3dddPlus.setState({\r\n customUploadLogoColorList: customLogoColorList,\r\n defaultColorList: colorList,\r\n customerId: customerId,\r\n availableColorCodes: availableColorCodes,\r\n customOptions: options\r\n });\r\n\r\n fetch(\r\n 'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/fonts/fontFamilies.json'\r\n )\r\n .then((response) => response.json())\r\n .then((data) => {\r\n setFontList(data);\r\n const uniqueFonts = data.filter(\r\n (obj1, index, arr) =>\r\n arr.findIndex((obj2) => obj2.name === obj1.name) === index\r\n );\r\n const sortedFonts = uniqueFonts.sort((a, b) => a.sortOrder - b.sortOrder);\r\n use3dddPlus.setState({\r\n fontFamilies: sortedFonts,\r\n });\r\n })\r\n .catch((error) => console.error('Error fetching font families:', error));\r\n }, [\r\n // stepperId,\r\n // customLogoColorList,\r\n // defaultColorList,\r\n // customerId,\r\n // logoData,\r\n // myLogoHandler,\r\n // setSelectedStepper,\r\n ]);\r\n\r\n return (\r\n <Modal\r\n backdropStyle=\"z-[7]\"\r\n contentStyle=\"top-0 bottom-0 !m-[auto] z-[7] w-[80%] p-0\"\r\n crossOnClick={onClose}\r\n >\r\n <div className={`flex flex-col md:flex-row w-full h-[88vh] ${toggleSaveLogo.status ? \"z-10\" : \"\"}`}>\r\n <ToastContainer\r\n position=\"top-center\"\r\n autoClose={3000}\r\n hideProgressBar\r\n newestOnTop={false}\r\n closeOnClick\r\n rtl={false}\r\n pauseOnFocusLoss\r\n draggable\r\n pauseOnHover\r\n theme=\"colored\"\r\n transition={Bounce}\r\n containerId={\"logoEditor\"}\r\n />\r\n {fontList.map((font, index) => (\r\n <FontLoader key={index} fontPath={font} />\r\n ))}\r\n <LoadGoogleFonts />\r\n {loading && <Loader />}\r\n <div className=\"w-[10%] h-[100%]\">\r\n <LeftMenu />\r\n </div>\r\n <div className=\"flex h-full w-[90%] flex-1\">\r\n <MiddleMenu onApply={onApply} onSaveLogo={onSaveLogo} />\r\n </div>\r\n </div>\r\n </Modal>\r\n );\r\n};\r\n\r\nexport default LogoEditor;\r\n"],"names":["Icon","React","forwardRef","_ref","ref","label","icon","className","props","_objectWithoutPropertiesLoose","_excluded","tooltip","useTooltipState","placement","TooltipReference","as","Button","Tooltip","style","zIndex","IconButton","_ref2","_ref2$size","size","_ref2$icon","undefined","_excluded2","IconContext","Provider","value","HorizontalFlip","GenIcon","tag","attr","xmlns","width","height","viewBox","child","d","VerticalFlip","fill","stroke","transform","Error","cx","cy","r","stroke-linecap","stroke-width","RLogo","id","fillRule","strokeWidth","MyLogo","AddText","FlipH","data-name","clip-path","FlipV","SelectAll","_extends","rx","x","y","Copy","SendToBack","stroke-miterlimit","SendToFront","SendAObject","SendUnderObject","EyeDropper","Delete","SnapToCenter","CustomToast","type","message","toastId","containerId","_C","toast","isActive","console","log","info","toastGen","error","success","warning","toastMessages","deleteLogoSuccess","e","saveSuccess","somethingWentWrong","updateLogoSuccess","updateSuccess","noOfColors","noIteminCanvas","fileSize","noChangesMade","fontsNotAvailable","pleaseSelectTheImage","pleaseSelectTheImageDulpicate","applyLogoColorNotAvailable","decType","saveLogoColorNotAvailable","graphqlSlice","set","get","displayLoginModal","showProductBreakUpModal","status","loadDesignModal","productInfoModal","toggleSaveLogo","key","title","details","showModalAfterLogin","selectedDesign","changeModel","alert","confirmDesignModal","confirmUpdateDesignModal","toggleSuccessfullDesign","designUpdateSuccessfulModal","getListFromRack","setSelectedDesign","selected","setLoadDesignModal","loadDesign","clearLayers","use3dddPlus","setState","storeAllObject","setToggleSaveLogo","setConfirmDesignModal","setConfirmUpdateDesignModal","state","setToggleSuccessfullDesign","setProductInfoModal","editDesignInfo","saveDesignModal","current","getState","navigateTo","logoName","designNotes","logoTag","string","characters","i","charAt","Math","floor","random","length","designNumber","customerId","toggleLoginModal","setShowModalAfterLogin","disableSaveButton","_unused","share","saveRackSuccessfulModal","setSaveRackSuccessfulModal","toggleAction","toogleShowProductBreakUpModal","disableUpdate","productBreakup","logoSearchText","logoSortBy","logoSortDir","logoPageNo","logoPageSize","showCrossSave","baseURL","process","env","REACT_APP_LAMBDA_URL","instance","axios","create","timeout","headers","Content-Type","Authorization","responseBody","response","data","requests","url","then","post","body","config","put","delete","lambdaSlice","_set","_get","lambdaClient","loadingLogo","_loadingLogo","_asyncToGenerator","_regeneratorRuntime","mark","_callee","_data","res","wrap","_context","prev","next","loading","sent","retriveLogoDesign","abrupt","t0","stop","_x","apply","arguments","getStockLogos","_getStockLogos","_callee2","_context2","fabric","Object","prototype","hasControls","hasBorders","stockLogos","saveLogo","_saveLogo","_callee3","logo","_context3","_x2","vectorize","_vectorize","_callee4","formData","_context4","FormData","append","image","_x3","saveDesignSlice","designImageUrl","designProofPdfUrl","designConfig","designId","hasDesignNumber","showSaveCTA","showSaveRackCTA","_oldURL","REACT_APP_IMAGE_URL_OLD","_newURL","REACT_APP_IMAGE_URL","getCookie","cname","name","ca","decodeURIComponent","document","cookie","split","c","substring","indexOf","setCookie","cvalue","exdays","Date","setTime","getTime","expires","toUTCString","clearCookie","encryptToken","CryptoJS","AES","encrypt","JSON","stringify","toString","decryptToken","ciphertext","bytes","decrypt","parse","enc","Utf8","includes","replace","texture","item","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","createElement","appendChild","download","href","click","removeChild","which","keycode","preventDefault","authSlice","customUploadLogoColorList","defaultColorList","availableColorCodes","customOptions","priceLevel","clearLoginInfo","sessionStorage","removeItem","authType","cardCode","customerEmail","customerType","generateCustomizerToken","setInCookies","customizerToken","setItem","setCustomizerToken","getItem","isLoggedIn","historySlice","history","page","concat","goBack","previousPage","pop","fabricSlice","popUpCanvasCount","popupCanvasStoreHistory","availableMascots","filteredMascots","logoData","setLogoData","allColor","selectedStepper","setSelectedStepper","hasUploadScreen","setHasUploadScreen","storeHistory","fabricCanvas","popupCanv","textInfo","uploadImageModalDisplay","mylogoAdded","currentSelection","activeSelection","selectedAll","colorFill","defaultColorFill","loadedObject","defaultColorFillCopy","iconImage","HideControls","tl","tr","bl","br","ml","mt","mr","mb","mtr","showContextMenu","forStoringAllObject","unshift","forIconCapture","activeObject","getActiveObject","dataURL","toDataURL","nameCounter","guid","u","now","repeat","substr","duplicateObject","clipboard","activeObj","clone","cloned","clonedObj","discardActiveObject","evented","canvas","forEachObject","obj","index","_objects","pathData","shapeSize","shapeType","fontFamily","fontWeight","fontSize","charSpacing","textAlign","fontStyle","text","add","setCoords","top","left","setActiveObject","brNew","getBoundingRect","updateModifaction","deleteButtonControls","count","skipEvent","undo","clear","renderAll","loadFromJSON","getObjects","forEach","remove","horizontalLine","Line","scaleX","visible","selectable","verticalLine","centerH","sendToBack","element","redo","abs","sendBackwards","moveDown","moveUp","moveRight","moveLeft","applyColorFill","toJSON","setDefaultColorFill","dcf","setDefaultColorFillCopy","toSet","push","contextMenuCoordinates","stockLogoHandler","logos","loadMascots","loadSVGFromURL","objects","options","util","groupSVGElements","scaleToWidth","scaleToHeight","objImage","_Fills","ele","fillColor","removeDuplicates","fillColors","centerObject","myLogoHandler","fetch","logo_config_url","method","result","loadingRetrivedFiles","bind","backgroundColor","uploadLogoConfig","_uploadLogoConfig","jsonConfig","bucketName","region","S3","microTime","filePath","params","s3UrlPath","REACT_APP_BUCKET","REACT_APP_REGION","AWS","update","accessKeyId","REACT_APP_ACCESSKEY","secretAccessKey","REACT_APP_SECRET_ACCESSKEY","Bucket","Key","Body","ContentType","Promise","resolve","reject","putObject","err","setAvailableMascots","setFilteredMascots","handleMascotObjectFilterValues","event","filterValue","filteredData","filter","tags","displayProductColor","setDisplayProductColor","popUpCanvasAllColor","popUpCanvasApplyColorFill","popUpCanvasUpdateModification","historyObject","json","popUpCanvasUndo","_V","colors","perPixelTargetFind","canvasWidth","canvasHeight","numCols","ceil","numRows","line","lockMovementX","lockMovementY","lockScalingX","lockScalingY","j","rect","Rect","isEvenRow","popUpCanvasRedo","forPopupCanvasReset","forPopupCanvasColor","imageData","lastPosition","setLastPosition","validateColorAvailability","imgColorCodes","allowedColorCodes","validation","colorCode","trim","toUpperCase","fontFamilies","TIFFParser","this","tiffDataView","littleEndian","fileDirectories","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","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","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","pixelSamples","red","green","blue","opacity","k","invertValue","samples","colorMapIndex","fillRect","converterSlice","_convertPdfToImages","_loadImageFromURL","_aiConvert","_tiffConvert","processImage","svgstr","colorValue","canvasToLoad","addCheckerBox","loadSVGFromString","svgData","getDesignConceptSVGData","resItem","node","_resItem$node$childre","_resItem$node$childre2","children","getAttribute","pathStartOffset","parseFloat","startOffset","baseVal","valueAsString","_canvasToLoad","val","minX","fillCounts","colorObjects","_ele$id","sortedFillColors","keys","sort","topColors","colorObjectsHex","RGBToHex","hex","defaultCF","euclideanDistance","color1","color2","c1","Color","getSource","c2","diffG","diffB","sqrt","cf","property","default","updated","colorMap","color","closestColor","reduce","curr","_use3dddPlus$getState","_use3dddPlus$getState2","_use3dddPlus$getState3","textElements","DOMParser","parseFromString","querySelectorAll","textElement","_textElement$parentNo","hrefValue","_textElement$getAttri","parentNode","file","setFile","tiffConvert","tiffParser","canvasEl","tiffCanvas","imageUrl","arrayBuffer","aiConvert","aiFile","REACT_APP_MAGENTO_URL","REACT_APP_MAGENTO_TOKEN","loadImageFromURL","createCheckerBox","blob","loadDesignConcept","_x4","_x5","_resItem$node$childre3","_resItem$node$childre4","object","toObject","extend","call","items","_restoreObjectsState","ungroup","imageToSVG","ext","isSVG","convert","reader","FileReader","onload","target","readAsText","refreshColor","arr","rgb","rgba","parseInt","sep","changeSVGColor","defaultColorObject","find","addText","Text","lineHeight","paintFirst","padding","lockScalingFlip","layer0","layer1","setControlsVisibility","pdfConverter","_resolve","buffer","convertPdfToImages","readAsArrayBuffer","_callee5","pdf","viewport","context","_context5","pdfjsLib","promise","numPages","getPage","getViewport","scale","render","canvasContext","_x6","subscribeWithSelector","actionSlice","datasbase","styleInject","css","insertAt","head","getElementsByTagName","firstChild","insertBefore","styleSheet","cssText","createTextNode","ToolTip","arrowOnTop","_ref$className","ActionButtons","shallow","canvasActions","onClick","sel","ActiveSelection","requestRenderAll","disabled","MdLayers","getActiveObjects","findIndex","splice","CgUndo","CgRedo","justifyContent","CANVAS_MENU_TEXT","NudgeButtons","textSelected","nudgeMove","aCoords","marginTop","marginBottom","version","ContextMenu","_use3dddPlus","menu","onclick","display","bringForward","bringToFront","flipX","originX","toGroup","_canvas$getActiveObje","_canvas$getActiveObje2","canvasRef","useRef","resizeCanvas","getElementById","outerCanvasContainer","containerWidth","clientWidth","getWidth","zoom","getZoom","setWidth","setHeight","clientHeight","setViewportTransform","useEffect","canv","left1","top1","scale1x","scale1y","width1","height1","fontList","Set","fonts","font","family","Array","from","FontFaceObserver","load","Canvas","centeredScaling","preserveObjectStacking","stopContextMenu","isObjectInCenter","canvasCenterX","objCenterX","isObjectInVerticalCenter","canvasCenterY","getHeight","isObjectInHorizontalCenter","deleteImg","crossOrigin","src","rotateImg","settingImg","renderIcon","fabricObject","cornerSize","save","translate","rotate","degreesToRadians","angle","drawImage","restore","objectCaching","transparentCorners","cornerColor","cornerStrokeColor","borderColor","cornerStyle","borderDashArray","traverse","fn","_step","_iterator","_createForOfIteratorHelperLoose","done","_step2","_iterator2","controls","deleteControl","Control","offsetY","offsetX","cursorStyle","mouseUpHandler","eventData","settingControl","getElement","getBoundingClientRect","clientX","clientY","actionHandler","controlsUtils","rotationWithSnapping","actionName","withConnection","getAllColors","on","_e$selected","_e$selected$","_e$selected2","_e$selected2$","isNaN","pointer","max","min","scaleY","lockRotation","centeredRotation","initCanvas","addEventListener","FontFace","_document$fonts","classList","position","border","boxShadow","onBlur","Card","cardClass","CardBody","bodyClass","CardMedia","role","alt","imageClass","backgroundImage","CardTags","tagsClass","CardTitle","titleClass","FileUploadButton","onFileSelect","fileInputRef","_useState","useState","setIsDragging","onDragEnter","onDragLeave","onDragOver","onDrop","droppedFile","dataTransfer","files","htmlFor","MdOutlineFileUpload","_fileInputRef$current","onChange","selectedFile","_event$target$files","accept","ColorPalette","previousColor","_ref$previousClass","previousClass","_ref$mainIndex","mainIndex","handleColorChange","_ref$style","selectColor","setSelectColor","colorList","handleColorClick","TEXT_SIZE_9","ColorBox","boxClass","_ref2$boxClass","background","marginLeft","ColorImpl","mClass","stopPropagation","setDisplayPallet","callback","setPosition","innerHeight","PopUpCanvas","popupCanvas","colorCount","setColorCount","_useState2","colorFillCount","setColorFillCount","_useState3","isRefresh","setIsRefresh","_useState4","isNextClicked","setIsNextClicked","defaultColorFillRef","_useState5","zoomLevel","setZoomLevel","_useState6","displayPallet","_useState7","hasPallet","_defaultColorFill$fin","setTimeout","onColorUpdate","removeColorPalatte","cursorUrl","popupcanvas","defaultCursor","hoverCursor","_popupcanvas$getObjec","flat","Boolean","toActiveSelection","viewportCenter","Initpopup","removedColors","defaultColorsCopy","rc","dc","removeEventListener","canvasPan","direction","relativePan","Point","conflictColors","useMemo","newZoomLevel","center","getCenter","zoomToPoint","x1","x2","y1","y2","currentColors","colorFromDefaultCopy","dcc","resetHandler","overflow","alignItems","Number","CgArrowRight","onSelectColor","cursor","GiDrop","handleChange","MdOutlineCancel","bottom","right","mixBlendMode","objs","alltogetherObj","Group","onContinue","mainClass","UploadLogo","setSelectedFile","svgConverter","lastIndexOf","s3_file_url","svgText","ex","svg_url","Searchbar","searchBarMainClass","placeholder","onKeyPress","onPaste","currentTarget","focus","Modal","contentStyle","crossOnClick","modalStyle","backdropStyle","open","RxCross2","SortAndFilterButton","icons","buttonLabelClass","SortByDropdown","sortOptions","isDropdownOpen","setIsDropdownOpen","dropdownRef","toggleDropdown","handleOutsideClick","contains","BsSortDown","option","sortBy","sortDir","onApply","_React$useState","logoSelected","setLogoSelected","scrollEnd","setScrollEnd","morePages","setMorePages","myRef","debouncedSearchText","milliSeconds","debouncedValue","setDebouncedValue","handler","clearTimeout","useDebounce","handleScroll","useCallback","scrollY","scrollTop","scrollHeight","fetchData","fetchSvgImageColors","_ref4","svgUrl","parser","svgDoc","elementsWithColors","extractedColors","strokeColor","styleProps","extractStyles","rgbToHex","match","styleRegex","exec","rgbArray","_rgbArray$map","padStart","handleApplyLogo","_ref5","_customOptions$decora","logo_svg_url","decorationType","onScroll","_logo$tag","_logo$tag$split","_logo$tag$split$filte","logo_id","logo_url","BsCheckLg","_ref$label","_ref$iconPosition","iconPosition","checkMarkClass","IoMdCheckmarkCircle","downloadClass","iconClass","pdfUrl","downloadIconClass","HiOutlineDownload","flagClass","flag","descriptionClass","InputImpl","buttons","buttonMainClass","button","buttonClass","headingStyle","labelStyle","onIconClick","iconStyle","LeftMenu","StepperList","FaRegImage","BiSolidColorFill","TEXT_COLOR_1","SELECT_TEXT_COLOR","step","SELECT_BG_COLOR","Loader","_ref$position","_ref$height","loaderRef","UpIcon","DownIcon","DeleteIcon","Layers","onSave","changeArr","fromIndex","toIndex","layerHandle","currentObject","margin","deleteElement","textShapes","tabs","warpTypes","None","Arc","Bridge","Bowtie","Vertical Arch","Reverse Vertical Arch","textProperties","errorPopup","TextProperties","onTextChange","fontChange","textStyle","textColorChange","textAlignDisplay","activeButton","textAlignHandler","textOutlineHandler","strokeColorChange","textSpacingHandler","textShapeChange","shapeSizeVal","textShapeSizeHandler","INPUT_BG_COLOR","list","underline","FiAlignLeft","FiAlignCenter","FiAlignRight","ErrorColorDiv","Properties","activeTab","setTextAlignDisplay","bold","italic","setFontStyle","setActiveButton","setShapeSizeVal","textLength","setTextLength","bridgeshapeBendSize","setBridgeShapeBendSize","bowtieshapeBendSize","setBowtieShapeBendSize","_ref3","textValue","lines","isFontWithCamelCase","formattedText","Configuration","fontWithCamelCase","reduceFontSize","changeSVGTextColor","setPropertyColor","setColorFill","_ref6","_updated","_updated3","_updated5","SelectedObjet","tempColorFill","textToPath","_ref7","promises","pathObj","fontSource","o","getPath","fabricPath","Path","toPathData","all","bridgeShapeChange","_ref8","textChange","p","_text","dims","newTextPath","_dims","toClipPathSVG","_removeCacheCanvas","updateStoreAllObject","warp","bend","output","_calcDimensions","_x7","_x8","_x9","_x10","_x11","_x12","_ref9","_callee6","_activeObj","_context6","mergedColors","_Object$keys","tempColors","uniqueColors","_property","activeText","newSize","valueAsNumber","warpType","prop","applyTextProperties","dimensions","setNewPathDimensions","setShapeSizeOnTextPath","dublicateText","oldCharSpacing","_extends2","_Object$keys2","ErrorPopup","t","s","h","exports","l","defineProperty","configurable","enumerable","n","__esModule","hasOwnProperty","_class","source","A","B","C","D","Aleft","Atop","Btop","Bright","Cright","Cbottom","Dbottom","Dleft","ABx","ABy","CDx","CDy","BCx","BCy","ADx","ADy","STEPS","distortX","distortY1","distortY2","T1","T2","kAB","kBC","kCD","kAD","applyParameters","_proto","_parameters","PI","sin","cos","kt","distortV","distortH","setAnchors","setArc","setArcLower","setArcUpper","setArch","setBulge","setFlag","setFish","setRise","setInflate","setSqueeze","setWaveLower","setWaveUpper","setControls","changeCubic","_changePoint","getPointOn","getNewSegment","changePoint","calculateArms","_class2","Exception","_props","vertical","commands","parseString","_proto2","calcRectangle","xMin","yMin","xMax","yMax","Rightmenu","initTE","Tab","setActiveTab","removeColorPalette","unSub","subscribe","_current","_previous","tab","DropdownIndicator","components","control","base","&:hover","isSelected","isFocused",":active","ListDropdown","dropdownData","handleSelected","setData","Select","defaultValue","isSearchable","IndicatorSeparator","styles","decorationData","code","description","linkedNodes","threeD","thumbnail","AddMascot","flatMap","mascot","labelClass","labelSpan","dropdownClass","dropdownLiClass","LogoEditorSaveDesignModal","CustomInput","customLabelStyle","customInputStyle","FloatingLabel","variant","onKeyDown","theme","outlined","sm","md","input","helperText","SaveDesign","onSaveLogo","designNameValidation","setDesignNameValidation","tempCanvas","commaInTagName","setCommaInTagName","tagNameLength","setTagNameLength","isSaving","setIsSaving","closeModal","tagName","setTagName","onSaveHandler","canvasGetobject","pathTextsData","selectAllCanvasObjects","canvasData","pathTextsKeys","dataCh","S3UrlPath","canvasSvg","raw","nameValidation","_obj$_objects","group","originY","clonedGroup","boundingRect","paddedHeight","dispose","round","assign","toSVG","customer_id","base64_image","svg_image","test","handleKeyDown","keyCode","regTest","handleAdd","handleBackspace","handleNameChange","newList","_e$target","_e$target$value","trimStart","_e$target2","_e$target2$value","isArray","el","TEXT_SIZE_12","EDIT_DESIGN_INFO_TEXT_COLOR_1","_event$target","OutsideAlerter","wrapperRef","handleClickOutside","handleEscape","ColorPicker","setCurrentColor","ChromePicker","disableAlpha","onClose","MiddleMenu","FontLoader","fontPath","timeStamp","LoadGoogleFonts","fontUrl","rel","defaultColorNames","stepperId","customLogoColorList","_ref$options","setFontList","sortedFonts","obj1","obj2","sortOrder","ToastContainer","autoClose","hideProgressBar","newestOnTop","closeOnClick","rtl","pauseOnFocusLoss","draggable","pauseOnHover","transition","Bounce"],"mappings":"2jSASMA,EAAOC,EAAMC,YACjB,SAAAC,EAAuCC,OAApCC,EAAKF,EAALE,MAAOC,EAAIH,EAAJG,KAAMC,EAASJ,EAATI,UAAcC,EAAKC,EAAAN,EAAAO,GAC3BC,EAAUC,kBAAgB,CAAEC,UAAW,QAC7C,OACEZ,gCACEA,gBAACa,kCACCV,IAAKA,GACDI,EACAG,GACJI,GAAIC,SACJT,UAAcA,4JACFF,IAEXC,GAEFD,GAAmB,KAAVA,GACRJ,gBAACgB,2BACKN,GACJJ,ofACAW,MAAO,CAAEC,OAAQ,MAEhBd,OAQAe,EAAa,SAAHC,OACrBhB,EAAKgB,EAALhB,MAEAE,EAASc,EAATd,UAASe,EAAAD,EACTE,KAAAA,WAAID,EAAG,OAAMA,EAAAE,EAAAH,EACbf,KAAAA,WAAIkB,OAAGC,EAASD,EACbhB,EAAKC,EAAAY,EAAAK,GAER,OACEzB,gBAAC0B,cAAYC,UACXC,MAAO,CACLN,KAAMA,EACNhB,UAAW,uCAGbN,gBAACD,iBAAKK,MAAOA,EAAOC,KAAMA,EAAMC,UAAWA,GAAeC,MCnDnDsB,EAAiB,SAACtB,GAC5B,OAAOuB,UAAQ,CACbC,IAAK,MACLC,KAAM,CACJC,MAAO,6BACPC,MAAO,SACPC,OAAQ,SACRC,QAAS,qBAEXC,MAAO,CAkBL,CACEN,IAAK,IACLC,KAAM,GACNK,MAAO,CACL,CACEN,IAAK,OACLC,KAAM,CAAEM,EAAG,2CACXD,MAAO,IAET,CACEN,IAAK,OACLC,KAAM,CACJM,EAAG,4EAELD,MAAO,IAET,CACEN,IAAK,OACLC,KAAM,CAAEM,EAAG,iCACXD,MAAO,IAET,CACEN,IAAK,OACLC,KAAM,CAAEM,EAAG,qCACXD,MAAO,IAET,CACEN,IAAK,OACLC,KAAM,CAAEM,EAAG,mCACXD,MAAO,IAET,CACEN,IAAK,OACLC,KAAM,CAAEM,EAAG,sCACXD,MAAO,IAET,CACEN,IAAK,OACLC,KAAM,CAAEM,EAAG,sCACXD,MAAO,IAET,CACEN,IAAK,OACLC,KAAM,CAAEM,EAAG,sCACXD,MAAO,IAET,CACEN,IAAK,OACLC,KAAM,CAAEM,EAAG,oCACXD,MAAO,QA3EVP,CAgFJvB,ICjFOgC,EAAe,SAAChC,GAC3B,OAAOuB,UAAQ,CACbC,IAAK,MACLC,KAAM,CACJC,MAAO,6BACPC,MAAO,KACPC,OAAQ,KACRC,QAAS,aAEXC,MAAO,CACL,CACEN,IAAK,IACLC,KAAM,GACNK,MAAO,CACL,CACEN,IAAK,IACLC,KAAM,CAAEQ,KAAM,OAAQC,OAAQ,WAC9BJ,MAAO,CACL,CACEN,IAAK,OACLC,KAAM,CACJM,EAAG,gBACHG,OAAQ,QAEVJ,MAAO,IAET,CACEN,IAAK,OACLC,KAAM,CACJQ,KAAM,OACNF,EAAG,mBAELD,MAAO,MAIb,CACEN,IAAK,IACLC,KAAM,GACNK,MAAO,CACL,CACEN,IAAK,IACLC,KAAM,CACJU,UAAW,4BAEbL,MAAO,CACL,CACEN,IAAK,OACLC,KAAM,CACJM,EAAG,iCAELD,MAAO,IAET,CACEN,IAAK,OACLC,KAAM,CACJM,EAAG,uFAELD,MAAO,IAET,CACEN,IAAK,OACLC,KAAM,CACJM,EAAG,iCAELD,MAAO,IAET,CACEN,IAAK,OACLC,KAAM,CACJM,EAAG,qCAELD,MAAO,IAET,CACEN,IAAK,OACLC,KAAM,CACJM,EAAG,mCAELD,MAAO,IAET,CACEN,IAAK,OACLC,KAAM,CACJM,EAAG,sCAELD,MAAO,IAET,CACEN,IAAK,OACLC,KAAM,CACJM,EAAG,sCAELD,MAAO,IAET,CACEN,IAAK,OACLC,KAAM,CACJM,EAAG,oCAELD,MAAO,IAET,CACEN,IAAK,OACLC,KAAM,CACJM,EAAG,oCAELD,MAAO,YA1GlBP,CAmHJvB,ICpHQoC,EAAQ,SAACpC,GACpB,OAAOuB,UAAQ,CACbC,IAAK,MACLC,KAAM,CACJC,MAAO,6BACPC,MAAO,KACPC,OAAQ,KACRC,QAAS,aAEXC,MAAO,CACL,CACEN,IAAK,IACLC,KAAM,CAAEU,UAAW,wBACnBL,MAAO,CACL,CACEN,IAAK,SACLC,KAAM,CACJY,GAAI,KACJC,GAAI,KACJC,EAAG,KACHJ,UAAW,qBACXF,KAAM,WAERH,MAAO,IAET,CACEN,IAAK,IACLC,KAAM,GACNK,MAAO,CACL,CACEN,IAAK,IACLC,KAAM,CACJQ,KAAM,OACNC,OAAQ,OACRM,iBAAkB,QAClBC,eAAgB,KAElBX,MAAO,CACL,CACEN,IAAK,OACLC,KAAM,CAAEM,EAAG,gCACXD,MAAO,IAET,CACEN,IAAK,OACLC,KAAM,CAAEM,EAAG,gCACXD,MAAO,YA7ClBP,CAsDJvB,ICvDQ0C,EAAQ,SAAC1C,GACpB,OAAOuB,UAAQ,CACbC,IAAK,MACLC,KAAM,CACJC,MAAO,6BACPC,MAAO,SACPC,OAAQ,SACRC,QAAS,qBAEXC,MAAO,CACL,CACEN,IAAK,IACLC,KAAM,GACNK,MAAO,CACL,CACEN,IAAK,IACLC,KAAM,CAAEkB,GAAI,KACZb,MAAO,CACL,CACEN,IAAK,OACLC,KAAM,CACJQ,KAAM,OACNW,SAAU,UACVT,UAAU,oBACVJ,EAAG,yMAELD,MAAO,IAET,CACEN,IAAK,OACLC,KAAM,CACJQ,KAAM,OACNC,OAAQ,OACRU,SAAU,UACVT,UAAU,2BACVU,YAAa,MACbd,EAAG,4MAELD,MAAO,IAET,CACEN,IAAK,OACLC,KAAM,CACJQ,KAAM,OACNW,SAAU,UACVT,UAAU,2BACVJ,EAAG,s0BAELD,MAAO,UA/CdP,CAsDJvB,ICvDQ8C,EAAS,SAAC9C,GACrB,OAAOuB,UAAQ,CACbC,IAAK,MACLC,KAAM,CACJC,MAAO,6BACPC,MAAO,SACPC,OAAQ,SACRC,QAAS,qBAEXC,MAAO,CACL,CACEN,IAAK,IACLC,KAAM,GACNK,MAAO,CACL,CACEN,IAAK,IACLC,KAAM,CAAEkB,GAAI,KACZb,MAAO,CACL,CACEN,IAAK,OACLC,KAAM,CACJoB,YAAY,IACZd,EAAG,2gEAELD,MAAO,IAET,CACEN,IAAK,OACLC,KAAM,CACJM,EAAG,2KAELD,MAAO,IAET,CACEN,IAAK,OACLC,KAAM,CACJM,EAAG,uIAELD,MAAO,IAET,CACEN,IAAK,OACLC,KAAM,CACJM,EAAG,yIAELD,MAAO,IAET,CACEN,IAAK,OACLC,KAAM,CACJQ,KAAM,UAENW,SAAU,UAEVT,UAAW,8BACXJ,EAAG,mJAELD,MAAO,UAxDdP,CA+DJvB,IChEQ+C,EAAU,SAAC/C,GACtB,OAAOuB,UAAQ,CACbC,IAAK,MACLC,KAAM,CACJC,MAAO,6BACPC,MAAO,KACPC,OAAQ,KACRC,QAAS,aAGXC,MAAO,CACL,CACEN,IAAK,IACLC,KAAM,GACNK,MAAO,CACL,CACEN,IAAK,OACLC,KAAM,CACJM,EAAG,8JAELD,MAAO,IAET,CACEN,IAAK,OACLC,KAAM,CACJM,EAAG,2LAELD,MAAO,QA1BVP,CA+BJvB,ICjCQgD,EAAQ,SAAChD,GACpB,OAAOuB,UAAQ,CACbC,IAAK,MACLC,KAAM,CACJC,MAAO,6BACPC,MAAO,KACPC,OAAQ,SACRC,QAAS,iBAEXC,MAAO,CACL,CACEN,IAAK,OACLC,KAAM,GACNK,MAAO,CACL,CACEN,IAAK,WACLC,KAAM,CAAEkB,GAAI,aACZb,MAAO,CACL,CACEN,IAAK,OACLC,KAAM,CACJkB,GAAI,gBACJM,YAAa,gBACbtB,MAAO,KACPC,OAAQ,SACRK,KAAM,WAERH,MAAO,QAMjB,CACEN,IAAK,IACLC,KAAM,CACJkB,GAAI,aACJM,YAAa,aACbd,UAAW,oCAEbL,MAAO,CACL,CACEN,IAAK,IACLC,KAAM,CACJkB,GAAI,YACJM,YAAa,YACbd,UAAW,iBACXe,YAAa,mBAEfpB,MAAO,CACL,CACEN,IAAK,OACLC,KAAM,CACJkB,GAAI,YACJM,YAAa,YACblB,EAAG,2BACHI,UAAW,qBACXF,KAAM,WAERH,MAAO,IAET,CACEN,IAAK,OACLC,KAAM,CACJkB,GAAI,YACJM,YAAa,YACblB,EAAG,wEACHI,UAAW,yBACXF,KAAM,WAERH,MAAO,IAET,CACEN,IAAK,OACLC,KAAM,CACJkB,GAAI,gBACJM,YAAa,gBACbtB,MAAO,QACPC,OAAQ,QACRO,UAAW,2BACXF,KAAM,WAERH,MAAO,IAET,CACEN,IAAK,OACLC,KAAM,CACJkB,GAAI,gBACJM,YAAa,gBACbtB,MAAO,QACPC,OAAQ,QACRO,UAAW,2BACXF,KAAM,WAERH,MAAO,IAET,CACEN,IAAK,OACLC,KAAM,CACJkB,GAAI,gBACJM,YAAa,gBACbtB,MAAO,QACPC,OAAQ,QACRO,UAAW,2BACXF,KAAM,WAERH,MAAO,IAET,CACEN,IAAK,OACLC,KAAM,CACJkB,GAAI,gBACJM,YAAa,gBACbtB,MAAO,QACPC,OAAQ,QACRO,UAAW,0BACXF,KAAM,WAERH,MAAO,IAET,CACEN,IAAK,OACLC,KAAM,CACJkB,GAAI,gBACJM,YAAa,gBACbtB,MAAO,QACPC,OAAQ,QACRO,UAAW,0BACXF,KAAM,WAERH,MAAO,IAET,CACEN,IAAK,OACLC,KAAM,CACJkB,GAAI,gBACJM,YAAa,gBACbtB,MAAO,QACPC,OAAQ,QACRO,UAAW,0BACXF,KAAM,WAERH,MAAO,IAET,CACEN,IAAK,OACLC,KAAM,CACJkB,GAAI,gBACJM,YAAa,gBACbtB,MAAO,QACPC,OAAQ,QACRO,UAAW,sBACXF,KAAM,WAERH,MAAO,UAzJdP,CAgKJvB,IC/JQmD,EAAQ,SAACnD,GACpB,OAAOuB,UAAQ,CACbC,IAAK,MACLC,KAAM,CACJC,MAAO,6BACPC,MAAO,SACPC,OAAQ,KACRC,QAAS,iBAEXC,MAAO,CACL,CACEN,IAAK,OACLC,KAAM,GACNK,MAAO,CACL,CACEN,IAAK,WACLC,KAAM,CAAEkB,GAAI,aACZb,MAAO,CACL,CACEN,IAAK,OACLC,KAAM,CACJkB,GAAI,gBACJM,YAAa,gBACbtB,MAAO,KACPC,OAAQ,SACRK,KAAM,WAERH,MAAO,QAMjB,CACEN,IAAK,IACLC,KAAM,CACJkB,GAAI,aACJM,YAAa,aACbd,UAAW,+BAEbL,MAAO,CACL,CACEN,IAAK,IACLC,KAAM,CACJkB,GAAI,YACJM,YAAa,YACbd,UAAW,iBACXe,YAAa,mBAEfpB,MAAO,CACL,CACEN,IAAK,OACLC,KAAM,CACJkB,GAAI,YACJM,YAAa,YACblB,EAAG,2BACHI,UAAW,qBACXF,KAAM,WAERH,MAAO,IAET,CACEN,IAAK,OACLC,KAAM,CACJkB,GAAI,YACJM,YAAa,YACblB,EAAG,wEACHI,UAAW,yBACXF,KAAM,WAERH,MAAO,IAET,CACEN,IAAK,OACLC,KAAM,CACJkB,GAAI,gBACJM,YAAa,gBACbtB,MAAO,QACPC,OAAQ,QACRO,UAAW,2BACXF,KAAM,WAERH,MAAO,IAET,CACEN,IAAK,OACLC,KAAM,CACJkB,GAAI,gBACJM,YAAa,gBACbtB,MAAO,QACPC,OAAQ,QACRO,UAAW,2BACXF,KAAM,WAERH,MAAO,IAET,CACEN,IAAK,OACLC,KAAM,CACJkB,GAAI,gBACJM,YAAa,gBACbtB,MAAO,QACPC,OAAQ,QACRO,UAAW,2BACXF,KAAM,WAERH,MAAO,IAET,CACEN,IAAK,OACLC,KAAM,CACJkB,GAAI,gBACJM,YAAa,gBACbtB,MAAO,QACPC,OAAQ,QACRO,UAAW,0BACXF,KAAM,WAERH,MAAO,IAET,CACEN,IAAK,OACLC,KAAM,CACJkB,GAAI,gBACJM,YAAa,gBACbtB,MAAO,QACPC,OAAQ,QACRO,UAAW,0BACXF,KAAM,WAERH,MAAO,IAET,CACEN,IAAK,OACLC,KAAM,CACJkB,GAAI,gBACJM,YAAa,gBACbtB,MAAO,QACPC,OAAQ,QACRO,UAAW,0BACXF,KAAM,WAERH,MAAO,IAET,CACEN,IAAK,OACLC,KAAM,CACJkB,GAAI,gBACJM,YAAa,gBACbtB,MAAO,QACPC,OAAQ,QACRO,UAAW,sBACXF,KAAM,WAERH,MAAO,UAzJdP,CAgKJvB,ICnKQoD,EAAY,SAACpD,GACxB,OAAOuB,UAAQ,CACbC,IAAK,MAELC,KAAI4B,GACF3B,MAAO,6BACPC,MAAO,SACPC,OAAQ,SACRC,QAAS,oBACT9B,UAAW,SACRC,GAEL8B,MAAO,CACL,CACEN,IAAK,IACLC,KAAM,CAAEwB,YAAa,cACrBnB,MAAO,CACL,CACEN,IAAK,IACLC,KAAM,CACJQ,KAAM,OACNC,OAAQ,UACRW,YAAa,KAEff,MAAO,CACL,CACEN,IAAK,OACLC,KAAM,CAAEE,MAAO,KAAMC,OAAQ,KAAM0B,GAAI,IAAKpB,OAAQ,QACpDJ,MAAO,IAET,CACEN,IAAK,OACLC,KAAM,CACJ8B,EAAG,MACHC,EAAG,MACH7B,MAAO,OACPC,OAAQ,OACR0B,GAAI,QAENxB,MAAO,MAIb,CACEN,IAAK,OACLC,KAAM,CACJM,EAAG,2PACHhC,UAAW,8BAEb+B,MAAO,IAET,CACEN,IAAK,OACLC,KAAM,CACJM,EAAG,6UACHhC,UAAW,8BAEb+B,MAAO,QAxDVP,CA6DJvB,IC7DQyD,EAAO,SAACzD,GACnB,OAAOuB,UAAQ,CACbC,IAAK,MACLC,KAAM,CACJkB,GAAI,QACJjB,MAAO,6BACPC,MAAO,SACPC,OAAQ,SACRC,QAAS,qBAEXC,MAAO,CACL,CACEN,IAAK,OACLC,KAAM,CACJkB,GAAI,YACJM,YAAa,YACblB,EAAG,+jBACHE,KAAM,WAERH,MAAO,MAlBNP,CAqBJvB,ICtBQ0D,EAAa,SAAC1D,GACzB,OAAOuB,UAAQ,CACbC,IAAK,MACLC,KAAM,CACJC,MAAO,6BACPC,MAAO,SACPC,OAAQ,SACRC,QAAS,qBAEXC,MAAO,CACL,CACEN,IAAK,IACLC,KAAM,CACJkB,GAAI,YACJM,YAAa,YACbd,UAAW,kCAEbL,MAAO,CACL,CACEN,IAAK,OACLC,KAAM,CACJkB,GAAI,YACJM,YAAa,YACblB,EAAG,wBACHI,UAAW,kCACXF,KAAM,WAERH,MAAO,IAET,CACEN,IAAK,OACLC,KAAM,CACJkB,GAAI,gBACJM,YAAa,gBACbtB,MAAO,QACPC,OAAQ,QACRO,UAAW,iCACXF,KAAM,OACNC,OAAQ,UACRyB,oBAAqB,KACrBlB,eAAgB,KAElBX,MAAO,IAET,CACEN,IAAK,OACLC,KAAM,CACJkB,GAAI,gBACJM,YAAa,gBACbtB,MAAO,QACPC,OAAQ,QACRO,UAAW,kCACXF,KAAM,OACNC,OAAQ,UACRyB,oBAAqB,KACrBlB,eAAgB,KAElBX,MAAO,QAxDVP,CA6DJvB,IC9DQ4D,GAAc,SAAC5D,GAC1B,OAAOuB,UAAQ,CACbC,IAAK,MACLC,KAAM,CACJC,MAAO,6BACPC,MAAO,SACPC,OAAQ,SACRC,QAAS,qBAEXC,MAAO,CACL,CACEN,IAAK,IACLC,KAAM,CACJkB,GAAI,YACJM,YAAa,YACbd,UAAW,iCAEbL,MAAO,CACL,CACEN,IAAK,IACLC,KAAM,CACJkB,GAAI,YACJM,YAAa,YACbd,UAAW,+BAEbL,MAAO,CACL,CACEN,IAAK,IACLC,KAAM,CACJkB,GAAI,YACJM,YAAa,YACbd,UAAW,kBAEbL,MAAO,CACL,CACEN,IAAK,IACLC,KAAM,CACJkB,GAAI,YACJM,YAAa,aAEfnB,MAAO,CACL,CACEN,IAAK,OACLC,KAAM,CACJkB,GAAI,gBACJM,YAAa,gBACbtB,MAAO,QACPC,OAAQ,QACRO,UAAW,yBACXF,KAAM,OACNC,OAAQ,UACRyB,oBAAqB,KACrBlB,eAAgB,KAElBX,MAAO,IAET,CACEN,IAAK,OACLC,KAAM,CACJkB,GAAI,gBACJM,YAAa,gBACbtB,MAAO,QACPC,OAAQ,QACRO,UAAW,2BACXF,KAAM,OACNC,OAAQ,UACRyB,oBAAqB,KACrBlB,eAAgB,KAElBX,MAAO,QAMjB,CACEN,IAAK,OACLC,KAAM,CACJkB,GAAI,gBACJM,YAAa,gBACbtB,MAAO,SACPC,OAAQ,SACRO,UAAW,wBACXF,KAAM,WAERH,MAAO,UApFdP,CA2FJvB,IC7FQ6D,GAAc,SAAC7D,GAC1B,OAAOuB,UAAQ,CACbC,IAAK,MACLC,KAAM,CACJC,MAAO,6BACPC,MAAO,SACPC,OAAQ,SACRC,QAAS,qBAEXC,MAAO,CACL,CACEN,IAAK,IACLC,KAAM,CACJkB,GAAI,YACJM,YAAa,YACbd,UAAW,iCAEbL,MAAO,CACL,CACEN,IAAK,IACLC,KAAM,CACJkB,GAAI,YACJM,YAAa,YACbd,UAAW,+BAEbL,MAAO,CACL,CACEN,IAAK,IACLC,KAAM,CACJkB,GAAI,YACJM,YAAa,YACbd,UAAW,4BAEbL,MAAO,CACL,CACEN,IAAK,OACLC,KAAM,CACJkB,GAAI,gBACJM,YAAa,gBACbtB,MAAO,KACPC,OAAQ,KACRO,UAAW,yBACXF,KAAM,OACNC,OAAQ,UACRyB,oBAAqB,KACrBlB,eAAgB,KAElBX,MAAO,QAMjB,CACEN,IAAK,OACLC,KAAM,CACJkB,GAAI,gBACJM,YAAa,gBACbtB,MAAO,KACPC,OAAQ,KACRO,UAAW,8BACXF,KAAM,WAERH,MAAO,QA9DVP,CAmEJvB,ICpEQ8D,GAAkB,SAAC9D,GAC9B,OAAOuB,UAAQ,CACbC,IAAK,MACLC,KAAM,CACJC,MAAO,6BACPC,MAAO,SACPC,OAAQ,SACRC,QAAS,qBAEXC,MAAO,CACL,CACEN,IAAK,IACLC,KAAM,CACJkB,GAAI,YACJM,YAAa,YACbd,UAAW,iCAEbL,MAAO,CACL,CACEN,IAAK,OACLC,KAAM,CACJkB,GAAI,gBACJM,YAAa,gBACbtB,MAAO,KACPC,OAAQ,KACRO,UAAW,8BACXF,KAAM,WAERH,MAAO,IAET,CACEN,IAAK,IACLC,KAAM,CACJkB,GAAI,YACJM,YAAa,YACbd,UAAW,+BAEbL,MAAO,CACL,CACEN,IAAK,IACLC,KAAM,CACJkB,GAAI,YACJM,YAAa,YACbd,UAAW,4BAEbL,MAAO,CACL,CACEN,IAAK,OACLC,KAAM,CACJkB,GAAI,gBACJM,YAAa,gBACbtB,MAAO,KACPC,OAAQ,KACRO,UAAW,yBACXF,KAAM,OACNC,OAAQ,UACRyB,oBAAqB,KACrBlB,eAAgB,KAElBX,MAAO,YA1DlBP,CAmEJvB,ICnEQ+D,GAAa,SAAC/D,GACzB,OAAOuB,UAAQ,CACbC,IAAK,MACLC,KAAM,CACJC,MAAO,6BACPC,MAAO,SACPC,OAAQ,QACRC,QAAS,oBAEXC,MAAO,CACL,CACEN,IAAK,OACLC,KAAM,GACNK,MAAO,CACL,CACEN,IAAK,WACLC,KAAM,CAAEkB,GAAI,KACZb,MAAO,CACL,CACEN,IAAK,OACLC,KAAM,CAAEM,EAAG,wBACXD,MAAO,QAMjB,CACEN,IAAK,IACLC,KAAM,CAAEyB,YAAa,WACrBpB,MAAO,CACL,CACEN,IAAK,OACLC,KAAM,CACJM,EAAG,q0BAELD,MAAO,IAET,CACEN,IAAK,OACLC,KAAM,CACJM,EAAG,oQAELD,MAAO,QA1CVP,CA+CJvB,ICjDQgE,GAAS,SAAChE,GACrB,OAAOuB,UAAQ,CACbC,IAAK,MACLC,KAAI4B,GACFV,GAAI,QACJjB,MAAO,6BACPC,MAAO,KACPC,OAAQ,KACRC,QAAS,aACN7B,GAEL8B,MAAO,CACL,CACEN,IAAK,OACLC,KAAM,CACJkB,GAAI,YACJM,YAAa,YACblB,EAAG,uDAELD,MAAO,IAET,CACEN,IAAK,OACLC,KAAM,CACJkB,GAAI,YACJM,YAAa,YACblB,EAAG,wDAELD,MAAO,IAET,CACEN,IAAK,OACLC,KAAM,CACJkB,GAAI,YACJM,YAAa,YACblB,EAAG,2KAELD,MAAO,MApCNP,CAuCJvB,ICtCQiE,GAAe,SAACjE,GAC3B,OAAOuB,UAAQ,CACbC,IAAK,MACLC,KAAM,CACJkB,GAAI,aACJM,YAAa,aACbvB,MAAO,6BACPC,MAAO,KACPC,OAAQ,SACRC,QAAS,iBAEXC,MAAO,CACL,CACEN,IAAK,IACLC,KAAM,CACJkB,GAAI,aACJM,YAAa,cAEfnB,MAAO,CACL,CACEN,IAAK,OACLC,KAAM,CACJkB,GAAI,YACJM,YAAa,YACblB,EAAG,+QACHI,UAAW,wBACXF,KAAM,WAERH,MAAO,IAET,CACEN,IAAK,OACLC,KAAM,CACJkB,GAAI,YACJM,YAAa,YACblB,EAAG,mQACHI,UAAW,iBACXF,KAAM,WAERH,MAAO,IAET,CACEN,IAAK,OACLC,KAAM,CACJkB,GAAI,YACJM,YAAa,YACblB,EAAG,yWACHI,UAAW,+BACXF,KAAM,WAERH,MAAO,IAET,CACEN,IAAK,OACLC,KAAM,CACJkB,GAAI,YACJM,YAAa,YACblB,EAAG,4RACHI,UAAW,yBACXF,KAAM,WAERH,MAAO,IAET,CACEN,IAAK,OACLC,KAAM,CACJkB,GAAI,YACJM,YAAa,YACblB,EAAG,iJACHI,UAAW,+BACXF,KAAM,WAERH,MAAO,IAET,CACEN,IAAK,OACLC,KAAM,CACJkB,GAAI,YACJM,YAAa,YACblB,EAAG,yFACHI,UAAW,8BACXF,KAAM,WAERH,MAAO,IAET,CACEN,IAAK,OACLC,KAAM,CACJkB,GAAI,YACJM,YAAa,YACblB,EAAG,wFACHI,UAAW,6BACXF,KAAM,WAERH,MAAO,IAET,CACEN,IAAK,OACLC,KAAM,CACJkB,GAAI,YACJM,YAAa,YACblB,EAAG,2DACHI,UAAW,+BACXF,KAAM,WAERH,MAAO,I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"}
|
1
|
+
{"version":3,"file":"logoeditor.cjs.production.min.js","sources":["../src/components/icon/icon.tsx","../src/components/icon/horizontalFlip.tsx","../src/components/icon/verticalFlip.tsx","../src/components/icon/error.tsx","../src/components/icon/rLogo.tsx","../src/components/icon/myLogo.tsx","../src/components/icon/addText.tsx","../src/components/icon/flipH.tsx","../src/components/icon/flipV.tsx","../src/components/icon/selectAll.tsx","../src/components/icon/copy.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/icon/snapToCenter.tsx","../src/components/customToast/customToast.tsx","../src/store/actions/toastMessages.ts","../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","../node_modules/style-inject/dist/style-inject.es.js","../src/theme.ts","../src/components/toolTip/toolTip.tsx","../src/components/canvas/canvasButtons.tsx","../src/components/canvas/nudgeButtons.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/cardtags.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/modal/modal.tsx","../src/components/SortByDropdown/sortButton.tsx","../src/components/SortByDropdown/sortByDropdown.tsx","../src/components/myLogo/myLogo.tsx","../src/hooks/debounce/useDebounce.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/carddescription.tsx","../src/components/input/input.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/loader/loader.tsx","../src/components/Rightmenu/icons.tsx","../src/components/Rightmenu/Layers.tsx","../src/components/Rightmenu/constants.ts","../src/components/canvas/errorPopUp.tsx","../src/components/Rightmenu/TextProperties.tsx","../src/components/Rightmenu/Properties.tsx","../src/services/path-warp.js","../src/components/Rightmenu/Rightmenu1.tsx","../src/components/addMascot/listDropDown.tsx","../src/components/addMascot/mockData.ts","../src/components/addMascot/addMascot.tsx","../src/components/addMascot/decorationService.ts","../src/components/saveDesign/saveDesignModal.tsx","../src/components/input/customInput.tsx","../src/components/saveDesign/saveDesign.tsx","../src/hooks/outsideAlerter.tsx","../src/components/leftMenu/colorPicker.tsx","../src/components/middleMenu/middleMenu.tsx","../src/loaders/FontLoader.tsx","../src/loaders/GoogleFontLoader.tsx","../src/assets/colors/colors.ts","../src/LogoEditor.tsx"],"sourcesContent":["import React from 'react';\r\nimport { IconContext, IconType } from 'react-icons';\r\nimport { Button, Tooltip, TooltipReference, useTooltipState } from 'reakit';\r\n\r\nexport interface IconButtonProps\r\n extends Exclude<React.ButtonHTMLAttributes<HTMLButtonElement>, 'children'> {\r\n icon?: React.ReactElement<IconType>;\r\n label: string;\r\n}\r\nconst Icon = React.forwardRef<HTMLButtonElement, IconButtonProps>(\r\n ({ label, icon, className, ...props }, ref) => {\r\n const tooltip = useTooltipState({ placement: 'top' });\r\n return (\r\n <>\r\n <TooltipReference\r\n ref={ref}\r\n {...props}\r\n {...tooltip}\r\n as={Button}\r\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`}\r\n aria-label={label}\r\n >\r\n {icon}\r\n </TooltipReference>\r\n {label && label !== '' && (\r\n <Tooltip\r\n {...tooltip}\r\n className={`font-[Roboto-Medium] font-medium mb-[5px] text-[13px] capitalize before:content-[''] before:absolute before:top-[80%] before:left-[calc(50%-7px)] before:bg-[#fce8eb] before:rotate-[44deg] before:border before:border-b-[#f3a2af] before:border-r-[#f3a2af] before:border-l-transparent before:rounded-none before:border-t-transparent before:h-[14px] before:w-[14px] !z-[100] inline-block px-3 py-2 text-[#5d5d5d] transition-opacity duration-300 bg-[#fce8eb] shadow-sm border border-[#f3a2af]`}\r\n style={{ zIndex: 10 }}\r\n >\r\n {label}\r\n </Tooltip>\r\n )}\r\n </>\r\n );\r\n }\r\n);\r\n\r\nexport const IconButton = ({\r\n label,\r\n\r\n className,\r\n size = '2rem',\r\n icon = undefined,\r\n ...props\r\n}) => {\r\n return (\r\n <IconContext.Provider\r\n value={{\r\n size: size,\r\n className: 'pointer-events-auto cursor-pointer',\r\n }}\r\n >\r\n <Icon label={label} icon={icon} className={className} {...props} />\r\n </IconContext.Provider>\r\n );\r\n};\r\n\r\n\r\nexport {\r\n IoIosColorPalette,\r\n IoMdCheckmarkCircle,\r\n IoIosArrowForward,\r\n} from 'react-icons/io';\r\nexport { HiOutlineDownload, HiDotsVertical } from 'react-icons/hi';\r\nexport {\r\n FaRegSave,\r\n FaRegShareSquare,\r\n FaPlus,\r\n FaRegListAlt,\r\n FaEye,\r\n FaEyeSlash,\r\n} from 'react-icons/fa';\r\nexport { BiReset, BiAddToQueue } from 'react-icons/bi';\r\nexport { GiBilledCap, GiCardboardBox } from 'react-icons/gi';\r\nexport { TbWindowMinimize } from 'react-icons/tb';\r\nexport { RxCross2 } from 'react-icons/rx';\r\nexport { IoInformationCircleOutline, IoLogInOutline } from 'react-icons/io5';\r\nexport { CgMenuBoxed } from 'react-icons/cg';\r\nexport { IoIosInformationCircleOutline } from 'react-icons/io';\r\nexport { LuFlipHorizontal2, LuFlipVertical2 } from 'react-icons/lu';\r\n","import { GenIcon } from 'react-icons/lib';\r\n\r\nexport const HorizontalFlip = (props) => {\r\n return GenIcon({\r\n tag: 'svg',\r\n attr: {\r\n xmlns: 'http://www.w3.org/2000/svg',\r\n width: '25.969',\r\n height: '22.478',\r\n viewBox: '0 0 25.969 22.478',\r\n },\r\n child: [\r\n // {\r\n // tag: 'defs',\r\n // attr: {},\r\n // child: [\r\n // {\r\n // tag: 'clipPath',\r\n // attr: { id: 'a' },\r\n // child: [\r\n // {\r\n // tag: 'path',\r\n // attr: { fill: '#353535', d: 'M0 0h25.969v22.478H0z' },\r\n // child: [],\r\n // },\r\n // ],\r\n // },\r\n // ],\r\n // },\r\n {\r\n tag: 'g',\r\n attr: {},\r\n child: [\r\n {\r\n tag: 'path',\r\n attr: { d: 'm25.969 3.647-10.359 8.46 10.359 8.632Z' },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\n d: 'M0 3.469v17.276l10.366-8.466L0 3.469m1.719 3.593 5.914 5.218-5.914 4.87Z',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: { d: 'M12.151 0h1.683v1.674h-1.683z' },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: { d: 'M12.154 3.462h1.677v1.686h-1.677z' },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: { d: 'M12.152 6.937h1.68v1.671h-1.68z' },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: { d: 'M12.144 10.406h1.679v1.669h-1.679z' },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: { d: 'M12.149 13.869h1.686v1.678h-1.686z' },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: { d: 'M12.143 17.334h1.686v1.683h-1.686z' },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: { d: 'M12.154 20.8h1.668v1.678h-1.668z' },\r\n child: [],\r\n },\r\n ],\r\n },\r\n ],\r\n })(props);\r\n};\r\n","import { GenIcon } from 'react-icons/lib';\r\n\r\nexport const VerticalFlip = (props) => {\r\n return GenIcon({\r\n tag: 'svg',\r\n attr: {\r\n xmlns: 'http://www.w3.org/2000/svg',\r\n width: '45',\r\n height: '45',\r\n viewBox: '0 0 45 45',\r\n },\r\n child: [\r\n {\r\n tag: 'g',\r\n attr: {},\r\n child: [\r\n {\r\n tag: 'g',\r\n attr: { fill: '#fff', stroke: '#ebebeb' },\r\n child: [\r\n {\r\n tag: 'path',\r\n attr: {\r\n d: 'M0 0h45v45H0z',\r\n stroke: 'none',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\n fill: 'none',\r\n d: 'M.5.5h44v44H.5z',\r\n },\r\n child: [],\r\n },\r\n ],\r\n },\r\n {\r\n tag: 'g',\r\n attr: {},\r\n child: [\r\n {\r\n tag: 'g',\r\n attr: {\r\n transform: 'rotate(90 12.239 21.239)',\r\n },\r\n child: [\r\n {\r\n tag: 'path',\r\n attr: {\r\n d: 'm0 3.647 10.359 8.46L0 20.74Z',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\n d: 'M25.969 3.469v17.276L15.603 12.28l10.366-8.811M24.25 7.062l-5.914 5.218 5.914 4.87Z',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\n d: 'M12.135 0h1.683v1.674h-1.683z',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\n d: 'M12.138 3.462h1.677v1.686h-1.677z',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\n d: 'M12.136 6.937h1.68v1.671h-1.68z',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\n d: 'M12.146 10.406h1.679v1.669h-1.679z',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\n d: 'M12.134 13.869h1.686v1.678h-1.686z',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\n d: 'M12.14 17.334h1.686v1.683H12.14z',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\n d: 'M12.147 20.8h1.668v1.678h-1.668z',\r\n },\r\n child: [],\r\n },\r\n ],\r\n },\r\n ],\r\n },\r\n ],\r\n },\r\n ],\r\n })(props);\r\n};\r\n","import { GenIcon } from 'react-icons/lib';\r\n\r\nexport const Error = (props) => {\r\n return GenIcon({\r\n tag: 'svg',\r\n attr: {\r\n xmlns: 'http://www.w3.org/2000/svg',\r\n width: '30',\r\n height: '30',\r\n viewBox: '0 0 30 30',\r\n },\r\n child: [\r\n {\r\n tag: 'g',\r\n attr: { transform: 'translate(-150 -259)' },\r\n child: [\r\n {\r\n tag: 'circle',\r\n attr: {\r\n cx: '15',\r\n cy: '15',\r\n r: '15',\r\n transform: 'translate(150 259)',\r\n fill: '#e11a38',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'g',\r\n attr: {},\r\n child: [\r\n {\r\n tag: 'g',\r\n attr: {\r\n fill: 'none',\r\n stroke: '#fff',\r\n 'stroke-linecap': 'round',\r\n 'stroke-width': '2',\r\n },\r\n child: [\r\n {\r\n tag: 'path',\r\n attr: { d: 'm160.439 278.488 9.484-9.484' },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: { d: 'm169.922 278.488-9.484-9.484' },\r\n child: [],\r\n },\r\n ],\r\n },\r\n ],\r\n },\r\n ],\r\n },\r\n ],\r\n })(props);\r\n};\r\n","import { GenIcon } from 'react-icons/lib';\r\n\r\nexport const RLogo = (props) => {\r\n return GenIcon({\r\n tag: 'svg',\r\n attr: {\r\n xmlns: 'http://www.w3.org/2000/svg',\r\n width: '36.672',\r\n height: '34.349',\r\n viewBox: '0 0 36.672 34.349',\r\n },\r\n child: [\r\n {\r\n tag: 'g',\r\n attr: {},\r\n child: [\r\n {\r\n tag: 'g',\r\n attr: { id: 'a' },\r\n child: [\r\n {\r\n tag: 'path',\r\n attr: {\r\n fill: 'none',\r\n fillRule: 'evenodd',\r\n transform:\"translate(-0.001)\",\r\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',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\n fill: 'none',\r\n stroke: '#fff',\r\n fillRule: 'evenodd',\r\n transform:\"translate(-1.117 -1.116)\",\r\n strokeWidth: '2px',\r\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',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\n fill: '#fff',\r\n fillRule: 'evenodd',\r\n transform:\"translate(-3.386 -6.517)\",\r\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',\r\n },\r\n child: [],\r\n },\r\n ],\r\n },\r\n ],\r\n },\r\n ],\r\n })(props);\r\n};\r\n","import { GenIcon } from 'react-icons/lib';\r\n\r\nexport const MyLogo = (props) => {\r\n return GenIcon({\r\n tag: 'svg',\r\n attr: {\r\n xmlns: 'http://www.w3.org/2000/svg',\r\n width: '26.381',\r\n height: '23.778',\r\n viewBox: '0 0 26.381 23.778',\r\n },\r\n child: [\r\n {\r\n tag: 'g',\r\n attr: {},\r\n child: [\r\n {\r\n tag: 'g',\r\n attr: { id: 'a' },\r\n child: [\r\n {\r\n tag: 'path',\r\n attr: {\r\n strokeWidth:\"1\",\r\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',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\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',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\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',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\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',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\n fill: '#5d5d5d',\r\n\r\n fillRule: 'evenodd',\r\n\r\n transform: 'translate(-78.659 -351.017)',\r\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',\r\n },\r\n child: [],\r\n },\r\n ],\r\n },\r\n ],\r\n },\r\n ],\r\n })(props);\r\n};\r\n","import { GenIcon } from 'react-icons/lib';\r\n\r\nexport const AddText = (props) => {\r\n return GenIcon({\r\n tag: 'svg',\r\n attr: {\r\n xmlns: 'http://www.w3.org/2000/svg',\r\n width: '21',\r\n height: '21',\r\n viewBox: '0 0 21 21',\r\n },\r\n\r\n child: [\r\n {\r\n tag: 'g',\r\n attr: {},\r\n child: [\r\n {\r\n tag: 'path',\r\n attr: {\r\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',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\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',\r\n },\r\n child: [],\r\n },\r\n ],\r\n },\r\n ],\r\n })(props);\r\n};\r\n","import { GenIcon } from 'react-icons/lib';\r\nexport const FlipH = (props) => {\r\n return GenIcon({\r\n tag: 'svg',\r\n attr: {\r\n xmlns: 'http://www.w3.org/2000/svg',\r\n width: '24',\r\n height: '20.774',\r\n viewBox: '0 0 24 20.774',\r\n },\r\n child: [\r\n {\r\n tag: 'defs',\r\n attr: {},\r\n child: [\r\n {\r\n tag: 'clipPath',\r\n attr: { id: 'clip-path' },\r\n child: [\r\n {\r\n tag: 'rect',\r\n attr: {\r\n id: 'Rectangle_336',\r\n 'data-name': 'Rectangle 336',\r\n width: '24',\r\n height: '20.774',\r\n fill: '#5d5d5d',\r\n },\r\n child: [],\r\n },\r\n ],\r\n },\r\n ],\r\n },\r\n {\r\n tag: 'g',\r\n attr: {\r\n id: 'Group_1196',\r\n 'data-name': 'Group 1196',\r\n transform: 'translate(24 20.774) rotate(180)',\r\n },\r\n child: [\r\n {\r\n tag: 'g',\r\n attr: {\r\n id: 'Group_577',\r\n 'data-name': 'Group 577',\r\n transform: 'translate(0 0)',\r\n 'clip-path': 'url(#clip-path)',\r\n },\r\n child: [\r\n {\r\n tag: 'path',\r\n attr: {\r\n id: 'Path_4546',\r\n 'data-name': 'Path 4546',\r\n d: 'M0,15.8,9.574,7.978,0,0Z',\r\n transform: 'translate(0 1.606)',\r\n fill: '#5d5d5d',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\n id: 'Path_4547',\r\n 'data-name': 'Path 4547',\r\n d: 'M9.58,15.967V0L0,7.824l9.58,8.143M7.991,12.646,2.525,7.823l5.466-4.5Z',\r\n transform: 'translate(14.42 1.601)',\r\n fill: '#5d5d5d',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'rect',\r\n attr: {\r\n id: 'Rectangle_329',\r\n 'data-name': 'Rectangle 329',\r\n width: '1.556',\r\n height: '1.547',\r\n transform: 'translate(11.215 19.227)',\r\n fill: '#5d5d5d',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'rect',\r\n attr: {\r\n id: 'Rectangle_330',\r\n 'data-name': 'Rectangle 330',\r\n width: '1.549',\r\n height: '1.559',\r\n transform: 'translate(11.218 16.016)',\r\n fill: '#5d5d5d',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'rect',\r\n attr: {\r\n id: 'Rectangle_331',\r\n 'data-name': 'Rectangle 331',\r\n width: '1.553',\r\n height: '1.544',\r\n transform: 'translate(11.216 12.818)',\r\n fill: '#5d5d5d',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'rect',\r\n attr: {\r\n id: 'Rectangle_332',\r\n 'data-name': 'Rectangle 332',\r\n width: '1.551',\r\n height: '1.542',\r\n transform: 'translate(11.226 9.615)',\r\n fill: '#5d5d5d',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'rect',\r\n attr: {\r\n id: 'Rectangle_333',\r\n 'data-name': 'Rectangle 333',\r\n width: '1.559',\r\n height: '1.551',\r\n transform: 'translate(11.214 6.405)',\r\n fill: '#5d5d5d',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'rect',\r\n attr: {\r\n id: 'Rectangle_334',\r\n 'data-name': 'Rectangle 334',\r\n width: '1.559',\r\n height: '1.555',\r\n transform: 'translate(11.219 3.198)',\r\n fill: '#5d5d5d',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'rect',\r\n attr: {\r\n id: 'Rectangle_335',\r\n 'data-name': 'Rectangle 335',\r\n width: '1.542',\r\n height: '1.551',\r\n transform: 'translate(11.226 0)',\r\n fill: '#5d5d5d',\r\n },\r\n child: [],\r\n },\r\n ],\r\n },\r\n ],\r\n },\r\n ],\r\n })(props);\r\n};\r\n","import { GenIcon } from 'react-icons/lib';\r\n// https://www.svgviewer.dev/ use this website to compress and load the paths\r\n// source: https://raw.githubusercontent.com/alisamar/react-icons-all-files/master/ai/AiFillAccountBook.esm.js\r\nexport const FlipV = (props) => {\r\n return GenIcon({\r\n tag: 'svg',\r\n attr: {\r\n xmlns: 'http://www.w3.org/2000/svg',\r\n width: '20.774',\r\n height: '24',\r\n viewBox: '0 0 20.774 24',\r\n },\r\n child: [\r\n {\r\n tag: 'defs',\r\n attr: {},\r\n child: [\r\n {\r\n tag: 'clipPath',\r\n attr: { id: 'clip-path' },\r\n child: [\r\n {\r\n tag: 'rect',\r\n attr: {\r\n id: 'Rectangle_336',\r\n 'data-name': 'Rectangle 336',\r\n width: '24',\r\n height: '20.774',\r\n fill: '#5d5d5d',\r\n },\r\n child: [],\r\n },\r\n ],\r\n },\r\n ],\r\n },\r\n {\r\n tag: 'g',\r\n attr: {\r\n id: 'Group_1195',\r\n 'data-name': 'Group 1195',\r\n transform: 'translate(0 24) rotate(-90)',\r\n },\r\n child: [\r\n {\r\n tag: 'g',\r\n attr: {\r\n id: 'Group_577',\r\n 'data-name': 'Group 577',\r\n transform: 'translate(0 0)',\r\n 'clip-path': 'url(#clip-path)',\r\n },\r\n child: [\r\n {\r\n tag: 'path',\r\n attr: {\r\n id: 'Path_4546',\r\n 'data-name': 'Path 4546',\r\n d: 'M0,15.8,9.574,7.978,0,0Z',\r\n transform: 'translate(0 1.606)',\r\n fill: '#5d5d5d',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\n id: 'Path_4547',\r\n 'data-name': 'Path 4547',\r\n d: 'M9.58,15.967V0L0,7.824l9.58,8.143M7.991,12.646,2.525,7.823l5.466-4.5Z',\r\n transform: 'translate(14.42 1.601)',\r\n fill: '#5d5d5d',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'rect',\r\n attr: {\r\n id: 'Rectangle_329',\r\n 'data-name': 'Rectangle 329',\r\n width: '1.556',\r\n height: '1.547',\r\n transform: 'translate(11.215 19.227)',\r\n fill: '#5d5d5d',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'rect',\r\n attr: {\r\n id: 'Rectangle_330',\r\n 'data-name': 'Rectangle 330',\r\n width: '1.549',\r\n height: '1.559',\r\n transform: 'translate(11.218 16.016)',\r\n fill: '#5d5d5d',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'rect',\r\n attr: {\r\n id: 'Rectangle_331',\r\n 'data-name': 'Rectangle 331',\r\n width: '1.553',\r\n height: '1.544',\r\n transform: 'translate(11.216 12.818)',\r\n fill: '#5d5d5d',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'rect',\r\n attr: {\r\n id: 'Rectangle_332',\r\n 'data-name': 'Rectangle 332',\r\n width: '1.551',\r\n height: '1.542',\r\n transform: 'translate(11.226 9.615)',\r\n fill: '#5d5d5d',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'rect',\r\n attr: {\r\n id: 'Rectangle_333',\r\n 'data-name': 'Rectangle 333',\r\n width: '1.559',\r\n height: '1.551',\r\n transform: 'translate(11.214 6.405)',\r\n fill: '#5d5d5d',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'rect',\r\n attr: {\r\n id: 'Rectangle_334',\r\n 'data-name': 'Rectangle 334',\r\n width: '1.559',\r\n height: '1.555',\r\n transform: 'translate(11.219 3.198)',\r\n fill: '#5d5d5d',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'rect',\r\n attr: {\r\n id: 'Rectangle_335',\r\n 'data-name': 'Rectangle 335',\r\n width: '1.542',\r\n height: '1.551',\r\n transform: 'translate(11.226 0)',\r\n fill: '#5d5d5d',\r\n },\r\n child: [],\r\n },\r\n ],\r\n },\r\n ],\r\n },\r\n ],\r\n })(props);\r\n};\r\n","import { GenIcon } from 'react-icons/lib';\r\nexport const SelectAll = (props) => {\r\n return GenIcon({\r\n tag: 'svg',\r\n\r\n attr: {\r\n xmlns: 'http://www.w3.org/2000/svg',\r\n width: '18.641',\r\n height: '18.063',\r\n viewBox: '0 0 18.641 18.063',\r\n className: 'group',\r\n ...props,\r\n },\r\n child: [\r\n {\r\n tag: 'g',\r\n attr: { 'data-name': 'Group 1075' },\r\n child: [\r\n {\r\n tag: 'g',\r\n attr: {\r\n fill: 'none',\r\n stroke: '#5d5d5d',\r\n strokeWidth: '1',\r\n },\r\n child: [\r\n {\r\n tag: 'rect',\r\n attr: { width: '16', height: '16', rx: '4', stroke: 'none' },\r\n child: [],\r\n },\r\n {\r\n tag: 'rect',\r\n attr: {\r\n x: '.75',\r\n y: '.75',\r\n width: '14.5',\r\n height: '14.5',\r\n rx: '3.25',\r\n },\r\n child: [],\r\n },\r\n ],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\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',\r\n className: 'group-hover:fill-[#E11A38]',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\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',\r\n className: 'group-hover:fill-[#E11A38]',\r\n },\r\n child: [],\r\n },\r\n ],\r\n },\r\n ],\r\n })(props);\r\n};","import { GenIcon } from 'react-icons/lib';\r\n\r\nexport const Copy = (props) => {\r\n return GenIcon({\r\n tag: 'svg',\r\n attr: {\r\n id: 'ICONS',\r\n xmlns: 'http://www.w3.org/2000/svg',\r\n width: '23.063',\r\n height: '23.063',\r\n viewBox: '0 0 23.063 23.063',\r\n },\r\n child: [\r\n {\r\n tag: 'path',\r\n attr: {\r\n id: 'Path_3956',\r\n 'data-name': 'Path 3956',\r\n d: 'M17.912,5.252a1.2,1.2,0,0,0,.026-.127A5.13,5.13,0,0,0,12.813,0H6.406A6.414,6.414,0,0,0,0,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.406V11.531a6.415,6.415,0,0,0-5.151-6.279ZM5.125,11.531v3.844a2.565,2.565,0,0,1-2.562-2.562V6.406A3.848,3.848,0,0,1,6.406,2.563h6.406a2.565,2.565,0,0,1,2.563,2.563H11.531a6.414,6.414,0,0,0-6.406,6.406ZM20.5,16.656A3.848,3.848,0,0,1,16.656,20.5H11.531a3.848,3.848,0,0,1-3.844-3.844V11.531a3.848,3.848,0,0,1,3.844-3.844h5.125A3.848,3.848,0,0,1,20.5,11.531Z',\r\n fill: '#5d5d5d',\r\n },\r\n child: [],\r\n },\r\n ],\r\n })(props);\r\n};\r\n","import { GenIcon } from 'react-icons/lib';\r\n\r\nexport const SendToBack = (props) => {\r\n return GenIcon({\r\n tag: 'svg',\r\n attr: {\r\n xmlns: 'http://www.w3.org/2000/svg',\r\n width: '26.552',\r\n height: '23.495',\r\n viewBox: '0 0 26.552 23.495',\r\n },\r\n child: [\r\n {\r\n tag: 'g',\r\n attr: {\r\n id: 'Group_654',\r\n 'data-name': 'Group 654',\r\n transform: 'translate(-17856.939 13913.36)',\r\n },\r\n child: [\r\n {\r\n tag: 'path',\r\n attr: {\r\n id: 'Path_4583',\r\n 'data-name': 'Path 4583',\r\n d: 'M0,0H14.069V14.069H0Z',\r\n transform: 'translate(17861.625 -13909.535)',\r\n fill: '#cecece',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'rect',\r\n attr: {\r\n id: 'Rectangle_387',\r\n 'data-name': 'Rectangle 387',\r\n width: '10.72',\r\n height: '7.664',\r\n transform: 'translate(17857.939 -13912.36)',\r\n fill: 'none',\r\n stroke: '#5d5d5d',\r\n 'stroke-miterlimit': '10',\r\n 'stroke-width': '2',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'rect',\r\n attr: {\r\n id: 'Rectangle_388',\r\n 'data-name': 'Rectangle 388',\r\n width: '10.72',\r\n height: '7.664',\r\n transform: 'translate(17871.771 -13898.529)',\r\n fill: 'none',\r\n stroke: '#5d5d5d',\r\n 'stroke-miterlimit': '10',\r\n 'stroke-width': '2',\r\n },\r\n child: [],\r\n },\r\n ],\r\n },\r\n ],\r\n })(props);\r\n};\r\n","import { GenIcon } from 'react-icons/lib';\r\n\r\nexport const SendToFront = (props) => {\r\n return GenIcon({\r\n tag: 'svg',\r\n attr: {\r\n xmlns: 'http://www.w3.org/2000/svg',\r\n width: '26.551',\r\n height: '23.495',\r\n viewBox: '0 0 26.551 23.495',\r\n },\r\n child: [\r\n {\r\n tag: 'g',\r\n attr: {\r\n id: 'Group_651',\r\n 'data-name': 'Group 651',\r\n transform: 'translate(-1140.036 -318.639)',\r\n },\r\n child: [\r\n {\r\n tag: 'g',\r\n attr: {\r\n id: 'Group_647',\r\n 'data-name': 'Group 647',\r\n transform: 'translate(1140.643 319.246)',\r\n },\r\n child: [\r\n {\r\n tag: 'g',\r\n attr: {\r\n id: 'Group_646',\r\n 'data-name': 'Group 646',\r\n transform: 'translate(0 0)',\r\n },\r\n child: [\r\n {\r\n tag: 'g',\r\n attr: {\r\n id: 'Group_648',\r\n 'data-name': 'Group 648',\r\n },\r\n child: [\r\n {\r\n tag: 'rect',\r\n attr: {\r\n id: 'Rectangle_387',\r\n 'data-name': 'Rectangle 387',\r\n width: '10.72',\r\n height: '7.664',\r\n transform: 'translate(0.393 0.393)',\r\n fill: 'none',\r\n stroke: '#5d5d5d',\r\n 'stroke-miterlimit': '10',\r\n 'stroke-width': '2',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'rect',\r\n attr: {\r\n id: 'Rectangle_388',\r\n 'data-name': 'Rectangle 388',\r\n width: '10.72',\r\n height: '7.664',\r\n transform: 'translate(14.225 14.225)',\r\n fill: 'none',\r\n stroke: '#5d5d5d',\r\n 'stroke-miterlimit': '10',\r\n 'stroke-width': '2',\r\n },\r\n child: [],\r\n },\r\n ],\r\n },\r\n ],\r\n },\r\n {\r\n tag: 'rect',\r\n attr: {\r\n id: 'Rectangle_390',\r\n 'data-name': 'Rectangle 390',\r\n width: '14.069',\r\n height: '14.069',\r\n transform: 'translate(4.078 3.89)',\r\n fill: '#cecece',\r\n },\r\n child: [],\r\n },\r\n ],\r\n },\r\n ],\r\n },\r\n ],\r\n })(props);\r\n};\r\n","import { GenIcon } from 'react-icons/lib';\r\nexport const SendAObject = (props) => {\r\n return GenIcon({\r\n tag: 'svg',\r\n attr: {\r\n xmlns: 'http://www.w3.org/2000/svg',\r\n width: '23.097',\r\n height: '22.481',\r\n viewBox: '0 0 23.097 22.481',\r\n },\r\n child: [\r\n {\r\n tag: 'g',\r\n attr: {\r\n id: 'Group_653',\r\n 'data-name': 'Group 653',\r\n transform: 'translate(-1140.475 -411.367)',\r\n },\r\n child: [\r\n {\r\n tag: 'g',\r\n attr: {\r\n id: 'Group_642',\r\n 'data-name': 'Group 642',\r\n transform: 'translate(1127.096 398.368)',\r\n },\r\n child: [\r\n {\r\n tag: 'g',\r\n attr: {\r\n id: 'Group_643',\r\n 'data-name': 'Group 643',\r\n transform: 'translate(13.932 13.552)',\r\n },\r\n child: [\r\n {\r\n tag: 'rect',\r\n attr: {\r\n id: 'Rectangle_383',\r\n 'data-name': 'Rectangle 383',\r\n width: '16',\r\n height: '16',\r\n transform: 'translate(0.447 0.447)',\r\n fill: 'none',\r\n stroke: '#5d5d5d',\r\n 'stroke-miterlimit': '10',\r\n 'stroke-width': '2',\r\n },\r\n child: [],\r\n },\r\n ],\r\n },\r\n ],\r\n },\r\n {\r\n tag: 'rect',\r\n attr: {\r\n id: 'Rectangle_385',\r\n 'data-name': 'Rectangle 385',\r\n width: '16',\r\n height: '16',\r\n transform: 'translate(1147.572 417.848)',\r\n fill: '#cecece',\r\n },\r\n child: [],\r\n },\r\n ],\r\n },\r\n ],\r\n })(props);\r\n};\r\n","import { GenIcon } from 'react-icons/lib';\r\nexport const SendUnderObject = (props) => {\r\n return GenIcon({\r\n tag: 'svg',\r\n attr: {\r\n xmlns: 'http://www.w3.org/2000/svg',\r\n width: '23.097',\r\n height: '22.481',\r\n viewBox: '0 0 23.097 22.481',\r\n },\r\n child: [\r\n {\r\n tag: 'g',\r\n attr: {\r\n id: 'Group_652',\r\n 'data-name': 'Group 652',\r\n transform: 'translate(-1140.475 -369.367)',\r\n },\r\n child: [\r\n {\r\n tag: 'rect',\r\n attr: {\r\n id: 'Rectangle_386',\r\n 'data-name': 'Rectangle 386',\r\n width: '16',\r\n height: '16',\r\n transform: 'translate(1147.572 375.848)',\r\n fill: '#cecece',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'g',\r\n attr: {\r\n id: 'Group_644',\r\n 'data-name': 'Group 644',\r\n transform: 'translate(1127.096 356.368)',\r\n },\r\n child: [\r\n {\r\n tag: 'g',\r\n attr: {\r\n id: 'Group_643',\r\n 'data-name': 'Group 643',\r\n transform: 'translate(13.932 13.552)',\r\n },\r\n child: [\r\n {\r\n tag: 'rect',\r\n attr: {\r\n id: 'Rectangle_383',\r\n 'data-name': 'Rectangle 383',\r\n width: '16',\r\n height: '16',\r\n transform: 'translate(0.447 0.447)',\r\n fill: 'none',\r\n stroke: '#5d5d5d',\r\n 'stroke-miterlimit': '10',\r\n 'stroke-width': '2',\r\n },\r\n child: [],\r\n },\r\n ],\r\n },\r\n ],\r\n },\r\n ],\r\n },\r\n ],\r\n })(props);\r\n};\r\n","import { GenIcon } from 'react-icons/lib';\r\n\r\nexport const EyeDropper = (props) => {\r\n return GenIcon({\r\n tag: 'svg',\r\n attr: {\r\n xmlns: 'http://www.w3.org/2000/svg',\r\n width: '21.595',\r\n height: '21.61',\r\n viewBox: '0 0 21.595 21.61',\r\n },\r\n child: [\r\n {\r\n tag: 'defs',\r\n attr: {},\r\n child: [\r\n {\r\n tag: 'clipPath',\r\n attr: { id: 'a' },\r\n child: [\r\n {\r\n tag: 'path',\r\n attr: { d: 'M0 0h21.595v21.61H0z' },\r\n child: [],\r\n },\r\n ],\r\n },\r\n ],\r\n },\r\n {\r\n tag: 'g',\r\n attr: { 'clip-path': 'url(#a)' },\r\n child: [\r\n {\r\n tag: 'path',\r\n attr: {\r\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',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\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',\r\n },\r\n child: [],\r\n },\r\n ],\r\n },\r\n ],\r\n })(props);\r\n};\r\n","import { GenIcon } from 'react-icons/lib';\r\nexport const Delete = (props) => {\r\n return GenIcon({\r\n tag: 'svg',\r\n attr: {\r\n id: 'ICONS',\r\n xmlns: 'http://www.w3.org/2000/svg',\r\n width: '18',\r\n height: '18',\r\n viewBox: '0 0 18 18',\r\n ...props,\r\n },\r\n child: [\r\n {\r\n tag: 'path',\r\n attr: {\r\n id: 'Path_3953',\r\n 'data-name': 'Path 3953',\r\n d: 'M7,8A1,1,0,0,0,6,9v4a1,1,0,0,0,2,0V9A1,1,0,0,0,7,8Z',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\n id: 'Path_3954',\r\n 'data-name': 'Path 3954',\r\n d: 'M11,8a1,1,0,0,0-1,1v4a1,1,0,0,0,2,0V9a1,1,0,0,0-1-1Z',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\n id: 'Path_3955',\r\n 'data-name': 'Path 3955',\r\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',\r\n },\r\n child: [],\r\n },\r\n ],\r\n })(props);\r\n};\r\n","import { GenIcon } from 'react-icons/lib';\r\n// https://www.svgviewer.dev/ use this website to compress and load the paths\r\n// source: https://raw.githubusercontent.com/alisamar/react-icons-all-files/master/ai/AiFillAccountBook.esm.js\r\nexport const SnapToCenter = (props) => {\r\n return GenIcon({\r\n tag: 'svg',\r\n attr: {\r\n id: 'Group_1194',\r\n 'data-name': 'Group 1194',\r\n xmlns: 'http://www.w3.org/2000/svg',\r\n width: '24',\r\n height: '24.006',\r\n viewBox: '0 0 24 24.006',\r\n },\r\n child: [\r\n {\r\n tag: 'g',\r\n attr: {\r\n id: 'Group_1196',\r\n 'data-name': 'Group 1196',\r\n },\r\n child: [\r\n {\r\n tag: 'path',\r\n attr: {\r\n id: 'Path_4767',\r\n 'data-name': 'Path 4767',\r\n d: 'M0,346.174c.043,0,.085-.008.128-.008H1.519v-1.494h1.5c.008.124,0,.248,0,.371s0,.25,0,.375v.748h1.5v1.5H6.01v1.493c-.251.016-.5.005-.747.007s-.49,0-.737,0c0,.041-.007.068-.007.1q0,.679,0,1.359c0,.019,0,.039,0,.058H0Zm3.013,2.98v-1.476a14.331,14.331,0,0,0-1.485,0v1.473Z',\r\n transform: 'translate(0 -326.668)',\r\n fill: '#5d5d5d',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\n id: 'Path_4768',\r\n 'data-name': 'Path 4768',\r\n d: 'M0,.006C.047,0,.093,0,.14,0H4.517V1.5H6.009v1.5C5.847,3,5.684,3,5.522,3h-1V4.486c-.05,0-.091.008-.131.008H3.022V5.975a14.076,14.076,0,0,1-1.5,0V4.5c-.042,0-.072-.009-.1-.009H.08A.586.586,0,0,0,0,4.506V.006M1.527,2.987c.175.022,1.4.016,1.485-.007V1.5H1.527Z',\r\n transform: 'translate(0 0)',\r\n fill: '#5d5d5d',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\n id: 'Path_4769',\r\n 'data-name': 'Path 4769',\r\n d: 'M346.317,350.672l0-1.371c0-.042,0-.084,0-.138h-1.479c-.026-.1-.034-1.291-.012-1.5.245-.014.493,0,.741-.006s.49,0,.75,0v-1.5h1.5V344.67h1.5c0,.164,0,.327,0,.489s0,.328,0,.492v.507c.13.01.254,0,.376.005s.242,0,.363,0h.741c0,.047.007.081.007.115q0,2.156,0,4.312c0,.027,0,.054-.006.082Zm1.5-3.005v1.476a13.253,13.253,0,0,0,1.483,0c.022-.162.015-1.384-.009-1.472Z',\r\n transform: 'translate(-326.798 -326.666)',\r\n fill: '#5d5d5d',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\n id: 'Path_4770',\r\n 'data-name': 'Path 4770',\r\n d: 'M350.993,4.5h-1.477V5.98a13.306,13.306,0,0,1-1.5,0V4.5h-1.493V3.014c-.256-.019-.5-.006-.752-.009s-.49,0-.743,0V1.5h1.49V.038l.017-.018s.006-.007.009-.007A.5.5,0,0,1,346.6.007h4.358a.189.189,0,0,1,.039.01Zm-2.977-1.515a14.117,14.117,0,0,0,1.489,0V1.518a13.475,13.475,0,0,0-1.489.01Z',\r\n transform: 'translate(-327 -0.007)',\r\n fill: '#5d5d5d',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\n id: 'Path_4771',\r\n 'data-name': 'Path 4771',\r\n d: 'M177.4,181.788a4.769,4.769,0,1,1,4.774-4.743,4.768,4.768,0,0,1-4.774,4.743m0-2.386a2.383,2.383,0,1,0-2.378-2.388A2.391,2.391,0,0,0,177.4,179.4',\r\n transform: 'translate(-165.386 -165.023)',\r\n fill: '#5d5d5d',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\n id: 'Path_4772',\r\n 'data-name': 'Path 4772',\r\n d: 'M172.573,28.8h1.482v1.474c-.088.023-1.322.03-1.471.008-.024-.086-.033-1.236-.011-1.483',\r\n transform: 'translate(-163.546 -27.296)',\r\n fill: '#5d5d5d',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\n id: 'Path_4773',\r\n 'data-name': 'Path 4773',\r\n d: 'M258.685,28.8h1.482v1.474c-.088.023-1.324.03-1.472.008-.024-.086-.033-1.239-.01-1.483',\r\n transform: 'translate(-245.16 -27.297)',\r\n fill: '#5d5d5d',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\n id: 'Path_4774',\r\n 'data-name': 'Path 4774',\r\n d: 'M402.37,172.387h1.486v1.472c-.094.024-1.376.026-1.486,0Z',\r\n transform: 'translate(-381.352 -163.382)',\r\n fill: '#5d5d5d',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\n id: 'Path_4775',\r\n 'data-name': 'Path 4775',\r\n d: 'M30.729,173.749H29.244v-1.49h1.485Z',\r\n transform: 'translate(-27.716 -163.261)',\r\n fill: '#5d5d5d',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\n id: 'Path_4776',\r\n 'data-name': 'Path 4776',\r\n d: 'M174.28,403.369H172.8V401.9a14.178,14.178,0,0,1,1.483,0Z',\r\n transform: 'translate(-163.771 -380.883)',\r\n fill: '#5d5d5d',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\n id: 'Path_4777',\r\n 'data-name': 'Path 4777',\r\n d: 'M258.714,402.039h1.466c.023.089.03,1.31.009,1.471a13.52,13.52,0,0,1-1.466.014,14.287,14.287,0,0,1-.009-1.485',\r\n transform: 'translate(-245.186 -381.038)',\r\n fill: '#5d5d5d',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\n id: 'Path_4778',\r\n 'data-name': 'Path 4778',\r\n d: 'M29.194,259.847V258.38a14.3,14.3,0,0,1,1.487-.006v1.473Z',\r\n transform: 'translate(-27.669 -244.862)',\r\n fill: '#5d5d5d',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\n id: 'Path_4779',\r\n 'data-name': 'Path 4779',\r\n d: 'M402.241,258.521h1.465c.023.088.028,1.336.007,1.47-.083.024-1.261.033-1.467.012a13.357,13.357,0,0,1-.006-1.482',\r\n transform: 'translate(-381.212 -245.017)',\r\n fill: '#5d5d5d',\r\n },\r\n child: [],\r\n },\r\n ],\r\n },\r\n ],\r\n })(props);\r\n};\r\n","import React from 'react';\r\nimport { toast } from 'react-toastify';\r\nexport interface toastGenProps {\r\n type: 'Error' | 'Info' | 'Warning' | 'Success';\r\n message: string;\r\n}\r\nimport { Error } from '../icon';\r\n\r\nexport function CustomToast(\r\n type: 'info' | 'error' | 'warning' | 'success',\r\n message: string,\r\n toastId: number,\r\n style?: React.CSSProperties\r\n) {\r\n switch (type) {\r\n case 'info':\r\n return toast.info(toastGen({ type: 'Info', message }), {\r\n toastId,\r\n style,\r\n });\r\n case 'error':\r\n return toast.error(toastGen({ type: 'Error', message }), {\r\n toastId,\r\n icon: Error,\r\n style,\r\n });\r\n case 'success':\r\n return toast.success(toastGen({ type: 'Success', message }), {\r\n toastId,\r\n style,\r\n });\r\n case 'warning':\r\n return toast.warning(toastGen({ type: 'Warning', message }), {\r\n toastId,\r\n style,\r\n });\r\n }\r\n}\r\nexport const toastGen = ({ type, message }: toastGenProps) => (\r\n <div>\r\n <div className=\"text-base font-bold leading-[22px]\">{type}</div>\r\n <div className=\"text-sm font-medium leading-[22px]\">{message}</div>\r\n </div>\r\n);\r\n","import { CustomToast as e } from '../../components/customToast';\r\n\r\nexport interface ToastMessages {\r\n deleteLogoSuccess: () => void;\r\n error: (message: string) => void;\r\n saveSuccess: () => void;\r\n somethingWentWrong: () => void;\r\n success: (message: string) => void;\r\n updateLogoSuccess: () => void;\r\n updateSuccess: () => void;\r\n warning: (message: string) => void;\r\n noOfColors: () => void;\r\n noIteminCanvas: () => void;\r\n fileSize: () => void;\r\n noChangesMade: () => void;\r\n fontsNotAvailable: () => void;\r\n pleaseSelectTheImage: () => void;\r\n pleaseSelectTheImageDulpicate: () => void;\r\n applyLogoColorNotAvailable: (decType: string) => void;\r\n saveLogoColorNotAvailable: (decType: string) => void;\r\n}\r\n\r\nexport const toastMessages: ToastMessages =\r\n// prettier-ignore\r\n{\r\n deleteLogoSuccess: () => e('success', 'Logo deleted successfully!', 1),\r\n error: (message) => e('success', message, 2),\r\n saveSuccess: () => e('success', 'You have successfully saved your Logo', 3, { width: '30rem' }),\r\n somethingWentWrong: () => e('error', 'Something Went Wrong', 4),\r\n success: (message) => e('success', message, 5),\r\n updateLogoSuccess: () => e('success', 'Logo updated successfully!', 6),\r\n updateSuccess: () => e('success', 'You have successfully updated your design', 7),\r\n warning: (message) => e('success', message, 8),\r\n noOfColors: () => e('error', 'Not more than 8 colors allowed!', 9),\r\n noIteminCanvas: () => e('error', 'No item in canvas to save', 10),\r\n fileSize: () => e('error', 'We cannot process this file because it is larger than 25MB. Please decrease the size and try again.', 11),\r\n noChangesMade: () => e('info', 'No Changes Made To Save!!!', 12),\r\n fontsNotAvailable: () => e('info', 'Fonts not availble in-order to view the proper text', 13),\r\n pleaseSelectTheImage: () => e('info', 'Please select the IMAGE / TEXT to delete', 14),\r\n pleaseSelectTheImageDulpicate: () => e('info', 'Please select the IMAGE / TEXT to duplicate', 15),\r\n applyLogoColorNotAvailable: (decType) => e('error', `A few of the colors associated with decoration \"${decType}\" are not supported. Please use the \"Edit\" option to update them with supported colors and proceed!`, 16),\r\n saveLogoColorNotAvailable: (decType) => e('error', `A few of the colors associated with decoration \"${decType}\" are not supported. Please update them with supported colors and save!`, 17),\r\n};\r\n","import { StateCreator } from 'zustand';\r\nimport { use3dddPlus } from '..';\r\nimport { Design } from '../customize/types';\r\nimport { ToastMessages, toastMessages } from './toastMessages';\r\nexport interface ActionSlice {\r\n displayLoginModal: boolean;\r\n showProductBreakUpModal: { status: boolean; value: any };\r\n loadDesignModal: boolean;\r\n productInfoModal: any;\r\n toastMessages: ToastMessages;\r\n toggleSaveLogo: {\r\n key: string;\r\n status: boolean;\r\n title: string;\r\n details: any;\r\n };\r\n showModalAfterLogin?: void;\r\n changeModel: () => void;\r\n editDesignInfo: () => void;\r\n saveDesignModal: () => void;\r\n setLoadDesignModal: (loadDesign: boolean) => void;\r\n setProductInfoModal: () => any;\r\n clearLayers: () => void;\r\n setToggleSaveLogo: (\r\n key: string,\r\n status: boolean,\r\n title: string,\r\n details: any\r\n ) => void;\r\n share: () => void;\r\n toggleLoginModal: () => void;\r\n confirmDesignModal: { status: boolean; value: string };\r\n setConfirmDesignModal: (status: boolean, value: string) => void;\r\n toggleSuccessfullDesign: boolean;\r\n setToggleSuccessfullDesign: () => void;\r\n selectedDesign: any;\r\n setSelectedDesign: (selected: Design) => void;\r\n saveRackSuccessfulModal: boolean;\r\n setSaveRackSuccessfulModal: () => void;\r\n setShowModalAfterLogin: (toggleAction: any) => void; //Due to current functionality, toggleAction can have callback function of different types\r\n disableUpdate: boolean;\r\n confirmUpdateDesignModal: boolean;\r\n setConfirmUpdateDesignModal: () => void;\r\n designUpdateSuccessfulModal: boolean;\r\n getListFromRack: () => boolean;\r\n toogleShowProductBreakUpModal: (status: boolean, value: any) => void;\r\n productBreakup: any[];\r\n logoSearchText: string;\r\n logoSortBy: string;\r\n logoSortDir: string;\r\n logoPageNo: number;\r\n logoPageSize: number;\r\n showCrossSave: boolean;\r\n}\r\n\r\nconst graphqlSlice: StateCreator<ActionSlice> = (set, get) => {\r\n return {\r\n displayLoginModal: false,\r\n showProductBreakUpModal: {\r\n status: false,\r\n value: {},\r\n },\r\n toastMessages: toastMessages,\r\n loadDesignModal: false,\r\n productInfoModal: false,\r\n toggleSaveLogo: { key: 'save', status: false, title: '', details: {} },\r\n showModalAfterLogin: undefined,\r\n selectedDesign: {},\r\n changeModel: () => {\r\n alert('function not implemented');\r\n },\r\n confirmDesignModal: { status: false, value: '' },\r\n confirmUpdateDesignModal: false,\r\n toggleSuccessfullDesign: false,\r\n designUpdateSuccessfulModal: false,\r\n getListFromRack: () => {\r\n return false;\r\n },\r\n setSelectedDesign: (selected) => {\r\n set({ selectedDesign: selected });\r\n },\r\n setLoadDesignModal: (loadDesign) => {\r\n set({ loadDesignModal: loadDesign });\r\n },\r\n clearLayers: () => use3dddPlus.setState({\r\n storeAllObject: [],\r\n }),\r\n setToggleSaveLogo: (key, status, title, details) => {\r\n set({\r\n toggleSaveLogo: {\r\n key: key,\r\n status: status,\r\n title: title,\r\n details: details,\r\n },\r\n });\r\n },\r\n setConfirmDesignModal: (status, value) => {\r\n set({ confirmDesignModal: { status: status, value: value } });\r\n },\r\n setConfirmUpdateDesignModal: () => {\r\n set((state) => ({\r\n confirmUpdateDesignModal: !state.confirmUpdateDesignModal,\r\n }));\r\n },\r\n setToggleSuccessfullDesign: () => {\r\n set((state) => ({\r\n toggleSuccessfullDesign: !state.toggleSuccessfullDesign,\r\n }));\r\n },\r\n setProductInfoModal: () => {\r\n set((state) => ({ productInfoModal: !state.productInfoModal }));\r\n },\r\n\r\n editDesignInfo: () => {\r\n alert('function not implemented');\r\n },\r\n // rack: () => {\r\n // alert('function not implemented');\r\n // },\r\n\r\n saveDesignModal: () => {\r\n try {\r\n use3dddPlus.setState({ current: 'saveCTA' });\r\n use3dddPlus.getState().navigateTo('savePopUp');\r\n use3dddPlus.setState({ logoName: '' });\r\n use3dddPlus.setState({ designNotes: '' });\r\n use3dddPlus.setState({ logoTag: [] });\r\n let string = '';\r\n const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';\r\n\r\n for (let i = 0; i < 7; i++) {\r\n string += characters.charAt(\r\n Math.floor(Math.random() * characters.length)\r\n );\r\n }\r\n use3dddPlus.setState({ designNumber: string });\r\n\r\n\r\n if (!use3dddPlus.getState().customerId) {\r\n get().toggleLoginModal();\r\n get().setShowModalAfterLogin(() => {\r\n use3dddPlus\r\n .getState()\r\n .setToggleSaveLogo('save', true, 'Save Your Design', {});\r\n });\r\n return;\r\n }\r\n get().setToggleSaveLogo('save', true, 'Save Your Design', {});\r\n use3dddPlus.setState({ disableSaveButton: false });\r\n } catch {}\r\n },\r\n\r\n \r\n share: () => {\r\n alert('function not implemented');\r\n },\r\n toggleLoginModal: () => {\r\n set((state) => ({ displayLoginModal: !state.displayLoginModal }));\r\n },\r\n\r\n saveRackSuccessfulModal: false,\r\n setSaveRackSuccessfulModal: () => {\r\n set((state) => ({\r\n saveRackSuccessfulModal: !state.saveRackSuccessfulModal,\r\n }));\r\n },\r\n setShowModalAfterLogin: (toggleAction) => {\r\n use3dddPlus.setState({ showModalAfterLogin: toggleAction });\r\n },\r\n toogleShowProductBreakUpModal: (status, value) => {\r\n set({ showProductBreakUpModal: { status: status, value: value } });\r\n },\r\n disableUpdate: false,\r\n productBreakup: [],\r\n logoSearchText: '',\r\n logoSortBy: 'updated_at',\r\n logoSortDir: 'DESC',\r\n logoPageNo: 1,\r\n logoPageSize: 14,\r\n showCrossSave: false,\r\n };\r\n};\r\n\r\nexport default graphqlSlice;\r\n","import axios, { AxiosInstance, AxiosResponse } from 'axios';\r\n\r\nexport const baseURL = process.env.REACT_APP_LAMBDA_URL;\r\n\r\n// TODO remove ts-ignore; CreateAxiosDefaults<any> not building npm package. \r\n// @ts-ignore\r\nexport const instance: AxiosInstance = axios.create({\r\n baseURL: baseURL,\r\n timeout: 15000,\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: 'jxnhh7rk7gpjtnp1o1besdaip3pd2560',\r\n },\r\n});\r\n\r\nexport const responseBody = (response: AxiosResponse) => response.data;\r\n\r\nexport const requests = {\r\n get: (url: string) => instance.get(url).then(responseBody),\r\n post: (url: string, body: {}, config?: any) => instance.post(url, body, config).then(responseBody),\r\n put: (url: string, body: {}) => instance.put(url, body).then(responseBody),\r\n delete: (url: string) => instance.delete(url).then(responseBody),\r\n};\r\n","import { StateCreator } from 'zustand';\r\nimport { requests } from '../../axios/index';\r\nimport { use3dddPlus } from '..';\r\nimport { fabric } from 'fabric';\r\n// import { AxiosRequestConfig } from 'axios';\r\n\r\n// const useSampleResponses = process.env.REACT_APP_USE_SAMPLE_RESPONSES;\r\n\r\n\r\nexport interface LambdaSlice {\r\n\r\n lambdaClient: any;\r\n\r\n loadingLogo: (data: any) => any;\r\n getStockLogos: () => void;\r\n saveLogo: (data: any) => any; \r\n vectorize: (data :any)=> any;\r\n}\r\n\r\nconst lambdaSlice: StateCreator<LambdaSlice> = (_set, _get) => {\r\n return {\r\n lambdaClient: requests,\r\n\r\n loadingLogo: async (_data:any) => {\r\n try {\r\n use3dddPlus.setState({ loading: true });\r\n if (!requests) {\r\n throw new Error('lambdaClient Not Found');\r\n }\r\n if (!use3dddPlus.getState().customerId)\r\n throw new Error('You need to login');\r\n const response = await requests.get(\r\n `/editor-logo/${use3dddPlus.getState().customerId}?searchText=${\r\n use3dddPlus.getState().logoSearchText\r\n }&sortBy=${use3dddPlus.getState().logoSortBy}&sortDir=${\r\n use3dddPlus.getState().logoSortDir\r\n }&pageSize=${use3dddPlus.getState().logoPageSize}&pageNo=${\r\n use3dddPlus.getState().logoPageNo\r\n }`\r\n );\r\n use3dddPlus.setState({ loading: false });\r\n const res = await response;\r\n use3dddPlus.getState().logoPageNo === 1 &&\r\n use3dddPlus.setState({ retriveLogoDesign: res });\r\n\r\n return response;\r\n } catch (error) {\r\n console.error(error);\r\n use3dddPlus.setState({ loading: false });\r\n throw new Error(error);\r\n }\r\n },\r\n getStockLogos: async () => {\r\n fabric.Object.prototype.hasControls = true;\r\n fabric.Object.prototype.hasBorders = true;\r\n try {\r\n use3dddPlus.setState({ loading: true });\r\n if (!requests) {\r\n throw new Error('lambdaClient Not Found');\r\n }\r\n const response = await requests.get('/mascot-logos');\r\n use3dddPlus.setState({ loading: false });\r\n const res = await response;\r\n use3dddPlus.setState({ stockLogos: res });\r\n return res;\r\n } catch (error) {\r\n console.error(error);\r\n use3dddPlus.setState({ loading: false });\r\n throw new Error(error);\r\n }\r\n },\r\n saveLogo: async (logo) => {\r\n try {\r\n use3dddPlus.setState({ loading: true });\r\n if (!requests) {\r\n throw new Error('lambdaClient Not Found');\r\n }\r\n const response = await requests.post('/editor-logo', logo);\r\n use3dddPlus.setState({ loading: false });\r\n return response;\r\n } catch (error) {\r\n console.error(error);\r\n use3dddPlus.setState({ loading: false });\r\n throw new Error(error);\r\n }\r\n },\r\n vectorize: async(data)=>{ \r\n const formData = new FormData();\r\n formData.append('image', data);\r\n console.log(data,formData)\r\n const config = {\r\n headers: {\r\n 'Content-Type': 'multipart/form-data',\r\n },\r\n };\r\n try {\r\n use3dddPlus.setState({ loading: true });\r\n if (!requests) {\r\n throw new Error('lambdaClient Not Found');\r\n }\r\n const response = await requests.post('/image-vectorizer', {'image': data} , config);\r\n use3dddPlus.setState({ loading: false });\r\n return response;\r\n } catch (error) {\r\n console.error(error);\r\n use3dddPlus.setState({ loading: false });\r\n throw new Error(error);\r\n }\r\n }\r\n };\r\n};\r\n\r\nexport default lambdaSlice;\r\n","import { StateCreator } from 'zustand';\r\nexport interface SaveDesignSlice {\r\n disableSaveButton: boolean;\r\n designNumber: string;\r\n designImageUrl: string;\r\n designProofPdfUrl: string;\r\n logoTag: string[];\r\n logoName: string;\r\n designNotes: string;\r\n designConfig: string;\r\n designId: number;\r\n hasDesignNumber: () => boolean;\r\n showSaveCTA: boolean;\r\n showSaveRackCTA: boolean;\r\n}\r\n\r\nexport const saveDesignSlice: StateCreator<SaveDesignSlice> = (_set, get) => {\r\n return {\r\n disableSaveButton: false,\r\n designNumber: '',\r\n designImageUrl: '',\r\n designProofPdfUrl: '',\r\n logoTag: [],\r\n logoName: '',\r\n designNotes: '',\r\n designConfig: '',\r\n designId: undefined,\r\n hasDesignNumber: () => !!get().designNumber,\r\n showSaveCTA: true,\r\n showSaveRackCTA: true,\r\n };\r\n};\r\n\r\nexport default SaveDesignSlice;\r\n","\r\n// import { Texture } from '../store/customize/types';\r\n\r\nconst _oldURL = process.env.REACT_APP_IMAGE_URL_OLD!;\r\nconst _newURL = process.env.REACT_APP_IMAGE_URL!;\r\nexport const URLMapping = (url: string) => {\r\n // check if th url has old or new url paths\r\n if (url.includes(_oldURL)) {\r\n return url.replace(_oldURL, _newURL);\r\n }\r\n // if it has old then relace to new\r\n else if (url.includes(_newURL)) return url;\r\n // if it doesnot have nay then add new\r\n else {\r\n return _newURL + url;\r\n }\r\n};\r\n\r\n// export const getTextureDataFromId = (id) => {\r\n// const textureData = use3dddPlus.getState().productTextures;\r\n\r\n// // const textureData = [];\r\n// return textureData.filter((texture) => texture.id === id).filter(Boolean)[0];\r\n// };\r\n//@ts-ignore\r\nexport const constructMappingItem = (texture?: any, item?: any) => {\r\n return {\r\n id: item?.id,\r\n name: item?.name,\r\n path: item?.ProductMedium.Image_URL,\r\n type: item?.__typename,\r\n flipY: texture ? texture.flipY : false,\r\n };\r\n};\r\n\r\nexport const getImageURL = (path: string) => {\r\n return process.env.REACT_APP_IMAGE_URL + path; //item?.ProductMedium?.Image_URL\r\n};\r\n","export function getCookie(cname: string) {\r\n let name = cname + '=';\r\n let decodedCookie = decodeURIComponent(document.cookie);\r\n let ca = decodedCookie.split(';');\r\n for (let i = 0; i < ca.length; i++) {\r\n let c = ca[i];\r\n while (c.charAt(0) == ' ') {\r\n c = c.substring(1);\r\n }\r\n if (c.indexOf(name) == 0) {\r\n return c.substring(name.length, c.length);\r\n }\r\n }\r\n return '';\r\n}\r\n\r\nexport function setCookie(cname: string, cvalue: any, exdays: number) {\r\n const d = new Date();\r\n d.setTime(d.getTime() + exdays * 24 * 60 * 60 * 1000);\r\n let expires = 'expires=' + d.toUTCString();\r\n document.cookie = cname + '=' + cvalue + ';' + expires + ';path=/';\r\n}\r\n\r\nexport const clearCookie = (cname: string, cvalue = '') => {\r\n const d = new Date();\r\n d.setTime(d.getTime());\r\n let expires = 'expires=' + d.toUTCString();\r\n document.cookie = cname + '=' + cvalue + ';' + expires + ';path=/';\r\n};\r\n","import CryptoJS from 'crypto-js';\r\nexport const encryptToken = (data: any) => {\r\n return CryptoJS.AES.encrypt(\r\n JSON.stringify(data),\r\n 'secret key 123'\r\n ).toString();\r\n};\r\nexport const decryptToken = (ciphertext: string) => {\r\n var bytes = CryptoJS.AES.decrypt(ciphertext, 'secret key 123');\r\n return JSON.parse(bytes.toString(CryptoJS.enc.Utf8));\r\n};\r\n\r\nexport const getProjectId = () => {\r\n const queryString = window.location.search;\r\n const urlParams = new URLSearchParams(queryString);\r\n const projectId = urlParams.get('projectId');\r\n return projectId || process.env.REACT_APP_3DDDPLUS_PROJECTID;\r\n};\r\n\r\nexport function parseJwt(token) {\r\n var base64Url = token.split('.')[1];\r\n var base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/');\r\n var jsonPayload = decodeURIComponent(\r\n window\r\n ?.atob(base64)\r\n ?.split('')\r\n ?.map(function (c) {\r\n return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);\r\n })\r\n .join('')\r\n );\r\n\r\n return JSON.parse(jsonPayload);\r\n}\r\n","//import { use3dddPlus } from '../store';\r\n\r\n// export const getDomImage = () => {\r\n// var strMime = 'image/jpeg';\r\n// const imgData = use3dddPlus.getState().gl.domElement.toDataURL(strMime);\r\n\r\n// return dataURItoBlob(imgData);\r\n// };\r\n\r\nexport function dataURItoBlob(dataURI) {\r\n // convert base64 to raw binary data held in a string\r\n // doesn't handle URLEncoded DataURIs - see SO answer #6850276 for code that does this\r\n var byteString = atob(dataURI.split(',')[1]);\r\n\r\n // separate out the mime component\r\n // var mimeString = dataURI.split(',')[0].split(':')[1].split(';')[0];\r\n\r\n // write the bytes of the string to an ArrayBuffer\r\n var ab = new ArrayBuffer(byteString.length);\r\n var ia = new Uint8Array(ab);\r\n for (var i = 0; i < byteString.length; i++) {\r\n ia[i] = byteString.charCodeAt(i);\r\n }\r\n\r\n //Old Code\r\n //write the ArrayBuffer to a blob, and you're done\r\n //var bb = new BlobBuilder();\r\n //bb.append(ab);\r\n //return bb.getBlob(mimeString);\r\n\r\n //New Code\r\n return new File([ab], new Date().getTime() + '_configuration' + '.jpg', {\r\n type: 'image/jpeg',\r\n // lastModified: new Date(),\r\n });\r\n}\r\n","// function called to save image\r\nexport const saveFile = function (strData: string, filename: string) {\r\n let link = document.createElement('a');\r\n document.body.appendChild(link);\r\n link.download = filename;\r\n link.href = strData;\r\n link.click();\r\n document.body.removeChild(link);\r\n};\r\n","// The key code condition we provided refers to the following key ranges:\r\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'.\r\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'.\r\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'.\r\n// 4. `(x >= 32 && x <= 32)`: This condition checks for the spacebar key. The key code 32 represents the space character.\r\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.\r\n\r\n\r\nexport const restrictSpecialCharacters = function (e) {\r\n const x = e.which || e.keycode;\r\n if (\r\n (x >= 97 && x <= 122) ||\r\n (x >= 48 && x <= 57) ||\r\n (x >= 65 && x <= 90) ||\r\n (x >= 32 && x <= 32)\r\n ) {\r\n return true;\r\n } else return e.preventDefault();\r\n};","import { StateCreator } from 'zustand';\r\nimport {\r\n clearCookie,\r\n decryptToken,\r\n encryptToken,\r\n getCookie,\r\n setCookie,\r\n} from '../../services';\r\nimport {\r\n clearSessionStorage,\r\n getSessionStorage,\r\n setSessionStorage,\r\n} from '../../services/sessionStorage';\r\n\r\nexport interface AuthSlice {\r\n authType?: string;\r\n cardCode?: string;\r\n customerEmail?: string;\r\n customerId?: number;\r\n customerType?: string;\r\n priceLevel: string;\r\n token?: string;\r\n clearLoginInfo: () => void;\r\n generateCustomizerToken: (setInCookies?: boolean) => void;\r\n setCustomizerToken: () => void;\r\n isLoggedIn: () => boolean;\r\n customUploadLogoColorList: any[];\r\n defaultColorList: any[];\r\n availableColorCodes: any[];\r\n customOptions: any;\r\n}\r\n\r\nexport const authSlice: StateCreator<AuthSlice> = (set, get) => {\r\n return {\r\n customUploadLogoColorList: [],\r\n defaultColorList: [],\r\n availableColorCodes: [],\r\n customOptions: {},\r\n priceLevel: '',\r\n token: '',\r\n customerId: 117015,\r\n clearLoginInfo: () => {\r\n clearCookie('customizerToken');\r\n clearSessionStorage('customizerToken');\r\n set({\r\n authType: '',\r\n cardCode: '',\r\n customerEmail: '',\r\n customerId: 117015,\r\n customerType: '',\r\n priceLevel: '',\r\n token: '',\r\n });\r\n },\r\n generateCustomizerToken: (setInCookies = true) => {\r\n const authType = get().authType;\r\n const cardCode = get().cardCode;\r\n const customerEmail = get().customerEmail;\r\n const customerId = get().customerId;\r\n const customerType = get().priceLevel;\r\n const token = get().token;\r\n\r\n const customizerToken = encryptToken({\r\n authType,\r\n cardCode,\r\n customerEmail,\r\n customerId,\r\n customerType,\r\n token,\r\n });\r\n if (setInCookies) {\r\n setCookie('customizerToken', customizerToken, 1);\r\n } else {\r\n setSessionStorage('customizerToken', customizerToken);\r\n }\r\n },\r\n setCustomizerToken: () => {\r\n const customizerToken: any =\r\n getSessionStorage('customizerToken') || getCookie('customizerToken');\r\n\r\n if (!customizerToken) return;\r\n const decrypt: any = decryptToken(customizerToken);\r\n\r\n set({\r\n ...decrypt,\r\n });\r\n },\r\n isLoggedIn: () => (!!get().customerId ? true : false),\r\n };\r\n};\r\n\r\nexport default AuthSlice;\r\n","export const clearSessionStorage = (cname: string) => {\r\n sessionStorage.removeItem(cname);\r\n};\r\n\r\nexport const getSessionStorage = (sName: string) => {\r\n return sessionStorage.getItem(sName);\r\n};\r\n\r\nexport const setSessionStorage = (cname: string, cvalue: any) => {\r\n sessionStorage.setItem(cname, cvalue);\r\n};\r\n","import { StateCreator } from 'zustand';\r\n// import { use3dddPlus } from '..';\r\n\r\nexport interface HistorySlice {\r\n history: string[];\r\n current: string;\r\n navigateTo: (page: string) => void;\r\n goBack: () => void;\r\n}\r\n\r\nexport const historySlice: StateCreator<HistorySlice> = (set, _get) => {\r\n return {\r\n history: [],\r\n current: '',\r\n navigateTo: (page: string) => {\r\n set((state) => ({\r\n history: [...state.history, state.current],\r\n current: page,\r\n }));\r\n },\r\n goBack: () => {\r\n set((state) => {\r\n if (state.history.length > 0) {\r\n const previousPage = state.history.pop()!;\r\n return {\r\n history: [...state.history],\r\n current: previousPage,\r\n };\r\n }\r\n return state;\r\n });\r\n },\r\n }\r\n}\r\nexport default HistorySlice;\r\n","import { StateCreator } from 'zustand';\r\nimport { fabric } from 'fabric';\r\nimport { use3dddPlus } from '..';\r\nimport AWS from 'aws-sdk';\r\n\r\nexport interface FabricSlice {\r\n // popCanvasOptions ?: any,\r\n availableMascots: any[];\r\n filteredMascots: any[];\r\n loading: Boolean;\r\n selectedStepper?: any;\r\n setSelectedStepper?: (selectedStepper: any) => void;\r\n hasUploadScreen?: any;\r\n setHasUploadScreen?: (hasUploadScreen: boolean) => void;\r\n storeHistory: any;\r\n count: number;\r\n stockLogos: [];\r\n retriveLogoDesign: any[];\r\n fabricCanvas: any;\r\n popupCanv: any;\r\n textInfo: string;\r\n uploadImageModalDisplay: boolean;\r\n mylogoAdded: boolean;\r\n currentSelection: string;\r\n activeSelection: any;\r\n selectedAll: boolean;\r\n colorFill: any;\r\n defaultColorFill: any[];\r\n loadedObject: any;\r\n setDefaultColorFill: (dcf: any) => void;\r\n defaultColorFillCopy: any[];\r\n setDefaultColorFillCopy: (dcf: any) => void;\r\n // colorFillPopup : {},\r\n storeAllObject: any[];\r\n iconImage: string;\r\n HideControls: any;\r\n showContextMenu: boolean;\r\n forStoringAllObject: (data: any) => void;\r\n forIconCapture: () => void;\r\n duplicateObject: () => void;\r\n deleteButtonControls: () => void;\r\n undo: () => void;\r\n redo: () => void;\r\n moveDown: (element) => void;\r\n moveUp: (element) => void;\r\n moveRight: (element) => void;\r\n moveLeft: (element) => void;\r\n applyColorFill: () => any;\r\n updateModifaction: (saveHistory: boolean) => void;\r\n nameCounter: any;\r\n guid: () => string;\r\n contextMenuCoordinates: { x: number; y: number };\r\n stockLogoHandler: (e: any) => void;\r\n loadMascots: (data: any) => void;\r\n myLogoHandler: (logo: any) => void;\r\n loadingRetrivedFiles: (data: any) => void;\r\n allColor: any;\r\n uploadLogoConfig: (jsonConfig: any, customerId: any) => any;\r\n logoData: any;\r\n setLogoData: (logo: any) => void;\r\n setAvailableMascots: (availableMascots: any[]) => void;\r\n setFilteredMascots: (filteredMascots: any[]) => void;\r\n handleMascotObjectFilterValues: (event: any) => void;\r\n filterValue: string;\r\n displayProductColor?: boolean;\r\n setDisplayProductColor?: () => void;\r\n popUpCanvasAllColor: any[];\r\n popupCanvasStoreHistory: any[];\r\n popUpCanvasCount: number;\r\n popUpCanvasApplyColorFill: () => void;\r\n popUpCanvasUpdateModification: (data: any) => void;\r\n popUpCanvasRedo: () => void;\r\n popUpCanvasUndo: () => any;\r\n forPopupCanvasReset: any;\r\n forPopupCanvasColor: any;\r\n imageData: any;\r\n horizontalLine: any;\r\n verticalLine: any;\r\n lastPosition: { top: number; left: number; scaleX?: number; scaleY?: number };\r\n setLastPosition: (lastPosition: {\r\n top: number;\r\n left: number;\r\n scaleX?: number;\r\n scaleY?: number;\r\n }) => void;\r\n validateColorAvailability: (imgColorCodes: any[]) => boolean;\r\n fontFamilies: any[],\r\n}\r\n\r\nexport const fabricSlice: StateCreator<FabricSlice> = (set, get) => {\r\n return {\r\n popUpCanvasCount: 1,\r\n popupCanvasStoreHistory: [],\r\n availableMascots: [],\r\n filteredMascots: [],\r\n logoData: null,\r\n setLogoData: (logoData) => set({ logoData }),\r\n allColor: [],\r\n loading: false,\r\n selectedStepper: 1,\r\n setSelectedStepper: (selectedStepper) => set({ selectedStepper }),\r\n hasUploadScreen: false,\r\n setHasUploadScreen: (hasUploadScreen) => set({ hasUploadScreen }),\r\n storeHistory: [],\r\n stockLogos: [],\r\n retriveLogoDesign: [],\r\n fabricCanvas: null,\r\n popupCanv: null,\r\n textInfo: 'NEW TEXT',\r\n uploadImageModalDisplay: false,\r\n mylogoAdded: false,\r\n currentSelection: 'layer',\r\n activeSelection: null,\r\n selectedAll: false,\r\n colorFill: {},\r\n defaultColorFill: [],\r\n loadedObject: [],\r\n defaultColorFillCopy: [],\r\n // colorFillPopup : {},\r\n storeAllObject: [],\r\n iconImage: '',\r\n HideControls: {\r\n tl: true,\r\n tr: true,\r\n bl: true, //false\r\n br: true,\r\n ml: false,\r\n mt: false,\r\n mr: false,\r\n mb: false,\r\n mtr: true,\r\n // 'cornerColor':'yellow'\r\n },\r\n showContextMenu: false,\r\n forStoringAllObject: (data) => {\r\n //@ts-ignore\r\n get().storeAllObject.unshift(data);\r\n },\r\n\r\n forIconCapture: () => {\r\n const activeObject = get().fabricCanvas.getActiveObject();\r\n if (activeObject) {\r\n const dataURL = activeObject.toDataURL('image/png');\r\n set({ iconImage: dataURL });\r\n }\r\n },\r\n nameCounter: 0,\r\n guid: () => {\r\n let u =\r\n Date.now().toString(16) + Math.random().toString(16) + '0'.repeat(16);\r\n return [\r\n u.substr(0, 8),\r\n u.substr(8, 4),\r\n '4000-8' + u.substr(13, 3),\r\n u.substr(16, 12),\r\n ].join('-');\r\n },\r\n duplicateObject: () => {\r\n if (get().fabricCanvas.getActiveObject() !== null) {\r\n let activeObj = get().fabricCanvas.getActiveObject();\r\n let clipboard;\r\n get()\r\n .fabricCanvas.getActiveObject()\r\n .clone((cloned) => {\r\n clipboard = cloned;\r\n clipboard.clone((clonedObj) => {\r\n get().fabricCanvas.discardActiveObject();\r\n clonedObj.set({\r\n evented: true,\r\n });\r\n if (clonedObj.type === 'activeSelection') {\r\n clonedObj.canvas = get().fabricCanvas;\r\n clonedObj.forEachObject((obj: any, index: any) => {\r\n obj.colorFill = activeObj._objects[index].colorFill;\r\n obj.id = use3dddPlus.getState().guid();\r\n // copy all path text data & clone text props as well(text with shapes applied)\r\n // if (obj.type === 'path' && obj.pathData !== undefined) {\r\n if (obj.type === 'path') {\r\n obj.pathData = activeObj._objects[index].pathData;\r\n obj.shapeSize = activeObj._objects[index].shapeSize;\r\n obj.shapeType = activeObj._objects[index].shapeType;\r\n obj.fontFamily = activeObj._objects[index].fontFamily;\r\n obj.fontWeight = activeObj._objects[index].fontWeight;\r\n obj.fontSize = activeObj._objects[index].fontSize;\r\n obj.charSpacing = activeObj._objects[index].charSpacing;\r\n obj.textAlign = activeObj._objects[index].textAlign;\r\n obj.fontStyle = activeObj._objects[index].fontStyle;\r\n obj.text = activeObj._objects[index].text;\r\n }\r\n get().fabricCanvas.add(obj);\r\n });\r\n clonedObj.setCoords();\r\n } else {\r\n clonedObj.colorFill = activeObj.colorFill;\r\n clonedObj.id = use3dddPlus.getState().guid();\r\n // copy all path text data & clone text props as well(text with shapes applied)\r\n if (\r\n activeObj.type === 'path' &&\r\n activeObj.pathData !== undefined\r\n ) {\r\n clonedObj.pathData = activeObj.pathData;\r\n clonedObj.shapeSize = activeObj.shapeSize;\r\n clonedObj.shapeType = activeObj.shapeType;\r\n clonedObj.fontFamily = activeObj.fontFamily;\r\n clonedObj.fontWeight = activeObj.fontWeight;\r\n clonedObj.fontSize = activeObj.fontSize;\r\n clonedObj.charSpacing = activeObj.charSpacing;\r\n clonedObj.textAlign = activeObj.textAlign;\r\n clonedObj.fontStyle = activeObj.fontStyle;\r\n clonedObj.text = activeObj.text;\r\n }\r\n get().fabricCanvas.add(clonedObj);\r\n }\r\n clipboard.top += 20;\r\n clipboard.left += 20;\r\n if (\r\n activeObj &&\r\n activeObj.shapeType &&\r\n activeObj.shapeType.length > 0\r\n ) {\r\n clonedObj.shapeType = activeObj.shapeType;\r\n clonedObj.shapeSize = activeObj.shapeSize;\r\n }\r\n get().fabricCanvas.setActiveObject(clonedObj);\r\n const brNew = clonedObj.getBoundingRect();\r\n if (\r\n !(\r\n brNew.width + brNew.left + 45 + 20 >=\r\n clonedObj.canvas.width ||\r\n brNew.height + brNew.top + 10 + 20 >= clonedObj.canvas.height\r\n )\r\n ) {\r\n clonedObj.set({\r\n left: clonedObj.left + 20,\r\n top: clonedObj.top + 20,\r\n });\r\n }\r\n if (\r\n clonedObj &&\r\n clonedObj._objects &&\r\n clonedObj._objects.length > 0 &&\r\n (clonedObj._objects[0].type === 'text' ||\r\n clonedObj._objects[0].type === 'group' ||\r\n (clonedObj._objects[0].type === 'path' &&\r\n clonedObj._objects[0].fontFamily))\r\n ) {\r\n clonedObj._objects.map((data) => {\r\n data.icon = data.toDataURL('image/png');\r\n get().forStoringAllObject(data);\r\n });\r\n } else {\r\n use3dddPlus.getState().forIconCapture();\r\n clonedObj.icon = use3dddPlus.getState().iconImage;\r\n get().forStoringAllObject(clonedObj);\r\n }\r\n });\r\n get().updateModifaction(true);\r\n });\r\n } else {\r\n use3dddPlus.getState().toastMessages.pleaseSelectTheImageDulpicate();\r\n }\r\n },\r\n deleteButtonControls: () => {\r\n },\r\n count: 1,\r\n skipEvent: false,\r\n undo: () => {\r\n if (get().count <= get().storeHistory.length) {\r\n get().fabricCanvas.clear().renderAll();\r\n get().fabricCanvas.loadFromJSON(\r\n get().storeHistory[\r\n get().storeHistory.length -\r\n 1 -\r\n (get().count > 1 ? get().count - 1 : 0)\r\n ]\r\n );\r\n\r\n // Remove lines\r\n get()\r\n .fabricCanvas.getObjects()\r\n .forEach((obj) => {\r\n if (obj.type === 'line') {\r\n get().fabricCanvas.remove(obj);\r\n }\r\n });\r\n\r\n // Add lines\r\n const horizontalLine = new fabric.Line(\r\n [\r\n 0,\r\n get().fabricCanvas.height / 2,\r\n get().fabricCanvas.height,\r\n get().fabricCanvas.height / 2,\r\n ],\r\n {\r\n stroke: 'red',\r\n scaleX: 11,\r\n visible: false,\r\n selectable: false,\r\n type: 'line',\r\n }\r\n );\r\n\r\n const verticalLine = new fabric.Line(\r\n [\r\n get().fabricCanvas.width / 2,\r\n 0,\r\n get().fabricCanvas.width / 2,\r\n get().fabricCanvas.width,\r\n ],\r\n {\r\n stroke: 'red',\r\n visible: false,\r\n selectable: false,\r\n type: 'line',\r\n }\r\n );\r\n\r\n horizontalLine.centerH();\r\n get().fabricCanvas.add(horizontalLine);\r\n get().fabricCanvas.add(verticalLine);\r\n\r\n get().fabricCanvas.sendToBack(horizontalLine);\r\n get().fabricCanvas.sendToBack(verticalLine);\r\n\r\n use3dddPlus.setState({ horizontalLine: horizontalLine });\r\n use3dddPlus.setState({ verticalLine: verticalLine });\r\n\r\n get().fabricCanvas.renderAll();\r\n get().count += 1;\r\n // }\r\n\r\n // Update layers\r\n use3dddPlus.getState().clearLayers();\r\n const canvasGetobject = get().fabricCanvas.getObjects();\r\n canvasGetobject.forEach((element: any) => {\r\n if (element.type !== 'line') {\r\n use3dddPlus.getState().forStoringAllObject(element);\r\n if (element.type === 'text' || 'path') {\r\n get().fabricCanvas.setActiveObject(element);\r\n use3dddPlus.getState().forIconCapture();\r\n //@ts-ignore\r\n element.icon = use3dddPlus.getState().iconImage;\r\n get().fabricCanvas.discardActiveObject();\r\n }\r\n }\r\n });\r\n }\r\n },\r\n redo: () => {\r\n if (get().count > 2) {\r\n get().fabricCanvas.clear().renderAll();\r\n let item = Math.abs(get().count - get().storeHistory.length - 2);\r\n get().fabricCanvas.loadFromJSON(get().storeHistory[item]);\r\n\r\n // Remove lines\r\n get()\r\n .fabricCanvas.getObjects()\r\n .forEach((obj) => {\r\n if (obj.type === 'line') {\r\n get().fabricCanvas.remove(obj);\r\n }\r\n });\r\n\r\n // Add lines\r\n const horizontalLine = new fabric.Line(\r\n [\r\n 0,\r\n get().fabricCanvas.height / 2,\r\n get().fabricCanvas.height,\r\n get().fabricCanvas.height / 2,\r\n ],\r\n {\r\n stroke: 'red',\r\n scaleX: 11,\r\n visible: false,\r\n selectable: false,\r\n type: 'line',\r\n }\r\n );\r\n\r\n const verticalLine = new fabric.Line(\r\n [\r\n get().fabricCanvas.width / 2,\r\n 0,\r\n get().fabricCanvas.width / 2,\r\n get().fabricCanvas.width,\r\n ],\r\n {\r\n stroke: 'red',\r\n visible: false,\r\n selectable: false,\r\n type: 'line',\r\n }\r\n );\r\n\r\n horizontalLine.centerH();\r\n get().fabricCanvas.add(horizontalLine);\r\n get().fabricCanvas.add(verticalLine);\r\n\r\n get().fabricCanvas.sendBackwards(horizontalLine);\r\n get().fabricCanvas.sendBackwards(verticalLine);\r\n\r\n use3dddPlus.setState({ horizontalLine: horizontalLine });\r\n use3dddPlus.setState({ verticalLine: verticalLine });\r\n\r\n get().fabricCanvas.renderAll();\r\n get().count -= 1;\r\n\r\n // Update layers\r\n use3dddPlus.getState().clearLayers();\r\n const canvasGetobject = get().fabricCanvas.getObjects();\r\n canvasGetobject.forEach((element: any) => {\r\n if (element.type !== 'line') {\r\n use3dddPlus.getState().forStoringAllObject(element);\r\n if (element.type === 'text' || 'path') {\r\n get().fabricCanvas.setActiveObject(element);\r\n use3dddPlus.getState().forIconCapture();\r\n //@ts-ignore\r\n element.icon = use3dddPlus.getState().iconImage;\r\n get().fabricCanvas.discardActiveObject();\r\n }\r\n }\r\n });\r\n }\r\n },\r\n moveDown: (element) => {\r\n element.top = element.top + 2;\r\n get().fabricCanvas.renderAll();\r\n },\r\n moveUp: (element) => {\r\n element.top = element.top - 2;\r\n get().fabricCanvas.renderAll();\r\n },\r\n moveRight: (element) => {\r\n element.left = element.left + 2;\r\n get().fabricCanvas.renderAll();\r\n },\r\n moveLeft: (element) => {\r\n element.left = element.left - 2;\r\n get().fabricCanvas.renderAll();\r\n },\r\n applyColorFill: () => {\r\n\r\n const canvasData = get().fabricCanvas.toJSON(['id', 'colorFill', 'shapeType', 'shapeSize', 'text', 'textAlign', 'stroke',\r\n 'strokeWidth', 'fontFamily', 'icon'\r\n ]);\r\n return canvasData;\r\n },\r\n setDefaultColorFill: (dcf: any) => {\r\n use3dddPlus.setState({ defaultColorFill: dcf });\r\n },\r\n setDefaultColorFillCopy: (dcf: any) => {\r\n use3dddPlus.setState({ defaultColorFillCopy: dcf });\r\n },\r\n\r\n updateModifaction: (toSet) => {\r\n if (toSet) {\r\n if (get().count > 1 && get().storeHistory.length > 1) {\r\n for (let i = 1; i < get().count; i++) {\r\n get().storeHistory.pop();\r\n }\r\n get().count = 1;\r\n }\r\n get().storeHistory.push(get().applyColorFill());\r\n }\r\n },\r\n\r\n contextMenuCoordinates: { x: 0, y: 0 },\r\n stockLogoHandler: (e: any) => {\r\n //@ts-ignore\r\n let logos = e + '?timestamp=' + Date.now();\r\n use3dddPlus.setState({ selectedStepper: undefined });\r\n get().loadMascots(logos);\r\n },\r\n loadMascots: (data) => {\r\n fabric.loadSVGFromURL(data, (objects, options) => {\r\n const loadedObject: any = fabric.util.groupSVGElements(\r\n objects,\r\n options\r\n );\r\n loadedObject.scaleToWidth(450);\r\n loadedObject.scaleToHeight(450);\r\n let objImage = [];\r\n let _Fills = [];\r\n //@ts-ignore\r\n if (loadedObject && loadedObject._objects) {\r\n //@ts-ignore\r\n objImage = loadedObject._objects;\r\n objImage.forEach((ele) => {\r\n ele.set({ strokeWidth: 0 });\r\n use3dddPlus.setState({ fillColor: [...ele.fill] });\r\n _Fills.push(ele.fill);\r\n });\r\n } else {\r\n //@ts-ignore\r\n objImage = loadedObject;\r\n //@ts-ignore\r\n objImage.set({ strokeWidth: 0 });\r\n //@ts-ignore\r\n use3dddPlus.setState({ fillColor: [...objImage.fill] });\r\n _Fills.push(objImage.fill);\r\n }\r\n use3dddPlus.setState({\r\n //@ts-ignore\r\n fillColor: use3dddPlus.getState().removeDuplicates(_Fills),\r\n });\r\n //@ts-ignore\r\n _Fills = use3dddPlus.getState().removeDuplicates(_Fills);\r\n const fillColors = {};\r\n _Fills.map((item, index) => {\r\n fillColors['layer' + index] = item;\r\n });\r\n use3dddPlus.setState({ colorFill: fillColors });\r\n loadedObject.set({\r\n //@ts-ignore\r\n colorFill: fillColors,\r\n });\r\n loadedObject.id = get().guid();\r\n get().fabricCanvas.add(loadedObject).renderAll();\r\n get().fabricCanvas.centerObject(loadedObject);\r\n get().fabricCanvas.setActiveObject(loadedObject);\r\n use3dddPlus.setState({ activeSelection: loadedObject });\r\n use3dddPlus.getState().forStoringAllObject(loadedObject);\r\n get()\r\n .fabricCanvas.getActiveObject()\r\n .toDataURL(function () { });\r\n use3dddPlus.getState().forIconCapture();\r\n //@ts-ignore\r\n loadedObject.icon = use3dddPlus.getState().iconImage;\r\n use3dddPlus.getState().updateModifaction(true);\r\n use3dddPlus.setState({ loading: false });\r\n });\r\n },\r\n myLogoHandler: (logo: any) => {\r\n let jsonData = logo.logo_config_url;\r\n var requestOptions = {\r\n method: 'GET',\r\n };\r\n fetch(jsonData, requestOptions)\r\n .then((response) => response.text())\r\n .then((result) => get().loadingRetrivedFiles(result))\r\n .catch((error) => console.log('error', error));\r\n },\r\n\r\n loadingRetrivedFiles: (data: any) => {\r\n let canvas = use3dddPlus.getState().fabricCanvas;\r\n canvas.loadFromJSON(JSON.parse(data), function () {\r\n const horizontalLine = new fabric.Line(\r\n [0, canvas.height / 2, canvas.height, canvas.height / 2],\r\n {\r\n stroke: 'red',\r\n scaleX: 11,\r\n visible: false,\r\n selectable: false,\r\n type: 'line',\r\n }\r\n );\r\n\r\n const verticalLine = new fabric.Line(\r\n [canvas.width / 2, 0, canvas.width / 2, canvas.width],\r\n {\r\n stroke: 'red',\r\n visible: false,\r\n selectable: false,\r\n type: 'line',\r\n }\r\n );\r\n\r\n horizontalLine.centerH();\r\n canvas.add(horizontalLine);\r\n canvas.add(verticalLine);\r\n get().fabricCanvas.sendToBack(horizontalLine);\r\n get().fabricCanvas.sendToBack(verticalLine);\r\n use3dddPlus.setState({ horizontalLine: horizontalLine });\r\n use3dddPlus.setState({ verticalLine: verticalLine });\r\n canvas.renderAll.bind(canvas);\r\n canvas.discardActiveObject();\r\n use3dddPlus.setState({ selectedStepper: undefined });\r\n // Update layers\r\n use3dddPlus.getState().clearLayers();\r\n canvas.getObjects().forEach((element) => {\r\n element.id = use3dddPlus.getState().guid();\r\n if (element.type !== 'line') {\r\n use3dddPlus.getState().forStoringAllObject(element);\r\n }\r\n canvas.setActiveObject(element);\r\n canvas.renderAll();\r\n use3dddPlus.getState().forIconCapture();\r\n element.icon = use3dddPlus.getState().iconImage;\r\n });\r\n use3dddPlus.getState().updateModifaction(true);\r\n });\r\n canvas.backgroundColor = '#ffffff';\r\n use3dddPlus.setState({ mylogoAdded: false })\r\n canvas.discardActiveObject().renderAll();\r\n },\r\n uploadLogoConfig: async (jsonConfig, customerId) => {\r\n const bucketName = process.env.REACT_APP_BUCKET;\r\n const region = process.env.REACT_APP_REGION;\r\n AWS.config.update({\r\n accessKeyId: process.env.REACT_APP_ACCESSKEY,\r\n secretAccessKey: process.env.REACT_APP_SECRET_ACCESSKEY,\r\n });\r\n const S3 = new AWS.S3({\r\n params: { Bucket: bucketName },\r\n region: region,\r\n });\r\n\r\n const microTime = Date.now();\r\n const filePath = `my-logos/logo-config/${customerId}/${microTime}.json`;\r\n const params = {\r\n Bucket: bucketName,\r\n Key: filePath,\r\n Body: jsonConfig,\r\n ContentType: 'application/json',\r\n };\r\n\r\n const s3UrlPath = `https://${bucketName}.s3.${region}.amazonaws.com/${filePath}`;\r\n return new Promise((resolve, reject) => {\r\n S3.putObject(params, function (err: any) {\r\n if (err) {\r\n console.log('Error occurred while connecting S3 bucket!', err);\r\n reject(err);\r\n } else {\r\n resolve(s3UrlPath);\r\n }\r\n });\r\n });\r\n },\r\n setAvailableMascots: (availableMascots) => set({ availableMascots }),\r\n setFilteredMascots: (filteredMascots) => set({ filteredMascots }),\r\n\r\n handleMascotObjectFilterValues: (event) => {\r\n set({\r\n filterValue: event,\r\n });\r\n if (event === 'All') {\r\n get().setFilteredMascots(\r\n get().availableMascots\r\n // get().availableMascots.map((item) => item.thumbnail)\r\n );\r\n } else {\r\n const filteredData = get().availableMascots.filter((item) =>\r\n item.tags.includes(event)\r\n );\r\n get().setFilteredMascots(filteredData);\r\n // get().setFilteredMascots(filteredData.map((item) => item.thumbnail));\r\n }\r\n },\r\n filterValue: '',\r\n displayProductColor: false,\r\n setDisplayProductColor: () => {\r\n set((state) => ({\r\n displayProductColor: !state.displayProductColor,\r\n }));\r\n },\r\n popUpCanvasAllColor: [],\r\n popUpCanvasApplyColorFill: () => {\r\n const popUpCanvasData = get().popupCanv.toJSON(['id', 'colorFill']);\r\n return popUpCanvasData;\r\n },\r\n popUpCanvasUpdateModification: (toSet) => {\r\n if (toSet) {\r\n const historyObject = {\r\n colorFill: get().colorFill,\r\n json: get().popUpCanvasApplyColorFill(),\r\n };\r\n set((state) => ({\r\n ...state,\r\n popupCanvasStoreHistory: [\r\n ...state.popupCanvasStoreHistory,\r\n historyObject,\r\n ],\r\n }));\r\n }\r\n },\r\n popUpCanvasUndo: () => {\r\n if (get().popUpCanvasCount <= get().popupCanvasStoreHistory.length) {\r\n const _V =\r\n get().popupCanvasStoreHistory.length -\r\n 1 -\r\n (get().popUpCanvasCount > 1 ? get().popUpCanvasCount - 1 : 0);\r\n if (get().popupCanvasStoreHistory[_V] && _V > 0) {\r\n const colors = get().popupCanvasStoreHistory[_V].colorFill;\r\n get().popupCanv.clear().renderAll();\r\n get().popupCanv.loadFromJSON(get().popupCanvasStoreHistory[_V].json);\r\n get()\r\n .popupCanv.getObjects()\r\n .forEach((obj) => {\r\n if (obj.type === 'line') {\r\n get().popupCanv.remove(obj);\r\n } else {\r\n obj.set({\r\n perPixelTargetFind: true,\r\n })\r\n }\r\n });\r\n\r\n const canvas = use3dddPlus.getState().popupCanv;\r\n var gridSize = 83; // Size of each grid cell\r\n var canvasWidth = canvas.width;\r\n var canvasHeight = canvas.height;\r\n var numCols = Math.ceil(canvasWidth / gridSize);\r\n var numRows = Math.ceil(canvasHeight / gridSize);\r\n\r\n // Function to create a rectangle with checkerboard pattern\r\n function createCheckerboardRect(left, top, width, height, isEvenRow) {\r\n var rect = new fabric.Rect({\r\n left: left,\r\n top: top,\r\n width: width,\r\n height: height,\r\n type: 'line',\r\n lockMovementX: true,\r\n lockMovementY: true,\r\n lockScalingX: true,\r\n lockScalingY: true,\r\n // backgroundColor:'#ccc',\r\n fill:\r\n (isEvenRow && (left / gridSize) % 2 === 0) ||\r\n (!isEvenRow && (left / gridSize) % 2 !== 0)\r\n ? '#ffffff'\r\n : '#dadadac7',\r\n });\r\n return rect;\r\n }\r\n\r\n // Create grid lines\r\n for (var i = 0; i < numCols; i++) {\r\n var x = i * gridSize;\r\n const line = new fabric.Line([x, 0, x, canvasHeight], {\r\n stroke: '#dadadac7',\r\n selectable: false,\r\n type: 'line',\r\n lockMovementX: true,\r\n lockMovementY: true,\r\n lockScalingX: true,\r\n lockScalingY: true,\r\n });\r\n canvas.add(line);\r\n canvas.sendToBack(line);\r\n }\r\n\r\n for (var j = 0; j < numRows; j++) {\r\n var y = j * gridSize;\r\n const line = new fabric.Line([0, y, canvasWidth, y], {\r\n stroke: '#FFFFFF',\r\n selectable: false,\r\n type: 'line',\r\n lockMovementX: true,\r\n lockMovementY: true,\r\n lockScalingX: true,\r\n lockScalingY: true,\r\n });\r\n canvas.add(line);\r\n canvas.sendToBack(line);\r\n }\r\n\r\n // Fill grid with checkerboard pattern\r\n for (var i = 0; i < numCols; i++) {\r\n for (var j = 0; j < numRows; j++) {\r\n var left = i * gridSize;\r\n var top = j * gridSize;\r\n var isEvenRow = j % 2 === 0;\r\n var rect = createCheckerboardRect(\r\n left,\r\n top,\r\n gridSize,\r\n gridSize,\r\n isEvenRow\r\n );\r\n canvas.add(rect);\r\n canvas.sendToBack(rect);\r\n }\r\n }\r\n\r\n set({ colorFill: colors });\r\n get().popupCanv.renderAll();\r\n get().popUpCanvasCount += 1;\r\n if (_V === 1) {\r\n use3dddPlus.setState({ popupCanvasStoreHistory: [] });\r\n use3dddPlus.getState().popUpCanvasUpdateModification(true);\r\n get().popUpCanvasCount = 1;\r\n }\r\n return colors;\r\n } else {\r\n return null;\r\n }\r\n } else {\r\n return null;\r\n }\r\n },\r\n popUpCanvasRedo: () => {\r\n if (get().popUpCanvasCount > 0) {\r\n get().popupCanv.clear().renderAll();\r\n get().popupCanv.loadFromJSON(\r\n get().popupCanvasStoreHistory[\r\n get().popupCanvasStoreHistory.length -\r\n 1 -\r\n get().popUpCanvasCount +\r\n 1\r\n ]\r\n );\r\n get().popupCanv.renderAll();\r\n get().popUpCanvasCount -= 1;\r\n }\r\n },\r\n forPopupCanvasReset: null,\r\n forPopupCanvasColor: {},\r\n imageData: null,\r\n horizontalLine: null,\r\n verticalLine: null,\r\n lastPosition: { top: 0, left: 0 },\r\n setLastPosition: (lastPosition) => set({ lastPosition }),\r\n validateColorAvailability: (imgColorCodes) => {\r\n const allowedColorCodes = use3dddPlus.getState().availableColorCodes;\r\n let validation = true;\r\n for (let index = 0; index < imgColorCodes.length; index++) {\r\n let colorCode = imgColorCodes[index];\r\n colorCode = colorCode.trim().toUpperCase();\r\n const isExit = allowedColorCodes.indexOf(colorCode);\r\n if (isExit !== -1) {\r\n continue;\r\n }\r\n validation = false;\r\n break;\r\n }\r\n return validation;\r\n },\r\n fontFamilies: [],\r\n };\r\n};\r\n\r\nexport default FabricSlice;\r\n","/* This Source Code Form is subject to the terms of the Mozilla Public\r\n * License, v. 2.0. If a copy of the MPL was not distributed with this\r\n * file, You can obtain one at http://mozilla.org/MPL/2.0/. */\r\n\r\n'use strict';\r\n\r\nexport function TIFFParser() {\r\n this.tiffDataView = undefined;\r\n this.littleEndian = undefined;\r\n this.fileDirectories = [];\r\n}\r\n\r\nTIFFParser.prototype = {\r\n isLittleEndian: function () {\r\n // Get byte order mark.\r\n var BOM = this.getBytes(2, 0);\r\n\r\n // Find out the endianness.\r\n if (BOM === 0x4949) {\r\n this.littleEndian = true;\r\n } else if (BOM === 0x4d4d) {\r\n this.littleEndian = false;\r\n } else {\r\n console.log(BOM);\r\n throw TypeError('Invalid byte order value.');\r\n }\r\n\r\n return this.littleEndian;\r\n },\r\n\r\n hasTowel: function () {\r\n // Check for towel.\r\n if (this.getBytes(2, 2) !== 42) {\r\n throw RangeError('You forgot your towel!');\r\n return false;\r\n }\r\n\r\n return true;\r\n },\r\n\r\n getFieldTagName: function (fieldTag) {\r\n // See: http://www.digitizationguidelines.gov/guidelines/TIFF_Metadata_Final.pdf\r\n // See: http://www.digitalpreservation.gov/formats/content/tiff_tags.shtml\r\n var fieldTagNames = {\r\n // TIFF Baseline\r\n 0x013b: 'Artist',\r\n 0x0102: 'BitsPerSample',\r\n 0x0109: 'CellLength',\r\n 0x0108: 'CellWidth',\r\n 0x0140: 'ColorMap',\r\n 0x0103: 'Compression',\r\n 0x8298: 'Copyright',\r\n 0x0132: 'DateTime',\r\n 0x0152: 'ExtraSamples',\r\n 0x010a: 'FillOrder',\r\n 0x0121: 'FreeByteCounts',\r\n 0x0120: 'FreeOffsets',\r\n 0x0123: 'GrayResponseCurve',\r\n 0x0122: 'GrayResponseUnit',\r\n 0x013c: 'HostComputer',\r\n 0x010e: 'ImageDescription',\r\n 0x0101: 'ImageLength',\r\n 0x0100: 'ImageWidth',\r\n 0x010f: 'Make',\r\n 0x0119: 'MaxSampleValue',\r\n 0x0118: 'MinSampleValue',\r\n 0x0110: 'Model',\r\n 0x00fe: 'NewSubfileType',\r\n 0x0112: 'Orientation',\r\n 0x0106: 'PhotometricInterpretation',\r\n 0x011c: 'PlanarConfiguration',\r\n 0x0128: 'ResolutionUnit',\r\n 0x0116: 'RowsPerStrip',\r\n 0x0115: 'SamplesPerPixel',\r\n 0x0131: 'Software',\r\n 0x0117: 'StripByteCounts',\r\n 0x0111: 'StripOffsets',\r\n 0x00ff: 'SubfileType',\r\n 0x0107: 'Threshholding',\r\n 0x011a: 'XResolution',\r\n 0x011b: 'YResolution',\r\n\r\n // TIFF Extended\r\n 0x0146: 'BadFaxLines',\r\n 0x0147: 'CleanFaxData',\r\n 0x0157: 'ClipPath',\r\n 0x0148: 'ConsecutiveBadFaxLines',\r\n 0x01b1: 'Decode',\r\n 0x01b2: 'DefaultImageColor',\r\n 0x010d: 'DocumentName',\r\n 0x0150: 'DotRange',\r\n 0x0141: 'HalftoneHints',\r\n 0x015a: 'Indexed',\r\n 0x015b: 'JPEGTables',\r\n 0x011d: 'PageName',\r\n 0x0129: 'PageNumber',\r\n 0x013d: 'Predictor',\r\n 0x013f: 'PrimaryChromaticities',\r\n 0x0214: 'ReferenceBlackWhite',\r\n 0x0153: 'SampleFormat',\r\n 0x022f: 'StripRowCounts',\r\n 0x014a: 'SubIFDs',\r\n 0x0124: 'T4Options',\r\n 0x0125: 'T6Options',\r\n 0x0145: 'TileByteCounts',\r\n 0x0143: 'TileLength',\r\n 0x0144: 'TileOffsets',\r\n 0x0142: 'TileWidth',\r\n 0x012d: 'TransferFunction',\r\n 0x013e: 'WhitePoint',\r\n 0x0158: 'XClipPathUnits',\r\n 0x011e: 'XPosition',\r\n 0x0211: 'YCbCrCoefficients',\r\n 0x0213: 'YCbCrPositioning',\r\n 0x0212: 'YCbCrSubSampling',\r\n 0x0159: 'YClipPathUnits',\r\n 0x011f: 'YPosition',\r\n\r\n // EXIF\r\n 0x9202: 'ApertureValue',\r\n 0xa001: 'ColorSpace',\r\n 0x9004: 'DateTimeDigitized',\r\n 0x9003: 'DateTimeOriginal',\r\n 0x8769: 'Exif IFD',\r\n 0x9000: 'ExifVersion',\r\n 0x829a: 'ExposureTime',\r\n 0xa300: 'FileSource',\r\n 0x9209: 'Flash',\r\n 0xa000: 'FlashpixVersion',\r\n 0x829d: 'FNumber',\r\n 0xa420: 'ImageUniqueID',\r\n 0x9208: 'LightSource',\r\n 0x927c: 'MakerNote',\r\n 0x9201: 'ShutterSpeedValue',\r\n 0x9286: 'UserComment',\r\n\r\n // IPTC\r\n 0x83bb: 'IPTC',\r\n\r\n // ICC\r\n 0x8773: 'ICC Profile',\r\n\r\n // XMP\r\n 0x02bc: 'XMP',\r\n\r\n // GDAL\r\n 0xa480: 'GDAL_METADATA',\r\n 0xa481: 'GDAL_NODATA',\r\n\r\n // Photoshop\r\n 0x8649: 'Photoshop',\r\n };\r\n\r\n var fieldTagName;\r\n\r\n if (fieldTag in fieldTagNames) {\r\n fieldTagName = fieldTagNames[fieldTag];\r\n } else {\r\n console.log('Unknown Field Tag:', fieldTag);\r\n fieldTagName = 'Tag' + fieldTag;\r\n }\r\n\r\n return fieldTagName;\r\n },\r\n\r\n getFieldTypeName: function (fieldType) {\r\n var fieldTypeNames = {\r\n 0x0001: 'BYTE',\r\n 0x0002: 'ASCII',\r\n 0x0003: 'SHORT',\r\n 0x0004: 'LONG',\r\n 0x0005: 'RATIONAL',\r\n 0x0006: 'SBYTE',\r\n 0x0007: 'UNDEFINED',\r\n 0x0008: 'SSHORT',\r\n 0x0009: 'SLONG',\r\n 0x000a: 'SRATIONAL',\r\n 0x000b: 'FLOAT',\r\n 0x000c: 'DOUBLE',\r\n };\r\n\r\n var fieldTypeName;\r\n\r\n if (fieldType in fieldTypeNames) {\r\n fieldTypeName = fieldTypeNames[fieldType];\r\n }\r\n\r\n return fieldTypeName;\r\n },\r\n\r\n getFieldTypeLength: function (fieldTypeName) {\r\n var fieldTypeLength;\r\n\r\n if (['BYTE', 'ASCII', 'SBYTE', 'UNDEFINED'].indexOf(fieldTypeName) !== -1) {\r\n fieldTypeLength = 1;\r\n } else if (['SHORT', 'SSHORT'].indexOf(fieldTypeName) !== -1) {\r\n fieldTypeLength = 2;\r\n } else if (['LONG', 'SLONG', 'FLOAT'].indexOf(fieldTypeName) !== -1) {\r\n fieldTypeLength = 4;\r\n } else if (\r\n ['RATIONAL', 'SRATIONAL', 'DOUBLE'].indexOf(fieldTypeName) !== -1\r\n ) {\r\n fieldTypeLength = 8;\r\n }\r\n\r\n return fieldTypeLength;\r\n },\r\n\r\n getBits: function (numBits, byteOffset, bitOffset) {\r\n bitOffset = bitOffset || 0;\r\n var extraBytes = Math.floor(bitOffset / 8);\r\n var newByteOffset = byteOffset + extraBytes;\r\n var totalBits = bitOffset + numBits;\r\n var shiftRight = 32 - numBits;\r\n\r\n if (totalBits <= 0) {\r\n console.log(numBits, byteOffset, bitOffset);\r\n throw RangeError('No bits requested');\r\n } else if (totalBits <= 8) {\r\n var shiftLeft = 24 + bitOffset;\r\n var rawBits = this.tiffDataView.getUint8(\r\n newByteOffset,\r\n this.littleEndian\r\n );\r\n } else if (totalBits <= 16) {\r\n var shiftLeft = 16 + bitOffset;\r\n var rawBits = this.tiffDataView.getUint16(\r\n newByteOffset,\r\n this.littleEndian\r\n );\r\n } else if (totalBits <= 32) {\r\n var shiftLeft = bitOffset;\r\n var rawBits = this.tiffDataView.getUint32(\r\n newByteOffset,\r\n this.littleEndian\r\n );\r\n } else {\r\n console.log(numBits, byteOffset, bitOffset);\r\n throw RangeError('Too many bits requested');\r\n }\r\n\r\n var chunkInfo = {\r\n bits: (rawBits << shiftLeft) >>> shiftRight,\r\n byteOffset: newByteOffset + Math.floor(totalBits / 8),\r\n bitOffset: totalBits % 8,\r\n };\r\n\r\n return chunkInfo;\r\n },\r\n\r\n getBytes: function (numBytes, offset) {\r\n if (numBytes <= 0) {\r\n console.log(numBytes, offset);\r\n throw RangeError('No bytes requested');\r\n } else if (numBytes <= 1) {\r\n return this.tiffDataView.getUint8(offset, this.littleEndian);\r\n } else if (numBytes <= 2) {\r\n return this.tiffDataView.getUint16(offset, this.littleEndian);\r\n } else if (numBytes <= 3) {\r\n return this.tiffDataView.getUint32(offset, this.littleEndian) >>> 8;\r\n } else if (numBytes <= 4) {\r\n return this.tiffDataView.getUint32(offset, this.littleEndian);\r\n } else {\r\n console.log(numBytes, offset);\r\n throw RangeError('Too many bytes requested');\r\n }\r\n },\r\n\r\n getFieldValues: function (\r\n fieldTagName,\r\n fieldTypeName,\r\n typeCount,\r\n valueOffset\r\n ) {\r\n var fieldValues = [];\r\n\r\n var fieldTypeLength = this.getFieldTypeLength(fieldTypeName);\r\n var fieldValueSize = fieldTypeLength * typeCount;\r\n\r\n if (fieldValueSize <= 4) {\r\n // The value is stored at the big end of the valueOffset.\r\n if (this.littleEndian === false) {\r\n var value = valueOffset >>> ((4 - fieldTypeLength) * 8);\r\n } else {\r\n var value = valueOffset;\r\n }\r\n\r\n fieldValues.push(value);\r\n } else {\r\n for (var i = 0; i < typeCount; i++) {\r\n var indexOffset = fieldTypeLength * i;\r\n\r\n if (fieldTypeLength >= 8) {\r\n if (['RATIONAL', 'SRATIONAL'].indexOf(fieldTypeName) !== -1) {\r\n // Numerator\r\n fieldValues.push(this.getBytes(4, valueOffset + indexOffset));\r\n // Denominator\r\n fieldValues.push(this.getBytes(4, valueOffset + indexOffset + 4));\r\n //\t\t\t\t\t} else if (['DOUBLE'].indexOf(fieldTypeName) !== -1) {\r\n //\t\t\t\t\t\tfieldValues.push(this.getBytes(4, valueOffset + indexOffset) + this.getBytes(4, valueOffset + indexOffset + 4));\r\n } else {\r\n console.log(fieldTypeName, typeCount, fieldValueSize);\r\n throw TypeError(\"Can't handle this field type or size\");\r\n }\r\n } else {\r\n fieldValues.push(\r\n this.getBytes(fieldTypeLength, valueOffset + indexOffset)\r\n );\r\n }\r\n }\r\n }\r\n\r\n if (fieldTypeName === 'ASCII') {\r\n fieldValues.forEach(function (e, i, a) {\r\n a[i] = String.fromCharCode(e);\r\n });\r\n }\r\n\r\n return fieldValues;\r\n },\r\n\r\n clampColorSample: function (colorSample, bitsPerSample) {\r\n var multiplier = Math.pow(2, 8 - bitsPerSample);\r\n\r\n return Math.floor(colorSample * multiplier + (multiplier - 1));\r\n },\r\n\r\n makeRGBAFillValue: function (r, g, b, a) {\r\n if (typeof a === 'undefined') {\r\n a = 1.0;\r\n }\r\n return 'rgba(' + r + ', ' + g + ', ' + b + ', ' + a + ')';\r\n },\r\n\r\n parseFileDirectory: function (byteOffset) {\r\n var numDirEntries = this.getBytes(2, byteOffset);\r\n\r\n var tiffFields = [];\r\n\r\n for (\r\n var i = byteOffset + 2, entryCount = 0;\r\n entryCount < numDirEntries;\r\n i += 12, entryCount++\r\n ) {\r\n var fieldTag = this.getBytes(2, i);\r\n var fieldType = this.getBytes(2, i + 2);\r\n var typeCount = this.getBytes(4, i + 4);\r\n var valueOffset = this.getBytes(4, i + 8);\r\n\r\n var fieldTagName = this.getFieldTagName(fieldTag);\r\n var fieldTypeName = this.getFieldTypeName(fieldType);\r\n\r\n var fieldValues = this.getFieldValues(\r\n fieldTagName,\r\n fieldTypeName,\r\n typeCount,\r\n valueOffset\r\n );\r\n\r\n tiffFields[fieldTagName] = { type: fieldTypeName, values: fieldValues };\r\n }\r\n\r\n this.fileDirectories.push(tiffFields);\r\n\r\n var nextIFDByteOffset = this.getBytes(4, i);\r\n\r\n if (nextIFDByteOffset === 0x00000000) {\r\n return this.fileDirectories;\r\n } else {\r\n return this.parseFileDirectory(nextIFDByteOffset);\r\n }\r\n },\r\n\r\n parseTIFF: function (tiffArrayBuffer, canvas) {\r\n canvas = canvas || document.createElement('canvas');\r\n\r\n console.log(tiffArrayBuffer);\r\n\r\n this.tiffDataView = new DataView(tiffArrayBuffer);\r\n this.canvas = canvas;\r\n\r\n this.littleEndian = this.isLittleEndian(this.tiffDataView);\r\n\r\n if (!this.hasTowel(this.tiffDataView, this.littleEndian)) {\r\n return;\r\n }\r\n\r\n var firstIFDByteOffset = this.getBytes(4, 4);\r\n\r\n this.fileDirectories = this.parseFileDirectory(firstIFDByteOffset);\r\n\r\n var fileDirectory = this.fileDirectories[0];\r\n\r\n console.log(fileDirectory);\r\n\r\n var imageWidth = fileDirectory.ImageWidth.values[0];\r\n var imageLength = fileDirectory.ImageLength.values[0];\r\n\r\n this.canvas.width = imageWidth;\r\n this.canvas.height = imageLength;\r\n\r\n var strips = [];\r\n\r\n var compression = fileDirectory.Compression\r\n ? fileDirectory.Compression.values[0]\r\n : 1;\r\n\r\n var samplesPerPixel = fileDirectory.SamplesPerPixel.values[0];\r\n\r\n var sampleProperties = [];\r\n\r\n var bitsPerPixel = 0;\r\n var hasBytesPerPixel = false;\r\n\r\n fileDirectory.BitsPerSample.values.forEach(function (\r\n bitsPerSample,\r\n i,\r\n bitsPerSampleValues\r\n ) {\r\n sampleProperties[i] = {\r\n bitsPerSample: bitsPerSample,\r\n hasBytesPerSample: false,\r\n bytesPerSample: undefined,\r\n };\r\n\r\n if (bitsPerSample % 8 === 0) {\r\n sampleProperties[i].hasBytesPerSample = true;\r\n sampleProperties[i].bytesPerSample = bitsPerSample / 8;\r\n }\r\n\r\n bitsPerPixel += bitsPerSample;\r\n },\r\n this);\r\n\r\n if (bitsPerPixel % 8 === 0) {\r\n hasBytesPerPixel = true;\r\n var bytesPerPixel = bitsPerPixel / 8;\r\n }\r\n\r\n var stripOffsetValues = fileDirectory.StripOffsets.values;\r\n var numStripOffsetValues = stripOffsetValues.length;\r\n\r\n // StripByteCounts is supposed to be required, but see if we can recover anyway.\r\n if (fileDirectory.StripByteCounts) {\r\n var stripByteCountValues = fileDirectory.StripByteCounts.values;\r\n } else {\r\n console.log('Missing StripByteCounts!');\r\n\r\n // Infer StripByteCounts, if possible.\r\n if (numStripOffsetValues === 1) {\r\n var stripByteCountValues = [\r\n Math.ceil((imageWidth * imageLength * bitsPerPixel) / 8),\r\n ];\r\n } else {\r\n throw Error('Cannot recover from missing StripByteCounts');\r\n }\r\n }\r\n\r\n // Loop through strips and decompress as necessary.\r\n for (var i = 0; i < numStripOffsetValues; i++) {\r\n var stripOffset = stripOffsetValues[i];\r\n strips[i] = [];\r\n\r\n var stripByteCount = stripByteCountValues[i];\r\n\r\n // Loop through pixels.\r\n for (\r\n var byteOffset = 0,\r\n bitOffset = 0,\r\n jIncrement = 1,\r\n getHeader = true,\r\n pixel = [],\r\n numBytes = 0,\r\n sample = 0,\r\n currentSample = 0;\r\n byteOffset < stripByteCount;\r\n byteOffset += jIncrement\r\n ) {\r\n // Decompress strip.\r\n switch (compression) {\r\n // Uncompressed\r\n case 1:\r\n // Loop through samples (sub-pixels).\r\n for (var m = 0, pixel = []; m < samplesPerPixel; m++) {\r\n if (sampleProperties[m].hasBytesPerSample) {\r\n // XXX: This is wrong!\r\n var sampleOffset = sampleProperties[m].bytesPerSample * m;\r\n\r\n pixel.push(\r\n this.getBytes(\r\n sampleProperties[m].bytesPerSample,\r\n stripOffset + byteOffset + sampleOffset\r\n )\r\n );\r\n } else {\r\n var sampleInfo = this.getBits(\r\n sampleProperties[m].bitsPerSample,\r\n stripOffset + byteOffset,\r\n bitOffset\r\n );\r\n\r\n pixel.push(sampleInfo.bits);\r\n\r\n byteOffset = sampleInfo.byteOffset - stripOffset;\r\n bitOffset = sampleInfo.bitOffset;\r\n\r\n throw RangeError('Cannot handle sub-byte bits per sample');\r\n }\r\n }\r\n\r\n strips[i].push(pixel);\r\n\r\n if (hasBytesPerPixel) {\r\n jIncrement = bytesPerPixel;\r\n } else {\r\n jIncrement = 0;\r\n\r\n throw RangeError('Cannot handle sub-byte bits per pixel');\r\n }\r\n break;\r\n\r\n // CITT Group 3 1-Dimensional Modified Huffman run-length encoding\r\n case 2:\r\n // XXX: Use PDF.js code?\r\n break;\r\n\r\n // Group 3 Fax\r\n case 3:\r\n // XXX: Use PDF.js code?\r\n break;\r\n\r\n // Group 4 Fax\r\n case 4:\r\n // XXX: Use PDF.js code?\r\n break;\r\n\r\n // LZW\r\n case 5:\r\n // XXX: Use PDF.js code?\r\n break;\r\n\r\n // Old-style JPEG (TIFF 6.0)\r\n case 6:\r\n // XXX: Use PDF.js code?\r\n break;\r\n\r\n // New-style JPEG (TIFF Specification Supplement 2)\r\n case 7:\r\n // XXX: Use PDF.js code?\r\n break;\r\n\r\n // PackBits\r\n case 32773:\r\n // Are we ready for a new block?\r\n if (getHeader) {\r\n getHeader = false;\r\n\r\n var blockLength = 1;\r\n var iterations = 1;\r\n\r\n // The header byte is signed.\r\n var header = this.tiffDataView.getInt8(\r\n stripOffset + byteOffset,\r\n this.littleEndian\r\n );\r\n\r\n if (header >= 0 && header <= 127) {\r\n // Normal pixels.\r\n blockLength = header + 1;\r\n } else if (header >= -127 && header <= -1) {\r\n // Collapsed pixels.\r\n iterations = -header + 1;\r\n } /*if (header === -128)*/ else {\r\n // Placeholder byte?\r\n getHeader = true;\r\n }\r\n } else {\r\n var currentByte = this.getBytes(1, stripOffset + byteOffset);\r\n\r\n // Duplicate bytes, if necessary.\r\n for (var m = 0; m < iterations; m++) {\r\n if (sampleProperties[sample].hasBytesPerSample) {\r\n // We're reading one byte at a time, so we need to handle multi-byte samples.\r\n currentSample =\r\n (currentSample << (8 * numBytes)) | currentByte;\r\n numBytes++;\r\n\r\n // Is our sample complete?\r\n if (numBytes === sampleProperties[sample].bytesPerSample) {\r\n pixel.push(currentSample);\r\n currentSample = numBytes = 0;\r\n sample++;\r\n }\r\n } else {\r\n throw RangeError('Cannot handle sub-byte bits per sample');\r\n }\r\n\r\n // Is our pixel complete?\r\n if (sample === samplesPerPixel) {\r\n strips[i].push(pixel);\r\n\r\n pixel = [];\r\n sample = 0;\r\n }\r\n }\r\n\r\n blockLength--;\r\n\r\n // Is our block complete?\r\n if (blockLength === 0) {\r\n getHeader = true;\r\n }\r\n }\r\n\r\n jIncrement = 1;\r\n break;\r\n\r\n // Unknown compression algorithm\r\n default:\r\n // Do not attempt to parse the image data.\r\n break;\r\n }\r\n }\r\n\r\n //\t\t\tconsole.log( strips[i] );\r\n }\r\n\r\n //\t\tconsole.log( strips );\r\n\r\n if (canvas.getContext) {\r\n var ctx = this.canvas.getContext('2d');\r\n\r\n // Set a default fill style.\r\n ctx.fillStyle = this.makeRGBAFillValue(255, 255, 255, 0);\r\n\r\n // If RowsPerStrip is missing, the whole image is in one strip.\r\n if (fileDirectory.RowsPerStrip) {\r\n var rowsPerStrip = fileDirectory.RowsPerStrip.values[0];\r\n } else {\r\n var rowsPerStrip = imageLength;\r\n }\r\n\r\n var numStrips = strips.length;\r\n\r\n var imageLengthModRowsPerStrip = imageLength % rowsPerStrip;\r\n var rowsInLastStrip =\r\n imageLengthModRowsPerStrip === 0\r\n ? rowsPerStrip\r\n : imageLengthModRowsPerStrip;\r\n\r\n var numRowsInStrip = rowsPerStrip;\r\n var numRowsInPreviousStrip = 0;\r\n\r\n var photometricInterpretation =\r\n fileDirectory.PhotometricInterpretation.values[0];\r\n\r\n var extraSamplesValues = [];\r\n var numExtraSamples = 0;\r\n\r\n if (fileDirectory.ExtraSamples) {\r\n extraSamplesValues = fileDirectory.ExtraSamples.values;\r\n numExtraSamples = extraSamplesValues.length;\r\n }\r\n\r\n if (fileDirectory.ColorMap) {\r\n var colorMapValues = fileDirectory.ColorMap.values;\r\n var colorMapSampleSize = Math.pow(2, sampleProperties[0].bitsPerSample);\r\n }\r\n\r\n // Loop through the strips in the image.\r\n for (var i = 0; i < numStrips; i++) {\r\n // The last strip may be short.\r\n if (i + 1 === numStrips) {\r\n numRowsInStrip = rowsInLastStrip;\r\n }\r\n\r\n var numPixels = strips[i].length;\r\n var yPadding = numRowsInPreviousStrip * i;\r\n\r\n // Loop through the rows in the strip.\r\n for (var y = 0, j = 0; y < numRowsInStrip, j < numPixels; y++) {\r\n // Loop through the pixels in the row.\r\n for (var x = 0; x < imageWidth; x++, j++) {\r\n var pixelSamples = strips[i][j];\r\n\r\n var red = 0;\r\n var green = 0;\r\n var blue = 0;\r\n var opacity = 1.0;\r\n\r\n if (numExtraSamples > 0) {\r\n for (var k = 0; k < numExtraSamples; k++) {\r\n if (\r\n extraSamplesValues[k] === 1 ||\r\n extraSamplesValues[k] === 2\r\n ) {\r\n // Clamp opacity to the range [0,1].\r\n opacity = pixelSamples[3 + k] / 256;\r\n\r\n break;\r\n }\r\n }\r\n }\r\n\r\n switch (photometricInterpretation) {\r\n // Bilevel or Grayscale\r\n // WhiteIsZero\r\n case 0:\r\n if (sampleProperties[0].hasBytesPerSample) {\r\n var invertValue = Math.pow(\r\n 0x10,\r\n sampleProperties[0].bytesPerSample * 2\r\n );\r\n }\r\n\r\n // Invert samples.\r\n pixelSamples.forEach(function (sample, index, samples) {\r\n samples[index] = invertValue - sample;\r\n });\r\n\r\n // Bilevel or Grayscale\r\n // BlackIsZero\r\n case 1:\r\n red =\r\n green =\r\n blue =\r\n this.clampColorSample(\r\n pixelSamples[0],\r\n sampleProperties[0].bitsPerSample\r\n );\r\n break;\r\n\r\n // RGB Full Color\r\n case 2:\r\n red = this.clampColorSample(\r\n pixelSamples[0],\r\n sampleProperties[0].bitsPerSample\r\n );\r\n green = this.clampColorSample(\r\n pixelSamples[1],\r\n sampleProperties[1].bitsPerSample\r\n );\r\n blue = this.clampColorSample(\r\n pixelSamples[2],\r\n sampleProperties[2].bitsPerSample\r\n );\r\n break;\r\n\r\n // RGB Color Palette\r\n case 3:\r\n if (colorMapValues === undefined) {\r\n throw Error('Palette image missing color map');\r\n }\r\n\r\n var colorMapIndex = pixelSamples[0];\r\n\r\n red = this.clampColorSample(colorMapValues[colorMapIndex], 16);\r\n green = this.clampColorSample(\r\n colorMapValues[colorMapSampleSize + colorMapIndex],\r\n 16\r\n );\r\n blue = this.clampColorSample(\r\n colorMapValues[2 * colorMapSampleSize + colorMapIndex],\r\n 16\r\n );\r\n break;\r\n\r\n // Transparency mask\r\n case 4:\r\n throw RangeError('Not Yet Implemented: Transparency mask');\r\n break;\r\n\r\n // CMYK\r\n case 5:\r\n throw RangeError('Not Yet Implemented: CMYK');\r\n break;\r\n\r\n // YCbCr\r\n case 6:\r\n throw RangeError('Not Yet Implemented: YCbCr');\r\n break;\r\n\r\n // CIELab\r\n case 8:\r\n throw RangeError('Not Yet Implemented: CIELab');\r\n break;\r\n\r\n // Unknown Photometric Interpretation\r\n default:\r\n throw RangeError(\r\n 'Unknown Photometric Interpretation:',\r\n photometricInterpretation\r\n );\r\n break;\r\n }\r\n\r\n ctx.fillStyle = this.makeRGBAFillValue(red, green, blue, opacity);\r\n ctx.fillRect(x, yPadding + y, 1, 1);\r\n }\r\n }\r\n\r\n numRowsInPreviousStrip = numRowsInStrip;\r\n }\r\n }\r\n\r\n /*\t\tfor (var i = 0, numFileDirectories = this.fileDirectories.length; i < numFileDirectories; i++) {\r\n // Stuff\r\n }*/\r\n\r\n return this.canvas;\r\n },\r\n};\r\n","import { StateCreator } from 'zustand';\r\nimport { TIFFParser } from '../../loaders/tiffParser';\r\nimport { use3dddPlus } from '..';\r\nimport { fabric } from 'fabric';\r\n\r\n// import ImageTracer from 'imagetracerjs';\r\n// import { optionpresets } from '../../data';\r\n\r\n// import * as pdfjsLib from 'pdfjs-dist/build/pdf';\r\n// pdfjsLib.GlobalWorkerOptions.workerSrc = `//cdnjs.cloudflare.com/ajax/libs/pdf.js/${pdfjsLib.version}/pdf.worker.js`;\r\n//@ts-ignore\r\nimport * as pdfjsLib from 'pdfjs-dist/webpack';\r\nimport { requests } from '../../axios/index';\r\n// import { PopUpCanvas } from '../../components/canvas/popUpCanvas';\r\n\r\nexport interface ConverterSlice {\r\n fillColor: string[];\r\n pdfConverter: (data: any) => void;\r\n convertPdfToImages: (buffer: any) => any;\r\n tiffConvert: (data: any) => void;\r\n aiConvert: (data: any) => any;\r\n loadImageFromURL: (\r\n data: any,\r\n canvasToLoad: fabric.Canvas,\r\n createCheckerBox?: boolean\r\n ) => any;\r\n loadDesignConcept: (data: any) => any;\r\n imageToSVG: (\r\n data: any,\r\n ext: string,\r\n isSVG?: boolean,\r\n convert?: boolean\r\n ) => void;\r\n\r\n removeDuplicates: (arr: any) => void;\r\n RGBToHex: (rgb: any) => void;\r\n changeSVGColor: (property: any, color: any) => boolean;\r\n setFile: (file: any) => void;\r\n file: any;\r\n addText: () => void;\r\n refreshColor: (colorValue: number) => void;\r\n processImage: (\r\n svgstr: any,\r\n colorValue: number,\r\n canvasToLoad: fabric.Canvas,\r\n addCheckerBox?: boolean\r\n ) => void;\r\n}\r\n\r\nexport const converterSlice: StateCreator<ConverterSlice> = (set, get) => {\r\n const processImage = (\r\n svgstr: any,\r\n colorValue: number,\r\n canvasToLoad: fabric.Canvas = use3dddPlus.getState().popupCanv,\r\n addCheckerBox = true\r\n ) => {\r\n\r\n fabric.loadSVGFromString(\r\n //@ts-ignore\r\n new String(svgstr),\r\n function (objects, options) {\r\n const svgData = getDesignConceptSVGData(svgstr);\r\n let loadedObject: any = fabric.util.groupSVGElements(objects, options);\r\n console.log(\"SVG DATA--->\", svgData);\r\n svgData.forEach((resItem) => {\r\n var path;\r\n var node;\r\n\r\n objects?.forEach((item) => {\r\n //@ts-ignore\r\n if (item.id === resItem.path) {\r\n path = item;\r\n //@ts-ignore\r\n } else if (item.id === resItem.element) {\r\n node = item;\r\n }\r\n });\r\n if (node && path) {\r\n const fontSize = resItem.node.children[0]\r\n ?.getAttribute('font-size')\r\n ?.replace('px', '');\r\n node.set({\r\n path: path,\r\n top: path.top,\r\n left: path.left,\r\n textAlign: 'center',\r\n pathStartOffset:\r\n (path.width *\r\n parseFloat(resItem.node.startOffset.baseVal.valueAsString)) /\r\n 100,\r\n // fontFamily: resItem.node.children[0].getAttribute(\"font-family\"),\r\n fontSize: fontSize || 25,\r\n });\r\n node.setCoords();\r\n }\r\n });\r\n const canvas = canvasToLoad ?? use3dddPlus.getState().popupCanv;\r\n const canvasWidth = canvas.width;\r\n const canvasHeight = canvas.height;\r\n\r\n let val = 300;\r\n if (\r\n (loadedObject.width <= 200 || loadedObject.height <= 200) &&\r\n (loadedObject.minX === -0 || loadedObject.minX)\r\n ) {\r\n val = 600;\r\n }\r\n if (\r\n Math.ceil(loadedObject.width + loadedObject.left + 45) >=\r\n Math.floor(canvasWidth)\r\n ) {\r\n loadedObject.scaleToWidth(val);\r\n } else if (\r\n Math.ceil(loadedObject.height + loadedObject.top + 10) >=\r\n Math.floor(canvasHeight)\r\n ) {\r\n loadedObject.scaleToHeight(val);\r\n } else if (Math.ceil(loadedObject.left) < 0) {\r\n loadedObject.scaleToWidth(val);\r\n } else if (Math.ceil(loadedObject.top) < 0) {\r\n loadedObject.scaleToHeight(val);\r\n } else if (loadedObject.width < 200 || loadedObject.height < 200) {\r\n loadedObject.scaleToWidth(val);\r\n }\r\n //@ts-ignore\r\n let objImage = loadedObject?._objects;\r\n if (!objImage) {\r\n objImage = [loadedObject];\r\n }\r\n let _Fills = [];\r\n let fillCounts = {};\r\n let colorObjects = {};\r\n if (objImage) {\r\n objImage.forEach((ele: any) => {\r\n ele.set({ strokeWidth: 0 });\r\n ele.set({ id: ele.id ?? use3dddPlus.getState().guid() });\r\n if (typeof ele.fill === 'string' && ele.fill !== '') {\r\n set({ fillColor: [...ele.fill] });\r\n let fillColor = ele.fill.toString();\r\n const pixelCount = ele.width * ele.height;\r\n fillCounts[fillColor] = (fillCounts[fillColor] || 0) + pixelCount;\r\n if (colorObjects[fillColor]) {\r\n colorObjects[fillColor].objects.push(ele.get('id'));\r\n } else {\r\n colorObjects[fillColor] = { objects: [ele.get('id')] };\r\n }\r\n }\r\n });\r\n }\r\n use3dddPlus.setState({ loadedObject: objImage });\r\n const sortedFillColors = Object.keys(fillCounts).sort(\r\n (a, b) => fillCounts[b] - fillCounts[a]\r\n );\r\n const topColors = sortedFillColors.slice(0, colorValue);\r\n let colorObjectsHex = {};\r\n topColors.map((e) => {\r\n if (e.search('#') === -1) {\r\n let _C: any = get().RGBToHex(e);\r\n _Fills.push(_C);\r\n colorObjects[e].hex = _C;\r\n colorObjectsHex[_C] = colorObjects[e];\r\n } else {\r\n _Fills.push(e);\r\n colorObjects[e].hex = e;\r\n colorObjectsHex[e] = colorObjects[e];\r\n }\r\n });\r\n //@ts-ignore\r\n set({ fillColor: get().removeDuplicates(_Fills) });\r\n //@ts-ignore\r\n _Fills = get().removeDuplicates(_Fills);\r\n const fillColors = {};\r\n _Fills.map((item, index) => {\r\n fillColors['layer' + index] = item;\r\n });\r\n use3dddPlus.setState({ colorFill: fillColors });\r\n\r\n // Update colors in default color fill\r\n const defaultCF = [];\r\n Object.keys(fillColors).map((cf: any) => {\r\n defaultCF.push({\r\n property: cf,\r\n default: fillColors[cf],\r\n updated: fillColors[cf],\r\n objects: colorObjectsHex[fillColors[cf]].objects,\r\n });\r\n });\r\n use3dddPlus.setState({ defaultColorFill: defaultCF });\r\n use3dddPlus.setState({ defaultColorFillCopy: defaultCF });\r\n\r\n function euclideanDistance(color1: string, color2: string): number {\r\n const c1 = new fabric.Color(color1).getSource();\r\n const c2 = new fabric.Color(color2).getSource();\r\n\r\n const diffR = c1[0] - c2[0];\r\n const diffG = c1[1] - c2[1];\r\n const diffB = c1[2] - c2[2];\r\n\r\n return Math.sqrt(diffR ** 2 + diffG ** 2 + diffB ** 2);\r\n }\r\n const colorMap: { [color: string]: string } = {};\r\n sortedFillColors.forEach((color) => {\r\n const closestColor = topColors.reduce((prev, curr) => {\r\n const prevDiff = euclideanDistance(color, prev);\r\n const currDiff = euclideanDistance(color, curr);\r\n return prevDiff < currDiff ? prev : curr;\r\n });\r\n colorMap[color] = closestColor;\r\n });\r\n if (objImage) {\r\n objImage.forEach((ele: any) => {\r\n ele.set({ fill: colorMap[ele.fill.toString()] });\r\n });\r\n }\r\n if (addCheckerBox) {\r\n loadedObject.set({\r\n colorFill: fillColors,\r\n lockMovementX: false,\r\n lockMovementY: false,\r\n })\r\n } else {\r\n loadedObject.set({\r\n colorFill: fillColors,\r\n lockMovementX: true,\r\n lockMovementY: true,\r\n //@ts-ignore\r\n // setControlVisible: true,\r\n });\r\n }\r\n // loadedObject.id = use3dddPlus.getState().guid();\r\n\r\n // loadedObject = new fabric.Group(objImage, options);\r\n use3dddPlus.getState().popupCanv?.clear();\r\n var gridSize = 83; // Size of each grid cell\r\n var numCols = Math.ceil(canvasWidth / gridSize);\r\n var numRows = Math.ceil(canvasHeight / gridSize);\r\n\r\n // Function to create a rectangle with checkerboard pattern\r\n function createCheckerboardRect(left, top, width, height, isEvenRow) {\r\n var rect = new fabric.Rect({\r\n left: left,\r\n top: top,\r\n width: width,\r\n height: height,\r\n type: 'line',\r\n lockMovementX: true,\r\n lockMovementY: true,\r\n lockScalingX: true,\r\n lockScalingY: true,\r\n // backgroundColor:'#ccc',\r\n fill:\r\n (isEvenRow && (left / gridSize) % 2 === 0) ||\r\n (!isEvenRow && (left / gridSize) % 2 !== 0)\r\n ? '#ffffff'\r\n : '#dadadac7',\r\n });\r\n return rect;\r\n }\r\n\r\n if (addCheckerBox) {\r\n // Create grid lines\r\n for (var i = 0; i < numCols; i++) {\r\n var x = i * gridSize;\r\n canvas.add(\r\n new fabric.Line([x, 0, x, canvasHeight], {\r\n stroke: '#dadadac7',\r\n selectable: false,\r\n lockMovementX: true,\r\n lockMovementY: true,\r\n lockScalingX: true,\r\n lockScalingY: true,\r\n type: 'line',\r\n })\r\n );\r\n }\r\n\r\n for (var j = 0; j < numRows; j++) {\r\n var y = j * gridSize;\r\n canvas.add(\r\n new fabric.Line([0, y, canvasWidth, y], {\r\n stroke: '#FFFFFF',\r\n selectable: false,\r\n lockMovementX: true,\r\n lockMovementY: true,\r\n lockScalingX: true,\r\n lockScalingY: true,\r\n type: 'line',\r\n })\r\n );\r\n }\r\n\r\n // Fill grid with checkerboard pattern\r\n for (var i = 0; i < numCols; i++) {\r\n for (var j = 0; j < numRows; j++) {\r\n var left = i * gridSize;\r\n var top = j * gridSize;\r\n var isEvenRow = j % 2 === 0;\r\n var rect = createCheckerboardRect(\r\n left,\r\n top,\r\n gridSize,\r\n gridSize,\r\n isEvenRow\r\n );\r\n use3dddPlus.getState()?.popupCanv?.add(rect);\r\n }\r\n }\r\n }\r\n\r\n canvas.add(loadedObject).renderAll();\r\n canvas.centerObject(loadedObject);\r\n canvas.setActiveObject(loadedObject);\r\n\r\n use3dddPlus.setState({ activeSelection: loadedObject });\r\n\r\n use3dddPlus.setState({ loading: false });\r\n use3dddPlus.getState().popUpCanvasUpdateModification(true);\r\n if (addCheckerBox) {\r\n let _objects = canvas.getObjects();\r\n _objects.forEach((element) => {\r\n if (element.type !== 'line') {\r\n element.set({\r\n perPixelTargetFind: true,\r\n });\r\n }\r\n });\r\n canvas.discardActiveObject();\r\n }\r\n }\r\n );\r\n };\r\n // IF REQURIED RE-USE IN FUTURE\r\n /* const checkFontAvailability = (fontFamily) => {\r\n const testElement = document.createElement('div');\r\n testElement.style.fontFamily = fontFamily;\r\n testElement.style.position = 'absolute';\r\n testElement.style.left = '-9999px';\r\n testElement.textContent = 'Sample text';\r\n document.body.appendChild(testElement);\r\n \r\n const computedFont = window.getComputedStyle(testElement).fontFamily;\r\n document.body.removeChild(testElement);\r\n \r\n return computedFont.includes(fontFamily);\r\n };*/\r\n\r\n const getDesignConceptSVGData = (svgData) => {\r\n const parser = new DOMParser();\r\n const xmlDoc = parser.parseFromString(svgData, 'image/svg+xml');\r\n const textElements = xmlDoc.querySelectorAll('textPath');\r\n const href = [];\r\n // const availableFonts = [];\r\n // const paths = xmlDoc.querySelectorAll('text');\r\n\r\n /*paths.forEach((path) => {\r\n const fontFamily = path.style.fontFamily;\r\n console.log('fontFamily:', fontFamily); \r\n if (fontFamily) {\r\n const isFontAvailable = checkFontAvailability(fontFamily);\r\n availableFonts.push({\r\n font:\"${fontFamily}\"\r\n })\r\n console.log(`Is the font \"${fontFamily}\" loaded?`, isFontAvailable);\r\n if(!isFontAvailable)use3dddPlus.getState().toastMessages.fontsNotAvailable();\r\n }else{\r\n use3dddPlus.getState().toastMessages.fontsNotAvailable();\r\n }\r\n });*/\r\n\r\n textElements.forEach((textElement) => {\r\n const hrefValue = textElement?.getAttribute('xlink:href') ?? textElement?.getAttribute('href');\r\n if (hrefValue) {\r\n href.push({\r\n path: hrefValue.replace('#', ''),\r\n //@ts-ignore\r\n element: textElement?.parentNode?.id,\r\n node: textElement,\r\n });\r\n }\r\n });\r\n\r\n // return { href, availableFonts }; \r\n return href;\r\n };\r\n\r\n\r\n return {\r\n fillColor: [],\r\n file: {},\r\n setFile: (file) => {\r\n set({ file });\r\n },\r\n processImage: processImage,\r\n tiffConvert: async (data) => {\r\n const tiffParser = new TIFFParser();\r\n const canvasEl = document.createElement('canvas');\r\n canvasEl.width = 800;\r\n canvasEl.height = 800;\r\n const arrayBuffer = await data.arrayBuffer();\r\n var tiffCanvas = tiffParser.parseTIFF(arrayBuffer, canvasEl);\r\n const imageUrl = tiffCanvas.toDataURL();\r\n return imageUrl;\r\n },\r\n aiConvert: async (aiFile) => {\r\n const formData = new FormData();\r\n formData.append('file', aiFile);\r\n const url = process.env.REACT_APP_MAGENTO_URL + '/rest/V1/file-conversion';\r\n const config = {\r\n headers: {\r\n Authorization: `Bearer ${process.env.REACT_APP_MAGENTO_TOKEN}`,\r\n 'Content-Type': 'multipart/form-data',\r\n },\r\n };\r\n const response = await requests.post(url, formData, config);\r\n return response;\r\n },\r\n // @ts-ignore\r\n loadImageFromURL: async (url, canvasToLoad, createCheckerBox) => {\r\n const response = await fetch(url);\r\n const blob = await response.text();\r\n get().loadDesignConcept(blob);\r\n },\r\n\r\n loadDesignConcept: (svgstr) => {\r\n fabric.loadSVGFromString(\r\n //@ts-ignore\r\n new String(svgstr),\r\n function (objects, options) {\r\n const svgData = getDesignConceptSVGData(svgstr);\r\n let loadedObject: any = fabric.util.groupSVGElements(objects, options);\r\n loadedObject.scaleToWidth(400);\r\n loadedObject.scaleToHeight(400);\r\n svgData.forEach((resItem) => {\r\n var path;\r\n var node;\r\n\r\n objects?.forEach((item) => {\r\n //@ts-ignore\r\n if (item.id === resItem.path) {\r\n path = item;\r\n //@ts-ignore\r\n } else if (item.id === resItem.element) {\r\n node = item;\r\n }\r\n });\r\n if (node && path) {\r\n const fontSize = resItem.node.children[0]\r\n ?.getAttribute('font-size')\r\n ?.replace('px', '');\r\n node.set({\r\n path: path,\r\n top: path.top,\r\n left: path.left,\r\n textAlign: 'center',\r\n pathStartOffset:\r\n (path.width *\r\n parseFloat(resItem.node.startOffset.baseVal.valueAsString)) /\r\n 100,\r\n // fontFamily: resItem.node.children[0].getAttribute(\"font-family\"),\r\n fontSize: fontSize || 25,\r\n });\r\n node.setCoords();\r\n }\r\n });\r\n\r\n let objImage = [];\r\n let _Fills = [];\r\n //@ts-ignore\r\n if (loadedObject && loadedObject._objects) {\r\n //@ts-ignore\r\n objImage = loadedObject._objects;\r\n objImage.forEach((ele) => {\r\n ele.set({ strokeWidth: 0 });\r\n use3dddPlus.setState({ fillColor: [...ele.fill] });\r\n _Fills.push(ele.fill);\r\n });\r\n } else {\r\n //@ts-ignore\r\n objImage = loadedObject;\r\n //@ts-ignore\r\n objImage.set({ strokeWidth: 0 });\r\n //@ts-ignore\r\n use3dddPlus.setState({ fillColor: [...objImage.fill] });\r\n _Fills.push(objImage.fill);\r\n }\r\n use3dddPlus.setState({\r\n //@ts-ignore\r\n fillColor: use3dddPlus.getState().removeDuplicates(_Fills),\r\n });\r\n //@ts-ignore\r\n _Fills = use3dddPlus.getState().removeDuplicates(_Fills);\r\n const fillColors = {};\r\n _Fills.map((item, index) => {\r\n fillColors['layer' + index] = item;\r\n });\r\n use3dddPlus.setState({ colorFill: fillColors });\r\n loadedObject.set({\r\n //@ts-ignore\r\n colorFill: fillColors,\r\n });\r\n\r\n const ungroup = (object) => {\r\n object.toObject = (function (toObject) {\r\n return function () {\r\n return fabric.util.object.extend(toObject.call(this), {\r\n objects: this._objects.map((obj) => obj.toObject()),\r\n });\r\n };\r\n })(object.toObject);\r\n const items = object._objects;\r\n object._restoreObjectsState();\r\n use3dddPlus.getState().fabricCanvas.remove(object);\r\n\r\n items.forEach(function (item) {\r\n if (item.id.length < 15) {\r\n use3dddPlus.getState().fabricCanvas.add(item);\r\n use3dddPlus.getState().fabricCanvas.setActiveObject(item);\r\n use3dddPlus.setState({ activeSelection: item });\r\n use3dddPlus.getState().forStoringAllObject(item);\r\n use3dddPlus.getState()\r\n .fabricCanvas.getActiveObject()\r\n .toDataURL(function () { });\r\n use3dddPlus.getState().forIconCapture();\r\n item.icon = use3dddPlus.getState().iconImage;\r\n use3dddPlus.getState().updateModifaction(true);\r\n } else {\r\n use3dddPlus.getState().fabricCanvas.remove(item);\r\n }\r\n });\r\n };\r\n use3dddPlus.getState().fabricCanvas.centerObject(loadedObject);\r\n ungroup(loadedObject);\r\n use3dddPlus.setState({ loading: false });\r\n }\r\n );\r\n },\r\n\r\n imageToSVG: (data, ext: string, isSVG = false, convert = true) => {\r\n use3dddPlus.setState({ loading: true });\r\n if (convert) {\r\n if (isSVG) {\r\n if (ext === 'vectorSVG') {\r\n use3dddPlus.setState({ loading: true });\r\n use3dddPlus.setState({ imageData: data });\r\n processImage(data, 8);\r\n } else {\r\n var reader = new FileReader();\r\n reader.onload = function (e) {\r\n use3dddPlus.setState({ imageData: e.target.result });\r\n processImage(e.target.result, 8);\r\n };\r\n reader.readAsText(data);\r\n }\r\n }\r\n } else {\r\n processImage(data, 8);\r\n }\r\n },\r\n refreshColor: (colorValue: number) => {\r\n processImage(use3dddPlus.getState().imageData, colorValue);\r\n },\r\n removeDuplicates: (arr) => {\r\n return arr.filter((item: any, index: any) => arr.indexOf(item) === index);\r\n },\r\n\r\n RGBToHex: (rgb) => {\r\n if (rgb) {\r\n if (rgb.indexOf('rgba') >= 0) {\r\n const rgba = rgb.replace(/^rgba?\\(|\\s+|\\)$/g, '').split(',');\r\n return `#${(\r\n (1 << 24) +\r\n (parseInt(rgba[0]) << 16) +\r\n (parseInt(rgba[1]) << 8) +\r\n parseInt(rgba[2])\r\n )\r\n .toString(16)\r\n .slice(1)}`;\r\n } else {\r\n let sep = rgb.indexOf(',') > -1 ? ',' : ' ';\r\n rgb = rgb.substr(4).split(')')[0].split(sep);\r\n let r = (+rgb[0]).toString(16),\r\n g = (+rgb[1]).toString(16),\r\n b = (+rgb[2]).toString(16);\r\n\r\n if (r.length == 1) r = '0' + r;\r\n if (g.length == 1) g = '0' + g;\r\n if (b.length == 1) b = '0' + b;\r\n return '#' + r + g + b;\r\n }\r\n } else {\r\n return '';\r\n }\r\n },\r\n changeSVGColor: (property, color) => {\r\n use3dddPlus.getState().popUpCanvasUpdateModification(true);\r\n const fillColor = { ...use3dddPlus.getState().colorFill };\r\n if (use3dddPlus.getState().loadedObject) {\r\n // let objImage1 = use3dddPlus.getState().popupCanv.getObjects();\r\n let objImage = use3dddPlus.getState().popupCanv.getObjects();\r\n if (objImage.length > 0) {\r\n objImage.forEach((ele: any) => {\r\n let defaultColorObject = null;\r\n if (use3dddPlus.getState().defaultColorFill) {\r\n defaultColorObject = use3dddPlus\r\n .getState()\r\n .defaultColorFill.find((dcf) => dcf.property === property);\r\n }\r\n if (\r\n ele.id &&\r\n defaultColorObject &&\r\n defaultColorObject.objects &&\r\n defaultColorObject.objects.includes(ele.id) &&\r\n typeof ele.fill === 'string' &&\r\n ele.fill !== ''\r\n ) {\r\n // const _C = (ele.fill === 'transparent' || (typeof ele.fill === 'string' && ele.fill.includes('#')) ? ele.fill : get().RGBToHex(ele.fill));\r\n // if (_C === previousColor) {\r\n ele.set({\r\n fill: color,\r\n });\r\n // }\r\n }\r\n\r\n // if(typeof ele.fill === \"string\" && ele.fill !== \"\"){\r\n // const _C = (ele.fill === 'transparent' || (typeof ele.fill === 'string' && ele.fill.includes('#')) ? ele.fill : get().RGBToHex(ele.fill));\r\n // if (_C === previousColor) {\r\n // ele.set({\r\n // fill: color,\r\n // });\r\n // }\r\n // }\r\n });\r\n use3dddPlus.getState().popupCanv.renderAll();\r\n fillColor[property] = color;\r\n // Object.keys(fillColor).forEach((fc: any) => {\r\n // if(fillColor[fc] === previousColor){\r\n // fillColor[fc] = color;\r\n // }\r\n // });\r\n use3dddPlus.setState({ colorFill: fillColor });\r\n }\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n },\r\n addText: () => {\r\n fabric.Object.prototype.hasControls = true;\r\n fabric.Object.prototype.hasBorders = true;\r\n use3dddPlus.getState().fabricCanvas.discardActiveObject();\r\n const text: any = new fabric.Text('NEW TEXT', {\r\n lineHeight: 1,\r\n fill: '#040404',\r\n fontFamily: 'Athletic Block',\r\n fontWeight: 'normal',\r\n top: use3dddPlus.getState().fabricCanvas.height / 2 - 40,\r\n left: use3dddPlus.getState().fabricCanvas.width / 2 - 205,\r\n stroke: 'transparent',\r\n strokeWidth: 0,\r\n paintFirst: 'stroke',\r\n //charSpacing: 0,\r\n padding: 10,\r\n fontSize: 50,\r\n name: 'text',\r\n charSpacing: 0,\r\n lockScalingFlip: true,\r\n });\r\n const fillColors = { layer0: text.fill, layer1: text.stroke };\r\n text.set({\r\n //@ts-ignore\r\n colorFill: fillColors,\r\n });\r\n text.id = use3dddPlus.getState().guid();\r\n use3dddPlus.getState().fabricCanvas.centerObject(text);\r\n use3dddPlus.getState().fabricCanvas.add(text);\r\n use3dddPlus.getState().fabricCanvas.setActiveObject(text);\r\n use3dddPlus.setState({ currentSelection: 'text' });\r\n //@ts-ignore\r\n use3dddPlus.getState().deleteButtonControls(text);\r\n text.setControlsVisibility(use3dddPlus.getState().HideControls);\r\n use3dddPlus.getState().nameCounter++;\r\n use3dddPlus.getState().updateModifaction(true);\r\n use3dddPlus.getState().forStoringAllObject(text); //for pushing the data into array for layers\r\n // use3dddPlus.setState({storeAllObject : });\r\n use3dddPlus.getState().forIconCapture();\r\n //@ts-ignore\r\n text.icon = use3dddPlus.getState().iconImage;\r\n },\r\n pdfConverter: (data) => {\r\n return new Promise((_resolve, reject) => {\r\n if (data) {\r\n const reader = new FileReader();\r\n reader.onload = async () => {\r\n const buffer = reader.result;\r\n try {\r\n const _B = await get().convertPdfToImages(buffer);\r\n _resolve(_B);\r\n } catch (error) {\r\n reject(error);\r\n }\r\n };\r\n reader.readAsArrayBuffer(data);\r\n } else {\r\n reject(new Error('No data provided.'));\r\n }\r\n });\r\n },\r\n // convertPdfToImages: async (buffer: any) => {\r\n // const pdf = await pdfjsLib.getDocument({ data: new Uint8Array(buffer) })\r\n // .promise;\r\n // const scale = 2;\r\n // for (let pageNum = 1; pageNum <= pdf.numPages; pageNum++) {\r\n // const page = await pdf.getPage(pageNum);\r\n // const viewport = page.getViewport({ scale });\r\n // const canvasEl = document.createElement('canvas');\r\n // canvasEl.width = viewport.width;\r\n // canvasEl.height = viewport.height;\r\n // const context = canvasEl.getContext('2d');\r\n // await page.render({\r\n // canvasContext: context,\r\n // viewport,\r\n // background: 'rgba(0,0,0,0)',\r\n // }).promise;\r\n // const imageUrl = canvasEl.toDataURL();\r\n // return imageUrl;\r\n // }\r\n // return null;\r\n // },\r\n convertPdfToImages: async (file) => {\r\n const pdf = await pdfjsLib.getDocument(file).promise;\r\n const canvas = document.createElement('canvas');\r\n if (pdf.numPages >= 0) {\r\n const page = await pdf.getPage(1);\r\n const viewport = page.getViewport({ scale: 1 });\r\n const context = canvas.getContext('2d');\r\n canvas.height = viewport.height;\r\n canvas.width = viewport.width;\r\n await page.render({ canvasContext: context, viewport: viewport })\r\n .promise;\r\n }\r\n const imageUrl = canvas.toDataURL();\r\n return imageUrl;\r\n },\r\n };\r\n};\r\nexport default ConverterSlice;\r\n","import { create, StateCreator } from 'zustand';\r\nimport {\r\n // createJSONStorage,\r\n // persist,\r\n subscribeWithSelector,\r\n} from 'zustand/middleware';\r\nimport actionSlice, { ActionSlice } from './actions';\r\nimport lambdaSlice, { LambdaSlice } from './lambda/index';\r\nimport SaveDesignSlice, { saveDesignSlice } from './saveDesign';\r\nimport AuthSlice, { authSlice } from './auth';\r\nimport HistorySlice, { historySlice } from './history';\r\nimport FabricSlice, { fabricSlice } from './fabric';\r\nimport ConverterSlice, { converterSlice} from './converters';\r\nexport type ThreedddPlus = \r\n ActionSlice &\r\n LambdaSlice &\r\n SaveDesignSlice &\r\n AuthSlice &\r\n HistorySlice &\r\n ConverterSlice &\r\n FabricSlice;\r\n\r\nexport const threedddPlusState: StateCreator<ThreedddPlus> = (...args) => {\r\n return {\r\n ...actionSlice(...args),\r\n ...lambdaSlice(...args),\r\n ...saveDesignSlice(...args),\r\n ...authSlice(...args),\r\n ...historySlice(...args),\r\n ...converterSlice(...args),\r\n ...fabricSlice(...args)\r\n };\r\n};\r\n\r\nexport const use3dddPlus = create(\r\n // persist(\r\n subscribeWithSelector<ThreedddPlus>(threedddPlusState)\r\n // , {\r\n // name: 'editor-store', // unique name\r\n // storage: createJSONStorage(() => sessionStorage), // (optional) by default, 'localStorage' is used\r\n // }\r\n // )\r\n);\r\n\r\n(window as any).datasbase = use3dddPlus;\r\n","import React from \"react\";\r\n\r\nexport const Button = ({ label, icons, onClick, className, children }) => {\r\n return (\r\n <button\r\n onClick={onClick}\r\n className={`flex rounded-none gap-3 w-full items-center p-2 m-2 ${className}`}\r\n >\r\n {icons}\r\n {label}\r\n {children}\r\n </button>\r\n );\r\n};\r\n","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","export const PRIMARY_COLOR = 'text-[#cf132b]'; //rgb(30 58 138);\r\nexport const SECONDARY_COLOR = 'text-[#e11a38]'; //rgb(156 163 175);\r\nexport const BORDER_COLOR = 'border-[#e0e0e0]'; //rgb(156 163 175)\r\nexport const BORDER_COLOR_1 = 'border-[#ecebed]';\r\nexport const BORDER_COLOR_2 = 'border-[#c2c2c2]';\r\nexport const BORDER_COLOR_3 = 'border-[#e11a38]';\r\nexport const SIDEBAR_BG_COLOR = 'bg-[#f7f7f7]';\r\nexport const SELECT_BG_COLOR = 'bg-[#e11a38]'; //rgb(203 213 225)\r\nexport const BG_COLOR_1 = 'bg-[#e11a38]'; //rgb(203 213 225)\r\nexport const SELECT_TEXT_COLOR = 'text-white'\r\nexport const TEXT_SIZE_1 = 'text-xs'; //font-size: 12px (0.75rem)\r\nexport const TEXT_SIZE_2 = 'text-2xl'; //font-size: 24px; (1.5rem)\r\nexport const TEXT_SIZE_3 = 'text-[15px]';\r\nexport const TEXT_SIZE_4 = 'text-[17px]';\r\nexport const TEXT_SIZE_5 = 'text-[28px]';\r\nexport const TEXT_SIZE_6 = 'text-[14px]';\r\nexport const TEXT_SIZE_7 = 'text-[30px]';\r\nexport const TEXT_SIZE_8 = 'text-[21px]';\r\nexport const TEXT_SIZE_9 = 'text-[13px]';\r\nexport const TEXT_SIZE_11 = 'text-[18px]';\r\nexport const TEXT_SIZE_12 = 'text-[11px]';\r\nexport const TEXT_SIZE_13 = 'text-[12px]';\r\nexport const TEXT_SIZE_14 = 'text-[16px]';\r\nexport const TEXT_SIZE_15 = 'text-[25px]';\r\nexport const TEXT_SIZE_16 = 'text-[26px]';\r\nexport const TEXT_SIZE_17 = 'text-[22px]';\r\nexport const TEXT_SIZE_18 = 'text-[16px]';\r\nexport const ACTIVE_BG_COLOR = 'bg-[#cf132b]'; //rgb(30 58 138);\r\nexport const BUTTON_TEXT_COLOR = 'text-white';\r\nexport const BUTTON_BG_COLOR = 'bg-black'; //rgb(0 0 0)\r\nexport const INPUT_BG_COLOR = 'bg-white';\r\nexport const TEXT_COLOR_1 = 'text-[#5d5d5d]';\r\nexport const BACKDROP_BLUR = 'backdrop-blur-[45px]';\r\nexport const BACKDROP_BLUR_BG_COLOR = 'bg-[#00000046]';\r\nexport const MODAL_BG_COLOR = 'bg-[#ffffff]';\r\nexport const CARD_BG_COLOR = 'bg-white'; //rgb(255 255 255)\r\nexport const INPUT_TEXT_DISABLE_COLOR = 'text-slate-300'\r\nexport const CHECKBOX_CHECKED_COLOR = '#e11a38'\r\nexport const LOAD_DESIGN_BORDER_COLOR = '#e0e0e0'\r\nexport const LOAD_DESIGN_TEXT_COLOR = 'text-[#e11a38]';\r\nexport const SEARCH_ICON_COLOR = 'text-[#727272]'\r\nexport const SEARCHBAR_BORDER_COLOR = 'border-[#bebebe]'\r\nexport const MY_DESIGN_TEXT_COLOR = 'text-[#353535]'\r\nexport const SEARCH_TEXT_COLOR = 'text-[#353535]'\r\nexport const NO_SEARCHRESULT_TEXT_COLOR_1 = 'text-[#727272]'\r\nexport const NO_SEARCHRESULT_TEXT_COLOR_2 = 'text-[#5d5d5d]'\r\nexport const CANVAS_MENU_TEXT = 'text-[#353535]';\r\nexport const CANVAS_MENU_BORDER = 'border-[#f4f4f4]';\r\nexport const CANVAS_MENU_BG_COLOR = 'bg-white';\r\nexport const CANVAS_MENU_DROPDOWN_BG_COLOR = 'bg-white';\r\nexport const DECORATION_BG_COLOR = 'bg-[#F1F1F1]'\r\nexport const DROPDOWN_BACKGROUND_COLOR = 'bg-[#FCE8EB]'\r\nexport const TAG_BG_COLOR = 'bg-[#FCE8EB]'\r\nexport const TAG_TEXT_COLOR = 'text-[#e11a38]'\r\nexport const CARD_LAST_UPDATE_COLOR = 'text-[#727272]'\r\nexport const CARD_DOWNLAOD_ICON_COLOR = 'text-[#353535]'\r\nexport const CARD_DESCRIPTION_COLOR = 'text-[#353535]'\r\nexport const FOOTER_TEXT_COLOR = 'text-[#ffffff]'\r\nexport const FOOTER_RACK_BG_COLOR = 'bg-[#E21938]'\r\nexport const FOOTER_PRICE_COLOR = 'text-[#353535]'\r\nexport const FOOTER_RACK_COUNT_COLOR = 'text-[#E21938]'\r\nexport const FOOTER_ROSTER_COLOR = 'text-[#353535]'\r\nexport const FOOTER_ROSTER_BORDER_COLOR = 'border-[#353535]'\r\nexport const FOOTER_SUMMARY_BG_COLOR = 'bg-[#353535]'\r\nexport const FOOTER_SUMMARY_TEXT_COLOR = 'text-white'\r\nexport const CONFIRMDESIGN_DISCARD_BORDER_COLOR = 'border-[#707070]';\r\nexport const CONFIRMDESIGN_TEXT_COLOR_1 = 'text-[#5d5d5d]';\r\nexport const CONFIRMDESIGN_TEXT_COLOR_2 = 'text-[#E11A38]';\r\nexport const CONFIRMDESIGN_TEXT_COLOR_3 = 'text-[#353535]';\r\nexport const CONFIRMDESIGN_TEXT_COLOR_4 = 'text-[#ffffff]';\r\nexport const CONFIRMDESIGN_SAVEBUTTON_BG_COLOR = 'bg-[#E11A38]';\r\nexport const DESIGNSUCCESS_CLOSE_BORDER_COLOR = 'border-[#707070]';\r\nexport const DESIGNSUCCESS_TEXT_COLOR_1 = 'text-[#5d5d5d]';\r\nexport const DESIGNSUCCESS_TEXT_COLOR_2 = 'text-[#E21938]';\r\nexport const DESIGNSUCCESS_TEXT_COLOR_3 = 'text-[#353535]';\r\n\r\nexport const SAVERACK_BORDER_COLOR = 'border-[#707070]'\r\nexport const SAVERACK_TEXT_COLOR = 'text-[#707070]'\r\nexport const SAVEBUTTON_BG_COLOR = 'bg-[#E11A38]'\r\nexport const TOASTER_SUCCESS_BG_COLOR = 'bg-[#D5F2EA]'\r\nexport const TOASTER_FAILURE_BG_COLOR = 'bg-[#FCE8EB]'\r\nexport const TOASTER_INFO_BG_COLOR = 'bg-[#D5E9FA]'\r\nexport const TOASTER_WARNING_BG_COLOR = 'bg-[#FFF8E7]'\r\nexport const RESET_BUTTON_BG_COLOR = 'text-[#9A9A9A]'\r\nexport const PRODUCTINFO_TEXT_COLOR_1 = 'text-[#353535]'\r\nexport const PRODUCTINFO_TEXT_COLOR_2 = 'text-[#c2c2c2]'\r\nexport const PRODUCTINFO_TEXT_COLOR_3 = 'text-[#e11a38]'\r\nexport const PRODUCTINFO_TEXT_COLOR_4 = 'text-[#5d5d5d]'\r\nexport const UPDATESUCCESS_RACK_BORDER_COLOR = 'border-[#E11938]';\r\nexport const UPDATESUCCESS_TEXT_COLOR_1 = 'text-[#E11938]';\r\nexport const RACK_CARD_BORDER_COLOR = 'border-[#e5e5e5]';\r\nexport const RACK_CARD_TEXT_COLOR_1 = 'text-[#E11A38]';\r\nexport const RACK_CARD_TEXT_COLOR_2 = 'text-[#353535]';\r\nexport const RACK_CARD_TEXT_COLOR_3 = 'text-[#9f9f9f]';\r\nexport const RACK_CARD_MENU_TEXT = 'text-[#353535]';\r\nexport const EDIT_DESIGN_INFO_TEXT_COLOR_1 = 'text-[#E11A38]';\r\nexport const EDIT_DESIGN_INFO_TEXT_COLOR_2 = 'text-[#727272]';\r\nexport const EDIT_DESIGN_INFO_TEXT_COLOR_3 = 'text-[#353535]';\r\nexport const EDIT_DESIGN_INFO_TEXT_COLOR_4 = 'text-[#ffffff]';\r\nexport const EDIT_DESIGN_INFO_INPUT_BORDER_COLOR = 'border-[#ECEBED]';\r\nexport const EDIT_DESIGN_INFO_DISABLED_BG_COLOR_1 = 'bg-[#F8F8F8]';\r\nexport const EDIT_DESIGN_INFO_BG_COLOR_2 = 'bg-[#ffffff]';\r\nexport const EDIT_DESIGN_INFO_BG_COLOR_3 = 'bg-[#e11a38]';\r\nexport const EDIT_DESIGN_INFO_BG_COLOR_4 = 'bg-[#fce8eb]';\r\nexport const INPUT_ERROR_BORDER_COLOR = 'border-[#E11A38]';\r\nexport const INPUT_ERROR_TEXT_COLOR = 'text-[#E11A38]';\r\nexport const PRICEBREAKUP_TEXT_COLOR_1 = 'text-[#353535]';\r\nexport const PRICEBREAKUP_TEXT_COLOR_2 = 'text-[#747474]';\r\nexport const PRICEBREAKUP_TEXT_BORDER_COLOR_1 = 'border-[#c2c2c2]';\r\nexport const PRICEBREAKUP_TEXT_BORDER_COLOR_2 = 'border-[#ebebeb]';","import React from 'react';\r\nimport { Tooltip, TooltipReference, useTooltipState } from 'reakit';\r\n\r\ninterface ToolTipProps {\r\n label: string;\r\n arrowOnTop?: boolean;\r\n className?: string;\r\n children: React.ReactNode | React.ReactNode[];\r\n}\r\nexport const ToolTip = ({\r\n label,\r\n arrowOnTop,\r\n className = '',\r\n children,\r\n}: ToolTipProps) => {\r\n const tooltip = useTooltipState({ placement: arrowOnTop ? 'bottom' : 'top' });\r\n return (\r\n <>\r\n <TooltipReference\r\n {...tooltip}\r\n className={`${className} flex relative items-center justify-center align-middle w-auto text-sm font-semibold first:rounded-l last:rounded-r focus:outline-none`}\r\n aria-label={label}\r\n >\r\n {children}\r\n </TooltipReference>\r\n {\r\n //@ts-ignore\r\n // <div className={styles}>\r\n <Tooltip\r\n {...tooltip}\r\n // className={`font-[Roboto-Medium] font-medium mb-[5px] text-[13px] capitalize before:content-[''] before:absolute before: ${SELECT_BG_COLOR} top-[-21%] before:left-[calc(50%-7px)] before:bg-[#fce8eb] before:rotate-[230deg] before:border before:border-b-[#f3a2af] before:border-r-[#f3a2af] before:border-l-transparent before:rounded-none before:border-t-transparent before:h-[14px] before:w-[14px] !z-[100] inline-block px-3 py-2 text-[#5d5d5d] transition-opacity duration-300 bg-[#fce8eb] shadow-sm border border-[#f3a2af] `\r\n className={`font-[Roboto-Medium] font-medium mb-[5px] text-[13px] capitalize before:content-[''] before:absolute before:left-[calc(50%-7px)] before:bg-[#fce8eb] before:rotate-[44deg] before:border ${\r\n arrowOnTop\r\n ? 'before:top-[-21%] before:border-l-[#f3a2af] before:border-t-[#f3a2af] before:border-b-transparent before:border-r-transparent'\r\n : 'before:top-[80%] before:border-b-[#f3a2af] before:border-r-[#f3a2af] before:border-l-transparent before:border-t-transparent'\r\n } before:rounded-none before:h-[14px] before:w-[14px] !z-[100] inline-block px-3 py-2 text-[#5d5d5d] transition-opacity duration-300 bg-[#fce8eb] shadow-sm border border-[#f3a2af]`}\r\n style={{ zIndex: 3 }}\r\n >\r\n {label}{' '}\r\n </Tooltip>\r\n // </div>\r\n }\r\n </>\r\n );\r\n};\r\n","import React from 'react';\r\nimport { use3dddPlus } from '../../store';\r\nimport { CANVAS_MENU_TEXT } from '../../theme';\r\nimport { Copy, Delete, IconButton, SelectAll } from '../icon';\r\nimport { MdLayers } from 'react-icons/md';\r\nimport { shallow } from 'zustand/shallow';\r\nimport { fabric } from 'fabric';\r\nimport { CgRedo, CgUndo } from 'react-icons/cg';\r\nimport { ToolTip } from '../toolTip';\r\nconst ActionButtons = () => {\r\n //@ts-ignore\r\n const [canvas, activeSelection] = use3dddPlus(\r\n (state) => [state.fabricCanvas, state.activeSelection],\r\n shallow\r\n );\r\n const selectAllHandler = () => {\r\n canvas.discardActiveObject();\r\n const sel = new fabric.ActiveSelection(\r\n canvas.getObjects().filter((obj) => obj.type !== 'line'),\r\n {\r\n canvas: canvas,\r\n }\r\n );\r\n canvas.setActiveObject(sel);\r\n canvas.requestRenderAll();\r\n use3dddPlus.getState().updateModifaction(true);\r\n use3dddPlus.setState({ selectedAll: true });\r\n use3dddPlus.setState({ currentSelection: 'selectAll' });\r\n const fillColors = {};\r\n use3dddPlus.setState({ colorFill: fillColors });\r\n };\r\n const deleteHandler = () => { \r\n if (canvas.getActiveObjects().length !== 0) {\r\n canvas.getActiveObjects().forEach((element :any) => {\r\n if(element.icon){\r\n canvas.remove(element);\r\n removeItem(element);\r\n }\r\n });\r\n // canvas.remove(activeSelection);\r\n use3dddPlus.getState().updateModifaction(true);\r\n canvas.requestRenderAll();\r\n use3dddPlus.setState({ selectedAll: false });\r\n canvas.discardActiveObject();\r\n // removeItem(activeSelection);\r\n }else{\r\n use3dddPlus.getState().toastMessages.pleaseSelectTheImage();\r\n }\r\n };\r\n const removeItem = (value: any) => {\r\n // var index = use3dddPlus.getState().storeAllObject.indexOf(value);\r\n // @ts-ignore\r\n var index = use3dddPlus\r\n .getState()\r\n .storeAllObject.findIndex((obj: any) => obj.id === value.id);\r\n if (index === -1 && value && value._objects && value._objects.length > 0) {\r\n var index = use3dddPlus\r\n .getState()\r\n //@ts-ignore\r\n .storeAllObject.indexOf(value._objects[0]);\r\n }\r\n if (index > -1) {\r\n use3dddPlus.getState().storeAllObject.splice(index, 1);\r\n }\r\n use3dddPlus.setState({\r\n storeAllObject: [...use3dddPlus.getState().storeAllObject],\r\n });\r\n };\r\n const canvasActions = [\r\n {\r\n icon: <SelectAll />,\r\n onClick: selectAllHandler,\r\n id: 'select-action',\r\n label: 'Select all',\r\n disabled: false,\r\n visible: true,\r\n },\r\n {\r\n icon: <Copy />,\r\n onClick: () => {\r\n use3dddPlus.getState().duplicateObject();\r\n },\r\n id: 'duplicate-action',\r\n label: 'Duplicate',\r\n disabled: false,\r\n visible: true,\r\n },\r\n {\r\n icon: <MdLayers />,\r\n onClick: () => {\r\n use3dddPlus.setState({ currentSelection: 'layer' });\r\n },\r\n id: 'layes-action',\r\n label: 'Layers',\r\n disabled: false,\r\n visible: true,\r\n },\r\n {\r\n icon: <Delete />,\r\n onClick: deleteHandler,\r\n id: 'delete-action',\r\n label: 'Delete',\r\n disabled: false,\r\n visible: true,\r\n },\r\n {\r\n icon: <CgUndo />,\r\n onClick: () => {\r\n use3dddPlus.getState().undo();\r\n },\r\n id: 'undo-action',\r\n label: 'Undo',\r\n disabled: false,\r\n visible: true,\r\n },\r\n {\r\n icon: <CgRedo />,\r\n onClick: () => {\r\n use3dddPlus.getState().redo();\r\n },\r\n id: 'redo-action',\r\n label: 'Redo',\r\n disabled: false,\r\n visible: true,\r\n },\r\n ];\r\n\r\n return (\r\n <>\r\n <div\r\n className=\"w-100 flex px-3 items-center z-10 h-[40px]\"\r\n style={{\r\n justifyContent: 'flex-end',\r\n }}\r\n >\r\n <div className={`flex`}>\r\n {canvasActions.map(\r\n (item) =>\r\n item?.visible && (\r\n <div\r\n key={item.id}\r\n className={`${\r\n item.disabled\r\n ? 'disableButton'\r\n : `${CANVAS_MENU_TEXT} cursor-pointer hover:text-[#e11a38] hover:underline hover:underline-offset-4 hover:decoration-2`\r\n } flex gap-[5px] items-center pt-[2.5px] font-bold uppercase mr-[30px] lg:mr-[30px] md-[20px] `}\r\n onClick={item.onClick}\r\n >\r\n <ToolTip label={item.label} arrowOnTop={true}>\r\n <span>\r\n <IconButton\r\n label=\"\"\r\n icon={item.icon}\r\n className={`${\r\n item.disabled\r\n ? 'iconDisable'\r\n : 'pointer-events-auto cursor-pointer'\r\n } m-auto`}\r\n size=\"1.125rem\"\r\n ></IconButton>\r\n </span>\r\n </ToolTip>\r\n </div>\r\n )\r\n )}\r\n </div>\r\n </div>\r\n </>\r\n );\r\n};\r\n\r\nexport default ActionButtons;\r\n","import React from 'react';\r\nimport { use3dddPlus } from '../../store';\r\n// import { CANVAS_MENU_TEXT } from '../../theme';\r\n// import { Copy, Delete, IconButton, SelectAll } from '../icon';\r\n// import { MdLayers } from 'react-icons/md';\r\n// import { shallow } from 'zustand/shallow';\r\n// import { fabric } from 'fabric';\r\n// import { CgRedo, CgUndo } from 'react-icons/cg';\r\nconst NudgeButtons = () => {\r\n // const [canvas, activeSelection] = use3dddPlus(\r\n // (state) => [state.fabricCanvas, state.activeSelection],\r\n // shallow\r\n // );\r\n // const selectAllHandler = () => {\r\n // canvas.discardActiveObject();\r\n // const sel = new fabric.ActiveSelection(canvas.getObjects(), {\r\n // canvas: canvas,\r\n // });\r\n // canvas.setActiveObject(sel);\r\n // canvas.requestRenderAll();\r\n // use3dddPlus.getState().updateModifaction(true);\r\n // use3dddPlus.setState({ selectedAll: true });\r\n // use3dddPlus.setState({ currentSelection: 'selectAll' });\r\n // const fillColors = {};\r\n // use3dddPlus.setState({ colorFill: fillColors });\r\n // };\r\n // const deleteHandler = () => {\r\n // canvas.remove(activeSelection);\r\n // use3dddPlus.getState().updateModifaction(true);\r\n // canvas.requestRenderAll();\r\n // use3dddPlus.setState({ selectedAll: false });\r\n // removeItem(activeSelection);\r\n // };\r\n // const removeItem = (value: any) => {\r\n // //@ts-ignore\r\n // var index = use3dddPlus\r\n // .getState()\r\n // .storeAllObject.findIndex((obj: any) => obj.id === value.id);\r\n // if (index > -1) {\r\n // use3dddPlus.getState().storeAllObject.splice(index, 1);\r\n // }\r\n // use3dddPlus.setState({\r\n // storeAllObject: [...use3dddPlus.getState().storeAllObject],\r\n // });\r\n // };\r\n\r\n const textSelected = use3dddPlus.getState().activeSelection;\r\n // const canvas = use3dddPlus.getState().fabricCanvas;\r\n\r\n const nudgeMove = (e) => {\r\n const brNew = textSelected.getBoundingRect();\r\n if (e.target.id === 'down') {\r\n // if (textSelected.aCoords.br.y > canvas.height - 2) return;\r\n if (brNew.height + brNew.top >= textSelected.canvas.height - 10) return;\r\n use3dddPlus.getState().moveDown(textSelected);\r\n use3dddPlus.getState().updateModifaction(true);\r\n } else if (e.target.id === 'up') {\r\n if (textSelected.aCoords.tr.y < 10) return;\r\n use3dddPlus.getState().moveUp(textSelected);\r\n use3dddPlus.getState().updateModifaction(true);\r\n } else if (e.target.id === 'right') {\r\n // if (textSelected.aCoords.tr.x > canvas.height - 2) return;\r\n if (brNew.width + brNew.left >= textSelected.canvas.width - 45) return;\r\n use3dddPlus.getState().moveRight(textSelected);\r\n use3dddPlus.getState().updateModifaction(true);\r\n } else if (e.target.id === 'left') {\r\n if (textSelected.aCoords.tl.x < 45) return;\r\n use3dddPlus.getState().moveLeft(textSelected);\r\n use3dddPlus.getState().updateModifaction(true);\r\n }\r\n };\r\n\r\n return (\r\n <>\r\n <div\r\n className=\"w-full flex items-center justify-center z-10\"\r\n style={{\r\n justifyContent: 'flex-center',\r\n }}\r\n >\r\n <div\r\n className=\"uppercase font-medium text-sm text-red-500 mx-5\"\r\n style={{ marginTop: '0.3rem', marginBottom: '0.3rem' }}\r\n >\r\n Nudge:\r\n </div>\r\n\r\n <button onClick={nudgeMove} id=\"left\">\r\n <div className=\"leftBtn pointer-events-none mx-5\">\r\n <div className=\"leftIcon float-left\">\r\n <svg\r\n transform=\"rotate(270)\"\r\n fill=\"#707070\"\r\n height=\"20px\"\r\n width=\"20px\"\r\n version=\"1.1\"\r\n id=\"Layer_1\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 512 512\"\r\n >\r\n <g>\r\n <g>\r\n <g>\r\n <path d=\"M0,0v512h512V0H0z M469.333,469.333H42.667V42.667h426.667V469.333z\" />\r\n <path d=\"M121.752,335.085L256,200.837l134.248,134.248c8.331,8.331,21.839,8.331,30.17,0c8.331-8.331,8.331-21.839,0-30.17 L271.085,155.582c-8.331-8.331-21.839-8.331-30.17,0L91.582,304.915c-8.331,8.331-8.331,21.839,0,30.17 S113.42,343.416,121.752,335.085z\" />\r\n </g>\r\n </g>\r\n </g>\r\n </svg>\r\n </div>\r\n <span className=\"pointer-events-none iconLabel float-left text-[#5d5d5d] ml-2 text-[13px] font-medium capitalize\">\r\n Left\r\n </span>\r\n </div>\r\n </button>\r\n\r\n <button onClick={nudgeMove} id=\"up\">\r\n <div className=\"upBtn pointer-events-none mx-5\">\r\n <div className=\"upIcon float-left\">\r\n <svg\r\n fill=\"#707070\"\r\n height=\"20px\"\r\n width=\"20px\"\r\n version=\"1.1\"\r\n id=\"Layer_1\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 512 512\"\r\n >\r\n <g>\r\n <g>\r\n <g>\r\n <path d=\"M0,0v512h512V0H0z M469.333,469.333H42.667V42.667h426.667V469.333z\" />\r\n <path d=\"M121.752,335.085L256,200.837l134.248,134.248c8.331,8.331,21.839,8.331,30.17,0c8.331-8.331,8.331-21.839,0-30.17 L271.085,155.582c-8.331-8.331-21.839-8.331-30.17,0L91.582,304.915c-8.331,8.331-8.331,21.839,0,30.17 S113.42,343.416,121.752,335.085z\" />\r\n </g>\r\n </g>\r\n </g>\r\n </svg>\r\n </div>\r\n <span className=\"pointer-events-none iconLabel float-left text-[#5d5d5d] ml-2 text-[13px] font-medium capitalize\">\r\n Top\r\n </span>\r\n </div>\r\n </button>\r\n\r\n <button onClick={nudgeMove} id=\"right\">\r\n <div className=\"rightBtn pointer-events-none mx-5\">\r\n <div className=\"rightIcon float-left\">\r\n <svg\r\n transform=\"rotate(90)\"\r\n fill=\"#707070\"\r\n height=\"20px\"\r\n width=\"20px\"\r\n version=\"1.1\"\r\n id=\"Layer_1\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 512 512\"\r\n >\r\n <g>\r\n <g>\r\n <g>\r\n <path d=\"M0,0v512h512V0H0z M469.333,469.333H42.667V42.667h426.667V469.333z\" />\r\n <path d=\"M121.752,335.085L256,200.837l134.248,134.248c8.331,8.331,21.839,8.331,30.17,0c8.331-8.331,8.331-21.839,0-30.17 L271.085,155.582c-8.331-8.331-21.839-8.331-30.17,0L91.582,304.915c-8.331,8.331-8.331,21.839,0,30.17 S113.42,343.416,121.752,335.085z\" />\r\n </g>\r\n </g>\r\n </g>\r\n </svg>\r\n </div>\r\n <span className=\"pointer-events-none iconLabel float-left text-[#5d5d5d] ml-2 text-[13px] font-medium capitalize\">\r\n Right\r\n </span>\r\n </div>\r\n </button>\r\n\r\n <button onClick={nudgeMove} id=\"down\">\r\n <div className=\"downBtn pointer-events-none mx-5\">\r\n <div className=\"downIcon float-left\">\r\n <svg\r\n transform=\"rotate(180)\"\r\n fill=\"#707070\"\r\n height=\"20px\"\r\n width=\"20px\"\r\n version=\"1.1\"\r\n id=\"Layer_1\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 512 512\"\r\n >\r\n <g>\r\n <g>\r\n <g>\r\n <path d=\"M0,0v512h512V0H0z M469.333,469.333H42.667V42.667h426.667V469.333z\" />\r\n <path d=\"M121.752,335.085L256,200.837l134.248,134.248c8.331,8.331,21.839,8.331,30.17,0c8.331-8.331,8.331-21.839,0-30.17 L271.085,155.582c-8.331-8.331-21.839-8.331-30.17,0L91.582,304.915c-8.331,8.331-8.331,21.839,0,30.17 S113.42,343.416,121.752,335.085z\" />\r\n </g>\r\n </g>\r\n </g>\r\n </svg>\r\n </div>\r\n <span className=\"pointer-events-none iconLabel float-left text-[#5d5d5d] ml-2 text-[13px] font-medium capitalize\">\r\n Bottom\r\n </span>\r\n </div>\r\n </button>\r\n {/* <button\r\n onClick={nudgeMove}\r\n id=\"up\"\r\n className=\"font-medium text-orange-300 text-lime-400 px-1\"\r\n >\r\n UP\r\n </button>\r\n <button\r\n onClick={nudgeMove}\r\n id=\"left\"\r\n className=\"font-medium text-orange-300 text-teal-500\"\r\n >\r\n LEFT\r\n </button>\r\n <button\r\n onClick={nudgeMove}\r\n id=\"right\"\r\n className=\"font-medium text-orange-300 text-violet-600 px-1\"\r\n >\r\n RIGHT\r\n </button> */}\r\n </div>\r\n </>\r\n );\r\n};\r\n\r\nexport default NudgeButtons;\r\n","import React from 'react';\r\nimport { use3dddPlus } from '../../store';\r\nimport { shallow } from 'zustand/shallow';\r\nimport { fabric } from 'fabric';\r\nimport {\r\n Copy,\r\n IconButton,\r\n // Paste,\r\n SendAObject,\r\n SendToBack,\r\n SendToFront,\r\n SendUnderObject,\r\n FlipH,\r\n FlipV,\r\n SnapToCenter,\r\n} from '../icon';\r\n\r\nexport const ContextMenu = () => {\r\n const [activeObj, canvas] = use3dddPlus(\r\n (state) => [state.activeSelection, state.fabricCanvas],\r\n shallow\r\n );\r\n\r\n const flipX = () => {\r\n activeObj.set({\r\n flipX: !activeObj.flipX,\r\n });\r\n use3dddPlus.getState().updateModifaction(true);\r\n canvas.renderAll();\r\n use3dddPlus.setState({\r\n showContextMenu: false,\r\n });\r\n };\r\n const flipY = () => {\r\n activeObj.set({\r\n flipY: !activeObj.flipY,\r\n });\r\n use3dddPlus.getState().updateModifaction(true);\r\n // activeObj.\r\n canvas.renderAll();\r\n use3dddPlus.setState({\r\n showContextMenu: false,\r\n });\r\n };\r\n const sendBackwards = () => {\r\n canvas.sendBackwards(activeObj);\r\n //@ts-ignore\r\n // var index = use3dddPlus.getState().storeAllObject.indexOf(activeObj);\r\n //@ts-ignore\r\n var index = use3dddPlus\r\n .getState()\r\n .storeAllObject.findIndex((obj: any) => obj.id === activeObj.id);\r\n if (index > -1) {\r\n use3dddPlus.getState().storeAllObject.splice(index, 1);\r\n //@ts-ignore\r\n use3dddPlus.getState().storeAllObject.splice(index + 1, 0, activeObj);\r\n }\r\n use3dddPlus.setState({\r\n storeAllObject: [...use3dddPlus.getState().storeAllObject],\r\n });\r\n use3dddPlus.getState().updateModifaction(true);\r\n use3dddPlus.setState({\r\n showContextMenu: false,\r\n });\r\n canvas.sendToBack(use3dddPlus.getState().verticalLine);\r\n canvas.sendToBack(use3dddPlus.getState().horizontalLine);\r\n };\r\n const bringForward = () => {\r\n canvas.bringForward(activeObj);\r\n //@ts-ignore\r\n var index = use3dddPlus\r\n .getState()\r\n .storeAllObject.findIndex((obj: any) => obj.id === activeObj.id);\r\n if (index > -1) {\r\n if (index !== 0) {\r\n use3dddPlus.getState().storeAllObject.splice(index, 1);\r\n //@ts-ignore\r\n use3dddPlus.getState().storeAllObject.splice(index - 1, 0, activeObj);\r\n }\r\n use3dddPlus.setState({\r\n storeAllObject: [...use3dddPlus.getState().storeAllObject],\r\n });\r\n }\r\n use3dddPlus.getState().updateModifaction(true);\r\n use3dddPlus.setState({\r\n showContextMenu: false,\r\n });\r\n };\r\n const sendToBack = () => {\r\n canvas.sendToBack(activeObj);\r\n //@ts-ignore\r\n var index = use3dddPlus\r\n .getState()\r\n .storeAllObject.findIndex((obj: any) => obj.id === activeObj.id);\r\n if (index > -1) {\r\n use3dddPlus.getState().storeAllObject.splice(index, 1);\r\n //@ts-ignore\r\n use3dddPlus.getState().storeAllObject.push(activeObj);\r\n }\r\n use3dddPlus.setState({\r\n storeAllObject: [...use3dddPlus.getState().storeAllObject],\r\n });\r\n use3dddPlus.getState().updateModifaction(true);\r\n use3dddPlus.setState({\r\n showContextMenu: false,\r\n });\r\n canvas.sendToBack(use3dddPlus.getState().verticalLine);\r\n canvas.sendToBack(use3dddPlus.getState().horizontalLine);\r\n };\r\n const bringToFront = () => {\r\n canvas.bringToFront(activeObj);\r\n //@ts-ignore\r\n var index = use3dddPlus\r\n .getState()\r\n .storeAllObject.findIndex((obj: any) => obj.id === activeObj.id);\r\n if (index > -1) {\r\n use3dddPlus.getState().storeAllObject.splice(index, 1);\r\n //@ts-ignore\r\n use3dddPlus.getState().storeAllObject.unshift(activeObj);\r\n\r\n use3dddPlus.setState({\r\n storeAllObject: [...use3dddPlus.getState().storeAllObject],\r\n });\r\n }\r\n use3dddPlus.getState().updateModifaction(true);\r\n use3dddPlus.setState({\r\n showContextMenu: false,\r\n });\r\n };\r\n const snapToCenter = () => {\r\n activeObj.set({\r\n left: canvas.width / 2,\r\n originX: 'center',\r\n });\r\n use3dddPlus.getState().updateModifaction(true);\r\n canvas.renderAll();\r\n use3dddPlus.setState({\r\n showContextMenu: false,\r\n });\r\n };\r\n const copy = () => {\r\n use3dddPlus.getState().duplicateObject();\r\n use3dddPlus.setState({\r\n showContextMenu: false,\r\n });\r\n };\r\n const ungroup = () => {\r\n activeObj.toObject = (function (toObject) {\r\n return function () {\r\n return fabric.util.object.extend(toObject.call(this), {\r\n objects: this._objects.map((obj) => obj.toObject()),\r\n });\r\n };\r\n })(activeObj.toObject);\r\n const items = activeObj._objects;\r\n activeObj._restoreObjectsState();\r\n use3dddPlus.getState().fabricCanvas.remove(activeObj);\r\n\r\n items.forEach(function (item) {\r\n use3dddPlus.getState().fabricCanvas.add(item);\r\n // 'id', 'colorFill','shapeType','shapeSize','text','textAlign','stroke',\r\n // 'strokeWidth','fontFamily','icon'\r\n });\r\n };\r\n\r\n const group = () => {\r\n var activeObject = use3dddPlus.getState().fabricCanvas.getActiveObject();\r\n if (activeObject.type === 'activeSelection') {\r\n activeObject.toGroup();\r\n canvas.renderAll();\r\n }\r\n };\r\n const menu = [\r\n {\r\n id: 1,\r\n name: 'COPY / PASTE ',\r\n onclick: copy,\r\n display: true,\r\n icon: <Copy />,\r\n },\r\n // {\r\n // id: 2,\r\n // name: 'Paste',\r\n // onclick: copy,\r\n // icon: <Paste />,\r\n // },\r\n {\r\n id: 3,\r\n name: 'Bring to front',\r\n onclick: bringForward,\r\n display: true,\r\n icon: <SendToFront />,\r\n },\r\n {\r\n id: 4,\r\n name: 'Send to back',\r\n onclick: sendBackwards,\r\n display: true,\r\n icon: <SendToBack />,\r\n },\r\n {\r\n id: 5,\r\n name: 'Bring above objects',\r\n onclick: bringToFront,\r\n display: true,\r\n icon: <SendAObject />,\r\n },\r\n {\r\n id: 6,\r\n name: 'Send under objects',\r\n onclick: sendToBack,\r\n display: true,\r\n icon: <SendUnderObject />,\r\n },\r\n {\r\n id: 7,\r\n name: 'Flip Horizontal',\r\n onclick: flipX,\r\n display: true,\r\n icon: <FlipH />,\r\n },\r\n {\r\n id: 8,\r\n name: 'Flip Vertical',\r\n onclick: flipY,\r\n display: true,\r\n icon: <FlipV />,\r\n },\r\n {\r\n id: 9,\r\n name: 'Snap to center',\r\n display: true,\r\n onclick: snapToCenter,\r\n icon: <SnapToCenter />,\r\n },\r\n {\r\n id: 10,\r\n name: 'group',\r\n onclick: group,\r\n display: canvas?.getActiveObject()?.type === 'activeSelection',\r\n icon: <SnapToCenter />,\r\n },\r\n {\r\n id: 10,\r\n name: 'ungroup',\r\n onclick: ungroup,\r\n display: canvas?.getActiveObject()?.type === \"group\",\r\n icon: <SnapToCenter />,\r\n },\r\n ];\r\n return (\r\n <ul>\r\n {menu.map((item, index) => {\r\n return (\r\n <li\r\n className=\"flex cursor-pointer hover:text-[#e11a38] border border-b-[1px] border-[#EBEBEB] px-[30px] py-[14px] \"\r\n onClick={item.onclick}\r\n key={index}\r\n style={!item.display ? { display: 'none' } : {}}\r\n >\r\n <span>\r\n <IconButton\r\n label=\"\"\r\n icon={item.icon}\r\n className=\"m-auto cursor-pointer pointer-events-auto\"\r\n size=\"1.125rem\"\r\n ></IconButton>\r\n </span>\r\n <span className=\" pl-[20px] text-sm font-bold uppercase\">\r\n {item.name}\r\n </span>\r\n </li>\r\n );\r\n })}\r\n </ul>\r\n );\r\n};\r\n","import React, { useRef } from 'react';\r\nimport './canvas.css';\r\nimport { use3dddPlus } from '../../store';\r\nimport ActionButtons from './canvasButtons'; //Importing Action button component which is displaying buttons\r\nimport NudgeButtons from './nudgeButtons'; //Importing Nudge button component which is displaying buttons\r\n// import ErrorPopup from './errorPopUp'; //Importing ErrorPopup Panel component which is displaying buttons\r\nimport { initCanvas } from '../../store/fabric/fabricCanvas';\r\nimport { shallow } from 'zustand/shallow';\r\nimport { ContextMenu } from '../contextMenu';\r\nimport { fabric } from 'fabric';\r\n\r\nconst canvas = () => {\r\n const [contextMenuCoordinates, showContextMenu] = use3dddPlus(\r\n (state) => [\r\n state.contextMenuCoordinates,\r\n state.showContextMenu,\r\n state.allColor,\r\n ],\r\n shallow\r\n );\r\n const canvasRef = useRef<HTMLCanvasElement | null>(null);\r\n const resizeCanvas = () => {\r\n const canvas = use3dddPlus.getState().fabricCanvas;\r\n if (document.getElementById('fabCanvas')) {\r\n const outerCanvasContainer = document.getElementById('fabCanvas');\r\n const containerWidth = outerCanvasContainer.clientWidth;\r\n const scale = containerWidth / canvas.getWidth();\r\n const zoom = canvas.getZoom() * scale;\r\n canvas.setWidth(containerWidth);\r\n //@ts-ignore\r\n canvas.setHeight(parseInt(outerCanvasContainer.clientHeight));\r\n canvas.setViewportTransform([zoom, 0, 0, zoom, 0, 0]);\r\n canvas.renderAll();\r\n }\r\n };\r\n React.useEffect(() => {\r\n fabric.Object.prototype.hasControls = true;\r\n fabric.Object.prototype.hasBorders = true;\r\n const canv = initCanvas();\r\n use3dddPlus.setState({ fabricCanvas: canv });\r\n resizeCanvas();\r\n window.addEventListener('resize', resizeCanvas);\r\n const fontFamilyURL =\r\n 'https://storage.googleapis.com/3ddplusgcp/logoEditor/assets/fonts/athletic.ttf';\r\n const font = new FontFace('Athletic Block', `url('${fontFamilyURL}')`);\r\n font.load().then((value) => {\r\n //@ts-ignore\r\n document.fonts?.add(value);\r\n document.body.classList.add('fonts-loaded');\r\n });\r\n }, []);\r\n\r\n return (\r\n <div className=\" w-full h-full relative\">\r\n <ActionButtons />\r\n <div\r\n id=\"fabCanvas\"\r\n className=\"bg-[#ffffff]\"\r\n style={{ height: 'calc(100% - 71px)' }}\r\n >\r\n <canvas ref={canvasRef} id=\"canvas\"></canvas>\r\n {showContextMenu && (\r\n <div\r\n style={{\r\n position: 'absolute',\r\n zIndex: 1000,\r\n left: contextMenuCoordinates.x - 270,\r\n top: contextMenuCoordinates.y + 55,\r\n backgroundColor: 'white',\r\n border: '1px solid #ccc',\r\n boxShadow: '2px 2px 5px rgba(0,0,0,0.5)',\r\n }}\r\n onBlur={() => {\r\n use3dddPlus.setState({ showContextMenu: false });\r\n }}\r\n >\r\n <ContextMenu />\r\n </div>\r\n )}\r\n </div>\r\n {/* {allColor && allColor.includes('transparent')\r\n ? allColor.length - 1 > 8\r\n : allColor.length > 8 && <ErrorPopup allColor={allColor} />} */}\r\n <NudgeButtons />\r\n </div>\r\n );\r\n};\r\n\r\nexport default canvas;\r\n","import { fabric } from 'fabric';\r\n//@ts-ignore\r\n// import deleteIcon from '../../assets/images/delete.png';\r\n// //@ts-ignore\r\n// import rotateIcon from '../../assets/images/rotate.png';\r\n// //@ts-ignore\r\n// import settingIcon from '../../assets/images/settings.png';\r\nimport { use3dddPlus } from '..';\r\n\r\n// @ts-ignore\r\nimport FontFaceObserver from 'fontfaceobserver';\r\n\r\nexport const initCanvas = () => {\r\n let left1 = 0;\r\n let top1 = 0;\r\n let scale1x = 0;\r\n let scale1y = 0;\r\n let width1 = 0;\r\n let height1 = 0;\r\n\r\n const onObjectSelected = (e) => {\r\n use3dddPlus.setState({ mylogoAdded: true });\r\n const obj = e.selected[0];\r\n if (e.selected.length > 1) {\r\n return;\r\n }\r\n if (!obj) return;\r\n\r\n if (e?.selected?.[0]?.colorFill) {\r\n use3dddPlus.setState({ colorFill: obj.colorFill });\r\n }\r\n\r\n const type = obj.text ? 'text' : obj.get('type');\r\n\r\n use3dddPlus.setState({\r\n currentSelection: type,\r\n });\r\n use3dddPlus.setState({ activeSelection: canv.getActiveObject() });\r\n getAllColors();\r\n };\r\n const onObjectDeselected = () => {\r\n use3dddPlus.setState({ activeSelection: null });\r\n use3dddPlus.setState({ currentSelection: 'none' });\r\n use3dddPlus.setState({ showContextMenu: false });\r\n getAllColors();\r\n };\r\n const onObjectUpdated = (e) => {\r\n const obj = e.selected[0];\r\n if (e.selected.length > 1) {\r\n return;\r\n }\r\n if (!obj) return;\r\n const colors = [];\r\n const colorFill = {};\r\n obj.traverse((node) => {\r\n if (!colors.includes(node.fill)) colors.push(node.fill);\r\n });\r\n colors.forEach((element, index) => {\r\n colorFill[`layer${index}`] = element;\r\n });\r\n obj.colorFill = colorFill;\r\n if (e?.selected?.[0]?.colorFill) {\r\n use3dddPlus.setState({ colorFill: e.selected[0].colorFill });\r\n }\r\n\r\n const type = obj.text ? 'text' : obj.get('type');\r\n use3dddPlus.setState({\r\n currentSelection: type,\r\n });\r\n use3dddPlus.setState({ activeSelection: e.selected[0] });\r\n use3dddPlus.setState({ textInfo: e.selected[0].text });\r\n use3dddPlus.setState({ showContextMenu: false });\r\n getAllColors();\r\n };\r\n const onObjectMoving = (e: any) => {\r\n // console.log('moving...modified');\r\n // use3dddPlus.setState({mylogoAdded : true});\r\n use3dddPlus.getState().updateModifaction(false);\r\n const obj = e.target;\r\n if (isNaN(e.pointer.x) || isNaN(e.pointer.y)) {\r\n obj.set({\r\n top: use3dddPlus.getState().lastPosition.top,\r\n left: use3dddPlus.getState().lastPosition.left,\r\n });\r\n return;\r\n }\r\n\r\n obj.setCoords();\r\n if (obj.getBoundingRect().top < 10 || obj.getBoundingRect().left < 45) {\r\n obj.top = Math.max(obj.top, obj.top - obj.getBoundingRect().top + 10);\r\n obj.left = Math.max(obj.left, obj.left - obj.getBoundingRect().left + 45);\r\n obj.setCoords();\r\n }\r\n if (\r\n obj.getBoundingRect().top + obj.getBoundingRect().height + 10 >\r\n obj.canvas.height ||\r\n obj.getBoundingRect().left + obj.getBoundingRect().width + 45 >\r\n obj.canvas.width\r\n ) {\r\n obj.top = Math.min(\r\n obj.top,\r\n obj.canvas.height -\r\n obj.getBoundingRect().height +\r\n obj.top -\r\n obj.getBoundingRect().top -\r\n 10\r\n );\r\n obj.left = Math.min(\r\n obj.left,\r\n obj.canvas.width -\r\n obj.getBoundingRect().width +\r\n obj.left -\r\n obj.getBoundingRect().left -\r\n 45\r\n );\r\n obj.setCoords();\r\n }\r\n\r\n const brNew = obj.getBoundingRect();\r\n if (\r\n brNew.width + brNew.left + 45 >= obj.canvas.width ||\r\n brNew.height + brNew.top + 10 >= obj.canvas.height ||\r\n brNew.left < 45 ||\r\n brNew.top < 10\r\n ) {\r\n } else {\r\n left1 = obj.left;\r\n top1 = obj.top;\r\n scale1x = obj.scaleX;\r\n scale1y = obj.scaleY;\r\n width1 = obj.width;\r\n height1 = obj.height;\r\n }\r\n\r\n if (isObjectInCenter(e.target)) {\r\n use3dddPlus.getState().verticalLine.set({ visible: true });\r\n } else {\r\n use3dddPlus.getState().verticalLine.set({ visible: false });\r\n }\r\n if (isObjectInHorizontalCenter(e.target)) {\r\n use3dddPlus.getState().verticalLine.set({ visible: true });\r\n } else {\r\n use3dddPlus.getState().verticalLine.set({ visible: false });\r\n }\r\n if (isObjectInVerticalCenter(e.target)) {\r\n use3dddPlus.getState().horizontalLine.set({ visible: true });\r\n } else {\r\n use3dddPlus.getState().horizontalLine.set({ visible: false });\r\n }\r\n use3dddPlus.getState().setLastPosition({ top: obj.top, left: obj.left });\r\n };\r\n\r\n const outerCanvasContainer = document.getElementById('fabCanvas');\r\n\r\n const fontList = new Set<string>();\r\n document.fonts.forEach((font) => fontList.add(font.family));\r\n\r\n console.log('Preloading all available fonts from the document');\r\n\r\n // Preload all the fonts\r\n Array.from(fontList).forEach((font) => {\r\n new FontFaceObserver(font)\r\n .load()\r\n .then(() => {})\r\n .catch(() => {\r\n console.log(`${font} has not loaded.`);\r\n });\r\n });\r\n\r\n const canv = new fabric.Canvas('canvas', {\r\n centeredScaling: true,\r\n preserveObjectStacking: true,\r\n // backgroundColor: '#ffff00',\r\n stopContextMenu: false,\r\n // width: 500,\r\n // height: 300,\r\n\r\n width: outerCanvasContainer.clientWidth,\r\n height: outerCanvasContainer.clientHeight,\r\n });\r\n\r\n function isObjectInCenter(obj) {\r\n const brNew = obj.getBoundingRect();\r\n var canvasCenterX = canv.width / 2;\r\n var canvasCenterY = canv.height / 2;\r\n var objCenterX = brNew.left + brNew.width / 2;\r\n var objCenterY = brNew.top + brNew.height / 2;\r\n var threshold = 5;\r\n return (\r\n Math.abs(objCenterY - canvasCenterY) < threshold &&\r\n Math.abs(objCenterX - canvasCenterX) < threshold\r\n );\r\n }\r\n\r\n function isObjectInVerticalCenter(obj) {\r\n const brNew = obj.getBoundingRect();\r\n var canvasCenterY = canv.getHeight() / 2;\r\n var scaledObjCenterY = brNew.top + brNew.height / 2;\r\n var threshold = 5;\r\n return Math.abs(scaledObjCenterY - canvasCenterY) < threshold;\r\n }\r\n\r\n function isObjectInHorizontalCenter(obj) {\r\n const brNew = obj.getBoundingRect();\r\n var canvasCenterX = canv.width / 2;\r\n var scaledObjCenterX = brNew.left + brNew.width / 2;\r\n var threshold = 5;\r\n return Math.abs(scaledObjCenterX - canvasCenterX) < threshold;\r\n }\r\n const horizontalLine = new fabric.Line(\r\n [0, canv.height / 2, canv.height, canv.height / 2],\r\n {\r\n stroke: 'red',\r\n scaleX: 11,\r\n visible: false,\r\n selectable: false,\r\n type: 'line',\r\n }\r\n );\r\n\r\n const verticalLine = new fabric.Line(\r\n [canv.width / 2, 0, canv.width / 2, canv.width],\r\n {\r\n stroke: 'red',\r\n visible: false,\r\n selectable: false,\r\n type: 'line',\r\n }\r\n );\r\n\r\n horizontalLine.centerH();\r\n canv.add(horizontalLine);\r\n canv.add(verticalLine);\r\n use3dddPlus.setState({ horizontalLine: horizontalLine });\r\n use3dddPlus.setState({ verticalLine: verticalLine });\r\n\r\n const deleteImg = document.createElement('img');\r\n deleteImg.crossOrigin = 'anonymous';\r\n deleteImg.src =\r\n 'https://storage.googleapis.com/3ddplusgcp/logoEditor/assets/icons/delete.png';\r\n const rotateImg = document.createElement('img');\r\n rotateImg.crossOrigin = 'anonymous';\r\n rotateImg.src =\r\n 'https://storage.googleapis.com/3ddplusgcp/logoEditor/assets/icons/rotate.png';\r\n const settingImg = document.createElement('img');\r\n settingImg.crossOrigin = 'anonymous';\r\n settingImg.src =\r\n 'https://storage.googleapis.com/3ddplusgcp/logoEditor/assets/icons/settings.png';\r\n fabric.Object.prototype.objectCaching = false;\r\n fabric.Object.prototype.transparentCorners = false;\r\n fabric.Object.prototype.cornerColor = '#14caf7';\r\n fabric.Object.prototype.cornerStrokeColor = '#045791';\r\n fabric.Object.prototype.borderColor = '#14caf7';\r\n fabric.Object.prototype.cornerSize = 16;\r\n // fabric.Object.prototype.padding = 10;\r\n fabric.Object.prototype.cornerStyle = 'circle';\r\n fabric.Object.prototype.borderDashArray = [5, 5];\r\n // @ts-ignore\r\n fabric.Object.prototype.traverse = function (fn: any) {\r\n fn(this);\r\n if (this._objects)\r\n for (const childNode of this._objects) {\r\n childNode.traverse(fn);\r\n }\r\n };\r\n // @ts-ignore\r\n fabric.Canvas.prototype.traverse = function (fn: any) {\r\n fn(this);\r\n if (this._objects)\r\n for (const childNode of this._objects) {\r\n childNode.traverse(fn);\r\n }\r\n };\r\n\r\n function renderIcon(icon) {\r\n return function renderIcon(ctx, left, top, fabricObject) {\r\n var size = this.cornerSize;\r\n ctx.save();\r\n ctx.translate(left, top);\r\n ctx.rotate(fabric.util.degreesToRadians(fabricObject.angle));\r\n ctx.drawImage(icon, -size / 2, -size / 2, size, size);\r\n ctx.restore();\r\n };\r\n }\r\n\r\n fabric.Object.prototype.controls.deleteControl = new fabric.Control({\r\n x: 0.53,\r\n y: -0.53,\r\n offsetY: -16,\r\n offsetX: 16,\r\n cursorStyle: 'pointer',\r\n //@ts-ignore\r\n mouseUpHandler: deleteObject,\r\n render: renderIcon(deleteImg),\r\n cornerSize: 28,\r\n });\r\n fabric.Object.prototype.controls.settingControl = new fabric.Control({\r\n x: -0.53,\r\n y: -0.53,\r\n offsetY: -16,\r\n offsetX: -16,\r\n cursorStyle: 'pointer',\r\n //@ts-ignore\r\n mouseUpHandler: function (e) {\r\n use3dddPlus.setState({\r\n showContextMenu: true,\r\n });\r\n\r\n const rect = canv.getElement().getBoundingClientRect();\r\n const x = e.clientX - rect.left;\r\n const y = e.clientY - rect.top;\r\n // You can add your context menu rendering logic here\r\n // Example: Render a simple alert with the coordinates\r\n use3dddPlus.setState({ contextMenuCoordinates: { x: x, y: y } });\r\n },\r\n render: renderIcon(settingImg),\r\n cornerSize: 28,\r\n });\r\n //@ts-ignore\r\n function deleteObject(eventData, transform) {\r\n const canvasTarget = transform.target;\r\n const canvas = canvasTarget.canvas;\r\n const activeSelection = use3dddPlus.getState().activeSelection;\r\n if (activeSelection) {\r\n if (activeSelection.icon) {\r\n canvas.remove(activeSelection);\r\n removeItem(activeSelection);\r\n } else if (activeSelection._objects) {\r\n activeSelection._objects.map((obj) => {\r\n canvas.remove(obj);\r\n removeItem(obj);\r\n });\r\n }\r\n // canvas.remove(activeSelection);\r\n use3dddPlus.getState().updateModifaction(true);\r\n canvas.requestRenderAll();\r\n use3dddPlus.setState({ selectedAll: false });\r\n canvas.discardActiveObject();\r\n // removeItem(activeSelection);\r\n }\r\n }\r\n const removeItem = (value: any) => {\r\n //@ts-ignore\r\n var index = use3dddPlus\r\n .getState()\r\n .storeAllObject.findIndex((obj: any) => obj.id === value.id);\r\n if (index === -1 && value && value._objects && value._objects.length > 0) {\r\n var index = use3dddPlus\r\n .getState()\r\n //@ts-ignore\r\n\r\n .storeAllObject.indexOf(value._objects[0]);\r\n }\r\n if (index > -1) {\r\n use3dddPlus.getState().storeAllObject.splice(index, 1);\r\n use3dddPlus.setState({\r\n storeAllObject: [...use3dddPlus.getState().storeAllObject],\r\n });\r\n }\r\n };\r\n\r\n fabric.Object.prototype.controls.mtr = new fabric.Control({\r\n x: 0,\r\n y: -0.5,\r\n offsetY: -40,\r\n cursorStyle: 'crosshair',\r\n //@ts-ignore\r\n actionHandler: fabric?.controlsUtils.rotationWithSnapping,\r\n actionName: 'rotate',\r\n render: function renderIcon(ctx, left, top, fabricObject) {\r\n var size = this.cornerSize;\r\n ctx.save();\r\n ctx.translate(left, top);\r\n ctx.rotate(fabric.util.degreesToRadians(fabricObject.angle));\r\n ctx.drawImage(rotateImg, -size / 2, -size / 2, size, size);\r\n ctx.restore();\r\n },\r\n //@ts-ignore\r\n cornerSize: 28,\r\n withConnection: true,\r\n });\r\n const getAllColors = () => {\r\n if (!canv?.getObjects()) {\r\n return;\r\n }\r\n const colors = [];\r\n use3dddPlus.getState().fabricCanvas.traverse((node) => {\r\n \r\n if (node.type === 'text' || node.type === 'path') {\r\n if (\r\n node.fill &&\r\n (node.fill === 'rgb(0,0,0)' ||\r\n node.fill === '#000' ||\r\n node.fill === '#000000')\r\n ) {\r\n use3dddPlus.getState().fabricCanvas.remove(node);\r\n // node.set({\r\n // fill: '#ffff00',\r\n // });\r\n }\r\n }\r\n\r\n if (\r\n node.stroke &&\r\n node.type !== 'line' &&\r\n node.strokeWidth !== 0 &&\r\n node.stroke !== '' &&\r\n !colors.includes(node.stroke) &&\r\n node.stroke !== 'rgb(0,0,0)'\r\n ) {\r\n colors.push(node.stroke);\r\n }\r\n if (\r\n node.fill &&\r\n node.fill !== '' &&\r\n !colors.includes(node.fill) &&\r\n node.fill !== 'rgb(0,0,0)'\r\n ) {\r\n colors.push(node.fill);\r\n }\r\n // console.log(colors);\r\n });\r\n use3dddPlus.setState({ allColor: colors });\r\n\r\n // console.log(use3dddPlus.getState().allColor);\r\n // use3dddPlus.setState({mylogoAdded : true});\r\n };\r\n canv.on('after:render', getAllColors);\r\n canv.on('selection:created', onObjectSelected);\r\n canv.on('selection:cleared', onObjectDeselected);\r\n canv.on('selection:updated', onObjectUpdated);\r\n canv.on('object:moving', onObjectMoving);\r\n canv.on('object:modified', function (e) {\r\n use3dddPlus.setState({ mylogoAdded: true });\r\n e.target.lockRotation = false;\r\n use3dddPlus.getState().updateModifaction(true);\r\n if (isObjectInCenter(e.target)) {\r\n use3dddPlus.getState().verticalLine.set({ visible: true });\r\n } else {\r\n use3dddPlus.getState().verticalLine.set({ visible: false });\r\n }\r\n if (isObjectInHorizontalCenter(e.target)) {\r\n use3dddPlus.getState().horizontalLine.set({ visible: true });\r\n } else {\r\n use3dddPlus.getState().horizontalLine.set({ visible: false });\r\n }\r\n if (isObjectInVerticalCenter(e.target)) {\r\n use3dddPlus.getState().horizontalLine.set({ visible: true });\r\n } else {\r\n use3dddPlus.getState().horizontalLine.set({ visible: false });\r\n }\r\n });\r\n\r\n canv.on('object:scaling', (e) => {\r\n const obj = e.target;\r\n if (isNaN(e.pointer.x) || isNaN(e.pointer.y)) {\r\n const { top, left, scaleX, scaleY } = use3dddPlus.getState().lastPosition;\r\n obj.set({\r\n top,\r\n left,\r\n scaleX,\r\n scaleY,\r\n });\r\n return;\r\n }\r\n obj.setCoords();\r\n const brNew = obj.getBoundingRect();\r\n if (\r\n brNew.width + brNew.left + 45 >= obj.canvas.width ||\r\n brNew.height + brNew.top + 10 >= obj.canvas.height ||\r\n brNew.left < 45 ||\r\n brNew.top < 10\r\n ) {\r\n obj.left = left1;\r\n obj.top = top1;\r\n obj.scaleX = scale1x;\r\n obj.scaleY = scale1y;\r\n obj.width = width1;\r\n obj.height = height1;\r\n } else {\r\n left1 = obj.left;\r\n top1 = obj.top;\r\n scale1x = obj.scaleX;\r\n scale1y = obj.scaleY;\r\n width1 = obj.width;\r\n height1 = obj.height;\r\n }\r\n obj.setCoords();\r\n use3dddPlus.getState().setLastPosition({\r\n top: obj.top,\r\n left: obj.left,\r\n scaleX: obj.scaleX,\r\n scaleY: obj.scaleY,\r\n });\r\n });\r\n canv.on('object:rotating', function (e) {\r\n const obj = e.target;\r\n let brNew = obj.getBoundingRect();\r\n if (obj.getBoundingRect().top - 45 < 0 || obj.getBoundingRect().left < 45) {\r\n obj.top = Math.max(obj.top, obj.top - obj.getBoundingRect().top + 45);\r\n obj.left = Math.max(obj.left, obj.left - obj.getBoundingRect().left + 45);\r\n obj.setCoords();\r\n }\r\n if (\r\n obj.getBoundingRect().top + 45 + obj.getBoundingRect().height >\r\n obj.canvas.height ||\r\n obj.getBoundingRect().left + 45 + obj.getBoundingRect().width >\r\n obj.canvas.width\r\n ) {\r\n if (\r\n obj.getBoundingRect().top - 45 < 0 ||\r\n obj.getBoundingRect().left - 45 < 0\r\n ) {\r\n obj.lockRotation = true;\r\n brNew = obj.getBoundingRect();\r\n while (\r\n Math.ceil(obj.width + obj.left + 45) >\r\n Math.floor(obj.canvas.width - 45) ||\r\n Math.ceil(obj.height + obj.top + 45) >\r\n Math.floor(obj.canvas.height - 45) ||\r\n Math.ceil(obj.left) < 0 ||\r\n Math.ceil(obj.top) < 0\r\n ) {\r\n obj.centeredRotation = true;\r\n if (obj.angle >= 0 && obj.angle <= 180) {\r\n obj.set('angle', obj.angle - 1);\r\n if (Math.ceil(brNew.top) < 45) {\r\n obj.set('top', obj.top + 4);\r\n }\r\n if (Math.ceil(brNew.left) < 45) {\r\n obj.set('left', obj.left + 4);\r\n }\r\n if (\r\n Math.ceil(brNew.width + brNew.left + 45) >\r\n Math.floor(obj.canvas.width - 45)\r\n ) {\r\n obj.set('left', brNew.left - 1);\r\n }\r\n if (\r\n Math.ceil(brNew.height + brNew.top + 45) >\r\n Math.floor(obj.canvas.height - 45)\r\n ) {\r\n obj.set('top', obj.top - 4);\r\n }\r\n } else {\r\n obj.set('angle', obj.angle + 1);\r\n if (Math.ceil(brNew.top) < 45) {\r\n obj.set('top', obj.top + 4);\r\n }\r\n if (Math.ceil(brNew.left) < 45) {\r\n obj.set('left', obj.left - 4);\r\n }\r\n if (\r\n Math.ceil(brNew.width + brNew.left + 45) >\r\n Math.floor(obj.canvas.width - 45)\r\n ) {\r\n obj.set('angle', obj.angle - 1);\r\n obj.set('left', obj.left - 1);\r\n }\r\n if (\r\n Math.ceil(obj.height + obj.top + 45) >\r\n Math.floor(obj.canvas.height - 45)\r\n ) {\r\n obj.set('top', obj.top - 4);\r\n }\r\n }\r\n canv.renderAll();\r\n brNew = obj.getBoundingRect();\r\n }\r\n } else {\r\n obj.top = Math.min(\r\n obj.top,\r\n obj.canvas.height -\r\n obj.getBoundingRect().height +\r\n obj.top -\r\n obj.getBoundingRect().top -\r\n 45\r\n );\r\n obj.left = Math.min(\r\n obj.left,\r\n obj.canvas.width -\r\n obj.getBoundingRect().width +\r\n obj.left -\r\n obj.getBoundingRect().left -\r\n 45\r\n );\r\n obj.setCoords();\r\n }\r\n }\r\n });\r\n return canv;\r\n};\r\n","import React from 'react';\r\n\r\nexport interface CardProps {\r\n cardClass?: string;\r\n children?: React.ReactNode;\r\n onClick?: (e: React.MouseEvent<HTMLDivElement, MouseEvent>) => void;\r\n style?: React.CSSProperties;\r\n key?:string\r\n \r\n}\r\n\r\nexport const Card = ({ cardClass,children, onClick,style,key }: CardProps) => {\r\n return (\r\n <>\r\n <div\r\n className={`card bg-base-100 relative ${cardClass}`}\r\n onClick={onClick}\r\n style={style}\r\n key={ key}\r\n >\r\n {children}\r\n </div>\r\n </>\r\n );\r\n};","import React from 'react';\r\n\r\nexport interface CardBodyProps {\r\n bodyClass?: string;\r\n children?: React.ReactNode;\r\n}\r\nexport const CardBody = ({ bodyClass, children }: CardBodyProps) => {\r\n return (\r\n <>\r\n <div className={`card-body ${bodyClass}`}>{children}</div>\r\n </>\r\n );\r\n};\r\n","import React from 'react';\r\nimport './card.css';\r\n\r\nexport interface CardMediaProps {\r\n alt?: string;\r\n imageClass?: string;\r\n src?: string;\r\n}\r\nexport const CardMedia = ({ alt, imageClass, src }: CardMediaProps) => {\r\n return (\r\n <>\r\n <div\r\n role=\"img\"\r\n aria-label={alt}\r\n className={`cardImage ${imageClass}`}\r\n style={{ backgroundImage: `url('${src}')` }}\r\n ></div>\r\n </>\r\n );\r\n};","import React from 'react';\r\nimport { TAG_TEXT_COLOR } from '../../theme';\r\nexport interface CardTagsProps {\r\n children?: React.ReactNode;\r\n tagsClass?: string;\r\n}\r\nexport const CardTags = ({ children, tagsClass }: CardTagsProps) => {\r\n return (\r\n <>\r\n <div\r\n className={`${tagsClass} flex capitalize rounded px-[11px] py-[5px] text-center items-center align-baseline ${TAG_TEXT_COLOR} font-normal`}\r\n >\r\n {children}\r\n </div>\r\n </>\r\n );\r\n};\r\n","import React from 'react';\r\nexport interface CardTitleProps {\r\n name?: string;\r\n titleClass?: string;\r\n}\r\nexport const CardTitle = ({ name, titleClass }: CardTitleProps) => {\r\n return (\r\n <>\r\n <p className={`card-title ${titleClass}`}>{name}</p>\r\n </>\r\n );\r\n};\r\n","import React, { useRef, useState } from 'react';\r\nimport { MdOutlineFileUpload } from 'react-icons/md';\r\nimport { IconButton } from '../icon';\r\ninterface FileUploadButtonProps {\r\n onFileSelect: (file: File) => void;\r\n}\r\n\r\nconst FileUploadButton: React.FC<FileUploadButtonProps> = ({\r\n onFileSelect,\r\n}) => {\r\n const fileInputRef = useRef<HTMLInputElement>(null);\r\n const [isDragging, setIsDragging] = useState(false);\r\n\r\n const handleFileSelect = (event: React.ChangeEvent<HTMLInputElement>) => {\r\n const selectedFile = event.target.files?.[0];\r\n\r\n if (selectedFile) {\r\n onFileSelect(selectedFile);\r\n }\r\n fileInputRef.current.value = null;\r\n };\r\n\r\n const handleDragEnter = (event: React.DragEvent<HTMLDivElement>) => {\r\n event.preventDefault();\r\n setIsDragging(true);\r\n };\r\n\r\n const handleDragLeave = (event: React.DragEvent<HTMLDivElement>) => {\r\n event.preventDefault();\r\n setIsDragging(false);\r\n };\r\n\r\n const handleDrop = (event: React.DragEvent<HTMLDivElement>) => {\r\n event.preventDefault();\r\n setIsDragging(false);\r\n\r\n const droppedFile = event.dataTransfer.files[0];\r\n if (droppedFile) {\r\n onFileSelect(droppedFile);\r\n }\r\n };\r\n\r\n return (\r\n <>\r\n <div\r\n className={`flex items-center justify-center w-full relative h-full ${\r\n isDragging ? 'dragging' : ''\r\n }`}\r\n onDragEnter={handleDragEnter}\r\n onDragLeave={handleDragLeave}\r\n onDragOver={(event) => event.preventDefault()}\r\n onDrop={handleDrop}\r\n >\r\n <label\r\n htmlFor=\"file-upload\"\r\n // className=\"w-[40vw] h-[40vh] 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\"\r\n className=\"w-[40vw] h-[40vh] 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\"\r\n >\r\n <div className=\" text-center flex flex-col gap-[8px]\">\r\n <IconButton\r\n label=\"\"\r\n icon={<MdOutlineFileUpload />}\r\n className={\r\n 'pointer-events-auto cursor-pointer m-auto text-[#E11A38] bg-[#FCE8EB] p-[16px] h-[unset] !rounded-full'\r\n }\r\n size=\"1.125rem\"\r\n ></IconButton>\r\n <div className=\"text-[#5D5D5D] text-base font-bold\">\r\n Drag Files To Upload\r\n </div>\r\n <div className=\"text-[#5D5D5D] text-base font-bold\">Or</div>\r\n </div>\r\n <div>\r\n {' '}\r\n <button\r\n onClick={() => fileInputRef.current?.click()}\r\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]\"\r\n >\r\n BROWSE FILE\r\n </button>\r\n </div>\r\n\r\n <div className=\" text-center text-[#727272] text-sm\">\r\n <p>Max file size: 25M</p>\r\n {/* <p>Supported files types: JPG, JPEG, PNG, GIF, EPS, PDF, SVG, AI</p> */}\r\n <p>Supported files types: JPG, JPEG, PNG, PDF, SVG, AI</p>\r\n </div>\r\n <input\r\n id=\"file-upload\"\r\n ref={fileInputRef}\r\n type=\"file\"\r\n onChange={handleFileSelect}\r\n className=\"hidden\"\r\n accept=\"image/png, image/jpeg , image/gif , image/svg+xml , .eps , .ai , .pdf\"\r\n />\r\n </label>\r\n </div>{' '}\r\n </>\r\n );\r\n};\r\n\r\nexport default FileUploadButton;\r\n","import React, { useState } from 'react';\r\nimport { TEXT_SIZE_9 } from '../../theme';\r\nimport './colorPalette.css';\r\nimport { ToolTip } from '../toolTip';\r\nimport { use3dddPlus } from '../../store';\r\n\r\nexport interface ColorPaletteProps {\r\n previousColor?: string[];\r\n previousClass?: string;\r\n mainIndex?: any;\r\n handleColorChange?: any;\r\n mainClass?: string;\r\n index?: any;\r\n boxWidth?: number;\r\n gap?: number;\r\n style?: any;\r\n}\r\n\r\nexport const ColorPalette = ({\r\n previousColor,\r\n previousClass = '',\r\n mainIndex = '',\r\n handleColorChange,\r\n style = {},\r\n}: // mainClass = '',\r\n ColorPaletteProps) => {\r\n const [selectColor, setSelectColor] = useState(null);\r\n const [colorList] = use3dddPlus(state => [\r\n state.defaultColorList\r\n ]);\r\n const handleColorClick = (color, index) => {\r\n setSelectColor(color);\r\n handleColorChange(color, index);\r\n };\r\n\r\n return (\r\n <>\r\n <div\r\n id=\"colorPalette\"\r\n className={`colorPalette right-[10.6rem] z-10 max-h-[16.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 h-[300px]`}\r\n style={style}\r\n >\r\n {colorList?.length > 0 && (\r\n <>\r\n <p\r\n className={`${TEXT_SIZE_9} leading-[1.125rem] font-bold pb-[1.125rem] text-left`}\r\n >\r\n Choose color\r\n </p>\r\n <div\r\n className={`flex flex-wrap gap-x-[0.8125rem] gap-y-[0.3125rem] pb-[2.0938rem] max-h-[10.9rem] overflow-y-auto`}\r\n >\r\n {colorList?.map((color, index) => (\r\n <div\r\n className=\"aspect-square border border-solid border-[#D6D6D6] cursor-pointer relative btn !p-0 !w-[1.875rem] !h-[1.875rem] min-h-[unset] rounded-none\"\r\n key={index + color.name}\r\n >\r\n <ToolTip label={color.name}>\r\n <ColorBox\r\n color={color.color}\r\n index={index}\r\n onClick={() => handleColorClick(color.color, mainIndex)}\r\n boxClass={`w-[1.875rem] h-[1.875rem] ${selectColor === color.color ? 'border border-[red]' : ''\r\n }`}\r\n />\r\n </ToolTip>\r\n </div>\r\n ))}\r\n </div>\r\n </>\r\n )}\r\n {previousColor?.length > 0 && (\r\n <>\r\n <div\r\n className={`flex flex-row gap-x-[0.875rem] pt-[1.3438rem] border-t border-t-[#EBEBEB]`}\r\n >\r\n <p\r\n className={`${TEXT_SIZE_9} leading-[1.125rem] font-bold pb-[1.125rem]`}\r\n >\r\n Previously used\r\n </p>\r\n <div\r\n className={`flex flex-wrap gap-x-[0.8125rem] gap-y-[0.3125rem] border-b border-b-[#EBEBEB] ${previousClass}`}\r\n >\r\n {previousColor?.map((color, index) => (\r\n <ColorBox\r\n color={color}\r\n index={'previous' + index}\r\n onClick={() =>\r\n handleColorClick(color, mainIndex + 'Choose' + index)\r\n }\r\n boxClass={`w-[1.875rem] h-[1.875rem] ${selectColor === color ? 'border border-[red]' : ''\r\n }`}\r\n />\r\n ))}\r\n </div>\r\n </div>\r\n </>\r\n )}\r\n </div>\r\n </>\r\n );\r\n};\r\n\r\nexport interface BoxColorProps {\r\n color?: string;\r\n index?: any;\r\n boxClass?: string;\r\n onClick?: (e: React.MouseEvent<HTMLDivElement, MouseEvent>) => void;\r\n onChange?: (e: React.MouseEvent<HTMLDivElement, MouseEvent>) => void;\r\n children?: React.ReactNode;\r\n}\r\n\r\nexport const ColorBox = ({\r\n color,\r\n index,\r\n boxClass = '',\r\n onClick,\r\n onChange,\r\n children,\r\n}: BoxColorProps) => {\r\n return (\r\n <div\r\n key={index}\r\n style={{ backgroundColor: color }}\r\n className={`w-10 h-10 border border-[#D6D6D6] ${boxClass}`}\r\n onClick={onClick}\r\n onChange={onChange}\r\n >\r\n {children}\r\n {color === 'transparent' && (\r\n <div\r\n style={{\r\n width: '2px',\r\n height: '39px',\r\n background: '#FF0000',\r\n transform: 'rotate(-45deg)',\r\n marginLeft: '13px',\r\n marginTop: '-6px',\r\n }}\r\n >\r\n \r\n </div>\r\n )}\r\n </div>\r\n );\r\n};\r\n","import React from 'react';\r\nimport { ToolTip } from '../toolTip';\r\nimport { use3dddPlus } from '../../store';\r\n\r\nexport const ColorImpl = (props) => {\r\n const getLable = (colorCode) => {\r\n const color = use3dddPlus.getState().defaultColorList.find((c) => colorCode === c.color);\r\n if (color && color.name) {\r\n return color.name;\r\n } else {\r\n return colorCode;\r\n }\r\n };\r\n\r\n return (\r\n <ToolTip label={getLable(props.color)}>\r\n <div className={props.mClass}>\r\n <div\r\n className={`border border-gray-600 w-[30px] h-[30px] group`}\r\n style={{\r\n background: props.color === 'transparent' ? '#FFFFFF' : props.color,\r\n // border:'5px solid yellow'\r\n }}\r\n onClick={(event: any) => {\r\n event.stopPropagation();\r\n event.preventDefault();\r\n\r\n props.setDisplayPallet({\r\n visible: true,\r\n property: props.property,\r\n color: '',\r\n callback: props.callback,\r\n });\r\n props.setPosition({\r\n x: event.clientX,\r\n y:\r\n window.innerHeight < event.clientY + 280\r\n ? event.clientY - 300\r\n : event.clientY,\r\n });\r\n }}\r\n >\r\n {props.color === 'transparent' && (\r\n <div\r\n style={{\r\n width: '2px',\r\n height: '39px',\r\n background: '#FF0000',\r\n transform: 'rotate(-45deg)',\r\n marginLeft: '13px',\r\n marginTop: '-6px',\r\n }}\r\n >\r\n \r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n </ToolTip>\r\n );\r\n};\r\n","import React, { useEffect, useState, useRef, useMemo } from 'react';\r\nimport { use3dddPlus } from '../../store';\r\nimport { shallow } from 'zustand/shallow';\r\nimport { fabric } from 'fabric';\r\nimport { ColorImpl, ColorPalette } from '../colorPallet';\r\nimport { Initpopup } from '../../store/fabric/Popupcanvas';\r\nimport { CgArrowRight } from 'react-icons/cg';\r\nimport { EyeDropper, IconButton } from '../icon';\r\nimport { GiDrop } from 'react-icons/gi';\r\nimport { CgRedo, CgUndo } from 'react-icons/cg';\r\nimport { MdOutlineCancel } from 'react-icons/md';\r\nimport { ToolTip } from '../toolTip';\r\n// import { Button } from 'reakit';\r\nexport const PopUpCanvas = () => {\r\n const [\r\n popupCanvas,\r\n canvas,\r\n colorFill,\r\n changeSVGColor,\r\n popUpCanvasUndo,\r\n refreshColor,\r\n defaultColorFill,\r\n setDefaultColorFill,\r\n defaultColorFillCopy,\r\n setDefaultColorFillCopy,\r\n setHasUploadScreen,\r\n availableColorCodes,\r\n ] = use3dddPlus(\r\n (state) => [\r\n state.popupCanv,\r\n state.fabricCanvas,\r\n state.colorFill,\r\n state.changeSVGColor,\r\n state.popUpCanvasUndo,\r\n state.refreshColor,\r\n state.defaultColorFill,\r\n state.setDefaultColorFill,\r\n state.defaultColorFillCopy,\r\n state.setDefaultColorFillCopy,\r\n state.setHasUploadScreen,\r\n state.availableColorCodes,\r\n ],\r\n shallow\r\n );\r\n const [colorCount, setColorCount] = useState(8);\r\n const [colorFillCount, setColorFillCount] = useState(-1);\r\n // const [defaultColorFill, setDefaultColorFill] = useState([]);\r\n const [isRefresh, setIsRefresh] = useState(false);\r\n const [isNextClicked, setIsNextClicked] = useState(false);\r\n const defaultColorFillRef = useRef([]);\r\n const [zoomLevel, setZoomLevel] = useState(1);\r\n const panSpeed = 30;\r\n\r\n const [displayPallet, setDisplayPallet] = useState({\r\n visible: false,\r\n property: '',\r\n color: '',\r\n callback: null,\r\n });\r\n const [position, setPosition] = useState(null);\r\n\r\n useEffect(() => {\r\n if (!displayPallet || !displayPallet.visible) {\r\n setDefaultColorFill(\r\n defaultColorFill.map((cf: any) => ({ ...cf, hasPallet: false }))\r\n );\r\n }\r\n }, [displayPallet]);\r\n\r\n useEffect(() => {\r\n defaultColorFillRef.current = defaultColorFill;\r\n }, [defaultColorFill]);\r\n\r\n useEffect(() => {\r\n if (colorFill && Object.keys(colorFill).length) {\r\n if (colorFillCount === -1) {\r\n setColorFillCount(Object.keys(colorFill).length);\r\n const defaultCF = [];\r\n Object.keys(colorFill).map((cf: any) => {\r\n defaultCF.push({\r\n property: cf,\r\n default: colorFill[cf],\r\n updated: colorFill[cf],\r\n objects: defaultColorFill.find((dcf) => dcf.property === cf)\r\n ?.objects,\r\n });\r\n });\r\n setDefaultColorFill(defaultCF);\r\n }\r\n\r\n if (isRefresh) {\r\n setIsRefresh(false);\r\n setTimeout(() => {\r\n Object.keys(colorFill).map((cf: any) => {\r\n const dcf = defaultColorFill.find(\r\n (dcf: any) => dcf.property === cf\r\n );\r\n if (dcf && dcf.default !== dcf.updated) {\r\n changeSVGColor(dcf.property, dcf.updated);\r\n }\r\n });\r\n }, 100);\r\n }\r\n }\r\n // setColorFillCount(-1);\r\n }, [colorFill]);\r\n\r\n useEffect(() => {\r\n if (colorFillCount && colorFillCount > 0) {\r\n setColorCount(colorFillCount);\r\n } else {\r\n setColorCount(8);\r\n }\r\n }, [colorFillCount]);\r\n\r\n const onColorUpdate = (property: any, color: any) => {\r\n // const foundIndex = defaultColorFill.findIndex(\r\n // (cf: any) => cf.property === property\r\n // );\r\n // if (foundIndex >= 0) {\r\n // defaultColorFill[foundIndex].updated = color;\r\n // }\r\n\r\n if (changeSVGColor(property, color)) {\r\n setDefaultColorFill(\r\n defaultColorFill.map(\r\n (c: any) => (c.property === property ? { ...c, updated: color } : c)\r\n // colorFill[property] === c.updated ? { ...c, updated: color } : c\r\n )\r\n );\r\n setDefaultColorFillCopy(\r\n defaultColorFillCopy.map(\r\n (c: any) => (c.property === property ? { ...c, updated: color } : c)\r\n // colorFill[property] === c.updated ? { ...c, updated: color } : c\r\n )\r\n );\r\n }\r\n };\r\n\r\n const handleColorCountChange = (e) => {\r\n setColorCount(Number(e.target.value));\r\n // use3dddPlus.setState({ colorCount: Number(e.target.value) });\r\n refreshColor(Number(e.target.value));\r\n setIsRefresh(true);\r\n };\r\n const resizeCanvas = () => {\r\n if (document.getElementById('imageCanvas')) {\r\n const canvas = use3dddPlus.getState().popupCanv;\r\n const outerCanvasContainer = document.getElementById('imageCanvas');\r\n const containerWidth = outerCanvasContainer.clientWidth;\r\n const scale = containerWidth / canvas.getWidth();\r\n const zoom = canvas.getZoom() * scale;\r\n canvas.setWidth(containerWidth);\r\n //@ts-ignore\r\n canvas.setHeight(parseInt(outerCanvasContainer.clientHeight));\r\n canvas.setViewportTransform([zoom, 0, 0, zoom, 0, 0]);\r\n canvas.renderAll();\r\n }\r\n };\r\n\r\n const removeColorPalatte = () => {\r\n setDisplayPallet({\r\n visible: false,\r\n property: '',\r\n color: '',\r\n callback: null,\r\n });\r\n };\r\n\r\n useEffect(() => {\r\n fabric.Object.prototype.hasControls = false;\r\n fabric.Object.prototype.hasBorders = false;\r\n setDefaultColorFill([]);\r\n setColorFillCount(-1);\r\n setHasUploadScreen(true);\r\n const popupCanv = Initpopup();\r\n use3dddPlus.setState({ popupCanv: popupCanv });\r\n resizeCanvas();\r\n window.addEventListener('resize', resizeCanvas);\r\n window.addEventListener('click', removeColorPalatte);\r\n //FOR REMOVING COLOR\r\n\r\n popupCanv.on('mouse:down', function (event) {\r\n use3dddPlus.getState().popUpCanvasUpdateModification(true);\r\n let removedColors = [];\r\n\r\n if (event.target.type !== \"line\") {\r\n removedColors.push(event.target.fill);\r\n popupCanv.remove(event.target);\r\n popupCanv.renderAll();\r\n }\r\n\r\n let defaultColorsCopy = defaultColorFillRef.current;\r\n removedColors.map((rc: any) => {\r\n if (popupCanv.getObjects().filter((obj: any) => obj.fill === rc).length < 1) {\r\n defaultColorsCopy = defaultColorsCopy.filter((dc: any) => dc.updated !== RGBToHex(rc));\r\n }\r\n });\r\n setDefaultColorFill(defaultColorsCopy);\r\n use3dddPlus.getState().popUpCanvasUpdateModification(true);\r\n\r\n });\r\n\r\n return () => {\r\n setHasUploadScreen(false);\r\n window.removeEventListener('click', removeColorPalatte);\r\n };\r\n }, []);\r\n\r\n const popupCanvasCancel = () => {\r\n fabric.Object.prototype.hasControls = true;\r\n fabric.Object.prototype.hasBorders = true;\r\n setDefaultColorFill([]);\r\n use3dddPlus.setState({ uploadImageModalDisplay: false });\r\n popupCanvas.remove(...popupCanvas.getObjects());\r\n use3dddPlus.setState({ colorFill: {} });\r\n use3dddPlus.setState({ popupCanvasStoreHistory: [] });\r\n use3dddPlus.setState({ popUpCanvasCount: 1 });\r\n };\r\n\r\n const popupCanvasContinue = () => {\r\n if (!conflictColors || conflictColors.length < 1) {\r\n setIsNextClicked(false);\r\n onContinue();\r\n } else {\r\n setIsNextClicked(true);\r\n }\r\n };\r\n\r\n const onContinue = () => {\r\n fabric.Object.prototype.hasControls = true;\r\n fabric.Object.prototype.hasBorders = true;\r\n //@ts-ignore\r\n use3dddPlus.setState({ uploadImageModalDisplay: false });\r\n use3dddPlus.setState({ selectedStepper: undefined });\r\n popupCanvas.getObjects().forEach((obj) => {\r\n if (obj.type === 'line') {\r\n popupCanvas.remove(obj);\r\n }\r\n });\r\n const sel = new fabric.ActiveSelection(popupCanvas.getObjects(), {\r\n //@ts-ignore\r\n popupCanvas: popupCanvas,\r\n });\r\n popupCanvas.setActiveObject(sel);\r\n\r\n popupCanvas.requestRenderAll();\r\n let clipboard;\r\n popupCanvas.getActiveObject().clone(function (cloned) {\r\n clipboard = cloned;\r\n\r\n if (clipboard && clipboard.type === 'activeSelection') {\r\n clipboard.canvas = canvas;\r\n const objs = [];\r\n clipboard.forEachObject(function (obj: any) {\r\n if (!obj.id) {\r\n obj.set({\r\n id: use3dddPlus.getState().guid()\r\n })\r\n }\r\n objs.push(obj);\r\n });\r\n\r\n const alltogetherObj = new fabric.Group(objs, {});\r\n canvas.centerObject(alltogetherObj);\r\n canvas.add(alltogetherObj);\r\n canvas.setActiveObject(alltogetherObj);\r\n alltogetherObj.set({\r\n //@ts-ignore\r\n colorFill: use3dddPlus.getState().colorFill,\r\n id: use3dddPlus.getState().guid()\r\n });\r\n alltogetherObj._objects.map((node) => {\r\n let _C = node.fill === 'transparent' || node.fill === '' || node.fill === undefined ||\r\n (typeof node.fill === 'string' && node.fill.includes('#'))\r\n ? node.fill\r\n : RGBToHex(node.fill);\r\n if (_C) {\r\n node.set({\r\n fill: _C,\r\n });\r\n }\r\n })\r\n alltogetherObj.setCoords();\r\n use3dddPlus.getState().forStoringAllObject(alltogetherObj); //for pushing the data into array for layers\r\n use3dddPlus.getState().forIconCapture();\r\n //@ts-ignore\r\n alltogetherObj.icon = use3dddPlus.getState().iconImage;\r\n } else {\r\n canvas.add(clipboard);\r\n }\r\n\r\n canvas.requestRenderAll();\r\n popupCanvas.clear();\r\n use3dddPlus.setState({ popupCanvasStoreHistory: [] });\r\n use3dddPlus.getState().updateModifaction(true);\r\n });\r\n };\r\n\r\n const RGBToHex = (rgb) => {\r\n if (rgb) {\r\n if (rgb.indexOf('rgba') >= 0) {\r\n const rgba = rgb.replace(/^rgba?\\(|\\s+|\\)$/g, '').split(',');\r\n return `#${(\r\n (1 << 24) +\r\n (parseInt(rgba[0]) << 16) +\r\n (parseInt(rgba[1]) << 8) +\r\n parseInt(rgba[2])\r\n )\r\n .toString(16)\r\n .slice(1)}`;\r\n } else {\r\n let sep = rgb.indexOf(',') > -1 ? ',' : ' ';\r\n rgb = rgb.substr(4).split(')')[0].split(sep);\r\n let r = (+rgb[0]).toString(16),\r\n g = (+rgb[1]).toString(16),\r\n b = (+rgb[2]).toString(16);\r\n\r\n if (r.length == 1) r = '0' + r;\r\n if (g.length == 1) g = '0' + g;\r\n if (b.length == 1) b = '0' + b;\r\n return '#' + r + g + b;\r\n }\r\n } else {\r\n return '';\r\n }\r\n };\r\n\r\n const resetHandler = () => {\r\n use3dddPlus.getState().popUpCanvasUpdateModification(true);\r\n const colors = use3dddPlus.getState().popupCanvasStoreHistory[0].colorFill;\r\n use3dddPlus\r\n .getState()\r\n .popupCanv.loadFromJSON(\r\n use3dddPlus.getState().popupCanvasStoreHistory[0].json\r\n );\r\n\r\n popupCanvas.getObjects().forEach((obj: any) => {\r\n if (obj.type === 'line') {\r\n popupCanvas.remove(obj);\r\n }\r\n });\r\n\r\n const canvas = use3dddPlus.getState().popupCanv;\r\n var gridSize = 83; // Size of each grid cell\r\n var canvasWidth = canvas.width;\r\n var canvasHeight = canvas.height;\r\n var numCols = Math.ceil(canvasWidth / gridSize);\r\n var numRows = Math.ceil(canvasHeight / gridSize);\r\n\r\n // Function to create a rectangle with checkerboard pattern\r\n function createCheckerboardRect(left, top, width, height, isEvenRow) {\r\n var rect = new fabric.Rect({\r\n left: left,\r\n top: top,\r\n width: width,\r\n height: height,\r\n type: 'line',\r\n lockMovementX: true,\r\n lockMovementY: true,\r\n lockScalingX: true,\r\n lockScalingY: true,\r\n // backgroundColor:'#ccc',\r\n fill:\r\n (isEvenRow && (left / gridSize) % 2 === 0) ||\r\n (!isEvenRow && (left / gridSize) % 2 !== 0)\r\n ? '#ffffff'\r\n : '#dadadac7',\r\n });\r\n return rect;\r\n }\r\n\r\n // Create grid lines\r\n for (var i = 0; i < numCols; i++) {\r\n var x = i * gridSize;\r\n const line = new fabric.Line([x, 0, x, canvasHeight], {\r\n stroke: '#dadadac7',\r\n selectable: false,\r\n type: 'line',\r\n lockMovementX: true,\r\n lockMovementY: true,\r\n lockScalingX: true,\r\n lockScalingY: true,\r\n });\r\n canvas.add(line);\r\n canvas.sendToBack(line);\r\n }\r\n\r\n for (var j = 0; j < numRows; j++) {\r\n var y = j * gridSize;\r\n const line = new fabric.Line([0, y, canvasWidth, y], {\r\n stroke: '#FFFFFF',\r\n selectable: false,\r\n type: 'line',\r\n lockMovementX: true,\r\n lockMovementY: true,\r\n lockScalingX: true,\r\n lockScalingY: true,\r\n });\r\n canvas.add(line);\r\n canvas.sendToBack(line);\r\n }\r\n\r\n // Fill grid with checkerboard pattern\r\n for (var i = 0; i < numCols; i++) {\r\n for (var j = 0; j < numRows; j++) {\r\n var left = i * gridSize;\r\n var top = j * gridSize;\r\n var isEvenRow = j % 2 === 0;\r\n var rect = createCheckerboardRect(\r\n left,\r\n top,\r\n gridSize,\r\n gridSize,\r\n isEvenRow\r\n );\r\n canvas.add(rect);\r\n canvas.sendToBack(rect);\r\n }\r\n }\r\n\r\n use3dddPlus.setState({ colorFill: colors });\r\n setDefaultColorFill(\r\n defaultColorFill.map((dcf: any) => ({ ...dcf, updated: dcf.default }))\r\n );\r\n let _objects = canvas.getObjects();\r\n _objects.forEach(element => {\r\n if (element.type === \"path\") {\r\n element.set({\r\n perPixelTargetFind: true,\r\n })\r\n }\r\n })\r\n use3dddPlus.setState({ popUpCanvasCount: 1 });\r\n };\r\n\r\n const canvasZoomIn = () => {\r\n const newZoomLevel = zoomLevel + 0.1;\r\n setZoomLevel(newZoomLevel);\r\n const center = popupCanvas.getCenter();\r\n popupCanvas.zoomToPoint({ x: center.left, y: center.top }, newZoomLevel);\r\n }\r\n const canvasZoomOut = () => {\r\n if (zoomLevel == 1) return;\r\n const newZoomLevel = zoomLevel - 0.1;\r\n setZoomLevel(newZoomLevel);\r\n const center = popupCanvas.getCenter();\r\n popupCanvas.zoomToPoint({ x: center.left, y: center.top }, newZoomLevel);\r\n }\r\n\r\n const canvasPan = (direction) => {\r\n\r\n switch (direction) {\r\n case 'Left':\r\n popupCanvas.relativePan(new fabric.Point(-panSpeed, 0));\r\n break;\r\n case 'Right':\r\n popupCanvas.relativePan(new fabric.Point(panSpeed, 0));\r\n break;\r\n case 'Up':\r\n popupCanvas.relativePan(new fabric.Point(0, -panSpeed));\r\n break;\r\n case 'Down':\r\n popupCanvas.relativePan(new fabric.Point(0, panSpeed));\r\n break;\r\n default:\r\n break;\r\n }\r\n };\r\n const onSelectColor = (item: any, event: any) => {\r\n setDefaultColorFill(\r\n defaultColorFill.map((cf: any) =>\r\n cf.property === item.property\r\n ? {\r\n ...cf,\r\n hasPallet: true,\r\n position: { x: event.clientX, y: event.clientY },\r\n }\r\n : { ...cf, hasPallet: false }\r\n )\r\n );\r\n setDisplayPallet({\r\n visible: true,\r\n property: item.property,\r\n color: item.updated,\r\n callback: onColorUpdate,\r\n });\r\n setPosition({\r\n x: event.clientX,\r\n y:\r\n window.innerHeight < event.clientY + 280\r\n ? event.clientY - 300\r\n : event.clientY,\r\n });\r\n };\r\n\r\n const onPopUpCanvasUndo = () => {\r\n const colors = popUpCanvasUndo();\r\n if (colors !== null) {\r\n let currentColors = defaultColorFill.map((c: any) =>\r\n colors[c.property] && colors[c.property].length > 0\r\n ? { ...c, updated: colors[c.property] }\r\n : c\r\n );\r\n\r\n Object.keys(colors).forEach((c: any) => {\r\n if (\r\n defaultColorFill.filter((dc: any) => dc.updated === colors[c])\r\n .length < 1\r\n ) {\r\n const colorFromDefaultCopy = defaultColorFillCopy.find(\r\n (dcc) => dcc.updated === colors[c]\r\n );\r\n if (colorFromDefaultCopy && colorFromDefaultCopy.updated) {\r\n currentColors.push(colorFromDefaultCopy);\r\n }\r\n }\r\n });\r\n setDefaultColorFill(currentColors);\r\n }\r\n\r\n };\r\n\r\n const conflictColors = useMemo(() => {\r\n return defaultColorFill.filter(\r\n (c: any) => availableColorCodes.indexOf(c.updated.toUpperCase()) < 0\r\n );\r\n }, [defaultColorFill]);\r\n\r\n return (\r\n <>\r\n {/* <div\r\n className=\"relative z-10\"\r\n aria-labelledby=\"modal-title\"\r\n role=\"dialog\"\r\n aria-modal=\"true\"\r\n style={uploadImageModalDisplay ? {} : { display: 'none' }}\r\n > */}\r\n <div className=\"flex z-5 overflow-y-auto h-full\">\r\n <div className=\"flex flex-1 w-full h-full\">\r\n <div className=\"relative w-full overflow-hidden bg-white h-full\">\r\n <div className=\"bg-white h-full\">\r\n <div className=\"flex flex-row h-full\">\r\n <div className=\"flex flex-row text-center w-[70%] h-full\">\r\n <div className=\" w-full h-full relative\">\r\n <div\r\n className=\"btnCont flex flex-wrap h-[40px] bg-[#F7F7F7]\"\r\n style={{\r\n padding: '10px',\r\n justifyContent: 'flex-end',\r\n width: '100%',\r\n }}\r\n >\r\n {/* CANVAS LEFT PANNING */}\r\n <div\r\n className=\"zoomIn cursor-pointer mr-4\"\r\n onClick={() => canvasPan(\"Left\")}\r\n >\r\n <div className=\"left float-left\">\r\n <svg\r\n fill=\"#727272\"\r\n width=\"16px\"\r\n height=\"16px\"\r\n viewBox=\"0 0 330 330\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n >\r\n <path fill=\"#040404\" id=\"XMLID_92_\"\r\n d=\"M111.213,165.004L250.607,25.607c5.858-5.858,5.858-15.355,0-21.213c-5.858-5.858-15.355-5.858-21.213,0.001\r\n l-150,150.004C76.58,157.211,75,161.026,75,165.004c0,3.979,1.581,7.794,4.394,10.607l150,149.996\r\n C232.322,328.536,236.161,330,240,330s7.678-1.464,10.607-4.394c5.858-5.858,5.858-15.355,0-21.213L111.213,165.004z\"\r\n />\r\n </svg>\r\n </div>\r\n <span className=\"iconLabel float-left text-[#727272] ml-2 text-[13px] font-bold \">\r\n Left\r\n </span>\r\n </div>\r\n {/* CANVAS RIGHT PANNING */}\r\n <div\r\n className=\"zoomIn cursor-pointer mr-4\"\r\n onClick={() => canvasPan(\"Right\")}\r\n >\r\n <div className=\"right float-left\">\r\n <svg\r\n fill=\"#727272\"\r\n width=\"16px\"\r\n height=\"16px\"\r\n viewBox=\"0 0 330 330\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n >\r\n <path fill=\"#040404\" id=\"XMLID_222_\"\r\n d=\"M250.606,154.389l-150-149.996c-5.857-5.858-15.355-5.858-21.213,0.001\r\n c-5.857,5.858-5.857,15.355,0.001,21.213l139.393,139.39L79.393,304.394c-5.857,5.858-5.857,15.355,0.001,21.213\r\n C82.322,328.536,86.161,330,90,330s7.678-1.464,10.607-4.394l149.999-150.004c2.814-2.813,4.394-6.628,4.394-10.606\r\n C255,161.018,253.42,157.202,250.606,154.389z\"\r\n />\r\n </svg>\r\n </div>\r\n <span className=\"iconLabel float-left text-[#727272] ml-2 text-[13px] font-bold \">\r\n Right\r\n </span>\r\n </div>\r\n {/* CANVAS TOP PANNING */}\r\n <div\r\n className=\"zoomIn cursor-pointer mr-4 \"\r\n onClick={() => canvasPan(\"Up\")}\r\n >\r\n <div className=\"left float-left\">\r\n <svg\r\n fill=\"#727272\"\r\n width=\"16px\"\r\n height=\"16px\"\r\n viewBox=\"0 0 330 330\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n >\r\n <path fill=\"#040404\" id=\"XMLID_224_\"\r\n d=\"M325.606,229.393l-150.004-150C172.79,76.58,168.974,75,164.996,75c-3.979,0-7.794,1.581-10.607,4.394\r\n l-149.996,150c-5.858,5.858-5.858,15.355,0,21.213c5.857,5.857,15.355,5.858,21.213,0l139.39-139.393l139.397,139.393\r\n C307.322,253.536,311.161,255,315,255c3.839,0,7.678-1.464,10.607-4.394C331.464,244.748,331.464,235.251,325.606,229.393z\"\r\n />\r\n </svg>\r\n </div>\r\n <span className=\"iconLabel float-left text-[#727272] ml-2 text-[13px] font-bold \">\r\n Up\r\n </span>\r\n </div>\r\n {/* CANVAS DOWN PANNING */}\r\n <div\r\n className=\"down cursor-pointer mr-4\"\r\n onClick={() => canvasPan(\"Down\")}\r\n >\r\n <div className=\"down float-left\">\r\n <svg\r\n fill=\"#727272\"\r\n width=\"16px\"\r\n height=\"16px\"\r\n viewBox=\"0 0 330 330\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n >\r\n <path fill=\"#040404\" id=\"XMLID_225_\"\r\n d=\"M325.607,79.393c-5.857-5.857-15.355-5.858-21.213,0.001l-139.39,139.393L25.607,79.393\r\n c-5.857-5.857-15.355-5.858-21.213,0.001c-5.858,5.858-5.858,15.355,0,21.213l150.004,150c2.813,2.813,6.628,4.393,10.606,4.393\r\n s7.794-1.581,10.606-4.394l149.996-150C331.465,94.749,331.465,85.251,325.607,79.393z\"\r\n />\r\n </svg>\r\n </div>\r\n <span className=\"iconLabel float-left text-[#727272] ml-2 text-[13px] font-bold \">\r\n Down\r\n </span>\r\n </div>\r\n {/*CANVAS ZOOM-IN */}\r\n <div\r\n className=\"zoomIn cursor-pointer mr-4\"\r\n onClick={canvasZoomIn}\r\n >\r\n <div className=\"zoomIn float-left\">\r\n <svg\r\n fill=\"#727272\"\r\n width=\"16px\"\r\n height=\"16px\"\r\n viewBox=\"0 0 24 24\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n >\r\n <path fill=\"#040404\" d=\"M16.3198574,14.9056439 L21.7071068,20.2928932 L20.2928932,21.7071068 L14.9056439,16.3198574 C13.5509601,17.3729184 11.8487115,18 10,18 C5.581722,18 2,14.418278 2,10 C2,5.581722 5.581722,2 10,2 C14.418278,2 18,5.581722 18,10 C18,11.8487115 17.3729184,13.5509601 16.3198574,14.9056439 Z M10,16 C13.3137085,16 16,13.3137085 16,10 C16,6.6862915 13.3137085,4 10,4 C6.6862915,4 4,6.6862915 4,10 C4,13.3137085 6.6862915,16 10,16 Z M9,9 L9,6 L11,6 L11,9 L14,9 L14,11 L11,11 L11,14 L9,14 L9,11 L6,11 L6,9 L9,9 Z\" />\r\n </svg>\r\n </div>\r\n <span className=\"iconLabel float-left text-[#727272] ml-2 text-[13px] font-bold \">\r\n Zoom-In\r\n </span>\r\n </div>\r\n {/* CANVAS ZOOM-OUT */}\r\n <div\r\n className=\"zoomIn cursor-pointer mr-4\"\r\n onClick={canvasZoomOut}\r\n >\r\n <div className=\"zoomIn float-left\">\r\n <svg\r\n fill=\"#000000\"\r\n width=\"16px\"\r\n height=\"16px\"\r\n viewBox=\"0 0 24 24\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n >\r\n\r\n <g id=\"Complete\">\r\n <g id=\"zoom-out\">\r\n <g>\r\n <circle cx=\"10.1\" cy=\"10.1\" fill=\"none\" r=\"8\" stroke=\"#040404\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" />\r\n <line fill=\"none\" stroke=\"#040404\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" x1=\"21.9\" x2=\"16.3\" y1=\"21.9\" y2=\"16.3\" />\r\n <line fill=\"none\" stroke=\"#040404\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" x1=\"13.1\" x2=\"7.1\" y1=\"10.1\" y2=\"10.1\" />\r\n </g>\r\n </g>\r\n </g>\r\n </svg>\r\n </div>\r\n <span className=\"iconLabel float-left text-[#727272] ml-2 text-[13px] font-bold \">\r\n Zoom-Out\r\n </span>\r\n </div>\r\n\r\n\r\n <div\r\n className=\"undoBtn cursor-pointer mr-4\"\r\n onClick={onPopUpCanvasUndo}\r\n >\r\n <div className=\"undoIcon float-left\">\r\n <CgUndo />\r\n {/* <svg\r\n fill=\"#727272\"\r\n width=\"16px\"\r\n height=\"16px\"\r\n viewBox=\"0 0 16 16\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n >\r\n <path\r\n className=\"cls-1\"\r\n d=\"M6,3.6V0L0,6l6,6V8c6-.27,7.53,3.76,7.88,5.77a.27.27,0,0,0,.53,0C17.08,2.86,6,3.6,6,3.6Z\"\r\n />\r\n </svg> */}\r\n </div>\r\n <span className=\"iconLabel float-left text-[#727272] ml-2 text-[13px] font-bold \">\r\n Undo\r\n </span>\r\n </div>\r\n <div\r\n className=\"resetBtn cursor-pointer\"\r\n onClick={(e) => {\r\n e.preventDefault()\r\n e.stopPropagation()\r\n resetHandler()\r\n }}\r\n >\r\n <div className=\"resetBtn float-left\">\r\n <CgRedo />\r\n {/* <svg\r\n fill=\"#727272\"\r\n width=\"16px\"\r\n height=\"16px\"\r\n viewBox=\"0 0 1920 1920\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n >\r\n <path\r\n d=\"M960 0v213.333c411.627 0 746.667 334.934 746.667 746.667S1371.627 1706.667 960 1706.667 213.333 1371.733 213.333 960c0-197.013 78.4-382.507 213.334-520.747v254.08H640V106.667H53.333V320h191.04C88.64 494.08 0 720.96 0 960c0 529.28 430.613 960 960 960s960-430.72 960-960S1489.387 0 960 0\"\r\n fillRule=\"evenodd\"\r\n />\r\n </svg> */}\r\n </div>\r\n <span className=\"iconLabel float-left text-[#727272] ml-2 text-[13px] font-bold \">\r\n Reset\r\n </span>\r\n </div>\r\n </div>\r\n\r\n <div\r\n id=\"imageCanvas\"\r\n style={{\r\n width: '100%',\r\n height: 'calc(100% - 75px)',\r\n overflow: 'hidden',\r\n }}\r\n >\r\n <canvas className=\"pointer\" id=\"popupCanvas\"></canvas>\r\n </div>\r\n\r\n <div\r\n className=\"flex flex-wrap justify-center w-[100%] pt-[5px] pb-[5px] bg-[#F7F7F7]\"\r\n style={{\r\n alignItems: 'center',\r\n width: '100%',\r\n height: '35px',\r\n }}\r\n >\r\n <span className=\"border border-[#E11A38] p-1 bg-white mr-2 text-[#E11A38] \">\r\n <EyeDropper />\r\n </span>\r\n\r\n <span className=\"text-[#E11A38] text-[13px] font-bold \">\r\n Use the eyedropper tool by clicking on a color you wish to remove from your image.\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n <div className=\"text-left flex-1 h-[100%] px-[25px] pt-[31px] pb-[5px] w-[30%]\">\r\n <div className=\"flex flex-col gap-y-3 h-full\">\r\n <h1 className=\"text-[22px] font-bold\">\r\n Match and Combine colors\r\n </h1>\r\n <p className=\"text-[15px]\">\r\n Select how many colors are in your image\r\n </p>\r\n <select\r\n value={colorCount}\r\n onChange={handleColorCountChange}\r\n className=\"border-[1px] border-[#D7D7D7] p-2\"\r\n >\r\n <option value={1} disabled={colorFillCount < 1}>\r\n 1 Colors\r\n </option>\r\n <option value={2} disabled={colorFillCount < 2}>\r\n 2 Colors\r\n </option>\r\n <option value={3} disabled={colorFillCount < 3}>\r\n 3 Colors\r\n </option>\r\n <option value={4} disabled={colorFillCount < 4}>\r\n 4 Colors\r\n </option>\r\n <option value={5} disabled={colorFillCount < 5}>\r\n 5 Colors\r\n </option>\r\n <option value={6} disabled={colorFillCount < 6}>\r\n 6 Colors\r\n </option>\r\n <option value={7} disabled={colorFillCount < 7}>\r\n 7 Colors\r\n </option>\r\n <option value={8} disabled={colorFillCount < 8}>\r\n 8 Colors\r\n </option>\r\n </select>\r\n {/* {Object.keys(colorFill)?.map((item) => {\r\n return (\r\n <>\r\n <ColorImpl\r\n handleChange={changeSVGColor}\r\n property={item}\r\n color={colorFill[item]}\r\n />\r\n </>\r\n );\r\n })} */}\r\n <div\r\n className={\r\n 'flex flex-col gap-y-3.5 items-center overflow-y-auto py-[5px] 2xl:h-[50vh] sm:h-[42vh] h-[42vh]'\r\n }\r\n >\r\n {defaultColorFill\r\n //@ts-ignore\r\n ?.filter((item, index) => index < colorCount)\r\n .map((item, index) => (\r\n <div\r\n className=\"flex flex-row items-center\"\r\n key={index}\r\n >\r\n <ToolTip label={item.default}>\r\n <div\r\n className=\"w-[30px] h-[30px] m-1 border-[1px] border-[#000000]\"\r\n style={{ background: item.default }}\r\n // title={item.default}\r\n ></div>\r\n </ToolTip>\r\n <div className=\"mx-[10px] text-[#c2c2c2]\">\r\n <CgArrowRight />\r\n </div>\r\n <div className=\"flex flex-row border-[1px] border-[#D6D6D6]\"\r\n onClick={(event) => {\r\n event.stopPropagation();\r\n event.preventDefault();\r\n onSelectColor(item, event);\r\n }}>\r\n <span\r\n className=\" border-r-[1px] border-[#D6D6D6] bg-[#fce8eb]\"\r\n style={{ cursor: 'pointer' }}\r\n >\r\n {item.default === item.updated ? (\r\n <IconButton\r\n label=\"\"\r\n icon={<GiDrop />}\r\n className={\r\n '!rounded-none pointer-events-auto cursor-pointer flex text-[#E11A38] w-[30px] h-[30px] p-[6px]'\r\n }\r\n size=\"1.125rem\"\r\n ></IconButton>\r\n ) : (\r\n <ColorImpl\r\n className=\"w-[30px] h-[30px] m-2\"\r\n handleChange={onColorUpdate}\r\n property={item.property}\r\n color={item.updated}\r\n // onClose={onClosePalette}\r\n setDisplayPallet={setDisplayPallet}\r\n setPosition={setPosition}\r\n callback={onColorUpdate}\r\n />\r\n )}\r\n </span>\r\n <span\r\n\r\n className=\"py-[5px] pl-[10px] pr-[6px] font-medium text-[13px] bg-[#F1F1F1] cursor-pointer\"\r\n\r\n >\r\n Select Color\r\n </span>\r\n </div>\r\n <span className=\"\">\r\n <IconButton\r\n label=\"Delete Color\"\r\n icon={<MdOutlineCancel />}\r\n onClick={() => {\r\n onColorUpdate(item.property, 'transparent');\r\n }}\r\n className={\r\n 'pointer-events-auto cursor-pointer m-autoflex w-[30px] h-[30px] p-[9px] text-[#c2c2c2]'\r\n }\r\n size=\"1rem\"\r\n ></IconButton>\r\n </span>\r\n </div>\r\n ))}\r\n </div>\r\n\r\n {isNextClicked &&\r\n conflictColors &&\r\n conflictColors.length > 0 ? (\r\n <div\r\n style={{\r\n position: 'absolute',\r\n backgroundColor: '#FFFFFF',\r\n bottom: 0,\r\n padding: '7px',\r\n }}\r\n >\r\n <IconButton\r\n label=\"Close\"\r\n icon={<MdOutlineCancel />}\r\n onClick={() => {\r\n setIsNextClicked(false);\r\n }}\r\n className={''}\r\n size=\"1.5rem\"\r\n style={{\r\n position: 'absolute',\r\n cursor: 'pointer',\r\n fontWeight: 'bold',\r\n right: 10,\r\n top: -7,\r\n color: '#FF0000',\r\n }}\r\n ></IconButton>\r\n\r\n <div\r\n className=\"text-[#E11A38]\"\r\n style={{ fontWeight: 'bold', marginBottom: '3px' }}\r\n >\r\n ERROR: CONFLICT IN COLOR USED\r\n </div>\r\n <div\r\n className=\"text-[#E11A38]\"\r\n style={{ marginBottom: '3px' }}\r\n >\r\n Note: The following colors used are not available in\r\n Richardson color palette. Please edit the colors used.\r\n </div>\r\n <div>\r\n {conflictColors.map((c: any, i: number) => {\r\n // console.log(c,i);\r\n return (\r\n <div\r\n key={'color-' + i}\r\n style={{\r\n width: '100%',\r\n height: '30px',\r\n lineHeight: '30px',\r\n backgroundColor: c.updated,\r\n textAlign: 'center',\r\n marginBottom: '3px',\r\n }}\r\n >\r\n <span\r\n style={{\r\n color: '#ffffff',\r\n mixBlendMode: 'difference',\r\n }}\r\n >\r\n {c.updated}\r\n </span>\r\n </div>\r\n );\r\n })}\r\n </div>\r\n {/* <div\r\n className=\"text-[#E11A38]\"\r\n style={{\r\n marginTop: '10px',\r\n marginBottom: '5px',\r\n fontWeight: 'bold',\r\n }}\r\n >\r\n Do you want to proceed?\r\n </div>\r\n\r\n <div className=\" flex flex-col content mb-[10px]\">\r\n <button\r\n type=\"button\"\r\n onClick={() => {\r\n setIsNextClicked(false);\r\n onContinue();\r\n }}\r\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\"\r\n >\r\n Yes\r\n </button>\r\n <button\r\n type=\"button\"\r\n onClick={() => {\r\n setIsNextClicked(false);\r\n }}\r\n className=\"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\"\r\n style={{\r\n marginTop: '10px',\r\n }}\r\n >\r\n No\r\n </button>\r\n </div> */}\r\n </div>\r\n ) : (\r\n <div className=\" flex flex-col content mb-[5px]\">\r\n <button\r\n type=\"button\"\r\n onClick={popupCanvasContinue}\r\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\"\r\n >\r\n Continue\r\n </button>\r\n <button\r\n type=\"button\"\r\n onClick={popupCanvasCancel}\r\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\"\r\n style={{\r\n marginTop: '10px',\r\n }}\r\n >\r\n Cancel\r\n </button>\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n {/* </div> */}\r\n {displayPallet && displayPallet.visible && (\r\n <ColorPalette\r\n mainClass={`left-0`}\r\n handleColorChange={(color) => {\r\n displayPallet.callback(displayPallet.property, color);\r\n setDisplayPallet({\r\n visible: false,\r\n property: '',\r\n color: '',\r\n callback: null,\r\n });\r\n }}\r\n style={\r\n position\r\n ? {\r\n position: 'fixed',\r\n left: position.x - 450,\r\n top: position.y - 5,\r\n width: '450px',\r\n }\r\n : { display: 'none' }\r\n }\r\n />\r\n )}\r\n </>\r\n );\r\n};\r\n","import { fabric } from 'fabric';\r\nimport { use3dddPlus } from '..';\r\n// @ts-ignore\r\nimport FontFaceObserver from 'fontfaceobserver';\r\nexport const Initpopup = () => {\r\n const fontList = new Set<string>();\r\n document.fonts.forEach((font) => fontList.add(font.family));\r\n // Preload all the fonts\r\n Array.from(fontList).forEach((font) => {\r\n new FontFaceObserver(font)\r\n .load()\r\n .then(() => {\r\n \r\n })\r\n .catch(() => {\r\n console.log(`${font} has not loaded.`);\r\n });\r\n });\r\n\r\n const onObjectSelected = () => {\r\n if (!popupcanvas.getActiveObject()) {\r\n return;\r\n }\r\n if (popupcanvas.getActiveObject().type !== 'group') {\r\n return;\r\n }\r\n //@ts-ignore\r\n popupcanvas.getActiveObject().toActiveSelection().viewportCenter();\r\n popupcanvas.requestRenderAll();\r\n };\r\n const getAllColorsPopupCanvas = () => {\r\n const popUpCanvasAllColor = [\r\n ...new Set(\r\n popupcanvas\r\n ?.getObjects()\r\n ?.map((item) => item['colorFill'] && Object.values(item['colorFill']))\r\n .flat()\r\n .filter(Boolean)\r\n ),\r\n ]; // FOR REMOVING ALL DUPLICATE COLOR\r\n use3dddPlus.setState({ popUpCanvasAllColor: popUpCanvasAllColor });\r\n };\r\n const cursorUrl =\r\n 'https://storage.googleapis.com/3ddplusgcp/logoEditor/assets/icons/eyedropper.svg';\r\n \r\n const outerCanvasContainer = document.getElementById('imageCanvas');\r\n\r\n const popupcanvas = new fabric.Canvas('popupCanvas', {\r\n centeredScaling: true,\r\n preserveObjectStacking: true,\r\n //backgroundColor: '#F7F7F7',\r\n defaultCursor: `url(\" ${cursorUrl} \")0 21.6, auto`,\r\n hoverCursor: `url(\" ${cursorUrl} \")0 21.6, auto`,\r\n // defaultCursor: 'pointer',\r\n // hoverCursor: 'pointer',\r\n // width: 500,\r\n // height: 300,\r\n width: outerCanvasContainer.clientWidth,\r\n height: outerCanvasContainer.clientHeight\r\n }); \r\n popupcanvas.on('after:render',getAllColorsPopupCanvas);\r\n popupcanvas.on('selection:created', onObjectSelected);\r\n return popupcanvas;\r\n};\r\n","import React, { useState } from 'react';\r\n\r\nimport FileUploadButton from './fileuploadButton';\r\nimport { use3dddPlus } from '../../store';\r\nimport { shallow } from 'zustand/shallow';\r\nimport { PopUpCanvas } from '../canvas/popUpCanvas';\r\n// import {fabric} from 'fabric';\r\n// import axios, { AxiosRequestConfig } from 'axios';\r\n\r\nexport const UploadLogo = () => {\r\n const [, setSelectedFile] = useState<File | null>(null);\r\n const [\r\n tiffConvert,\r\n imageToSVG,\r\n setFile,\r\n uploadImageModalDisplay,\r\n // pdfConverter,\r\n aiConvert,\r\n vectorize,\r\n // loadImageFromURL,\r\n ] = use3dddPlus(\r\n (state) => [\r\n state.tiffConvert,\r\n state.imageToSVG,\r\n state.setFile,\r\n state.uploadImageModalDisplay,\r\n // state.pdfConverter,\r\n state.aiConvert,\r\n // state.loadImageFromURL,\r\n state.vectorize,\r\n ],\r\n shallow\r\n );\r\n\r\n const handleFileSelect = (file: File) => {\r\n const fileSize = file.size;\r\n const fileSizeInKB = fileSize / 1024;\r\n const fileSizeInMB = fileSizeInKB / 1024;\r\n if (fileSizeInMB > 24) {\r\n use3dddPlus.getState().toastMessages.fileSize();\r\n return;\r\n }\r\n setSelectedFile(file);\r\n setFile(file);\r\n svgConverter(file);\r\n // You can perform further actions with the selected file here.\r\n };\r\n\r\n const svgConverter = async (data) => {\r\n const ext = data.name.substring(data.name.lastIndexOf('.') + 1);\r\n use3dddPlus.setState({ uploadImageModalDisplay: true });\r\n if (ext === 'svg') {\r\n imageToSVG(data, ext, true);\r\n } else if (ext === 'tif' || ext === 'tiff') {\r\n const tiffData = await tiffConvert(data);\r\n imageToSVG(tiffData, ext);\r\n } else if (ext === 'ai' || ext === 'pdf') {\r\n use3dddPlus.setState({ loading: true });\r\n let aiToSvg = await aiConvert(data);\r\n fetch(aiToSvg.s3_file_url + '?timestamp=' + Date.now())\r\n .then((response) => response.text())\r\n .then((svgText) => {\r\n imageToSVG(svgText, ext, false, false);\r\n })\r\n .catch((ex) => {\r\n console.log(ex);\r\n use3dddPlus.setState({ loading: false });\r\n });\r\n } else {\r\n use3dddPlus.setState({ loading: true });\r\n const vectorizeImage = await vectorize(data)\r\n fetch(vectorizeImage.svg_url)\r\n .then((response) => response.text())\r\n .then((svgText) => {\r\n imageToSVG(svgText, 'vectorSVG', true);\r\n use3dddPlus.setState({ loading: false });\r\n })\r\n .catch((ex) => {\r\n console.log(ex);\r\n use3dddPlus.setState({ loading: false });\r\n }); \r\n }\r\n setSelectedFile(null);\r\n };\r\n return (\r\n <>\r\n <div className=\"bg-[#F7F7F7] absolute z-[5] w-[90%] h-full \">\r\n <div className=\"relative w-full h-full\">\r\n <div className=\"flex justify-center w-full h-full text-center\">\r\n <FileUploadButton onFileSelect={handleFileSelect} />\r\n </div>\r\n <div className=\"absolute md:bottom-[20px] bottom-[10px] px-[80px]\">\r\n <p className=\" text-[#E11A38] text-base font-bold\">\r\n Privacy Notice\r\n </p>\r\n <p className=\"text-[#727272] text-sm font-medium pt-2 pb-2\">\r\n Your uploaded images are safe, secure, and remain your property.\r\n By proceeding you acknowledge that you have full legal rights and\r\n permissions to use the images you upload. We reserve the right to\r\n reject any order.\r\n </p>\r\n </div>\r\n </div>\r\n </div>\r\n {uploadImageModalDisplay && (\r\n <div className=\"bg-[#F7F7F7] absolute z-[5] w-[90%] h-full\">\r\n <PopUpCanvas />\r\n </div>\r\n )}\r\n </>\r\n );\r\n};\r\n","import React from 'react';\r\nimport {\r\n SEARCHBAR_BORDER_COLOR,\r\n SEARCH_ICON_COLOR,\r\n TEXT_COLOR_1,\r\n TEXT_SIZE_3,\r\n} from '../../theme';\r\n\r\nexport interface SearchBarProps {\r\n onChange?: (e: React.ChangeEvent<HTMLInputElement>) => void;\r\n onKeyPress?: (e: React.KeyboardEvent<HTMLDivElement>) => void;\r\n onPaste?: (e: React.ClipboardEvent<HTMLInputElement>) => void;\r\n placeholder?: string;\r\n searchBarMainClass?: string;\r\n value?: string;\r\n disabled?: boolean;\r\n}\r\nexport const Searchbar = ({\r\n onChange,\r\n onKeyPress,\r\n onPaste,\r\n placeholder,\r\n searchBarMainClass,\r\n value,\r\n disabled,\r\n}: SearchBarProps) => {\r\n return (\r\n <>\r\n <div\r\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]`}\r\n >\r\n <input\r\n type=\"search\"\r\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] !border-0`}\r\n placeholder={placeholder}\r\n aria-label=\"Search\"\r\n aria-describedby=\"button-addon3\"\r\n value={value}\r\n onChange={onChange}\r\n onKeyPress={onKeyPress}\r\n disabled={disabled}\r\n onPaste={onPaste}\r\n onClick={(e) => {\r\n e.currentTarget.focus();\r\n }}\r\n />\r\n <span\r\n className={`flex justify-center items-center rounded-none pl-2 pr-[14px]`}\r\n >\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 20 20\"\r\n fill=\"currentColor\"\r\n className={`h-5 w-5 ${SEARCH_ICON_COLOR}`}\r\n >\r\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\" />\r\n </svg>\r\n </span>\r\n </div>\r\n </>\r\n );\r\n};\r\n","import React from 'react';\r\nimport { IconButton, RxCross2 } from '../icon';\r\nimport { BACKDROP_BLUR,\r\n BACKDROP_BLUR_BG_COLOR, \r\n SAVERACK_TEXT_COLOR \r\n } from '../../theme';\r\n\r\nexport interface GlobalModalProps {\r\n backdropStyle?: string;\r\n children?: React.ReactNode;\r\n contentStyle?: string;\r\n crossOnClick?: () => void;\r\n modalStyle?: string;\r\n}\r\n\r\nexport const Modal = ({\r\n backdropStyle,\r\n children,\r\n contentStyle,\r\n crossOnClick,\r\n modalStyle,\r\n}: GlobalModalProps) => {\r\n return (\r\n <div>\r\n <div\r\n className={`${backdropStyle} absolute top-0 left-0 h-screen w-full ${BACKDROP_BLUR} ${BACKDROP_BLUR_BG_COLOR}`}\r\n ></div>\r\n\r\n <dialog\r\n open\r\n className={`${contentStyle} absolute shadow-[0 2px 8px rgba(0, 0, 0, 0.26)] ml-[auto] md:mr-[0%] mr-[auto]`}\r\n >\r\n <IconButton\r\n label={''}\r\n icon={<RxCross2 strokeWidth={1} onClick={crossOnClick} />}\r\n className={\r\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`\r\n }\r\n size=\"1.2rem\"\r\n ></IconButton>\r\n <div\r\n className={`flex flex-col justify-center gap-[1.75rem] ${modalStyle}`}\r\n >\r\n {children}\r\n </div>\r\n </dialog>\r\n </div>\r\n );\r\n};\r\n","import React from 'react';\r\n\r\nexport const SortAndFilterButton = ({\r\n label,\r\n icons,\r\n onClick,\r\n className,\r\n buttonLabelClass,\r\n}) => {\r\n return (\r\n <button\r\n onClick={onClick}\r\n className={`flex border border-[#EBEBEB] rounded-none gap-[31.5px] items-center p-2 shadow-[0px_7px_64px_rgba(0,0,0,0.07)] bg-[#FFFFFF] ${className}`}\r\n >\r\n <span className={`${buttonLabelClass}`}>{label}</span>\r\n <span>{icons}</span>\r\n </button>\r\n );\r\n};\r\n","import React, { useState, useEffect, useRef } from 'react';\r\nimport { SortAndFilterButton } from './sortButton';\r\nimport { BsSortDown } from 'react-icons/bs';\r\nimport { use3dddPlus } from '../../store';\r\nimport { shallow } from 'zustand/shallow';\r\n\r\nexport const SortByDropdown = ({ sortOptions }) => {\r\n const [loadingLogo, logoSortBy, logoSortDir] = use3dddPlus(\r\n (state) => [state.loadingLogo, state.logoSortBy, state.logoSortDir],\r\n shallow\r\n );\r\n const [isDropdownOpen, setIsDropdownOpen] = useState(false);\r\n const dropdownRef = useRef(null);\r\n\r\n const toggleDropdown = () => {\r\n setIsDropdownOpen(!isDropdownOpen);\r\n };\r\n\r\n const closeDropdown = () => {\r\n setIsDropdownOpen(false);\r\n };\r\n\r\n useEffect(() => {\r\n const handleOutsideClick = (event) => {\r\n if (dropdownRef.current && !dropdownRef.current.contains(event.target)) {\r\n closeDropdown();\r\n }\r\n };\r\n\r\n if (isDropdownOpen) {\r\n document.addEventListener('click', handleOutsideClick);\r\n }\r\n\r\n return () => {\r\n document.removeEventListener('click', handleOutsideClick);\r\n };\r\n }, [isDropdownOpen]);\r\n\r\n return (\r\n <div className=\"relative\" ref={dropdownRef}>\r\n <SortAndFilterButton\r\n onClick={toggleDropdown}\r\n label=\"Sort by\"\r\n icons={<BsSortDown size={'1.2rem'} />}\r\n buttonLabelClass={`hidden md:block`}\r\n className=\"py-[10px] px-[14.5px] text-[13px] leading-[16px] text-[#5d5d5d] font-bold\"\r\n />\r\n {isDropdownOpen && (\r\n <ul className=\"mt-[14px] shadow-[0px_7px_64px_rgba(0,0,0,0.07)] pt-[10px] dropdown-content w-[210px] md:right-0 bg-[#FFFFFF] flex flex-col absolute z-10 before:content-[''] before:absolute before:top-[-0.3125rem] before:h-[0.75rem] before:w-[0.75rem] before:bg-[white] before:rotate-45 md:before:right-[18px] md:before:left-[unset] before:left-[18px]\">\r\n {sortOptions.map((option) => (\r\n <li\r\n key={option.label}\r\n className={`${\r\n logoSortBy === option.sortBy &&\r\n logoSortDir === option.sortDir\r\n ? 'bg-[#fce8eb] text-[#e11a38]'\r\n : ''\r\n } cursor-pointer flex items-center hover:bg-[#fce8eb] hover:text-[#e11a38] py-[13px] px-[27.85px] border-b-[1px] last:border-b-0 border-[#F4F4F4] text-[14px] leading-[19px] text-[#353535] font-bold`}\r\n onClick={() => {\r\n toggleDropdown();\r\n loadingLogo(option.onClick());\r\n }}\r\n >\r\n {option.label}\r\n </li>\r\n ))}\r\n </ul>\r\n )}\r\n </div>\r\n );\r\n};\r\n","import React, { useEffect, useState, useRef } from 'react';\r\nimport { Searchbar } from '../searchbar';\r\nimport { Card, CardMedia, CardBody, CardTitle, CardTags } from '../card';\r\nimport { SortByDropdown } from '../SortByDropdown';\r\nimport { use3dddPlus } from '../../store';\r\nimport { shallow } from 'zustand/shallow';\r\nimport { fabric } from 'fabric';\r\n// import { Loader } from '../loader';\r\nimport {\r\n BORDER_COLOR_3,\r\n SELECT_BG_COLOR,\r\n TAG_BG_COLOR,\r\n TEXT_SIZE_12,\r\n} from '../../theme';\r\nimport { BsCheckLg } from 'react-icons/bs';\r\nimport { useDebounce } from '../../hooks/debounce';\r\nexport interface LogoProps {\r\n logo_id: number;\r\n customer_id: string;\r\n tag: string;\r\n name: string;\r\n logo_config_url: string;\r\n logo_url: string;\r\n logo_svg_url: string;\r\n created_at: string;\r\n}\r\nexport const MyLogo = ({ onApply }) => {\r\n const [logoSelected, setLogoSelected] = React.useState<LogoProps>();\r\n const [scrollEnd, setScrollEnd] = useState(false);\r\n const [morePages, setMorePages] = useState(true);\r\n const myRef = useRef(null);\r\n const [\r\n retriveLogoDesign,\r\n myLogoHandler,\r\n loadingLogo,\r\n setLogoData,\r\n logoData,\r\n logoSearchText,\r\n validateColorAvailability,\r\n toastMessages,\r\n customOptions\r\n ] = use3dddPlus(\r\n (state) => [\r\n state.retriveLogoDesign,\r\n state.myLogoHandler,\r\n state.loadingLogo,\r\n state.setLogoData,\r\n state.logoData,\r\n state.logoSearchText,\r\n state.validateColorAvailability,\r\n state.toastMessages,\r\n state.customOptions\r\n ],\r\n shallow\r\n );\r\n const debouncedSearchText = useDebounce(logoSearchText, 300);\r\n const handleSearchChange = (e) => {\r\n use3dddPlus.setState({\r\n logoSearchText: e.currentTarget.value,\r\n logoPageNo: 1,\r\n retriveLogoDesign: [],\r\n });\r\n setMorePages(true);\r\n };\r\n\r\n useEffect(() => {\r\n loadingLogo(debouncedSearchText);\r\n }, [debouncedSearchText]);\r\n\r\n useEffect(() => {\r\n loadingLogo('');\r\n setMorePages(true);\r\n }, []);\r\n\r\n const handleScroll = React.useCallback(() => {\r\n if (!myRef?.current) return;\r\n if (scrollEnd) return;\r\n const scrollY = myRef.current.scrollTop;\r\n const height = myRef.current.clientHeight;\r\n const scrollHeight = myRef.current.scrollHeight;\r\n const tolerance = 10;\r\n if (scrollY + height + tolerance >= scrollHeight) {\r\n setScrollEnd(true);\r\n } else if (scrollY + height + tolerance < scrollHeight) {\r\n setScrollEnd(false);\r\n }\r\n }, [myRef, scrollEnd]);\r\n const fetchData = async () => {\r\n try {\r\n use3dddPlus.setState((state) => ({\r\n logoPageNo: state.logoPageNo + 1,\r\n }));\r\n const result = await loadingLogo('');\r\n if (result.length === 0) {\r\n setScrollEnd(false);\r\n setMorePages(false);\r\n return;\r\n }\r\n if (use3dddPlus.getState().logoPageNo === 1) {\r\n use3dddPlus.setState({\r\n retriveLogoDesign: result,\r\n });\r\n } else if (use3dddPlus.getState().logoPageNo > 1) {\r\n use3dddPlus.setState((state) => {\r\n const updatedState = {\r\n retriveLogoDesign: [...state.retriveLogoDesign, ...result],\r\n };\r\n return updatedState;\r\n });\r\n }\r\n setScrollEnd(false);\r\n } catch (err) {\r\n console.error(err);\r\n }\r\n };\r\n useEffect(() => {\r\n if (scrollEnd && morePages) {\r\n setTimeout(async () => {\r\n await fetchData();\r\n }, 700);\r\n }\r\n }, [scrollEnd]);\r\n const sortOptions = [\r\n {\r\n label: 'NEWEST',\r\n sortBy: 'updated_at',\r\n sortDir: 'DESC',\r\n onClick: () => {\r\n setScrollEnd(false);\r\n use3dddPlus.setState({\r\n logoPageNo: 1,\r\n logoSortBy: 'updated_at',\r\n logoSortDir: 'DESC',\r\n });\r\n setMorePages(true);\r\n },\r\n },\r\n {\r\n label: 'OLDEST',\r\n sortBy: 'updated_at',\r\n sortDir: 'ASC',\r\n onClick: () => {\r\n setScrollEnd(false);\r\n use3dddPlus.setState({\r\n logoPageNo: 1,\r\n logoSortBy: 'updated_at',\r\n logoSortDir: 'ASC',\r\n });\r\n setMorePages(true);\r\n },\r\n },\r\n {\r\n label: 'A TO Z',\r\n sortBy: 'name',\r\n sortDir: 'ASC',\r\n onClick: () => {\r\n setScrollEnd(false);\r\n use3dddPlus.setState({\r\n logoPageNo: 1,\r\n logoSortBy: 'name',\r\n logoSortDir: 'ASC',\r\n });\r\n setMorePages(true);\r\n },\r\n },\r\n {\r\n label: 'Z TO A',\r\n sortBy: 'name',\r\n sortDir: 'DESC',\r\n onClick: () => {\r\n setScrollEnd(false);\r\n use3dddPlus.setState({\r\n logoPageNo: 1,\r\n logoSortBy: 'name',\r\n logoSortDir: 'DESC',\r\n });\r\n setMorePages(true);\r\n },\r\n },\r\n ];\r\n const handleEditLogo = (logo) => {\r\n fabric.Object.prototype.hasControls = true;\r\n fabric.Object.prototype.hasBorders = true;\r\n if (logo) {\r\n use3dddPlus.setState({\r\n logoSearchText: '',\r\n logoSortBy: 'updated_at',\r\n logoSortDir: 'DESC',\r\n logoPageNo: 1,\r\n logoPageSize: 14,\r\n });\r\n myLogoHandler(logo);\r\n setLogoSelected(logo);\r\n }\r\n };\r\n\r\n const fetchSvgImageColors = async (svgUrl) => {\r\n try {\r\n // Fetch the SVG content\r\n const response = await fetch(svgUrl);\r\n const svgText = await response.text();\r\n\r\n // Parse the SVG content into a DOM object\r\n const parser = new DOMParser();\r\n const svgDoc = parser.parseFromString(svgText, 'image/svg+xml');\r\n\r\n // Select all elements with `fill` or `stroke` attributes\r\n const elementsWithColors = svgDoc.querySelectorAll('[style],[fill],[stroke]');\r\n\r\n // Extract all color values\r\n const extractedColors = new Set();\r\n elementsWithColors.forEach((element) => {\r\n let fillColor = element.getAttribute('fill');\r\n let strokeColor = element.getAttribute('stroke');\r\n let strokeWidth = element.getAttribute('stroke-width');\r\n\r\n // Extract inline styles if present\r\n const style = element.getAttribute('style');\r\n if (style) {\r\n const styleProps = extractStyles(style);\r\n if (!fillColor && styleProps.fill) fillColor = styleProps.fill;\r\n if (!strokeColor && styleProps.stroke) strokeColor = styleProps.stroke;\r\n if (!strokeWidth && styleProps['stroke-width']) strokeWidth = styleProps['stroke-width'];\r\n }\r\n\r\n // Add fill color if valid\r\n if (fillColor && fillColor !== 'none') {\r\n extractedColors.add(rgbToHex(fillColor));\r\n }\r\n\r\n // Add stroke color only if stroke-width is not 0\r\n if (strokeColor && strokeColor !== 'none' && strokeWidth !== '0') {\r\n extractedColors.add(rgbToHex(strokeColor));\r\n }\r\n });\r\n return Array.from(extractedColors);\r\n } catch (error) {\r\n console.error(\"Error fetching or parsing SVG:\", error);\r\n return [];\r\n }\r\n };\r\n\r\n // Helper function to extract CSS properties from style attribute\r\n const extractStyles = (style) => {\r\n const styleProps = {\r\n fill: null,\r\n stroke: null,\r\n 'stroke-width': null\r\n };\r\n const styleRegex = /([\\w-]+):\\s*([^;]+)/g;\r\n let match;\r\n while ((match = styleRegex.exec(style)) !== null) {\r\n styleProps[match[1].trim()] = match[2].trim();\r\n }\r\n return styleProps;\r\n };\r\n\r\n const rgbToHex = (rgb) => {\r\n // Extract the numeric values from the rgb string\r\n const rgbArray = rgb.match(/\\d+/g);\r\n if (!rgbArray || rgbArray.length < 3) return null; // Invalid input\r\n\r\n // Convert each RGB component to a 2-digit hex value\r\n const [r, g, b] = rgbArray.map((value) =>\r\n parseInt(value, 10).toString(16).padStart(2, \"0\")\r\n );\r\n\r\n // Return the hex color\r\n return `#${r}${g}${b}`.toUpperCase();\r\n };\r\n\r\n const handleApplyLogo = async (logo) => {\r\n if (logo) {\r\n const svgColors = await fetchSvgImageColors(logo?.logo_svg_url);\r\n const validation = validateColorAvailability(svgColors);\r\n if (!validation) {\r\n const decType = customOptions?.decorationType ?? '';\r\n toastMessages.applyLogoColorNotAvailable(decType);\r\n return;\r\n }\r\n use3dddPlus.setState({\r\n logoSearchText: '',\r\n logoSortBy: 'updated_at',\r\n logoSortDir: 'DESC',\r\n logoPageNo: 1,\r\n logoPageSize: 14,\r\n });\r\n onApply();\r\n setLogoSelected(logo);\r\n }\r\n };\r\n return (\r\n <>\r\n <div className=\"bg-[#F7F7F7] absolute z-100 w-[90%] h-full pr-[56px]\">\r\n <div className=\" w-full flex mt-[50px] flex-row\">\r\n <div className=\"flex gap-4 justify-end w-full md:justify-end \">\r\n <SortByDropdown sortOptions={sortOptions} />\r\n <div className=\" w-full sm:w-[60%] md:w-[65%] lg:w-[50%] xl:w-[40%] \">\r\n <Searchbar\r\n value={logoSearchText}\r\n placeholder={'Search by Logo name or tags'}\r\n searchBarMainClass={`!h-[40px] border border-[#BEBEBE]`}\r\n onChange={handleSearchChange}\r\n />\r\n </div>\r\n </div>\r\n </div>\r\n <div\r\n className={`flex ml-[33px] mt-[30px] overflow-y-auto h-[60vh] overflow-x-hidden pr-[33px]`}\r\n onScroll={handleScroll}\r\n ref={myRef}\r\n >\r\n <div className=\"max-h-[140px] grid gap-[2vw] grid-cols-3 md:grid-cols-4 lg:grid-cols-4 xl:grid-cols-5 2xl:grid-cols-6 w-full \">\r\n {retriveLogoDesign.length > 0\r\n ? retriveLogoDesign.map((logo: LogoProps) => (\r\n <>\r\n {/* {logo.logo_svg_url && ( */}\r\n <Card\r\n cardClass={`rounded-none !bg-transparent cursor-pointer max-w-[220px] border ${logoSelected?.logo_id === logo.logo_id\r\n ? BORDER_COLOR_3\r\n : 'border-none '\r\n }`}\r\n // style={{ boxShadow: '0px 0px 6px #98989829' }}\r\n onClick={() => {\r\n if (logo) {\r\n setLogoData(logo);\r\n setLogoSelected(logo);\r\n }\r\n }}\r\n >\r\n <CardMedia\r\n src={\r\n logo.logo_url\r\n }\r\n imageClass=\"w-full h-[220px] bg-white shadow-md\"\r\n />\r\n\r\n <CardBody bodyClass=\"p-2.5 self-start grow-0\">\r\n <CardTitle\r\n titleClass={`text-[15px] text-[#353535] font-bold uppercase break-all text-left items-left`}\r\n name={logo.name}\r\n />\r\n <div className=\"flex gap-2 flex-wrap\">\r\n {logo?.tag &&\r\n logo?.tag\r\n ?.split(',')\r\n ?.filter(Boolean)\r\n ?.map((item) => (\r\n <CardTags\r\n key={`design-tag-${item}`}\r\n tagsClass={`h-[1.5rem] ${TAG_BG_COLOR}`}\r\n >\r\n <div className={`${TEXT_SIZE_12}`}>\r\n {item}\r\n </div>\r\n </CardTags>\r\n ))}\r\n </div>\r\n\r\n {logoSelected?.logo_id === logo.logo_id && (\r\n <div className=\"w-9 overflow-hidden inline-block absolute left-0 top-0\">\r\n <div\r\n className={`h-16 rotate-45 transform origin-top-right ${SELECT_BG_COLOR}`}\r\n ></div>\r\n <span className=\"absolute top-1 left-1\">\r\n <BsCheckLg\r\n size={15}\r\n color=\"white\"\r\n style={{ strokeWidth: '0.5' }}\r\n />\r\n </span>\r\n </div>\r\n )}\r\n </CardBody>\r\n </Card>\r\n {/* )} */}\r\n </>\r\n ))\r\n : 'No Saved Mascots'}\r\n </div>\r\n </div>\r\n <div className={`flex gap-[24px] h-[48px] mt-[26px] float-right`}>\r\n <button\r\n className={`border border-[#353535] w-[160px] p-3 font-bold ${!logoSelected && 'opacity-70'\r\n }`}\r\n onClick={() => handleEditLogo(logoData)}\r\n >\r\n Edit\r\n </button>\r\n <button\r\n disabled={!logoSelected}\r\n onClick={() => handleApplyLogo(logoData)}\r\n className={`border p-3 w-[160px] ${logoSelected\r\n ? 'bg-[#e11a38] border-[#e11a38] text-white font-bold '\r\n : 'bg-[#e11a38] border-[#e11a38] text-white font-bold opacity-70'\r\n }`}\r\n >\r\n Apply\r\n </button>\r\n </div>\r\n </div>\r\n </>\r\n );\r\n};\r\n","import { useState, useEffect } from 'react';\r\n\r\nexport const useDebounce = (value: any, milliSeconds: number) => {\r\n const [debouncedValue, setDebouncedValue] = useState(value);\r\n\r\n useEffect(() => {\r\n const handler = setTimeout(() => {\r\n setDebouncedValue(value);\r\n }, milliSeconds);\r\n\r\n return () => {\r\n clearTimeout(handler);\r\n };\r\n }, [value, milliSeconds]);\r\n\r\n return debouncedValue;\r\n};\r\n","import React from 'react';\r\nimport { Button } from 'reakit';\r\n\r\nexport const IconButtonLabel = ({\r\n icon,\r\n onClick,\r\n className = '',\r\n label = '',\r\n iconPosition = 'left',\r\n ...props\r\n}) => {\r\n return (\r\n <Button\r\n className={`flex items-center gap-2 text-base font-bold flex-1 justify-center focus:outline-none ${className}`}\r\n onClick={onClick}\r\n {...props}\r\n >\r\n {iconPosition === 'left' && (\r\n <>\r\n {icon}\r\n {label}\r\n </>\r\n )}\r\n {iconPosition === 'right' && (\r\n <>\r\n {label}\r\n {icon}\r\n </>\r\n )}\r\n </Button>\r\n );\r\n};\r\n","import React from \"react\";\r\n\r\nexport const EditButton = ({ label, icons, onClick, className, children }) => {\r\n return (\r\n <button\r\n onClick={onClick}\r\n className={`flex rounded-none gap-3 items-center ${className}`}\r\n >\r\n {icons}\r\n {label}\r\n {children}\r\n </button>\r\n );\r\n };","import React from 'react';\r\nimport { TEXT_SIZE_2 } from '../../theme';\r\nimport { IoMdCheckmarkCircle, IconButton } from '../icon';\r\n\r\nexport interface CardCheckMarkProps {\r\n checkMarkClass?: string;\r\n size?: any;\r\n}\r\nexport const CardCheckMark = ({ checkMarkClass, size }: CardCheckMarkProps) => {\r\n return (\r\n <>\r\n <div\r\n className={`absolute top-1/2 left-2/4 ${TEXT_SIZE_2} ${checkMarkClass}`}\r\n style={{ transform: 'translate(-50%, -50%)' }}\r\n >\r\n <IconButton\r\n label={''}\r\n icon={<IoMdCheckmarkCircle />}\r\n className={`pointer-events-auto cursor-pointer`}\r\n size={size}\r\n ></IconButton>\r\n </div>\r\n </>\r\n );\r\n};\r\n","import React from 'react';\r\nimport { HiOutlineDownload, IconButton } from '../icon';\r\n\r\nexport interface CardDownIconProps {\r\n downloadClass?: string;\r\n downloadIconClass?: string;\r\n iconClass?: string;\r\n pdfUrl?: string;\r\n}\r\nexport const CardDownloadIcon = ({\r\n downloadClass,\r\n downloadIconClass,\r\n iconClass,\r\n pdfUrl,\r\n}: CardDownIconProps) => {\r\n return (\r\n <>\r\n <a\r\n href={pdfUrl}\r\n download={'Design Sheet'}\r\n target=\"_blank\"\r\n className={`flex items-center gap-[0.4375rem] ${downloadIconClass}`}\r\n >\r\n <IconButton\r\n label={''}\r\n icon={<HiOutlineDownload />}\r\n className={`pointer-events-auto cursor-pointer ${iconClass}`}\r\n size=\"1rem\"\r\n ></IconButton>\r\n\r\n <span className={`${downloadClass}`}>VIEW DESIGN SHEET</span>\r\n </a>\r\n </>\r\n );\r\n};\r\n","import React from 'react';\r\n\r\nexport interface CardFlagProps {\r\n flag?: string;\r\n flagClass?: string;\r\n}\r\nexport const CardFlag = ({ flag, flagClass }: CardFlagProps) => {\r\n return (\r\n <>\r\n <div className={`absolute top-0 left-0 ${flagClass}`}>{flag}</div>\r\n </>\r\n );\r\n};\r\n","import React from 'react';\r\n\r\nexport interface CardDescProps {\r\n children?: React.ReactNode;\r\n descriptionClass?: string;\r\n}\r\nexport const CardDescription = ({ children, descriptionClass }: CardDescProps) => {\r\n return (\r\n <>\r\n <p className={`${descriptionClass}`}>{children}</p>\r\n </>\r\n );\r\n};\r\n","import React from 'react';\r\nimport { Input as InputImpl, InputHTMLProps } from 'reakit';\r\n\r\nexport const input = React.forwardRef<HTMLInputElement, InputHTMLProps>(\r\n (props, ref) => {\r\n return (\r\n <InputImpl\r\n // @ts-ignore\r\n ref={ref}\r\n {...props}\r\n className={`${props.className}`}\r\n />\r\n );\r\n }\r\n);\r\n","import React from 'react';\r\nexport interface ModalButtonsProps {\r\n buttonMainClass?: string;\r\n buttons?: {\r\n buttonClass?: string;\r\n label?: string;\r\n onClick?: () => void;\r\n style?: React.CSSProperties;\r\n }[];\r\n}\r\nexport const ModalButtons = ({ buttonMainClass, buttons }: ModalButtonsProps) => {\r\n return (\r\n <div\r\n className={`flex flex-col lg:flex-row gap-[1.5625rem] leading-[1.4375rem] font-bold ${buttonMainClass}`}\r\n >\r\n {buttons?.map((button, index) => (\r\n <button\r\n key={index}\r\n onClick={button.onClick}\r\n className={`w-full py-[0.7188rem] rounded-none font-bold uppercase ${button.buttonClass}`}\r\n style={button.style}\r\n >\r\n {button.label}\r\n </button>\r\n ))}\r\n </div>\r\n );\r\n};\r\n\r\n","import React from 'react';\r\nimport { HiOutlineDownload, IconButton } from '../icon';\r\n\r\nexport interface ModalDownLoadIconProps {\r\n downloadClass?: string;\r\n downloadIconClass?: string;\r\n iconClass?: string;\r\n pdfUrl?: string;\r\n}\r\nexport const ModalDownloadIcon = ({\r\n downloadClass,\r\n downloadIconClass,\r\n iconClass,\r\n pdfUrl,\r\n}: ModalDownLoadIconProps) => {\r\n return (\r\n <>\r\n <div className={`flex justify-center items-center`}>\r\n <a\r\n href={pdfUrl}\r\n download={'Design Sheet'}\r\n target=\"_blank\"\r\n className={`flex items-center cursor-pointer gap-[0.6875rem] font-bold ${downloadIconClass}`}\r\n >\r\n <IconButton\r\n label={''}\r\n icon={<HiOutlineDownload />}\r\n className={`pointer-events-auto ${iconClass}`}\r\n size=\"1.1rem\"\r\n ></IconButton>\r\n\r\n <span className={`uppercase ${downloadClass}`}>\r\n VIEW DESIGN SHEET\r\n </span>\r\n </a>\r\n </div>\r\n </>\r\n );\r\n};\r\n","import React from 'react';\r\n\r\nexport interface ModalHeadingProps {\r\n children?: React.ReactNode;\r\n headingStyle?: string;\r\n}\r\nexport const ModalHeading = ({ children, headingStyle }: ModalHeadingProps) => {\r\n return (\r\n <>\r\n <div\r\n className={`flex flex-col gap-[1.625rem] justify-center items-center text-center ${headingStyle}`}\r\n >\r\n {children}\r\n </div>\r\n </>\r\n );\r\n};\r\n\r\n","import React from 'react';\r\n\r\nexport interface ModalLabelProps {\r\n children?: React.ReactNode;\r\n labelStyle?: string;\r\n}\r\nexport const ModalLabel = ({ children, labelStyle }: ModalLabelProps) => {\r\n return (\r\n <>\r\n <p className={`${labelStyle}`}>{children}</p>\r\n </>\r\n );\r\n};\r\n\r\n","import React from 'react';\r\nimport { IconButton } from '../icon';\r\n\r\nexport interface ModalStatusProps {\r\n icon?: JSX.Element;\r\n onIconClick?: () => void;\r\n children?: React.ReactNode;\r\n iconStyle?: string;\r\n}\r\nexport const ModalStatusIcon = ({\r\n icon,\r\n onIconClick,\r\n iconStyle,\r\n children,\r\n}: ModalStatusProps) => {\r\n return (\r\n <>\r\n <div className={`flex justify-center`} onClick={onIconClick}>\r\n <IconButton\r\n label={''}\r\n icon={icon}\r\n className={`pointer-events-auto cursor-pointer h-[auto] ${iconStyle}`}\r\n size=\"6.3rem\"\r\n ></IconButton>\r\n {children}\r\n </div>\r\n </>\r\n );\r\n};\r\n","import React, { useEffect } from 'react';\r\n//import { StepperTypes } from '../../store/actions/types';\r\nimport { use3dddPlus } from '../../store';\r\nimport { shallow } from 'zustand/shallow';\r\nimport {\r\n SELECT_BG_COLOR,\r\n //BORDER_COLOR,\r\n TEXT_SIZE_1,\r\n TEXT_SIZE_2,\r\n SELECT_TEXT_COLOR,\r\n BUTTON_TEXT_COLOR,\r\n TEXT_COLOR_1,\r\n INPUT_TEXT_DISABLE_COLOR,\r\n} from '../../theme';\r\nimport { AddText, IconButton, MyLogo, RLogo } from '../icon';\r\nimport { MdOutlineFileUpload } from 'react-icons/md';\r\nimport { BiSolidColorFill } from 'react-icons/bi';\r\nimport { FaRegImage } from 'react-icons/fa6';\r\n\r\nexport const LeftMenu = () => {\r\n const [\r\n setSelectedStepper,\r\n selectedStepper,\r\n addText,\r\n getStockLogos,\r\n loadingLogo,\r\n setDisplayProductColor,\r\n hasUploadScreen,\r\n ] = use3dddPlus(\r\n (state) => [\r\n state.setSelectedStepper,\r\n state.selectedStepper,\r\n state.addText,\r\n state.getStockLogos,\r\n state.loadingLogo,\r\n state.setDisplayProductColor,\r\n state.hasUploadScreen,\r\n ],\r\n shallow\r\n );\r\n const StepperList = [\r\n {\r\n name: 'Upload File',\r\n icon: <MdOutlineFileUpload />,\r\n id: 1,\r\n display: true,\r\n },\r\n {\r\n name: 'My Logos',\r\n icon: <MyLogo />,\r\n id: 2,\r\n display: true,\r\n },\r\n {\r\n name: 'Add Text',\r\n icon: <AddText />,\r\n id: 3,\r\n display: true,\r\n },\r\n {\r\n name: 'Add Mascots',\r\n icon: <FaRegImage />,\r\n id: 4,\r\n display: true,\r\n },\r\n {\r\n name: 'product Color',\r\n icon: <BiSolidColorFill />,\r\n id: 5,\r\n display: true,\r\n },\r\n ];\r\n\r\n useEffect(() => {\r\n return () => {};\r\n }, []);\r\n\r\n return (\r\n <div className=\"flex flex-row md:flex-col\">\r\n <div\r\n className={` flex flex-row md:flex-col sticky md:relative md:w-[100%] md:max-w-[100%]`}\r\n style={{ boxShadow: '0px 0px 6px #98989829' }}\r\n >\r\n <div\r\n className={`bg-[#CB1732] flex justify-center cursor-pointer px-2.5 py-4 `}\r\n >\r\n <div className=\" flex flex-col items-center justify-center\">\r\n <span className={` ${TEXT_SIZE_2} py-2`}>\r\n <IconButton\r\n label={''}\r\n icon={<RLogo />}\r\n size=\"2rem\"\r\n className={`${TEXT_COLOR_1} pointer-events-auto cursor-pointer m-auto`}\r\n ></IconButton>\r\n </span>\r\n <span\r\n className={`${SELECT_TEXT_COLOR} ${TEXT_SIZE_1} uppercase font-bold text-center`}\r\n >\r\n Logo Designer\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n <div\r\n className={` flex h-[100%] flex-row md:flex-col sticky md:relative md:w-[100%] md:max-w-[100%]`}\r\n style={{ boxShadow: '0px 0px 6px #98989829' }}\r\n >\r\n {StepperList?.map((step) => (\r\n <div\r\n className={\r\n step.id === selectedStepper\r\n ? `${SELECT_BG_COLOR} flex justify-center cursor-pointer px-2.5 py-4 `\r\n : 'flex justify-center px-2.5 py-4 ' +\r\n (hasUploadScreen\r\n ? ''\r\n : 'cursor-pointer group hover:bg-[#e11a38]')\r\n }\r\n key={step.id}\r\n style={!step.display ? { display: 'none' } : {}}\r\n onClick={(e) => {\r\n e.preventDefault();\r\n if (!hasUploadScreen) {\r\n setSelectedStepper(step.id);\r\n if (step.id === 3) {\r\n addText();\r\n }\r\n if (step.id === 4) {\r\n getStockLogos();\r\n }\r\n if (step.id === 2) {\r\n loadingLogo('');\r\n }\r\n if (step.id === 5) {\r\n setDisplayProductColor();\r\n }\r\n }\r\n }}\r\n >\r\n <div\r\n className={`flex flex-col items-center justify-center gap-1 ${\r\n hasUploadScreen ? '' : 'group-hover:bg-[#e11a38]'\r\n }`}\r\n >\r\n <span\r\n className={\r\n step.id === selectedStepper\r\n ? ` ${TEXT_SIZE_2} py-2`\r\n : ` ${TEXT_SIZE_2} py-2`\r\n }\r\n >\r\n <IconButton\r\n label={''}\r\n icon={step.icon}\r\n size=\"2rem\"\r\n className={`${\r\n step.id === selectedStepper\r\n ? BUTTON_TEXT_COLOR\r\n : hasUploadScreen\r\n ? INPUT_TEXT_DISABLE_COLOR\r\n : TEXT_COLOR_1\r\n } pointer-events-auto m-auto group-active:text-white ${\r\n hasUploadScreen\r\n ? ''\r\n : 'cursor-pointer group-hover:text-white'\r\n }`}\r\n ></IconButton>\r\n </span>\r\n <span\r\n className={\r\n step.id === selectedStepper\r\n ? `${SELECT_TEXT_COLOR} ${TEXT_SIZE_1} uppercase font-bold text-center`\r\n : `${\r\n hasUploadScreen\r\n ? INPUT_TEXT_DISABLE_COLOR\r\n : TEXT_COLOR_1\r\n } ${TEXT_SIZE_1} uppercase font-bold text-center ${\r\n hasUploadScreen ? '' : 'group-hover:text-white'\r\n }`\r\n }\r\n >\r\n {step.name}\r\n </span>\r\n </div>\r\n </div>\r\n ))}\r\n </div>\r\n </div>\r\n );\r\n};\r\n","import React from 'react';\r\nimport './loader.css';\r\n\r\nexport const Loader = ({ position = 'overlay', height = '100%' }) => {\r\n const loaderRef = React.useRef<any>();\r\n React.useEffect(() => {\r\n if (!loaderRef) return;\r\n loaderRef.current.style.height = height;\r\n }, [loaderRef]);\r\n\r\n return (\r\n <section\r\n ref={loaderRef}\r\n id=\"ls\"\r\n style={\r\n position === 'overlay'\r\n ? { position: 'absolute', opacity: 0.8, top: 0 }\r\n : {}\r\n }\r\n className=\"w-full h-full\"\r\n >\r\n <div id=\"l\"></div>\r\n </section>)\r\n}\r\n\r\n ","import React from 'react';\r\nexport const UpIcon = ({ disabled }) => {\r\n return (\r\n <div className=\"m-auto upIcon\">\r\n <svg\r\n fill={disabled ? '#cfcccc' : '#9a9a9a'}\r\n height=\"25px\"\r\n width=\"25px\"\r\n version=\"1.1\"\r\n id=\"Layer_1\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 512 512\"\r\n >\r\n <g>\r\n <g>\r\n <g>\r\n <path d=\"M0,0v512h512V0H0z M469.333,469.333H42.667V42.667h426.667V469.333z\" />\r\n <path d=\"M121.752,335.085L256,200.837l134.248,134.248c8.331,8.331,21.839,8.331,30.17,0c8.331-8.331,8.331-21.839,0-30.17 L271.085,155.582c-8.331-8.331-21.839-8.331-30.17,0L91.582,304.915c-8.331,8.331-8.331,21.839,0,30.17 S113.42,343.416,121.752,335.085z\" />\r\n </g>\r\n </g>\r\n </g>\r\n </svg>\r\n </div>\r\n );\r\n};\r\n\r\nexport const DownIcon = ({ disabled }) => {\r\n return (\r\n <div className=\"m-auto downIcon\">\r\n <svg\r\n transform=\"rotate(180)\"\r\n fill={disabled ? '#cfcccc' : '#9a9a9a'}\r\n height=\"25px\"\r\n width=\"25px\"\r\n version=\"1.1\"\r\n id=\"Layer_1\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 512 512\"\r\n >\r\n <g>\r\n <g>\r\n <g>\r\n <path d=\"M0,0v512h512V0H0z M469.333,469.333H42.667V42.667h426.667V469.333z\" />\r\n <path d=\"M121.752,335.085L256,200.837l134.248,134.248c8.331,8.331,21.839,8.331,30.17,0c8.331-8.331,8.331-21.839,0-30.17 L271.085,155.582c-8.331-8.331-21.839-8.331-30.17,0L91.582,304.915c-8.331,8.331-8.331,21.839,0,30.17 S113.42,343.416,121.752,335.085z\" />\r\n </g>\r\n </g>\r\n </g>\r\n </svg>\r\n </div>\r\n );\r\n};\r\n\r\nexport const DeleteIcon = () => {\r\n return (\r\n <div className=\"m-auto upIcon\">\r\n <svg\r\n width=\"25px\"\r\n height=\"25px\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n >\r\n <path\r\n d=\"M10 11V17\"\r\n stroke=\"#9a9a9a\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n <path\r\n d=\"M14 11V17\"\r\n stroke=\"#9a9a9a\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n <path\r\n d=\"M4 7H20\"\r\n stroke=\"#9a9a9a\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n <path\r\n d=\"M6 7H12H18V18C18 19.6569 16.6569 21 15 21H9C7.34315 21 6 19.6569 6 18V7Z\"\r\n stroke=\"#9a9a9a\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n <path\r\n d=\"M9 5C9 3.89543 9.89543 3 11 3H13C14.1046 3 15 3.89543 15 5V7H9V5Z\"\r\n stroke=\"#9a9a9a\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n </svg>\r\n </div>\r\n );\r\n};\r\n","import React from 'react';\r\nimport { shallow } from 'zustand/shallow';\r\nimport { use3dddPlus } from '../../store';\r\nimport { DeleteIcon, UpIcon, DownIcon } from './icons';\r\n\r\ninterface LayersProps {\r\n canvas: any;\r\n onSave: () => void;\r\n}\r\n\r\ninterface StoreObject {\r\n id: string;\r\n icon: string;\r\n text?: string;\r\n}\r\n\r\nexport const Layers: React.FC<LayersProps> = ({ canvas, onSave }) => {\r\n const [storeAllObject] = use3dddPlus(\r\n (state) => [state.storeAllObject],\r\n shallow\r\n );\r\n\r\n const removeItem = (value: StoreObject) => {\r\n const index = use3dddPlus\r\n .getState()\r\n .storeAllObject.findIndex((obj: StoreObject) => obj.id === value.id);\r\n if (index > -1) {\r\n use3dddPlus.getState().storeAllObject.splice(index, 1);\r\n }\r\n use3dddPlus.setState({\r\n storeAllObject: [...use3dddPlus.getState().storeAllObject],\r\n });\r\n };\r\n\r\n const deleteElement = (item: StoreObject) => {\r\n if (canvas._objects) {\r\n canvas._objects.forEach((obj: any) => {\r\n if (obj.id === item.id) {\r\n canvas.remove(obj);\r\n }\r\n });\r\n }\r\n canvas.requestRenderAll();\r\n use3dddPlus.getState().updateModifaction(true);\r\n removeItem(item);\r\n };\r\n\r\n const changeArr = (arr: any[], fromIndex: number, toIndex: number) => {\r\n const element = arr.splice(fromIndex, 1)[0];\r\n arr.splice(toIndex, 0, element);\r\n return arr;\r\n };\r\n\r\n const layerHandle = (\r\n element: StoreObject,\r\n index: number,\r\n direction: 'plus' | 'minus'\r\n ) => {\r\n const currentObject = [...use3dddPlus.getState().storeAllObject];\r\n if (direction === 'minus') {\r\n canvas.sendBackwards(element);\r\n use3dddPlus.setState({\r\n storeAllObject: changeArr(currentObject, index, index + 1),\r\n });\r\n } else {\r\n canvas.bringForward(element);\r\n use3dddPlus.setState({\r\n storeAllObject: changeArr(currentObject, index, index - 1),\r\n });\r\n }\r\n canvas.sendToBack(use3dddPlus.getState().verticalLine);\r\n canvas.sendToBack(use3dddPlus.getState().horizontalLine);\r\n use3dddPlus.getState().updateModifaction(true);\r\n };\r\n\r\n return (\r\n <div className=\"flex flex-col w-full h-full\">\r\n <div className=\"flex flex-col flex-1 w-full gap-2 overflow-y-auto\">\r\n {storeAllObject.map((item, index) => (\r\n <div\r\n key={item.id}\r\n className=\"!flex-row border border-[#D7D7D7] h-20 flex justify-between items-center flex-wrap md:flex-nowrap w-full\"\r\n >\r\n <div className=\"border-r border-[#D7D7D7] bg-slate-200 w-20 h-20 flex items-center justify-center flex-shrink-0\">\r\n <img\r\n className={`rounded-lg p-2 ${\r\n item.text ? 'object-contain' : ''\r\n }`}\r\n style={{ height: '100%', width: 'auto', margin: 'auto' }}\r\n src={item.icon}\r\n alt=\"icon\"\r\n />\r\n </div>\r\n\r\n <div className=\"flex items-center justify-center\">\r\n <button\r\n onClick={() => deleteElement(item)}\r\n className=\"flex items-center justify-center flex-shrink-0 w-10 h-full\"\r\n >\r\n <DeleteIcon />\r\n </button>\r\n <div className=\"flex flex-col items-center justify-between flex-shrink-0 w-10\">\r\n <button\r\n disabled={index === 0}\r\n onClick={() => layerHandle(item, index, 'plus')}\r\n className=\"w-full h-9\"\r\n >\r\n <UpIcon disabled={index === 0} />\r\n </button>\r\n <button\r\n disabled={index === storeAllObject.length - 1}\r\n onClick={() => layerHandle(item, index, 'minus')}\r\n className=\"w-full h-9\"\r\n >\r\n <DownIcon\r\n disabled={index === storeAllObject.length - 1}\r\n // className=\"pointer-events-none\"\r\n />\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n ))}\r\n </div>\r\n <div className=\"flex flex-col w-full h-[10%]\">\r\n <button\r\n type=\"button\"\r\n className=\"m-auto bg-white py-2 text-sm font-medium text-[#E11A38] w-full ring-1 ring-inset ring-[#E11A38] hover:bg-[#E11A38] hover:text-white transition-colors duration-200\"\r\n onClick={onSave}\r\n >\r\n Save\r\n </button>\r\n </div>\r\n </div>\r\n\r\n // <div className=\"relative flex flex-col justify-between flex-1 h-full px-3 overflow-x-hidden\">\r\n // <div className=\"flex flex-col gap-1 overflow-y-auto\">\r\n // {storeAllObject.map((item, index) => (\r\n // <div\r\n // key={item.id}\r\n // className=\"innerLayer border border-[#D7D7D7] my-4 h-20 flex justify-between \"\r\n // >\r\n // <div className=\"imgBox border-r border-[#D7D7D7] bg-slate-200 flex w-20\">\r\n // <img\r\n // className={`rounded-lg p-2 ${item.text ? 'object-contain' : ''}`}\r\n // style={{ height: 'auto', width: 'auto', margin: 'auto' }}\r\n // src={item.icon}\r\n // alt=\"icon\"\r\n // />\r\n // </div>\r\n // <div className=\"flex-auto\">\r\n // <button\r\n // onClick={() => deleteElement(item)}\r\n // className=\"w-full h-full\"\r\n // >\r\n // <div className=\"flex justify-center pointer-events-none\">\r\n // <DeleteIcon />\r\n // </div>\r\n // </button>\r\n // </div>\r\n // <div className=\"flex flex-col justify-between w-10\">\r\n // <button\r\n // disabled={index === 0}\r\n // onClick={() => layerHandle(item, index, 'plus')}\r\n // >\r\n // <div className=\"flex justify-center pointer-events-none h-9\">\r\n // <UpIcon disabled={index === 0} />\r\n // </div>\r\n // </button>\r\n // <button\r\n // disabled={index === storeAllObject.length - 1}\r\n // onClick={() => layerHandle(item, index, 'minus')}\r\n // >\r\n // <div className=\"flex justify-center pointer-events-none h-9\">\r\n // <DownIcon disabled={index === storeAllObject.length - 1} />\r\n // </div>\r\n // </button>\r\n // </div>\r\n // </div>\r\n // ))}\r\n // </div>\r\n\r\n // <button\r\n // type=\"button\"\r\n // className=\"mt-3 bg-white py-2 text-sm font-medium text-[#E11A38] w-full ring-1 ring-inset ring-[#E11A38] absolute bottom-0 left-0 right-0\"\r\n // onClick={onSave}\r\n // >\r\n // Save\r\n // </button>\r\n // </div>\r\n );\r\n};\r\n","export const fontFamilies = [\r\n {\r\n name: 'ACCELERATOR RICHARDSON',\r\n label: 'Accel',\r\n src: \"https://storage.googleapis.com/3ddplusgcp/richardson-customizer/fonts/updated/ACCELERATOR_RICHARDSON.ttf\",\r\n },\r\n {\r\n name: 'Athletic Block',\r\n label: 'Athletic Block',\r\n src: 'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/fonts/updated/Athletic_Block.ttf',\r\n },\r\n {\r\n name: 'Ballpark',\r\n label: 'Ballpark',\r\n src: 'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/fonts/updated/Ballpark.TTF',\r\n },\r\n {\r\n name: 'Bebas Kai',\r\n label: 'BebasKai',\r\n src: 'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/fonts/updated/Bebas_Kai.otf',\r\n },\r\n {\r\n name: 'Beton CG ExtraBold',\r\n label: 'Beton CG Extra Bold',\r\n src: 'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/fonts/updated/Beton_CG_ExtraBold.otf',\r\n },\r\n {\r\n name: 'BrushScript BT',\r\n label: 'Brush Script',\r\n src: 'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/fonts/updated/BrushScript_BT.ttf',\r\n },\r\n {\r\n name: 'Century Richardson',\r\n label: 'Century',\r\n src: 'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/fonts/updated/Century_Richardson.ttf',\r\n },\r\n {\r\n name: 'CityDBol',\r\n label: 'City Block',\r\n src: 'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/fonts/updated/CityDBol.ttf',\r\n },\r\n {\r\n name: 'Condensed Block',\r\n label: 'Condensed Block',\r\n src: 'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/fonts/updated/Condensed_Block_Richardson.ttf',\r\n },\r\n {\r\n name: 'CopprplGoth Bd BT',\r\n label: 'Copper',\r\n src: 'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/fonts/updated/CopprplGoth_Bd_BT.ttf',\r\n },\r\n {\r\n name: 'Euro Block',\r\n label: 'Euro Block',\r\n src: 'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/fonts/updated/HandelGotDBol.ttf',\r\n },\r\n {\r\n name: 'Full Block',\r\n label: 'Full Block',\r\n src: 'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/fonts/updated/Full_Block_Richardson.ttf',\r\n },\r\n // {\r\n // name: 'Bebas Kai',\r\n // label: 'Heritage',\r\n // src: 'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/fonts/updated/Bebas_Kai.otf',\r\n // },\r\n {\r\n name: 'SocietyEditor Personal Use',\r\n label: 'Lakesight',\r\n src: 'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/fonts/updated/SocietyEditor_Personal_Use.ttf',\r\n },\r\n {\r\n name: 'machinen',\r\n label: 'Machine',\r\n src: 'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/fonts/updated/machinen.ttf',\r\n },\r\n {\r\n name: 'Magneto',\r\n label: 'Magento',\r\n src: 'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/fonts/updated/Magneto.ttf',\r\n },\r\n {\r\n name: 'Niramit Bold',\r\n label: 'Niramit Bold',\r\n src: 'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/fonts/updated/Niramit_Bold.ttf',\r\n },\r\n {\r\n name: 'Plain',\r\n label: 'Plain',\r\n src: 'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/fonts/updated/Plain.ttf',\r\n },\r\n {\r\n name: 'Pro Block',\r\n label: 'Pro Block',\r\n src: 'https://storage.googleapis.com/3ddplusgcp/logoEditor/assets/fonts/pro_block.woff',\r\n },\r\n {\r\n name: 'Puff',\r\n label: 'Puff',\r\n src: 'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/fonts/updated/puff.ttf',\r\n },\r\n {\r\n name: 'SocietyEditor Personal Use',\r\n label: 'Society Editor',\r\n src: 'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/fonts/updated/SocietyEditor_Personal_Use.ttf',\r\n },\r\n {\r\n name: 'Square721 BdEx BT',\r\n label: 'Square',\r\n src: 'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/fonts/updated/Square721_BdEx_BT.ttf',\r\n },\r\n {\r\n name: 'Swis721 Cn BT',\r\n label: 'Swiss Bold Condensed',\r\n src: 'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/fonts/updated/Swis721_Cn_BT.ttf',\r\n },\r\n {\r\n name: 'Stahls Tiffany - 2000',\r\n label: 'Tifanny',\r\n src: 'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/fonts/updated/Stahls_Tiffany-2000.ttf',\r\n },\r\n {\r\n name: 'Times Richardson',\r\n label: 'Times',\r\n src: 'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/fonts/updated/Times_Richardson.ttf',\r\n },\r\n {\r\n name: 'UNISCRIPT',\r\n label: 'Uni Script',\r\n src: 'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/fonts/updated/UNISCRIPT.ttf',\r\n },\r\n];\r\n\r\nexport const textShapes = [\r\n {\r\n name: 'None',\r\n src: '',\r\n },\r\n {\r\n name: 'Arc',\r\n src: '',\r\n },\r\n {\r\n name: 'Bridge',\r\n src: '',\r\n },\r\n {\r\n name: 'Bowtie',\r\n src: '',\r\n },\r\n {\r\n name: 'Vertical Arch',\r\n src: '',\r\n },\r\n {\r\n name: 'Reverse Vertical Arch',\r\n src: '',\r\n },\r\n];\r\n\r\nexport const tabs = [\r\n { id: 1, label: 'Properties' },\r\n { id: 2, label: 'Layers' },\r\n];\r\n\r\n\r\nexport const warpTypes: { [key: string]: string } = {\r\n None: '',\r\n Arc: 'WARP_ARC',\r\n Bridge: 'WARP_ARC_LOWER',\r\n Bowtie: 'WARP_BULGE',\r\n 'Vertical Arch': 'WARP_ARCH',\r\n 'Reverse Vertical Arch': 'WARP_ARCH',\r\n};\r\n\r\nexport const textProperties = [\r\n 'pathData',\r\n 'colorFill',\r\n 'id',\r\n 'shapeSize',\r\n 'shapeType',\r\n 'fill',\r\n 'fontFamily',\r\n 'fontWeight',\r\n 'stroke',\r\n 'strokeWidth',\r\n 'padding',\r\n 'fontSize',\r\n 'charSpacing',\r\n 'textAlign',\r\n 'fontStyle',\r\n 'text',\r\n];","import React from 'react';\r\n\r\nconst errorPopup = ({ allColor }) => {\r\n return (\r\n <>\r\n <div className=\"errorPanel flex z-[100] w-full py-[20px]\">\r\n <div className=\"text-[#E11A38] text-[16px] font-size-[14px] font-bold flex-col\">\r\n <span className=\"flex\">COLORS IN DESIGN ({allColor.length})</span>\r\n <span className=\"flex\">\r\n MAX COLORS EXCEEDED, REDUCE THE TOTAL COLOR COUNT TO 8 OR FEWER\r\n COLORS PER SIDE.\r\n </span>\r\n {/* <div className=\"flex mt-3\">\r\n {allColor?.map((item) => {\r\n return (\r\n <div\r\n className={`border border-[#D6D6D6] w-[30px] h-[30px] group mr-[16px]`}\r\n style={{ backgroundColor: item }}\r\n />\r\n );\r\n })} */}\r\n {/*<div\r\n className={`border border-[#D6D6D6] w-[30px] h-[30px] group bg-[#000000] mr-[16px]`}\r\n />\r\n <div\r\n className={`border border-[#D6D6D6] w-[30px] h-[30px] group bg-[#ffffff] mr-[16px]`}\r\n />\r\n <div\r\n className={`border border-[#D6D6D6] w-[30px] h-[30px] group bg-[#DE802E] mr-[16px]`}\r\n />\r\n <div\r\n className={`border border-[#D6D6D6] w-[30px] h-[30px] group bg-[#D13F42] mr-[16px]`}\r\n />\r\n <div\r\n className={`border border-[#D6D6D6] w-[30px] h-[30px] group bg-[#DE802E] mr-[16px]`}\r\n />\r\n <div\r\n className={`border border-[#D6D6D6] w-[30px] h-[30px] group bg-[#D13F42] mr-[16px]`}\r\n />\r\n <div\r\n className={`border border-[#D6D6D6] w-[30px] h-[30px] group bg-[#010101] mr-[16px]`}\r\n />\r\n <div\r\n className={`border border-[#D6D6D6] w-[30px] h-[30px] group bg-[#BBBBBB] mr-[16px]`}\r\n />\r\n <div\r\n className={`border border-[#D6D6D6] w-[30px] h-[30px] group bg-[#E4BB30] mr-[16px]`}\r\n /> */}\r\n {/* </div> */}\r\n </div>\r\n </div>\r\n </>\r\n );\r\n};\r\n\r\nexport default errorPopup;\r\n","import React, { } from 'react';\r\nimport { FiAlignLeft, FiAlignCenter, FiAlignRight } from 'react-icons/fi';\r\nimport {\r\n INPUT_BG_COLOR,\r\n TEXT_COLOR_1,\r\n TEXT_SIZE_3,\r\n BORDER_COLOR_1,\r\n SELECT_BG_COLOR,\r\n} from '../../theme';\r\nimport { ColorImpl } from '../colorPallet';\r\nimport {\r\n textShapes,\r\n} from './constants';\r\nimport { use3dddPlus } from '../../store';\r\n\r\nexport const TextProperties = ({\r\n textInfo,\r\n onTextChange,\r\n textSelected,\r\n fontChange,\r\n textStyle,\r\n activeSelection,\r\n setDisplayPallet,\r\n setPosition,\r\n textColorChange,\r\n fontStyle,\r\n textAlignDisplay,\r\n activeButton,\r\n textAlignHandler,\r\n textOutlineHandler,\r\n strokeColorChange,\r\n textSpacingHandler,\r\n textShapeChange,\r\n shapeSizeVal,\r\n textShapeSizeHandler,\r\n}) => {\r\n const fontFamilies = use3dddPlus.getState().fontFamilies;\r\n return (\r\n <div className=\"\">\r\n <div className=\"uppercase font-bold text-sm mb-[8.5px]\">Enter Text</div>\r\n <textarea\r\n value={textInfo}\r\n onChange={onTextChange}\r\n className=\"w-[100%] border border-solid-[1px] border-[#9A9A9A] py-[10px] pl-[16px] mb-[16.5px]\"\r\n placeholder=\"LOGO TEXT\"\r\n />\r\n <div className=\"uppercase font-bold text-sm mb-[8.5px]\">Select Font</div>\r\n <select\r\n name=\"FontStyleNumber\"\r\n id=\"FontStyleNumber\"\r\n value={textSelected.fontFamily}\r\n onChange={fontChange}\r\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-offset-0 focus:rounded-sm mb-[16.5px]`}\r\n >\r\n {fontFamilies.map((list) => {\r\n return (\r\n <>\r\n <option value={list.name}>{list.label}</option>\r\n </>\r\n );\r\n })}\r\n </select>\r\n\r\n <div className=\"uppercase font-bold text-sm mb-[8.5px]\">Style</div>\r\n <div className=\"flex gap-x-[15px] mb-[16.5px]\">\r\n {' '}\r\n <button\r\n disabled={\r\n textSelected &&\r\n textSelected.shapeType &&\r\n textSelected.shapeType !== 'none'\r\n }\r\n className={\r\n textSelected.fontWeight === 'bold'\r\n ? `${SELECT_BG_COLOR} text-[#fff] text-base cursor-pointer border font-bold border-[#EBEBEB] py-[7px] px-[25px] `\r\n : 'bg-[#fff] font-bold text-base cursor-pointer border border-[#EBEBEB] py-[7px] px-[25px]'\r\n }\r\n style={\r\n textSelected &&\r\n textSelected.shapeType &&\r\n textSelected.shapeType !== 'none'\r\n ? {\r\n color: '#cccccc',\r\n cursor: 'default',\r\n backgroundColor: '#ffffff',\r\n }\r\n : {}\r\n }\r\n onClick={(e) => textStyle(e, 'fontWeight', 'bold')}\r\n id=\"bold\"\r\n >\r\n B\r\n </button>\r\n <button\r\n disabled={\r\n textSelected &&\r\n textSelected.shapeType &&\r\n textSelected.shapeType !== 'none'\r\n }\r\n className={\r\n textSelected.fontStyle && textSelected.fontStyle === 'italic'\r\n ? `${SELECT_BG_COLOR} text-[#fff] text-base cursor-pointer border italic border-[#EBEBEB] py-[7px] px-[25px] `\r\n : 'bg-[#fff] italic text-base cursor-pointer border border-[#EBEBEB] py-[7px] px-[25px]'\r\n }\r\n style={\r\n textSelected &&\r\n textSelected.shapeType &&\r\n textSelected.shapeType !== 'none'\r\n ? {\r\n color: '#cccccc',\r\n cursor: 'default',\r\n backgroundColor: '#ffffff',\r\n }\r\n : {}\r\n }\r\n onClick={(e) => textStyle(e, 'fontStyle', 'italic')}\r\n id=\"italic\"\r\n >\r\n I\r\n </button>\r\n <button\r\n disabled={\r\n textSelected &&\r\n textSelected.shapeType &&\r\n textSelected.shapeType !== 'none'\r\n }\r\n className={\r\n textSelected.underline && textSelected.underline === true\r\n ? `${SELECT_BG_COLOR} text-[#fff] text-base cursor-pointer border underline border-[#EBEBEB] py-[7px] px-[25px] `\r\n : 'bg-[#fff] underline text-base cursor-pointer border border-[#EBEBEB] py-[7px] px-[25px]'\r\n }\r\n style={\r\n textSelected &&\r\n textSelected.shapeType &&\r\n textSelected.shapeType !== 'none'\r\n ? {\r\n color: '#cccccc',\r\n cursor: 'default',\r\n backgroundColor: '#ffffff',\r\n }\r\n : {}\r\n }\r\n onClick={(e) => textStyle(e, 'underline', !fontStyle.underline)}\r\n id=\"underline\"\r\n >\r\n U\r\n </button>\r\n </div>\r\n\r\n {textAlignDisplay === true && (\r\n <div className=\"textAlign\">\r\n <div className=\"uppercase font-bold text-sm mb-[8.5px]\">Align</div>\r\n <div className=\"flex gap-x-[15px] mb-[16.5px]\">\r\n <button\r\n type=\"button\"\r\n className={\r\n 'left' === activeButton\r\n ? `${SELECT_BG_COLOR} text-[#fff] cursor-pointer border border-[#EBEBEB] py-[7px] px-[25px] `\r\n : 'bg-[#fff] cursor-pointer border border-[#EBEBEB] py-[7px] px-[25px]'\r\n }\r\n id=\"left\"\r\n onClick={textAlignHandler}\r\n >\r\n <FiAlignLeft id=\"left\" onClick={textAlignHandler} />\r\n </button>\r\n <button\r\n type=\"button\"\r\n className={\r\n 'center' === activeButton\r\n ? `${SELECT_BG_COLOR} text-[#fff] cursor-pointer border border-[#EBEBEB] y-[7px] px-[25px] `\r\n : 'bg-[#fff] cursor-pointer border border-[#EBEBEB] py-[7px] px-[25px]'\r\n }\r\n id=\"center\"\r\n onClick={textAlignHandler}\r\n >\r\n <FiAlignCenter id=\"center\" onClick={textAlignHandler} />\r\n </button>\r\n <button\r\n type=\"button\"\r\n className={\r\n 'right' === activeButton\r\n ? `${SELECT_BG_COLOR} text-[#fff] cursor-pointer border border-[#EBEBEB] y-[7px] px-[25px] `\r\n : 'bg-[#fff] cursor-pointer border border-[#EBEBEB] py-[7px] px-[25px]'\r\n }\r\n id=\"right\"\r\n onClick={textAlignHandler}\r\n >\r\n <FiAlignRight id=\"right\" onClick={textAlignHandler} />\r\n </button>\r\n </div>\r\n </div>\r\n )}\r\n <div className=\"uppercase font-bold text-sm mb-[8.5px]\">Text Color</div>\r\n <div className=\"relative flex\">\r\n <ColorImpl\r\n mClass={'ml-0'}\r\n handleChange={textColorChange}\r\n property={'backgroundColor'}\r\n name={'backgroundColor'}\r\n color={activeSelection.fill}\r\n setDisplayPallet={setDisplayPallet}\r\n setPosition={setPosition}\r\n callback={textColorChange}\r\n />\r\n </div>\r\n <div className=\"flex gap-2 mt-4\">\r\n <div>\r\n <div className=\"uppercase font-bold text-sm mb-[8.5px]\">\r\n Outline Size\r\n </div>\r\n <input\r\n type=\"number\"\r\n id=\"outlineSize\"\r\n name=\"outlineSize\"\r\n step=\"0.2\"\r\n value={textSelected.strokeWidth}\r\n className=\"border border-[#EBEBEB] py-[10px] pl-[16px] mb-[16.5px] w-[145px]\"\r\n onChange={textOutlineHandler}\r\n ></input>\r\n </div>\r\n <div>\r\n <div className=\"uppercase font-bold text-sm mb-[8.5px]\">\r\n Outline Color\r\n </div>\r\n <div className=\"relative flex\">\r\n {' '}\r\n <ColorImpl\r\n mClass={'ml-0'}\r\n handleChange={strokeColorChange}\r\n property={'backgroundColor'}\r\n name={'backgroundColor'}\r\n color={activeSelection.stroke}\r\n setDisplayPallet={setDisplayPallet}\r\n setPosition={setPosition}\r\n callback={strokeColorChange}\r\n />\r\n </div>\r\n </div>\r\n </div>\r\n <div className=\"flex gap-2\">\r\n <div>\r\n <div className=\"uppercase font-bold text-sm mb-[8.5px]\">\r\n Letter Spacing\r\n </div>\r\n <input\r\n disabled={\r\n textSelected &&\r\n textSelected.shapeType &&\r\n textSelected.shapeType !== 'none'\r\n }\r\n type=\"number\"\r\n id=\"spacing\"\r\n name=\"spacing\"\r\n step=\"10\"\r\n value={textSelected.charSpacing}\r\n className=\"border border-[#EBEBEB] py-[10px] pl-[16px] mb-[16.5px] w-[145px]\"\r\n onChange={textSpacingHandler}\r\n ></input>\r\n </div>\r\n </div>\r\n <div className=\"flex gap-2\">\r\n <div className=\"w-[50%]\">\r\n <div className=\"uppercase font-bold text-sm mb-[8.5px]\">\r\n Text Shape\r\n </div>\r\n <select\r\n name=\"textShape\"\r\n id=\"textShape\"\r\n value={textSelected.shapeType ? textSelected.shapeType : 'None'}\r\n onChange={textShapeChange}\r\n // className={`${INPUT_BG_COLOR} font-bold ${TEXT_COLOR_1} ${TEXT_SIZE_3} border border-solid ${BORDER_COLOR_1} select select-bordered w-full rounded-none focus:outline-current focus:outline-offset-0 focus:rounded-sm mb-[16.5px]`}\r\n className={`${INPUT_BG_COLOR} font-bold ${TEXT_COLOR_1} ${TEXT_SIZE_3} border border-solid ${BORDER_COLOR_1} select select-bordered w-full rounded-none focus:outline-offset-0 focus:rounded-sm mb-[16.5px] ml-[2px]`}\r\n >\r\n {textShapes.map((list) => {\r\n return (\r\n <>\r\n <option value={list.name}>{list.name}</option>\r\n </>\r\n );\r\n })}\r\n </select>\r\n </div>\r\n <div className=\"w-[50%]\">\r\n <div className=\"uppercase font-bold text-sm mb-[8.5px]\">\r\n Shape Size\r\n </div>\r\n <input\r\n type=\"number\"\r\n id=\"shapeSize\"\r\n name=\"shapeSize\"\r\n step=\"10\"\r\n value={shapeSizeVal}\r\n className=\"border border-[#EBEBEB] py-[10px] pl-[16px] mb-[16.5px] w-[145px]\"\r\n onChange={textShapeSizeHandler}\r\n ></input>\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n};\r\n","import { fabric } from 'fabric';\r\nimport React, { useState, useMemo, ChangeEvent } from 'react';\r\nimport { MdOutlineCancel } from 'react-icons/md';\r\nimport { shallow } from 'zustand/shallow';\r\nimport { use3dddPlus } from '../../store';\r\nimport { load } from 'opentype.js';\r\nimport { ColorImpl } from '../colorPallet';\r\nimport { IconButton, HorizontalFlip, VerticalFlip } from '../icon';\r\nimport { textProperties, warpTypes } from './constants';\r\nimport Configuration from '../../configuration.json';\r\nimport ErrorPopup from '../canvas/errorPopUp';\r\nimport { TextProperties } from './TextProperties';\r\n\r\nconst ErrorColorDiv = ({ setIsNextClicked, conflictColors }) => {\r\n return (\r\n <div\r\n className=\"mb-[10px]\"\r\n style={{\r\n position: 'absolute',\r\n backgroundColor: '#FFFFFF',\r\n bottom: 0,\r\n padding: '7px',\r\n }}\r\n >\r\n <IconButton\r\n label=\"Close\"\r\n icon={<MdOutlineCancel />}\r\n onClick={() => {\r\n setIsNextClicked(false);\r\n }}\r\n className={''}\r\n size=\"1.5rem\"\r\n style={{\r\n position: 'absolute',\r\n cursor: 'pointer',\r\n fontWeight: 'bold',\r\n right: 10,\r\n top: -7,\r\n color: '#FF0000',\r\n }}\r\n ></IconButton>\r\n <div\r\n className=\"text-[#E11A38]\"\r\n style={{ fontWeight: 'bold', marginBottom: '3px' }}\r\n >\r\n ERROR: CONFLICT IN COLOR USED\r\n </div>\r\n <div className=\"text-[#E11A38]\" style={{ marginBottom: '3px' }}>\r\n Note: The following colors used are not available in Richardson color\r\n palette. Please edit the colors used.\r\n </div>\r\n <div>\r\n {conflictColors.map((c: string, i: number) => {\r\n return (\r\n <div\r\n key={'color-' + i}\r\n style={{\r\n width: '100%',\r\n height: '30px',\r\n lineHeight: '30px',\r\n backgroundColor: c,\r\n textAlign: 'center',\r\n marginBottom: '3px',\r\n }}\r\n >\r\n <span\r\n style={{\r\n color: '#ffffff',\r\n mixBlendMode: 'difference',\r\n }}\r\n >\r\n {c}\r\n </span>\r\n </div>\r\n );\r\n })}\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport const Properties = ({\r\n textSelected,\r\n activeTab,\r\n canvas,\r\n setIsNextClicked,\r\n onSave,\r\n conflictColors,\r\n isNextClicked,\r\n setDisplayPallet,\r\n setPosition,\r\n}) => {\r\n const [\r\n colorFill,\r\n currentSelection,\r\n activeSelection,\r\n textInfo,\r\n activeObj,\r\n allColor,\r\n fontFamilies\r\n ] = use3dddPlus(\r\n (state) => [\r\n state.colorFill,\r\n state.currentSelection,\r\n state.activeSelection,\r\n state.textInfo,\r\n state.activeSelection,\r\n state.allColor,\r\n state.fontFamilies\r\n ],\r\n shallow\r\n );\r\n\r\n const [textAlignDisplay, setTextAlignDisplay] = useState(false);\r\n\r\n const [fontStyle, setFontStyle] = useState({\r\n bold: false,\r\n italic: false,\r\n underline: false,\r\n });\r\n const [activeButton, setActiveButton] = useState<string | null>(null);\r\n const [shapeSizeVal, setShapeSizeVal] = useState(50);\r\n const [textLength, setTextLength] = useState(\r\n textSelected && textSelected.text ? textSelected.text.length : 0\r\n );\r\n const [bridgeshapeBendSize, setBridgeShapeBendSize] = useState(-25);\r\n const [bowtieshapeBendSize, setBowtieShapeBendSize] = useState(-12);\r\n\r\n const textShapeSizeHandler = (e: React.ChangeEvent<HTMLInputElement>) => {\r\n const newSize = e.target.valueAsNumber;\r\n setShapeSizeVal(newSize);\r\n\r\n const state = use3dddPlus.getState();\r\n\r\n if (textSelected) {\r\n textSelected.shapeSize = newSize;\r\n state.updateModifaction(true);\r\n state.forIconCapture();\r\n textSelected.icon = state.iconImage;\r\n setShapeSizeOnTextPath(newSize);\r\n canvas.renderAll();\r\n\r\n if (textSelected.aCoords.tr.x > 480) {\r\n return;\r\n }\r\n }\r\n };\r\n\r\n const setShapeSizeOnTextPath = (val: number) => {\r\n if (!textSelected || !textSelected.pathData) {\r\n return;\r\n }\r\n\r\n const applyTextProperties = (newTextPath: any, textSelected: any) => {\r\n textProperties.forEach((prop) => {\r\n newTextPath[prop] = textSelected[prop];\r\n });\r\n };\r\n\r\n const setNewPathDimensions = (\r\n newTextPath: any,\r\n dims: any,\r\n textSelected: any\r\n ) => {\r\n newTextPath.left = textSelected.left;\r\n newTextPath.top = textSelected.top;\r\n newTextPath.width = textSelected.width;\r\n newTextPath.height = textSelected.height;\r\n newTextPath.scaleX =\r\n textSelected.scaleX * (textSelected.width / dims.width);\r\n newTextPath.scaleY =\r\n textSelected.scaleY * (textSelected.width / dims.width);\r\n newTextPath.setCoords();\r\n newTextPath.width = dims.width;\r\n newTextPath.height = dims.height;\r\n };\r\n\r\n const state = use3dddPlus.getState();\r\n const canvas = state.fabricCanvas;\r\n // @ts-ignore\r\n const path = new Path(textSelected.pathData.toClipPathSVG());\r\n textSelected.shapeSize = val;\r\n\r\n const bendValue = val / 100 || 0;\r\n const warpType = warpTypes[textSelected.shapeType];\r\n\r\n if (warpType) {\r\n path.warp({ type: warpType, bend: bendValue });\r\n }\r\n\r\n const newTextPath = new fabric.Path(path.output());\r\n applyTextProperties(newTextPath, textSelected);\r\n // @ts-ignore\r\n const dimensions = newTextPath._calcDimensions();\r\n setNewPathDimensions(newTextPath, dimensions, textSelected);\r\n\r\n canvas.remove(textSelected);\r\n canvas.add(newTextPath);\r\n canvas.setActiveObject(newTextPath);\r\n\r\n state.activeSelection = newTextPath;\r\n state.forIconCapture();\r\n // @ts-ignore\r\n newTextPath.icon = state.iconImage;\r\n\r\n updateStoreAllObject(newTextPath);\r\n canvas.renderAll();\r\n };\r\n\r\n const onTextChange = async (e: ChangeEvent<HTMLTextAreaElement>) => {\r\n const textValue = e.target.value;\r\n const lines = textValue.split('\\n');\r\n setTextAlignDisplay(lines.length > 1);\r\n\r\n const state = use3dddPlus.getState();\r\n const isFontWithCamelCase = Configuration.fontWithCamelCase.includes(\r\n textSelected.fontFamily\r\n );\r\n const formattedText = isFontWithCamelCase\r\n ? textValue.toUpperCase()\r\n : textValue;\r\n\r\n use3dddPlus.setState({ textInfo: formattedText });\r\n textSelected.text = formattedText;\r\n const activeObj = canvas.getActiveObject();\r\n const currentSelection = activeObj.type;\r\n if (currentSelection === 'path') {\r\n await textShapeChange(textSelected.shapeType, true);\r\n }\r\n\r\n reduceFontSize();\r\n textSelected.setCoords();\r\n canvas.renderAll();\r\n reduceFontSize();\r\n canvas.renderAll();\r\n\r\n state.updateModifaction(true);\r\n state.forIconCapture();\r\n textSelected.icon = use3dddPlus.getState().iconImage;\r\n };\r\n\r\n const textAlignHandler = async (e: any) => {\r\n const textAlign = e.currentTarget.id;\r\n\r\n setActiveButton(textAlign);\r\n textSelected.set('textAlign', textAlign);\r\n\r\n if (currentSelection === 'path') {\r\n await textShapeChange(textSelected.shapeType, true);\r\n }\r\n\r\n const state = use3dddPlus.getState();\r\n state.updateModifaction(true);\r\n state.forIconCapture();\r\n textSelected.icon = use3dddPlus.getState().iconImage;\r\n\r\n canvas.requestRenderAll();\r\n };\r\n\r\n const fontChange = async (e: ChangeEvent<HTMLSelectElement>) => {\r\n const fontFamily = e.target.value;\r\n textSelected.set({ 'fontFamily': fontFamily });\r\n textSelected.set({ text: textInfo, charSpacing: 0 });\r\n\r\n if (Configuration.fontWithCamelCase.includes(fontFamily)) {\r\n textSelected.set({\r\n text: textSelected.text.toUpperCase(),\r\n charSpacing: 5,\r\n });\r\n }\r\n const activeObj = canvas.getActiveObject();\r\n const currentSelection = activeObj.type;\r\n if (currentSelection === 'path') {\r\n await textShapeChange(textSelected.shapeType, true);\r\n }\r\n\r\n const state = use3dddPlus.getState();\r\n state.updateModifaction(true);\r\n state.forIconCapture();\r\n textSelected.icon = use3dddPlus.getState().iconImage;\r\n canvas.requestRenderAll();\r\n reduceFontSize();\r\n\r\n };\r\n\r\n const textColorChange = (_property: string, color: string) => {\r\n use3dddPlus.setState({ mylogoAdded: true });\r\n textSelected.set({\r\n fill: color,\r\n colorFill: { layer0: color },\r\n });\r\n\r\n const state = use3dddPlus.getState();\r\n state.updateModifaction(true);\r\n state.forIconCapture();\r\n textSelected.icon = use3dddPlus.getState().iconImage;\r\n canvas.requestRenderAll();\r\n };\r\n\r\n const textOutlineHandler = (e: ChangeEvent<HTMLInputElement>) => {\r\n use3dddPlus.setState({ mylogoAdded: true });\r\n const activeText = canvas.getActiveObject();\r\n if (!activeText) {\r\n return;\r\n }\r\n //COMMENTED OUT FOR OUTLINE ISSUE WHILE TEXT IN PATH SHAPE\r\n // const currentSelection = activeText.type;\r\n /* if (currentSelection === 'path') {\r\n console.log(\"ds..\");\r\n textShapeChange(textSelected.shapeType, true);\r\n }*/\r\n\r\n if (activeText.type === 'text') {\r\n activeText.set({\r\n strokeWidth: parseFloat(e.target.value),\r\n });\r\n\r\n const state = use3dddPlus.getState();\r\n state.updateModifaction(true);\r\n state.forIconCapture();\r\n activeText.icon = use3dddPlus.getState().iconImage;\r\n activeText.canvas.requestRenderAll();\r\n }\r\n };\r\n\r\n const strokeColorChange = (_property: string, color: string) => {\r\n use3dddPlus.setState({ mylogoAdded: true });\r\n textSelected.set({\r\n stroke: color,\r\n colorFill: { layer0: textSelected.fill, layer1: color },\r\n });\r\n\r\n const state = use3dddPlus.getState();\r\n state.updateModifaction(true);\r\n state.forIconCapture();\r\n textSelected.icon = state.iconImage;\r\n canvas.requestRenderAll();\r\n };\r\n\r\n const textSpacingHandler = (e) => {\r\n // setSpacinglineVal(e.target.valueAsNumber);\r\n let dublicateText = textSelected;\r\n let oldCharSpacing = dublicateText.charSpacing;\r\n dublicateText.charSpacing = e.target.valueAsNumber;\r\n const brNew = dublicateText.getBoundingRect();\r\n if (\r\n brNew.width + brNew.left + 45 >= dublicateText.canvas.width ||\r\n brNew.height + brNew.top >= dublicateText.canvas.height ||\r\n brNew.left < 0 ||\r\n brNew.top < 0\r\n ) {\r\n if (textSelected.charSpacing > e.target.valueAsNumber) {\r\n textSelected.charSpacing = e.target.valueAsNumber;\r\n if (currentSelection === 'path') {\r\n textShapeChange(textSelected.shapeType, true);\r\n }\r\n use3dddPlus.getState().updateModifaction(true);\r\n use3dddPlus.getState().forIconCapture();\r\n textSelected.icon = use3dddPlus.getState().iconImage;\r\n canvas.renderAll();\r\n if (textSelected.aCoords.tr.x > 480) {\r\n return;\r\n }\r\n }\r\n } else {\r\n textSelected.charSpacing = e.target.valueAsNumber;\r\n if (currentSelection === 'path') {\r\n textShapeChange(textSelected.shapeType, true);\r\n }\r\n use3dddPlus.getState().forIconCapture();\r\n textSelected.icon = use3dddPlus.getState().iconImage;\r\n const brNew = textSelected.getBoundingRect();\r\n if (\r\n brNew.width + brNew.left + 45 >= dublicateText.canvas.width ||\r\n brNew.height + brNew.top >= dublicateText.canvas.height ||\r\n brNew.left < 0 ||\r\n brNew.top < 0\r\n ) {\r\n textSelected.charSpacing = oldCharSpacing;\r\n }\r\n use3dddPlus.getState().updateModifaction(true);\r\n canvas.renderAll();\r\n if (textSelected.aCoords.tr.x > 480) {\r\n return;\r\n }\r\n }\r\n };\r\n const textStyle = (e: any, key: string, value: any) => {\r\n if (fontStyle[e.target.id]) textSelected.set(key, '');\r\n else textSelected.set(key, value);\r\n setFontStyle((state) => ({ ...state, [e.target.id]: !state[e.target.id] }));\r\n use3dddPlus.getState().updateModifaction(true);\r\n use3dddPlus.getState().forIconCapture();\r\n textSelected.icon = use3dddPlus.getState().iconImage;\r\n canvas.renderAll();\r\n };\r\n\r\n const changeSVGTextColor = (property, color) => {\r\n use3dddPlus.setState({ mylogoAdded: true });\r\n const previousColor = property;\r\n canvas.getObjects().map((data) => {\r\n let _C = data.fill;\r\n\r\n setPropertyColor({ data, previousColor, _C, color, property: 'fill', setColorFill: true });\r\n setPropertyColor({ data, previousColor, _C: data.stroke, color, property: 'stroke', setColorFill: false });\r\n });\r\n canvas.renderAll();\r\n use3dddPlus.getState().updateModifaction(true);\r\n };\r\n //@ts-ignore\r\n const setPropertyColor = ({ data, previousColor, _C, color, property, setColorFill }) => {\r\n if (data.type === 'text') {\r\n if (_C === previousColor) {\r\n const updated: any = { [property]: color }\r\n if (setColorFill) updated.colorFill = { layer0: color }\r\n data.set(updated)\r\n }\r\n } else if (data.type === 'path') {\r\n if (_C === previousColor) {\r\n const updated: any = { [property]: color }\r\n if (setColorFill) updated.colorFill = { layer0: color }\r\n data.set(updated)\r\n }\r\n } else if (data.type === 'group') {\r\n let objImage = data._objects;\r\n objImage.forEach((ele) => {\r\n const _C =\r\n ele[property] === 'transparent' ||\r\n (typeof ele[property] === 'string' && ele[property].includes('#'))\r\n ? ele.fill\r\n : RGBToHex(ele[property]);\r\n if (_C === previousColor) {\r\n const updated: any = { [property]: color }\r\n if (setColorFill) updated.colorFill = { layer0: color }\r\n ele.set(updated)\r\n }\r\n });\r\n const colorFill = { ...data.colorFill };\r\n setColorFill && Object.keys(colorFill).forEach((item) => {\r\n if (colorFill[item] === previousColor) {\r\n colorFill[item] = color;\r\n }\r\n });\r\n setColorFill && data.set({\r\n colorFill: colorFill,\r\n });\r\n }\r\n if (data && data.icon) {\r\n data.icon = data.toDataURL('image/png');\r\n } else if (data._objects && data._objects.length) {\r\n data._objects[0].icon = data.toDataURL('image/png');\r\n }\r\n }\r\n const changeSVGColor = (property, color) => {\r\n const fillColor = colorFill;\r\n const previousColor = fillColor[property];\r\n const SelectedObjet = use3dddPlus.getState().activeSelection;\r\n SelectedObjet.traverse((ele) => {\r\n\r\n if ((ele.id !== SelectedObjet.id && SelectedObjet.type === 'group') || SelectedObjet.type !== 'group') {\r\n const _C =\r\n ele.fill === 'transparent' ||\r\n (typeof ele.fill === 'string' && ele.fill.includes('#'))\r\n ? ele.fill\r\n : RGBToHex(ele.fill);\r\n if (_C === previousColor) {\r\n ele.set({\r\n fill: color,\r\n colorFill: { layer0: color },\r\n });\r\n // colors.add(ele.fill)\r\n } else {\r\n // colors.add(ele.fill)\r\n }\r\n }\r\n });\r\n\r\n const tempColorFill = { ...SelectedObjet.colorFill };\r\n Object.keys(tempColorFill).forEach((item) => {\r\n if (tempColorFill[item] === previousColor) {\r\n tempColorFill[item] = color;\r\n }\r\n });\r\n SelectedObjet.set({\r\n colorFill: tempColorFill,\r\n });\r\n\r\n canvas.renderAll();\r\n // fillColor[property] = color;\r\n // use3dddPlus.setState({ colorFill: fillColor });\r\n use3dddPlus.setState({ colorFill: tempColorFill });\r\n use3dddPlus.getState().forIconCapture();\r\n SelectedObjet.icon = use3dddPlus.getState().iconImage;\r\n use3dddPlus.getState().updateModifaction(true);\r\n };\r\n\r\n const textToPath = async (objects) => {\r\n let promises = [];\r\n let pathObj = null;\r\n objects.forEach((object) => {\r\n promises = [\r\n ...promises,\r\n new Promise((resolve) => {\r\n if (object.type === 'text') {\r\n let fontSource = fontFamilies.filter(\r\n (o) => o.name === object.fontFamily\r\n )[0].src;\r\n load(fontSource, (error, font) => {\r\n if (error) {\r\n console.error(error);\r\n }\r\n const path = font.getPath(object.text, 0, 0, object.fontSize, {\r\n fontSize: object.get('fontSize'),\r\n fill: object.get('fill'),\r\n stroke: object.get('stroke'),\r\n strokeWidth: object.get('strokeWidth'),\r\n });\r\n const fabricPath = new fabric.Path(path.toPathData(20), {});\r\n pathObj = fabricPath;\r\n resolve(pathObj);\r\n });\r\n }\r\n }),\r\n ];\r\n });\r\n //resolve all promises\r\n await Promise.all(promises);\r\n return pathObj;\r\n };\r\n\r\n const bridgeShapeChange = () => {\r\n if (textSelected && textSelected.shapeType) {\r\n if (\r\n textSelected &&\r\n textSelected.text &&\r\n textSelected.text.length > textLength\r\n ) {\r\n if (textSelected.shapeType === 'Bridge') {\r\n setBridgeShapeBendSize(bridgeshapeBendSize + 3);\r\n } else {\r\n setBowtieShapeBendSize(bowtieshapeBendSize + 1);\r\n }\r\n } else {\r\n if (textSelected.shapeType === 'Bridge') {\r\n setBridgeShapeBendSize(bridgeshapeBendSize - 2);\r\n } else {\r\n setBowtieShapeBendSize(bowtieshapeBendSize - 1);\r\n }\r\n }\r\n if (textSelected && textSelected.text && textSelected.text.length > 10) {\r\n setBridgeShapeBendSize(-10);\r\n setBowtieShapeBendSize(-5);\r\n }\r\n setTextLength(textSelected.text.length);\r\n }\r\n };\r\n\r\n const textShapeChange = async (\r\n e,\r\n textChange = false,\r\n fontSize = null,\r\n charSpacing = null,\r\n strokeWidth = null,\r\n fontWeight = null,\r\n textAlign = null,\r\n fontStyle = null\r\n ) => {\r\n let pathData = null;\r\n let p = null;\r\n let shapeType = e && e.target ? e.target.value : e;\r\n if (!shapeType) {\r\n shapeType = textSelected.shapeType;\r\n }\r\n // setShapeType(shapeType);\r\n // if the selection is a text object then convert the text into path for shape deformation\r\n const activeObj = canvas.getActiveObject();\r\n const currentSelection = activeObj.type;\r\n if (currentSelection === 'text') {\r\n pathData = await textToPath([textSelected]);\r\n //@ts-ignore\r\n p = new Path(pathData.toClipPathSVG());\r\n setBridgeShapeBendSize(-25);\r\n setBowtieShapeBendSize(-12);\r\n setTextLength(textSelected.text.length);\r\n }\r\n // when user changes the text value & text shape is applied\r\n else if (currentSelection === 'path' && textChange) {\r\n if (textSelected.text == '' || textSelected.text.trim() == '') {\r\n textSelected.path = [];\r\n textSelected._removeCacheCanvas();\r\n canvas.renderAll();\r\n return;\r\n }\r\n // create a temp text with same properties & convert to path\r\n const text: any = new fabric.Text(textSelected.text, {\r\n lineHeight: 1,\r\n fill: textSelected.fill,\r\n fontFamily: textSelected.fontFamily,\r\n fontWeight: fontWeight ? fontWeight : textSelected.fontWeight,\r\n top: textSelected.top,\r\n left: textSelected.left,\r\n stroke: textSelected.stroke,\r\n strokeWidth: strokeWidth ? strokeWidth : textSelected.strokeWidth,\r\n fontStyle: fontStyle ? fontStyle : textSelected.fontStyle,\r\n paintFirst: 'stroke',\r\n charSpacing: charSpacing ? charSpacing : textSelected.charSpacing,\r\n padding: textSelected.padding,\r\n fontSize: fontSize ? fontSize : textSelected.fontSize,\r\n textAlign: textAlign ? textAlign : textSelected.textAlign,\r\n name: 'text',\r\n lockScalingFlip: true,\r\n centeredScaling: true,\r\n text: textSelected.text,\r\n width: textSelected.width,\r\n height: textSelected.height,\r\n });\r\n text.set({\r\n //@ts-ignore\r\n colorFill: textSelected.colorFill,\r\n fontWeight: fontWeight,\r\n });\r\n // let dims = fabricPath._calcDimensions();\r\n text.left = textSelected.left;\r\n text.top = textSelected.top;\r\n text.width = textSelected.width;\r\n text.height = textSelected.height;\r\n text.scaleX = textSelected.scaleX;\r\n text.scaleY = textSelected.scaleY;\r\n text.id = textSelected.id;\r\n\r\n pathData = await textToPath([text]);\r\n //@ts-ignore\r\n p = new Path(pathData.toClipPathSVG());\r\n }\r\n // when the selection is path but no change in the text string\r\n else if (currentSelection === 'path' && !textChange) {\r\n pathData = textSelected.pathData;\r\n //@ts-ignore\r\n p = new Path(pathData.toClipPathSVG());\r\n } else {\r\n return;\r\n }\r\n switch (shapeType) {\r\n case 'None': {\r\n setShapeSizeVal(0);\r\n textSelected.shapeType = 'None';\r\n // revert back to text type object\r\n const text: any = new fabric.Text(textSelected.text, {\r\n lineHeight: 1,\r\n fill: textSelected.fill,\r\n fontFamily: textSelected.fontFamily,\r\n fontWeight: fontWeight ? fontWeight : textSelected.fontWeight,\r\n top: textSelected.top,\r\n left: textSelected.left,\r\n stroke: textSelected.stroke,\r\n strokeWidth: strokeWidth ? strokeWidth : textSelected.strokeWidth,\r\n fontStyle: fontStyle ? fontStyle : textSelected.fontStyle,\r\n paintFirst: 'stroke',\r\n charSpacing: charSpacing ? charSpacing : textSelected.charSpacing,\r\n padding: textSelected.padding,\r\n fontSize: fontSize ? fontSize : textSelected.fontSize,\r\n textAlign: textAlign ? textAlign : textSelected.textAlign,\r\n name: 'text',\r\n lockScalingFlip: true,\r\n centeredScaling: true,\r\n text: textSelected.text,\r\n });\r\n text.set({\r\n //@ts-ignore\r\n colorFill: textSelected.colorFill,\r\n fontWeight: fontWeight,\r\n });\r\n text.scaleX = textSelected.scaleX * (textSelected.width / text.width);\r\n text.scaleY = textSelected.scaleY * (textSelected.width / text.width);\r\n window['textObj'] = text;\r\n text.setCoords();\r\n text.id = textSelected.id;\r\n\r\n // set rotation angle & position\r\n text.rotate(textSelected.angle);\r\n text.left = textSelected.left;\r\n text.top = textSelected.top;\r\n\r\n // delete the active text object\r\n canvas.remove(textSelected);\r\n textSelected._removeCacheCanvas();\r\n canvas.setActiveObject(null);\r\n canvas.renderAll();\r\n\r\n // Add the text object keeping same properties\r\n canvas.add(text);\r\n text.setCoords();\r\n\r\n // set active object as path text\r\n canvas.setActiveObject(text);\r\n use3dddPlus.setState({ activeSelection: text });\r\n\r\n //@ts-ignore\r\n use3dddPlus.getState().forIconCapture();\r\n text['icon'] = use3dddPlus.getState().iconImage;\r\n updateStoreAllObject(text);\r\n // canvas.setActiveObject(text);\r\n // use3dddPlus.setState({ activeSelection: text });\r\n canvas.renderAll();\r\n // cancel performing further functions & return back from function\r\n return;\r\n }\r\n case 'Arc': {\r\n setShapeSizeVal(50);\r\n textSelected.shapeType = 'Arc';\r\n p.warp({\r\n type: 'WARP_ARC',\r\n bend: 50 / 100 || 0,\r\n });\r\n break;\r\n }\r\n case 'Bridge': {\r\n setShapeSizeVal(-25);\r\n bridgeShapeChange();\r\n textSelected.shapeType = 'Bridge';\r\n p.warp({\r\n type: 'WARP_ARC_LOWER',\r\n bend: bridgeshapeBendSize / 100 || 0,\r\n });\r\n break;\r\n }\r\n case 'Bowtie': {\r\n setShapeSizeVal(-12);\r\n bridgeShapeChange();\r\n textSelected.shapeType = 'Bowtie';\r\n p.warp({\r\n type: 'WARP_BULGE',\r\n bend: bowtieshapeBendSize / 100 || 0,\r\n });\r\n break;\r\n }\r\n case 'Vertical Arch': {\r\n setShapeSizeVal(35);\r\n textSelected.shapeType = 'Vertical Arch';\r\n p.warp({\r\n type: 'WARP_ARCH',\r\n bend: 35 / 100 || 0,\r\n });\r\n break;\r\n }\r\n case 'Reverse Vertical Arch': {\r\n setShapeSizeVal(-35);\r\n textSelected.shapeType = 'Reverse Vertical Arch';\r\n p.warp({\r\n type: 'WARP_ARCH',\r\n bend: -35 / 100 || 0,\r\n });\r\n break;\r\n }\r\n default:\r\n break;\r\n }\r\n // take out the update path with shape type deformation\r\n let fabricPath = new fabric.Path(p.output());\r\n textSelected['pathData'] = pathData;\r\n // add object only when converting from text to path\r\n if (currentSelection === 'text') {\r\n // add the path text object on canvas\r\n canvas.add(fabricPath);\r\n fabricPath['pathData'] = pathData;\r\n fabricPath['colorFill'] = textSelected.colorFill;\r\n fabricPath['shapeSize'] = shapeSizeVal;\r\n fabricPath['shapeType'] = shapeType;\r\n // carry forward the text properties over the path for further changes\r\n fabricPath['fill'] = textSelected.fill;\r\n fabricPath['fontFamily'] = textSelected.fontFamily;\r\n fabricPath['fontWeight'] = textSelected.fontWeight;\r\n fabricPath['stroke'] = textSelected.stroke;\r\n fabricPath['strokeWidth'] = textSelected.strokeWidth;\r\n fabricPath['padding'] = textSelected.padding;\r\n fabricPath['fontSize'] = textSelected.fontSize;\r\n fabricPath['charSpacing'] = textSelected.charSpacing;\r\n fabricPath['textAlign'] = textSelected.textAlign;\r\n fabricPath['fontStyle'] = textSelected.fontStyle;\r\n fabricPath['text'] = textSelected.text;\r\n fabricPath['id'] = textSelected.id;\r\n\r\n //@ts-ignore\r\n let dims = fabricPath._calcDimensions();\r\n\r\n // Set the same position scale matching with existing text\r\n fabricPath.width = textSelected.width;\r\n fabricPath.height = textSelected.height;\r\n fabricPath.scaleX =\r\n textSelected.scaleX * (textSelected.width / dims.width);\r\n fabricPath.scaleY =\r\n textSelected.scaleY * (textSelected.width / dims.width);\r\n fabricPath.setCoords();\r\n fabricPath.width = dims.width;\r\n fabricPath.height = dims.height;\r\n // set rotation angle & position\r\n fabricPath.rotate(textSelected.angle);\r\n fabricPath.left = textSelected.left;\r\n fabricPath.top = textSelected.top;\r\n // delete the text object\r\n canvas.remove(textSelected);\r\n // set active object as path text\r\n canvas.setActiveObject(fabricPath);\r\n use3dddPlus.setState({ activeSelection: fabricPath });\r\n use3dddPlus.getState().forIconCapture();\r\n fabricPath['icon'] = use3dddPlus.getState().iconImage;\r\n updateStoreAllObject(fabricPath);\r\n }\r\n // update the text path object with new shape type\r\n else {\r\n // add new textPath\r\n let newTextPath = new fabric.Path(p.output());\r\n newTextPath['pathData'] = textSelected.pathData;\r\n newTextPath['colorFill'] = textSelected.colorFill;\r\n newTextPath['shapeSize'] = textSelected.shapeSize;\r\n newTextPath['shapeType'] = textSelected.shapeType;\r\n newTextPath['fill'] = textSelected.fill;\r\n newTextPath['fontFamily'] = textSelected.fontFamily;\r\n newTextPath['fontWeight'] = textSelected.fontWeight;\r\n newTextPath['stroke'] = textSelected.stroke;\r\n newTextPath['strokeWidth'] = textSelected.strokeWidth;\r\n newTextPath['padding'] = textSelected.padding;\r\n newTextPath['fontSize'] = textSelected.fontSize;\r\n newTextPath['charSpacing'] = textSelected.charSpacing;\r\n newTextPath['textAlign'] = textSelected.textAlign;\r\n newTextPath['fontStyle'] = textSelected.fontStyle;\r\n newTextPath['text'] = textSelected.text;\r\n // set same position & scale\r\n newTextPath['width'] = textSelected.width;\r\n newTextPath['height'] = textSelected.height;\r\n\r\n //@ts-ignore\r\n let dims = newTextPath._calcDimensions();\r\n newTextPath['scaleX'] =\r\n textSelected.scaleX * (textSelected.width / dims.width);\r\n newTextPath['scaleY'] =\r\n textSelected.scaleY * (textSelected.width / dims.width);\r\n newTextPath['id'] = textSelected.id;\r\n // set rotation angle & position\r\n newTextPath.rotate(textSelected.angle);\r\n newTextPath['left'] = textSelected.left;\r\n newTextPath['top'] = textSelected.top;\r\n // delete the active text object\r\n // var activeObj = canvas.getActiveObject();\r\n canvas.remove(activeObj);\r\n if (activeObj && activeObj !== null) {\r\n activeObj._removeCacheCanvas();\r\n }\r\n\r\n // add & set active new path text\r\n canvas.add(newTextPath);\r\n canvas.setActiveObject(newTextPath);\r\n use3dddPlus.setState({ activeSelection: newTextPath });\r\n newTextPath.setCoords();\r\n\r\n newTextPath.width = dims.width;\r\n newTextPath.height = dims.height;\r\n canvas.renderAll();\r\n use3dddPlus.getState().forIconCapture();\r\n newTextPath['icon'] = use3dddPlus.getState().iconImage;\r\n updateStoreAllObject(newTextPath);\r\n }\r\n canvas.renderAll();\r\n reduceFontSize();\r\n };\r\n const updateStoreAllObject = (text) => {\r\n use3dddPlus.getState().updateModifaction(true);\r\n\r\n var index = use3dddPlus\r\n .getState()\r\n .storeAllObject.findIndex((obj: any) => obj.id === textSelected.id);\r\n if (index > -1) {\r\n use3dddPlus.getState().storeAllObject.splice(index, 1);\r\n }\r\n use3dddPlus.getState().storeAllObject.splice(index, 0, text);\r\n };\r\n\r\n const reduceFontSize = async () => {\r\n let brNew = textSelected.getBoundingRect();\r\n let canvasWidth = 0;\r\n let canvasHeight = 0;\r\n if (textSelected && textSelected.canvas && textSelected.canvas.width) {\r\n canvasWidth = textSelected.canvas.width;\r\n canvasHeight = textSelected.canvas.height;\r\n } else {\r\n canvasWidth = canvas.width;\r\n canvasHeight = canvas.height;\r\n }\r\n while (\r\n Math.ceil(brNew.width + brNew.left + 45) >= Math.floor(canvasWidth) ||\r\n Math.ceil(brNew.height + brNew.top + 10) >= Math.floor(canvasHeight) ||\r\n Math.ceil(brNew.left) < 0 ||\r\n Math.ceil(brNew.top) < 0\r\n ) {\r\n let activeObj = canvas.getActiveObject();\r\n\r\n activeObj.scale(activeObj.scaleX * 0.99);\r\n activeObj.setCoords();\r\n activeObj = canvas.getActiveObject();\r\n brNew = activeObj.getBoundingRect();\r\n canvas.renderAll();\r\n }\r\n canvas.renderAll();\r\n };\r\n\r\n const RGBToHex = (rgb) => {\r\n if (rgb) {\r\n if (rgb.indexOf('rgba') >= 0) {\r\n const rgba = rgb.replace(/^rgba?\\(|\\s+|\\)$/g, '').split(',');\r\n return `#${(\r\n (1 << 24) +\r\n (parseInt(rgba[0]) << 16) +\r\n (parseInt(rgba[1]) << 8) +\r\n parseInt(rgba[2])\r\n )\r\n .toString(16)\r\n .slice(1)}`;\r\n } else {\r\n let sep = rgb.indexOf(',') > -1 ? ',' : ' ';\r\n rgb = rgb.substr(4).split(')')[0].split(sep);\r\n let r = (+rgb[0]).toString(16),\r\n g = (+rgb[1]).toString(16),\r\n b = (+rgb[2]).toString(16);\r\n\r\n if (r.length == 1) r = '0' + r;\r\n if (g.length == 1) g = '0' + g;\r\n if (b.length == 1) b = '0' + b;\r\n return '#' + r + g + b;\r\n }\r\n } else {\r\n return '';\r\n }\r\n };\r\n const flipX = () => {\r\n activeObj.set({\r\n flipX: !activeObj.flipX,\r\n });\r\n use3dddPlus.getState().updateModifaction(true);\r\n use3dddPlus.getState().forIconCapture();\r\n textSelected.icon = use3dddPlus.getState().iconImage;\r\n canvas.renderAll();\r\n };\r\n const flipY = () => {\r\n activeObj.set({\r\n flipY: !activeObj.flipY,\r\n });\r\n use3dddPlus.getState().updateModifaction(true);\r\n use3dddPlus.getState().forIconCapture();\r\n textSelected.icon = use3dddPlus.getState().iconImage;\r\n // activeObj.\r\n canvas.renderAll();\r\n };\r\n\r\n const mergedColors = useMemo(() => {\r\n // FOR REMOVING ALL DUPLICATE COLOR CODES\r\n if (textSelected && textSelected?.colorFill) {\r\n let tempColors = [];\r\n let uniqueColors = {};\r\n\r\n Object.keys(textSelected?.colorFill)?.forEach((item: string) => {\r\n const color = textSelected?.colorFill[item];\r\n // Check if the color is not 'rgb(0,0,0)' and not already in tempColors\r\n if (color !== 'rgb(0,0,0)' && !tempColors.includes(color) && color !== undefined) {\r\n tempColors.push(color);\r\n uniqueColors[item] = color;\r\n }\r\n });\r\n\r\n return uniqueColors;\r\n } else {\r\n return [];\r\n }\r\n }, [textSelected?.colorFill]);\r\n\r\n\r\n return (\r\n <div key={activeTab} className='flex flex-col w-full h-full'>\r\n <div\r\n className={\r\n 'overflow-y-auto overflow-x-hidden' +\r\n (!isNextClicked || !conflictColors || conflictColors.length < 1\r\n ? ' 2xl:h-[60vh] h-[50vh] sm:h-[55vh]'\r\n : '')\r\n }\r\n >\r\n {(currentSelection === 'text') && (\r\n <TextProperties\r\n activeButton={activeButton}\r\n activeSelection={activeSelection}\r\n fontStyle={fontStyle}\r\n setDisplayPallet={setDisplayPallet}\r\n setPosition={setPosition}\r\n textAlignDisplay={textAlignDisplay}\r\n textInfo={textInfo}\r\n textSelected={textSelected}\r\n shapeSizeVal={shapeSizeVal}\r\n fontChange={fontChange}\r\n onTextChange={onTextChange}\r\n strokeColorChange={strokeColorChange}\r\n textAlignHandler={textAlignHandler}\r\n textColorChange={textColorChange}\r\n textOutlineHandler={textOutlineHandler}\r\n textShapeChange={textShapeChange}\r\n textShapeSizeHandler={textShapeSizeHandler}\r\n textSpacingHandler={textSpacingHandler}\r\n textStyle={textStyle}\r\n />\r\n )}\r\n {(currentSelection === 'group' || currentSelection === 'path') && (\r\n <>\r\n <div className=\"uppercase font-bold pt-[17px]\">Colors</div>\r\n <div className=\"flex flex-wrap gap-x-[1rem] mt-[12px]\">\r\n {mergedColors &&\r\n Object.keys(mergedColors)?.map((item, i) => (\r\n <ColorImpl\r\n mClass={'mb-[10px]'}\r\n key={'color-' + i}\r\n handleChange={changeSVGColor}\r\n property={item}\r\n color={activeSelection.colorFill[item]}\r\n setDisplayPallet={setDisplayPallet}\r\n setPosition={setPosition}\r\n callback={changeSVGColor}\r\n />\r\n ))}\r\n </div>\r\n <div className=\"my-[24.5px]\">\r\n <p className=\"text-[1rem] text-[#353535] flex text-left leading-[21px] font-bold mb-[12px] uppercase\">\r\n Flip\r\n </p>\r\n <div className=\"flex gap-x-[15px]\">\r\n <IconButton\r\n label=\"\"\r\n icon={<HorizontalFlip />}\r\n className=\"!w-[5.625rem] !h-[2.625rem] bg-[#fff] cursor-pointer border border-[#EBEBEB]\"\r\n size=\"1.5rem\"\r\n onClick={flipX}\r\n />\r\n <IconButton\r\n key={`index`}\r\n label=\"\"\r\n icon={<VerticalFlip />}\r\n className=\"!w-[5.625rem] !h-[2.625rem] bg-[#fff] cursor-pointer border border-[#EBEBEB]\"\r\n size=\"2.5rem\"\r\n onClick={flipY}\r\n />\r\n </div>\r\n </div>\r\n </>\r\n )}\r\n {['selectAll', 'none'].includes(currentSelection) && (\r\n <>\r\n <div className=\"uppercase font-bold pt-[17px]\">Color in Canvas</div>\r\n <div className=\"flex flex-wrap gap-x-[1rem] mt-[12px]\">\r\n {allColor?.map((item, i) => (\r\n <ColorImpl\r\n mClass={'mb-[10px]'}\r\n key={'color-' + i}\r\n handleChange={changeSVGTextColor}\r\n property={item}\r\n color={item}\r\n setDisplayPallet={setDisplayPallet}\r\n setPosition={setPosition}\r\n callback={changeSVGTextColor}\r\n />\r\n ))}\r\n </div>\r\n {(allColor && allColor.includes('transparent')\r\n ? allColor.length - 1\r\n : allColor.length) > 8 && <ErrorPopup allColor={allColor} />}\r\n </>\r\n )}\r\n </div>\r\n {isNextClicked && conflictColors && conflictColors.length > 0 && (\r\n <ErrorColorDiv\r\n setIsNextClicked={setIsNextClicked}\r\n conflictColors={conflictColors}\r\n />\r\n )}\r\n <button\r\n type=\"button\"\r\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\"\r\n onClick={onSave}\r\n >\r\n Save\r\n </button>\r\n </div>\r\n );\r\n};\r\n","! function(t) {\r\n var s = {};\r\n\r\n function i(h) {\r\n if (s[h]) return s[h].exports;\r\n var e = s[h] = {\r\n i: h,\r\n l: !1,\r\n exports: {}\r\n };\r\n return t[h].call(e.exports, e, e.exports, i), e.l = !0, e.exports\r\n }\r\n i.m = t, i.c = s, i.d = function(t, s, h) {\r\n i.o(t, s) || Object.defineProperty(t, s, {\r\n configurable: !1,\r\n enumerable: !0,\r\n get: h\r\n })\r\n }, i.r = function(t) {\r\n Object.defineProperty(t, \"__esModule\", {\r\n value: !0\r\n })\r\n }, i.n = function(t) {\r\n var s = t && t.__esModule ? function() {\r\n return t.default\r\n } : function() {\r\n return t\r\n };\r\n return i.d(s, \"a\", s), s\r\n }, i.o = function(t, s) {\r\n return Object.prototype.hasOwnProperty.call(t, s)\r\n }, i.p = \"\", i(i.s = 4)\r\n}([function(t, s, i) {\r\n var h = i(1),\r\n e = i(3);\r\n t.exports = class {\r\n constructor(t, s) {\r\n this.source = s, this.A = new h(s.left, s.top), this.B = new h(s.right, s.top), this.C = new h(s.right, s.bottom), this.D = new h(s.left, s.bottom), this.Aleft = new h(s.left, s.top + s.height / 3), this.Atop = new h(s.left + s.width / 3, s.top), this.Btop = new h(s.right - s.width / 3, s.top), this.Bright = new h(s.right, s.top + s.height / 3), this.Cright = new h(s.right, s.bottom - s.height / 3), this.Cbottom = new h(s.right - s.width / 3, s.bottom), this.Dbottom = new h(s.left + s.width / 3, s.bottom), this.Dleft = new h(s.left, s.bottom - s.height / 3), this.ABx = 0, this.ABy = 0, this.CDx = 0, this.CDy = 0, this.BCx = 0, this.BCy = 0, this.ADx = 0, this.ADy = 0, this.STEPS = 10, this.distortX = 0, this.distortY1 = 0, this.distortY2 = 0, this.T1 = 1 / 3, this.T2 = 2 / 3, this.kAB = 0, this.kBC = 0, this.kCD = 0, this.kAD = 0, this.angle, this.sin, this.cos, this.kt, this.applyParameters(t)\r\n }\r\n applyParameters(t) {\r\n var s = this.source,\r\n i = this._parameters = new e(t);\r\n this.angle = i.bend * Math.PI / 2, this.sin = Math.sin(this.angle), this.cos = Math.cos(this.angle), this.kt = 1 + Math.pow(i.bend, 4), this.distortX = .5 * i.distortV * s.width;\r\n var h = .5 * i.distortH * s.height;\r\n switch (this.distortY1 = h * (1 - i.distortV), this.distortY2 = h * (1 + i.distortV), this.kAB = 1 - i.distortV, this.kBC = 1 + i.distortH, this.kCD = 1 + i.distortV, this.kAD = 1 - i.distortH, this.setAnchors(), i.type) {\r\n case \"WARP_ARC\":\r\n this.setArc();\r\n break;\r\n case \"WARP_ARC_LOWER\":\r\n this.setArcLower();\r\n break;\r\n case \"WARP_ARC_UPPER\":\r\n this.setArcUpper();\r\n break;\r\n case \"WARP_ARCH\":\r\n this.setArch();\r\n break;\r\n case \"WARP_BULGE\":\r\n this.setBulge();\r\n break;\r\n case \"WARP_FLAG\":\r\n this.setFlag();\r\n break;\r\n case \"WARP_FISH\":\r\n this.setFish();\r\n break;\r\n case \"WARP_RISE\":\r\n this.setRise();\r\n break;\r\n case \"WARP_INFLATE\":\r\n this.setInflate();\r\n break;\r\n case \"WARP_SQUEEZE\":\r\n this.setSqueeze();\r\n break;\r\n case \"WARP_WAVE_LOWER\":\r\n this.setWaveLower();\r\n break;\r\n case \"WARP_WAVE_UPPER\":\r\n this.setWaveUpper()\r\n }\r\n }\r\n setAnchors() {\r\n this.A.x = this.source.left + this.distortX, this.B.x = this.source.right - this.distortX, this.C.x = this.source.right + this.distortX, this.D.x = this.source.left - this.distortX, this.A.y = this.source.top + this.distortY1, this.B.y = this.source.top - this.distortY1, this.C.y = this.source.bottom + this.distortY2, this.D.y = this.source.bottom - this.distortY2\r\n }\r\n setControls() {\r\n this.Atop.x = this.A.x + this.ABx, this.Atop.y = this.A.y + this.ABy, this.Btop.x = this.B.x - this.ABx, this.Btop.y = this.B.y - this.ABy, this.Dbottom.x = this.D.x + this.CDx, this.Dbottom.y = this.D.y + this.CDy, this.Cbottom.x = this.C.x - this.CDx, this.Cbottom.y = this.C.y - this.CDy, this.Bright.x = this.B.x + this.BCx, this.Bright.y = this.B.y + this.BCy, this.Cright.x = this.C.x - this.BCx, this.Cright.y = this.C.y - this.BCy, this.Aleft.x = this.A.x + this.ADx, this.Aleft.y = this.A.y + this.ADy, this.Dleft.x = this.D.x - this.ADx, this.Dleft.y = this.D.y - this.ADy\r\n }\r\n changeCubic(t, s, i, h) {\r\n let e = this._changePoint(t),\r\n o = this._changePoint(h),\r\n r = this.getPointOn(1 / 3, t, h, s, i),\r\n n = this.getPointOn(2 / 3, t, h, s, i),\r\n a = this._changePoint(r),\r\n y = this._changePoint(n);\r\n return this.getNewSegment(e, o, a, y)\r\n }\r\n changePoint(t) {\r\n var s = this._changePoint(t);\r\n return [s.x, s.y]\r\n }\r\n _changePoint(t) {\r\n let s = this.A,\r\n i = this.Atop,\r\n e = this.Aleft,\r\n o = this.B,\r\n r = this.Btop,\r\n n = this.Bright,\r\n a = this.C,\r\n y = this.Cright,\r\n x = this.Cbottom,\r\n c = this.D,\r\n A = this.Dbottom,\r\n C = this.Dleft;\r\n var d = (t.x - this.source.x) / this.source.width,\r\n b = (t.y - this.source.y) / this.source.height,\r\n p = 1 - b,\r\n B = this.getPointOn(b, s, c, e, C),\r\n l = this.getPointOn(b, o, a, n, y),\r\n D = new h(i.x * p + A.x * b, i.y * p + A.y * b),\r\n m = new h(r.x * p + x.x * b, r.y * p + x.y * b),\r\n k = this.getPointOn(d, B, l, D, m);\r\n return new h(k.x, k.y)\r\n }\r\n getPointOn(t, s, i, e, o) {\r\n var r = new h,\r\n n = t * t * t,\r\n a = t * t;\r\n return r.x = n * (i.x + 3 * (e.x - o.x) - s.x) + 3 * a * (s.x - 2 * e.x + o.x) + 3 * t * (e.x - s.x) + s.x, r.y = n * (i.y + 3 * (e.y - o.y) - s.y) + 3 * a * (s.y - 2 * e.y + o.y) + 3 * t * (e.y - s.y) + s.y, r\r\n }\r\n setArc() {\r\n var t = this._parameters,\r\n s = this.source,\r\n i = 1 - t.distortV;\r\n t.bend > 0 ? (this.A.x -= i * (s.height - this.distortY1) * this.sin, this.B.x += i * (s.height + this.distortY1) * this.sin, this.A.y += (s.height - this.distortY1) * (1 - this.cos), this.B.y += (s.height + this.distortY1) * (1 - this.cos), this.C.x -= this.distortY2 * this.sin, this.D.x -= this.distortY2 * this.sin, this.C.y += this.distortY2 * (this.cos - 1), this.D.y -= this.distortY2 * (this.cos - 1)) : t.bend < 0 && (this.D.x += i * (s.height - this.distortY2) * this.sin, this.C.x -= i * (s.height + this.distortY2) * this.sin, this.D.y += (s.height - this.distortY2) * (this.cos - 1), this.C.y += (s.height + this.distortY2) * (this.cos - 1), this.A.x += this.distortY1 * this.sin, this.B.x += this.distortY1 * this.sin, this.A.y -= this.distortY1 * (1 - this.cos), this.B.y += this.distortY1 * (1 - this.cos)), this.calculateArms(), this.setControls(), this.Atop.x += this.ABx * (this.cos * this.kt - 1), this.Atop.y -= this.ABx * this.sin * this.kt, this.Btop.x += this.ABx * (1 - this.cos * this.kt), this.Btop.y -= this.ABx * this.sin * this.kt, this.Dbottom.x += this.CDx * (this.cos * this.kt - 1), this.Dbottom.y -= this.CDx * this.sin * this.kt, this.Cbottom.x += this.CDx * (1 - this.cos * this.kt), this.Cbottom.y -= this.CDx * this.sin * this.kt\r\n }\r\n setFish() {\r\n var t = this._parameters;\r\n this.calculateArms(), this.setControls(), this.Atop.y -= 2 * t.bend * this.kAB * (2 * this.ADy + this.BCy), this.Btop.y += 2 * t.bend * this.kAB * (this.ADy + 2 * this.BCy), this.Dbottom.y += 2 * t.bend * this.kCD * (2 * this.ADy + this.BCy), this.Cbottom.y -= 2 * t.bend * this.kCD * (this.ADy + 2 * this.BCy)\r\n }\r\n setFlag() {\r\n this.calculateArms(), this.setControls();\r\n var t = this._parameters;\r\n this.Atop.y += 3 * t.bend * this.kAB * (this.ADy + this.BCy), this.Btop.y -= 3 * t.bend * this.kAB * (this.ADy + this.BCy), this.Dbottom.y += 3 * t.bend * this.kCD * (this.ADy + this.BCy), this.Cbottom.y -= 3 * t.bend * this.kCD * (this.ADy + this.BCy)\r\n }\r\n setBulge() {\r\n this.calculateArms(), this.setControls(), this._parameters, this.Atop.x += this.ABx * (this.cos * this.kt - 1), this.Atop.y -= this.ABx * this.sin * this.kt, this.Btop.x += this.ABx * (1 - this.cos * this.kt), this.Btop.y -= this.ABx * this.sin * this.kt, this.Dbottom.x += this.CDx * (this.cos * this.kt - 1), this.Dbottom.y += this.CDx * this.sin * this.kt, this.Cbottom.x += this.CDx * (1 - this.cos * this.kt), this.Cbottom.y += this.CDx * this.sin * this.kt\r\n }\r\n setArch() {\r\n this.calculateArms(), this.setControls(), this._parameters, this.Atop.x += this.ABx * (this.cos * this.kt - 1), this.Atop.y -= this.ABx * this.sin * this.kt, this.Btop.x += this.ABx * (1 - this.cos * this.kt), this.Btop.y -= this.ABx * this.sin * this.kt, this.Dbottom.x += this.CDx * (this.cos * this.kt - 1), this.Dbottom.y -= this.CDx * this.sin * this.kt, this.Cbottom.x += this.CDx * (1 - this.cos * this.kt), this.Cbottom.y -= this.CDx * this.sin * this.kt\r\n }\r\n setArcLower() {\r\n this.calculateArms(), this.setControls(), this._parameters, this.Dbottom.x += this.CDx * (this.cos * this.kt - 1), this.Dbottom.y += this.CDx * this.sin * this.kt, this.Cbottom.x += this.CDx * (1 - this.cos * this.kt), this.Cbottom.y += this.CDx * this.sin * this.kt\r\n }\r\n setArcUpper() {\r\n this.calculateArms(), this.setControls(), this._parameters, this.Atop.x += this.ABx * (this.cos * this.kt - 1), this.Atop.y -= this.ABx * this.sin * this.kt, this.Btop.x += this.ABx * (1 - this.cos * this.kt), this.Btop.y -= this.ABx * this.sin * this.kt\r\n }\r\n setSqueeze() {\r\n this.calculateArms(), this.setControls();\r\n var t = this._parameters;\r\n this.Atop.y -= t.bend * this.kAB * this.ADy, this.Btop.y -= t.bend * this.kAB * this.BCy, this.Dbottom.y += t.bend * this.kCD * this.ADy, this.Cbottom.y += t.bend * this.kCD * this.BCy, this.Bright.x -= t.bend * this.kBC * this.ABx, this.Cright.x -= t.bend * this.kBC * this.CDx, this.Aleft.x += t.bend * this.kAD * this.ABx, this.Dleft.x += t.bend * this.kAD * this.CDx\r\n }\r\n setInflate() {\r\n this.calculateArms(), this.setControls();\r\n var t = this._parameters,\r\n s = (this.ADy + this.BCy) / 2,\r\n i = (this.ABx + this.CDx) / 2;\r\n this.Atop.y -= t.bend * this.kAB * s, this.Btop.y -= t.bend * this.kAB * s, this.Dbottom.y += t.bend * this.kCD * s, this.Cbottom.y += t.bend * this.kCD * s, this.Bright.x += t.bend * this.kBC * i, this.Cright.x += t.bend * this.kBC * i, this.Aleft.x -= t.bend * this.kAD * i, this.Dleft.x -= t.bend * this.kAD * i\r\n }\r\n setRise() {\r\n var t = this._parameters;\r\n this.A.y += t.bend * this.kAB * source.height, this.D.y += t.bend * this.kCD * source.height, this.B.y -= t.bend * this.kAB * source.height, this.C.y -= t.bend * this.kCD * source.height, this.calculateArms(), this.setControls();\r\n var s = this.ADy + this.BCy;\r\n this.Atop.y += t.bend * this.kAB * s, this.Btop.y -= t.bend * this.kAB * s, this.Dbottom.y += t.bend * this.kCD * s, this.Cbottom.y -= t.bend * this.kCD * s\r\n }\r\n setWaveUpper() {\r\n this.calculateArms(), this.setControls();\r\n var t = this._parameters;\r\n this.Atop.y += 3 * t.bend * this.kAB * (this.ADy + this.BCy), this.Btop.y -= 3 * t.bend * this.kAB * (this.ADy + this.BCy)\r\n }\r\n setWaveLower() {\r\n this.calculateArms(), this.setControls();\r\n var t = this._parameters;\r\n this.Dbottom.y += 3 * t.bend * this.kCD * (this.ADy + this.BCy), this.Cbottom.y -= 3 * t.bend * this.kCD * (this.ADy + this.BCy)\r\n }\r\n calculateArms() {\r\n this.ABx = (this.B.x - this.A.x) / 3, this.ABy = (this.B.y - this.A.y) / 3, this.CDx = (this.C.x - this.D.x) / 3, this.CDy = (this.C.y - this.D.y) / 3, this.BCx = (this.C.x - this.B.x) / 3, this.BCy = (this.C.y - this.B.y) / 3, this.ADx = (this.D.x - this.A.x) / 3, this.ADy = (this.D.y - this.A.y) / 3\r\n }\r\n getNewSegment(t, s, i, e) {\r\n var o = this.T1,\r\n r = o * o * o,\r\n n = 1 - o,\r\n a = n * n * n,\r\n y = this.T2,\r\n x = y * y * y,\r\n c = 1 - y,\r\n A = c * c * c,\r\n C = 3 * o * n,\r\n d = {};\r\n d.x = (i.x - a * t.x - r * s.x) / C, d.y = (i.y - a * t.y - r * s.y) / C;\r\n var b = 3 * y * c,\r\n p = {};\r\n p.x = (e.x - A * t.x - x * s.x) / b, p.y = (e.y - A * t.y - x * s.y) / b;\r\n var B = {};\r\n B.x = (y * d.x - o * p.x) / (n * p.x - c * d.x), B.y = (y * d.y - o * p.y) / (n * p.y - c * d.y), isNaN(B.x) && (B.x = 0), isNaN(B.y) && (B.y = 0);\r\n var l = {},\r\n D = {};\r\n D.x = d.x / (n * B.x + o), D.y = d.y / (n * B.y + o), l.x = B.x * D.x, l.y = B.y * D.y;\r\n var m = new h(l.x, l.y),\r\n k = new h(D.x, D.y);\r\n return [m.x, m.y, k.x, k.y, s.x, s.y]\r\n }\r\n }\r\n}, function(t, s) {\r\n t.exports = class {\r\n constructor(t = 0, s = 0) {\r\n if (\"number\" != typeof t || \"number\" != typeof s) throw new Exception(\"Invalid points\");\r\n let i = t || 0,\r\n h = s || 0;\r\n i && (i = parseInt(1e3 * i) / 1e3), h && (h = parseInt(1e3 * h) / 1e3), this._props = [i, h], this[0] = i, this[1] = h\r\n }\r\n set x(t) {\r\n this[0] = t, this._props[0] = t\r\n }\r\n set y(t) {\r\n this[1] = t, this._props[1] = t\r\n }\r\n get x() {\r\n return this._props[0]\r\n }\r\n get y() {\r\n return this._props[1]\r\n }\r\n }\r\n}, function(t, s) {\r\n t.exports = class {\r\n constructor(t, s, i, h) {\r\n this.x = t, this.y = s, this.width = i, this.height = h, this.top = s, this.bottom = s + h, this.left = t, this.right = t + i\r\n }\r\n }\r\n}, function(t, s, i) {\r\n i(0);\r\n t.exports = class {\r\n constructor(t) {\r\n this.type = t.type || 0, this.bend = t.bend || 0, this.distortV = t.distortV || 0, this.distortH = t.distortH || 0, this.vertical = t.vertical || !1\r\n }\r\n }\r\n}, function(t, s, i) {\r\n var h = i(1),\r\n e = i(0),\r\n o = i(2),\r\n r = \"C\",\r\n n = \"Q\",\r\n a = \"L\",\r\n y = \"M\",\r\n x = \"Z\",\r\n c = class {\r\n constructor(t) {\r\n this.data = [], this.commands = [], this.parseString(t)\r\n }\r\n parseString(t) {\r\n var s = [],\r\n i = [];\r\n t.match(/[A-Za-z][0-9\\.\\s\\,\\-]+\\d/g).forEach(t => {\r\n var h = t[0],\r\n e = t.match(/[\\d\\.\\-]+/g);\r\n s.push(h), i.push(...e.map(parseFloat))\r\n }), this.commands = s, this.data = i\r\n }\r\n scale(t, s = 0) {\r\n 0 == s && (s = t);\r\n const i = this.data;\r\n for (let h = 0; h < i.length; h += 2) i[h] *= t, i[h + 1] *= s\r\n }\r\n warp(t) {\r\n let s = new e(t, this.calcRectangle()),\r\n i = this.commands,\r\n o = this.data,\r\n n = [],\r\n a = new h,\r\n y = new h,\r\n c = new h,\r\n A = new h,\r\n C = 0,\r\n d = new h;\r\n for (let t = 0; t < i.length; t++) {\r\n switch (i[t]) {\r\n case \"L\":\r\n i[t] = r, a = new h((2 * A[0] + o[C]) / 3, (2 * A[1] + o[C + 1]) / 3), y = new h((A[0] + 2 * o[C]) / 3, (A[1] + 2 * o[C + 1]) / 3), d = new h(o[C], o[C + 1]), n = n.concat(s.changeCubic(A, a, y, d)), A = d, C += 2;\r\n break;\r\n case \"Q\":\r\n i[t] = r, a = new h((2 * o[C] + A.x) / 3, (2 * o[C + 1] + A.y) / 3), y = new h((2 * o[C] + o[C + 2]) / 3, (2 * o[C + 1] + o[C + 3]) / 3), d = new h(o[C + 2], o[C + 3]), n = n.concat(s.changeCubic(A, a, y, d)), A = d, C += 4;\r\n break;\r\n case \"M\":\r\n A = c = new h(o[C], o[C + 1]), n = n.concat(s.changePoint(A)), C += 2;\r\n break;\r\n case \"C\":\r\n n = n.concat(s.changeCubic(A, new h(o[C], o[C + 1]), new h(o[C + 2], o[C + 3]), new h(o[C + 4], o[C + 5]))), A = new h(o[C + 4], o[C + 5]), C += 6;\r\n break;\r\n case x:\r\n A = c\r\n }\r\n }\r\n this.data = n\r\n }\r\n output() {\r\n var t = [],\r\n s = this.data.slice();\r\n for (let i = 0; i < this.commands.length; i++) {\r\n let h = this.commands[i],\r\n e = 0;\r\n switch (h) {\r\n case \"M\":\r\n case \"L\":\r\n e = 2;\r\n break;\r\n case \"Q\":\r\n e = 4;\r\n break;\r\n case \"C\":\r\n e = 6\r\n }\r\n t.push(h + s.splice(0, e).join(\" \"))\r\n }\r\n return t.join(\" \")\r\n }\r\n calcRectangle() {\r\n let t = this.commands,\r\n s = this.data;\r\n for (var i, h, e = {\r\n xMin: 1 / 0,\r\n yMin: 1 / 0,\r\n xMax: -1 / 0,\r\n yMax: -1 / 0\r\n }, x = 0, c = 0; c < t.length; c++) {\r\n switch (t[c]) {\r\n case y:\r\n case a:\r\n i = s[x], h = s[x + 1], x += 2;\r\n break;\r\n case n:\r\n i = s[x + 2], h = s[x + 3], x += 4;\r\n break;\r\n case r:\r\n i = s[x + 4], h = s[x + 5], x += 6\r\n }\r\n e.xMin = Math.min(i, e.xMin), e.xMax = Math.max(i, e.xMax), e.yMin = Math.min(h, e.yMin), e.yMax = Math.max(h, e.yMax)\r\n }\r\n return e.xMax == -1 / 0 ? null : new o(e.xMin, e.yMin, e.xMax - e.xMin, e.yMax - e.yMin)\r\n }\r\n };\r\n t.exports = c, \"undefined\" != typeof window && (window.Path = c)\r\n}]);","import React, { useEffect, useMemo, useState } from 'react';\r\nimport { use3dddPlus } from '../../store';\r\nimport { shallow } from 'zustand/shallow';\r\nimport { Tab, initTE } from 'tw-elements';\r\nimport { Layers } from './Layers';\r\nimport { Properties } from './Properties';\r\nimport { tabs } from './constants';\r\nimport { ColorPalette } from '../colorPallet';\r\nimport './rightMenu.css';\r\nimport '../../services/path-warp.js';\r\n\r\nexport const Rightmenu: React.FC = () => {\r\n initTE({ Tab });\r\n\r\n const canvas = use3dddPlus.getState().fabricCanvas;\r\n const [\r\n currentSelection,\r\n activeSelection,\r\n allColor,\r\n setToggleSaveLogo,\r\n validateColorAvailability,\r\n availableColorCodes,\r\n customOptions\r\n ] =\r\n use3dddPlus(\r\n (state) => [\r\n state.currentSelection,\r\n state.activeSelection,\r\n state.allColor,\r\n state.setToggleSaveLogo,\r\n state.validateColorAvailability,\r\n state.availableColorCodes,\r\n state.customOptions\r\n ],\r\n shallow\r\n );\r\n\r\n const [activeTab, setActiveTab] = useState(1);\r\n const [isNextClicked, setIsNextClicked] = useState(false);\r\n const [displayPallet, setDisplayPallet] = useState({\r\n visible: false,\r\n property: '',\r\n color: '',\r\n callback: null,\r\n });\r\n const [position, setPosition] = useState<{ x: number; y: number } | null>(\r\n null\r\n );\r\n\r\n useEffect(() => {\r\n if (activeSelection) {\r\n use3dddPlus.setState({ textInfo: activeSelection.text });\r\n }\r\n }, [activeSelection]);\r\n\r\n useEffect(() => {\r\n switch (currentSelection) {\r\n case 'text':\r\n case 'group':\r\n case 'path':\r\n case 'selectAll':\r\n case 'none':\r\n setActiveTab(1);\r\n break;\r\n case 'layer':\r\n case 'activeSelection':\r\n setActiveTab(2);\r\n break;\r\n }\r\n }, [currentSelection]);\r\n\r\n const conflictColors = useMemo(() => {\r\n return allColor.filter((colorCode: string) => availableColorCodes.indexOf(colorCode.toUpperCase()) < 0);\r\n }, [allColor]);\r\n\r\n const onSave = () => {\r\n if (!use3dddPlus.getState().mylogoAdded) {\r\n use3dddPlus.getState().toastMessages.noChangesMade();\r\n return\r\n }\r\n const validation = validateColorAvailability(allColor);\r\n if (!validation) {\r\n const decType = customOptions?.decorationType ?? '';\r\n use3dddPlus.getState().toastMessages.saveLogoColorNotAvailable(decType);\r\n return\r\n }\r\n canvas.discardActiveObject();\r\n canvas.renderAll();\r\n if (!conflictColors || conflictColors.length < 1) {\r\n setIsNextClicked(false);\r\n use3dddPlus.setState({ showCrossSave: true });\r\n if (canvas.getObjects().length > 2) {\r\n const hasTransparent = allColor.includes('transparent');\r\n const colorCount = hasTransparent\r\n ? allColor.length - 1\r\n : allColor.length;\r\n if (colorCount < 9) {\r\n setToggleSaveLogo('save', true, 'Save Logo', {});\r\n } else {\r\n use3dddPlus.getState().toastMessages.noOfColors();\r\n }\r\n } else {\r\n use3dddPlus.getState().toastMessages.noIteminCanvas();\r\n }\r\n } else {\r\n setIsNextClicked(true);\r\n }\r\n };\r\n\r\n const removeColorPalette = () => {\r\n setDisplayPallet({\r\n visible: false,\r\n property: '',\r\n color: '',\r\n callback: null,\r\n });\r\n };\r\n\r\n useEffect(() => {\r\n window.addEventListener('click', removeColorPalette);\r\n const unSub = use3dddPlus.subscribe(\r\n (state) => state.colorFill,\r\n (_current, _previous) => {\r\n // Handle color fill changes\r\n }\r\n );\r\n return () => {\r\n window.removeEventListener('click', removeColorPalette);\r\n unSub();\r\n };\r\n }, []);\r\n\r\n return (\r\n <div className=\"relative flex flex-col flex-1 h-full gap-3 px-6 pt-6 pb-2 text-left\">\r\n <div className=\"h-10\">\r\n <h1 className=\"text-2xl font-bold\">Edit Design</h1>\r\n </div>\r\n\r\n <div className=\"flex h-10\">\r\n {tabs.map((tab) => (\r\n <button\r\n key={tab.id}\r\n className={`${activeTab === tab.id\r\n ? 'bg-[#E11A38] text-white w-1/2'\r\n : 'bg-white text-gray-800 border border-slate-300 w-1/2'\r\n } focus:outline-none uppercase text-sm font-bold h-full`}\r\n onClick={() => {\r\n setActiveTab(tab.id);\r\n if (tab.id === 1) {\r\n use3dddPlus.setState({ currentSelection: 'none' });\r\n canvas.discardActiveObject();\r\n canvas.renderAll();\r\n }\r\n if (tab.id === 2) {\r\n use3dddPlus.setState({ currentSelection: 'layer' });\r\n }\r\n }}\r\n >\r\n {tab.label}\r\n </button>\r\n ))}\r\n </div>\r\n <div className=\"flex-1 w-full h-[80%] p-1 bg-gray-100\">\r\n {activeTab === 1 && (\r\n <Properties\r\n textSelected={activeSelection}\r\n activeTab={activeTab}\r\n canvas={canvas}\r\n setIsNextClicked={setIsNextClicked}\r\n onSave={onSave}\r\n conflictColors={conflictColors}\r\n isNextClicked={isNextClicked}\r\n setDisplayPallet={setDisplayPallet}\r\n setPosition={setPosition}\r\n />\r\n )}\r\n {activeTab === 2 && (\r\n <>\r\n {(currentSelection === 'layer' ||\r\n currentSelection === 'activeSelection') && (\r\n <Layers canvas={canvas} onSave={onSave} />\r\n )}\r\n </>\r\n )}\r\n </div>\r\n {displayPallet.visible && (\r\n <ColorPalette\r\n mainClass=\"left-0\"\r\n handleColorChange={(color) => {\r\n displayPallet.callback(displayPallet.property, color);\r\n setDisplayPallet({\r\n visible: false,\r\n property: '',\r\n color: '',\r\n callback: null,\r\n });\r\n }}\r\n style={\r\n position\r\n ? {\r\n position: 'fixed',\r\n left: position.x - 450,\r\n top: position.y - 5,\r\n width: '450px',\r\n }\r\n : { display: 'none' }\r\n }\r\n />\r\n )}\r\n </div>\r\n );\r\n};\r\n","import React, { useEffect, useState } from 'react';\r\n// import { CARD_BG_COLOR } from '../../theme';\r\n// import { RiArrowDownSFill } from 'react-icons/ri';\r\nimport Select, { components } from 'react-select';\r\nconst DropdownIndicator = (props) => {\r\n return (\r\n <components.DropdownIndicator {...props}>\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 20 20\"\r\n fill=\"currentColor\"\r\n className={`h-5 w-5 text-[#727272]`}\r\n >\r\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\" />\r\n </svg>\r\n </components.DropdownIndicator>\r\n );\r\n};\r\nconst style = {\r\n control: (base,state) => ({\r\n ...base,\r\n // border: '1px solid #BEBEBE',\r\n border: state.isFocused ? 0 : 0,\r\n // This line disable the blue border\r\n boxShadow: state.isFocused ? 0 : 0,\r\n '&:hover': {\r\n border: state.isFocused ? 0 : 0\r\n },\r\n\r\n // boxShadow: 'none',\r\n // '&:focus': {\r\n // border: 0,\r\n // },\r\n // '&:hover': {\r\n // border: '1px solid #BEBEBE',\r\n // },\r\n }),\r\n option: (base, { isFocused, isSelected }) => {\r\n return {\r\n ...base,\r\n backgroundColor: isSelected ? '#e11a38' : '#FFFFFF',\r\n fontWeight: isFocused ? 700 : 400,\r\n color: isSelected && '#ffffff',\r\n ':active': {\r\n backgroundColor: isSelected && '#ffffff',\r\n color: isSelected && '#000',\r\n fontWeight: isSelected && 700,\r\n },\r\n };\r\n },\r\n};\r\nconst ListDropdown = (props) => {\r\n const { dropdownData, handleSelected } = props;\r\n const [data, setData] = useState([]);\r\n\r\n useEffect(() => {\r\n let a = [];\r\n dropdownData.forEach((element) => {\r\n a.push({ value: element, label: element });\r\n });\r\n setData(\r\n a.sort((a, b) => {\r\n if (a.label < b.label) {\r\n return -1;\r\n }\r\n if (a.label > b.label) {\r\n return 1;\r\n }\r\n return 0;\r\n })\r\n );\r\n }, [dropdownData]);\r\n return (\r\n <>\r\n <div className=\"w-full relative\">\r\n <div className=\"w-full z-10 absolute\">\r\n <Select\r\n className=\"basic-single focus:!outline-none !border-0 focus:!border-0 focus:!ring-0 !ring-0 \"\r\n defaultValue={{\r\n value: dropdownData[0],\r\n label: dropdownData[0],\r\n }}\r\n onChange={(e) => handleSelected(e.value)}\r\n isSearchable={true}\r\n name=\"categories\"\r\n options={data}\r\n components={{\r\n IndicatorSeparator: () => null,\r\n DropdownIndicator,\r\n }}\r\n styles={style}\r\n />\r\n </div>\r\n </div>\r\n </>\r\n );\r\n};\r\nexport default ListDropdown;\r\n","export const decorationData =\r\n // prettier-ignore\r\n [\r\n {id:1, code:'',name:'Direct Embroidery', description:'', type:'decoration-type', linkedNodes:[], threeD:true,icon:'DirectEmbroidaryIcon',thumbnail:'',tags:''},\r\n {id:2, code:'',name:'Leather', description:'', type:'decoration-type', linkedNodes:[], threeD:true,icon:'NewLeatherIcon',thumbnail:'',tags:''},\r\n {id:3, code:'',name:'Patch', description:'', type:'decoration-type', linkedNodes:[], threeD:true,icon:'NewPatchIcon',thumbnail:'',tags:''},\r\n {id:4, code:'',name:'Transfer', description:'', type:'decoration-type', linkedNodes:[], threeD:true,icon:'TransferIcon',thumbnail:'',tags:''},\r\n {id:5, code:'',name:'Applique', description:'', type:'decoration-type', linkedNodes:[], threeD:true,icon:'NewAppliqueIcon',thumbnail:'',tags:''},\r\n {id:6, code:'',name:'Clip', description:'', type:'decoration-type', linkedNodes:[], threeD:true,icon:'Clip',thumbnail:'',tags:''},\r\n {id:7, code:'91-APPGLHR',name:'Genuine Etched Leather', description:'', type:'decoration-sub-type', linkedNodes:[2], threeD:true,icon:'EtchedLeatherIcon',thumbnail:'',tags:''},\r\n {id:8, code:'91-APPGLDB',name:'Genuine Debossed Leather', description:'', type:'decoration-sub-type', linkedNodes:[2], threeD:true,icon:'DebossedLeatherIcon',thumbnail:'',tags:''},\r\n {id:9, code:'91-APPFLHR',name:'Faux Etched Leather ', description:'', type:'decoration-sub-type', linkedNodes:[2], threeD:true,icon:'EtchedLeatherIcon',thumbnail:'',tags:''},\r\n {id:10, code:'91-APPFLDB',name:'Faux Debossed Leather ', description:'', type:'decoration-sub-type', linkedNodes:[2], threeD:true,icon:'DebossedLeatherIcon',thumbnail:'',tags:''},\r\n// {id:11, code:'',name:'Genuine Thick Leather ', description:'', type:'decoration-sub-type', linkedNodes:[2], threeD:true,icon:'LeatherIcon',thumbnail:'',tags:''},\r\n {id:12, code:'91-PATCHEMB',name:'Embroidered Patch', description:'', type:'decoration-sub-type', linkedNodes:[3], threeD:true,icon:'EmbroideredPatchIcon',thumbnail:'',tags:''},\r\n {id:13, code:'91-PATCHSUB',name:'Sublimated Patch', description:'', type:'decoration-sub-type', linkedNodes:[3], threeD:true,icon:'SublimatedPatchIcon',thumbnail:'',tags:''},\r\n {id:14, code:'91-PATCHWOV',name:'Woven Patch', description:'', type:'decoration-sub-type', linkedNodes:[3], threeD:true,icon:'WovenPatchIcon',thumbnail:'',tags:''},\r\n {id:15, code:'91-PATCHPVC',name:'Rubber Patch', description:'', type:'decoration-sub-type', linkedNodes:[3], threeD:true,icon:'RubberPatchIcon',thumbnail:'',tags:''},\r\n {id:16, code:'91-DIRSILICONE',name:'Silicon Transfers', description:'', type:'decoration-sub-type', linkedNodes:[4], threeD:true,icon:'SiliconTransferIcon',thumbnail:'',tags:''},\r\n {id:17, code:'91-RPOLYPRESS',name:'Poly Press Transfers', description:'', type:'decoration-sub-type', linkedNodes:[4], threeD:true,icon:'PolyPressTransferIcon',thumbnail:'',tags:''},\r\n {id:18, code:'91-TRANSFC',name:'Full Color Transfer ', description:'', type:'decoration-sub-type', linkedNodes:[4], threeD:true,icon:'FullColorTransferIcon',thumbnail:'',tags:''},\r\n {id:19, code:'91-APPFTL',name:'Felt / Twill Applique', description:'', type:'decoration-sub-type', linkedNodes:[5], threeD:true,icon:'FeltAppliqueIcon',thumbnail:'',tags:''},\r\n {id:20, code:'91-WOVENFRT',name:'Woven Label Applique', description:'', type:'decoration-sub-type', linkedNodes:[5], threeD:true,icon:'WovenLabelAppliqueIcon',thumbnail:'',tags:''},\r\n {id:21, code:'91-APPFTD',name:'Distressed Twill Applique', description:'', type:'decoration-sub-type', linkedNodes:[5], threeD:true,icon:'DistressedTwillAppliqueIcon',thumbnail:'',tags:''},\r\n {id:22, code:'91-APPCRK',name:'Genuine Cork Applique', description:'', type:'decoration-sub-type', linkedNodes:[5], threeD:true,icon:'CorkAppliqueIcon',thumbnail:'',tags:''},\r\n {id:23, code:'91-CLPLTHR',name:'Natural Leather Clip', description:'', type:'decoration-sub-type', linkedNodes:[6], threeD:false,icon:'Clip',thumbnail:'',tags:''},\r\n {id:24, code:'91-CLPLTHR',name:'Faux Leather Clip ', description:'', type:'decoration-sub-type', linkedNodes:[6], threeD:false,icon:'Clip',thumbnail:'',tags:''},\r\n {id:25, code:'91-CLPWOVEN',name:'Woven Label Clip ', description:'', type:'decoration-sub-type', linkedNodes:[6], threeD:false,icon:'Clip',thumbnail:'',tags:''},\r\n {id:26, code:'',name:'Rust', description:'', type:'decoration-type-color', linkedNodes:[8], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/leather/G100.jpg',tags:''},\r\n {id:27, code:'',name:'Tan', description:'', type:'decoration-type-color', linkedNodes:[8], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/leather/G102.jpg',tags:''},\r\n {id:28, code:'',name:'Brown', description:'', type:'decoration-type-color', linkedNodes:[8], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/leather/G104.jpg',tags:''},\r\n {id:29, code:'',name:'Black', description:'', type:'decoration-type-color', linkedNodes:[8], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/leather/G106.jpg',tags:''},\r\n {id:30, code:'',name:'Apple Green', description:'', type:'decoration-type-color', linkedNodes:[9,24], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/APPLE-GREEN-thumbnail.jpg',tags:''},\r\n {id:31, code:'',name:'Balsa', description:'', type:'decoration-type-color', linkedNodes:[9,24], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/BALSA-thumbnail.jpg',tags:''},\r\n {id:32, code:'',name:'Black', description:'', type:'decoration-type-color', linkedNodes:[9,24], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/BLACK-thumbnail.jpg',tags:''},\r\n {id:33, code:'',name:'Buff', description:'', type:'decoration-type-color', linkedNodes:[9,24], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/BUFF-thumbnail.jpg',tags:''},\r\n {id:34, code:'',name:'Chili', description:'', type:'decoration-type-color', linkedNodes:[9,24], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/CHILI-thumbnail.jpg',tags:''},\r\n {id:35, code:'',name:'Graphite', description:'', type:'decoration-type-color', linkedNodes:[9,24], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/GRAPHITE-thumbnail.jpg',tags:''},\r\n {id:36, code:'',name:'Java ', description:'', type:'decoration-type-color', linkedNodes:[9,24], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/JAVA-thumbnail.jpg',tags:''},\r\n {id:37, code:'',name:'Lipstick', description:'', type:'decoration-type-color', linkedNodes:[9,24], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/LIPSTICK-thumbnail.jpg',tags:''},\r\n {id:38, code:'',name:'Ocean', description:'', type:'decoration-type-color', linkedNodes:[9,24], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/OCEAN-thumbnail.jpg',tags:''},\r\n {id:39, code:'',name:'Sage', description:'', type:'decoration-type-color', linkedNodes:[9,24], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/SAGE-thumbnail.jpg',tags:''},\r\n {id:40, code:'',name:'Snow', description:'', type:'decoration-type-color', linkedNodes:[9,24], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/SNOW-thumbnail.jpg',tags:''},\r\n {id:41, code:'',name:'Steel', description:'', type:'decoration-type-color', linkedNodes:[9,24], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/STEEL-thumbnail.jpg',tags:''},\r\n {id:42, code:'',name:'Straw', description:'', type:'decoration-type-color', linkedNodes:[9,24], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/STRAW-thumbnail.jpg',tags:''},\r\n {id:43, code:'',name:'Williamsburg', description:'', type:'decoration-type-color', linkedNodes:[9,24], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/WILLIAMSBURG-thumbnail.jpg',tags:''},\r\n {id:44, code:'',name:'Royal Metallic Silver', description:'', type:'decoration-type-color', linkedNodes:[9,24], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/ROYAL_METALLIC-thumbnail.jpg',tags:''},\r\n {id:45, code:'',name:'Rustic Brown Metallic Silver', description:'', type:'decoration-type-color', linkedNodes:[9,24], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/RUSTIC-BROWN_METALLIC-thumbnail.jpg',tags:''},\r\n {id:46, code:'',name:'Pink ', description:'', type:'decoration-type-color', linkedNodes:[9,24], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/PINK-thumbnail.jpg',tags:''},\r\n {id:47, code:'',name:'Turquoise ', description:'', type:'decoration-type-color', linkedNodes:[9,24], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/TURQUOISE-thumbnail.jpg',tags:''},\r\n {id:48, code:'',name:'Bamboo ', description:'', type:'decoration-type-color', linkedNodes:[9,24], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/BAMBOO-thumbnail.jpg',tags:''},\r\n {id:49, code:'',name:'Natural Leather', description:'', type:'decoration-type-color', linkedNodes:[7,11,23], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/NATURAL-thumbnail.jpg',tags:''},\r\n {id:50, code:'',name:'Chestnut Leather', description:'', type:'decoration-type-color', linkedNodes:[7], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/CHESTNUT-thumbnail.jpg',tags:''},\r\n {id:51, code:'',name:'Brown', description:'', type:'decoration-ink-option', linkedNodes:[26,27], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/CORK-thumbnail.jpg',tags:''},\r\n {id:52, code:'',name:'Black', description:'', type:'decoration-ink-option', linkedNodes:[28,29], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/BLACK_METALLIC-thumbnail.jpg',tags:''},\r\n {id:53, code:'',name:'Tonal', description:'', type:'decoration-ink-option', linkedNodes:[28,29], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/CORK-thumbnail.jpg',tags:''},\r\n {id:54, code:'',name:'STANDARD SQUARE', description:'(W x H): 1.81 X 1.81', type:'decoration-type-shape', linkedNodes:[7,8,9,10,11,12,13,14,15,23,24,25], threeD:false,icon:'STANDARDSQUAREICON',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/decoration-shapes/standard_square.svg',tags:''},\r\n {id:55, code:'',name:'SMALL SQUARE', description:'(W x H): 1.5 X 1.5', type:'decoration-type-shape', linkedNodes:[7,8,9,10,11,12,13,14,15], threeD:false,icon:'SMALLSQUAREICON',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/decoration-shapes/small_square.svg',tags:''},\r\n {id:56, code:'',name:'STANDARD RECTANGLE', description:'(W x H): 2.44 X 1.39', type:'decoration-type-shape', linkedNodes:[7,8,9,10,11,12,13,14,15], threeD:false,icon:'STANDARDRECTANGLEICON',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/decoration-shapes/standard_rectangle.svg',tags:''},\r\n {id:57, code:'',name:'SMALL RECTANGLE', description:'(W x H): 1.97 X 1.97', type:'decoration-type-shape', linkedNodes:[7,8,9,10,11,12,13,14,15], threeD:false,icon:'SMALLRECTANGLEICON',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/decoration-shapes/small_rectangle.svg',tags:''},\r\n {id:58, code:'',name:'ROUNDED RECTANGLE', description:'(W x H): 1.57 X 1.57', type:'decoration-type-shape', linkedNodes:[7,8,9,10,11,12,13,14,15], threeD:false,icon:'ROUNDEDRECTANGLEICON',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/decoration-shapes/rounded_rectangle.svg',tags:''},\r\n {id:59, code:'',name:'ROUNDED TOP RECTANGLE', description:'(W x H): 3.01 X 1.73', type:'decoration-type-shape', linkedNodes:[7,8,9,10,11,12,13,14,15], threeD:false,icon:'ROUNDEDTOPRECTANGLEICON',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/decoration-shapes/rounded_top_rectangle.svg',tags:''},\r\n {id:60, code:'',name:'ROUNDED BOTTOM RECTANGLE', description:'(W x H): 2.62 X 1.34', type:'decoration-type-shape', linkedNodes:[7,8,9,10,11,12,13,14,15], threeD:false,icon:'ROUNDEDBOTTOMRECTANGLEICON',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/decoration-shapes/rounded_bottom_rectangle.svg',tags:''},\r\n {id:61, code:'',name:'STANDARD CIRCLE', description:'(W x H): 3.19 X 2.02', type:'decoration-type-shape', linkedNodes:[7,8,9,10,11,12,13,14,15], threeD:false,icon:'STANDARDCIRCLEICON',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/decoration-shapes/standard_circle.svg',tags:''},\r\n {id:62, code:'',name:'SMALL CIRCLE', description:'(W x H): 2.92 X 2.11', type:'decoration-type-shape', linkedNodes:[7,8,9,10,11,12,13,14,15], threeD:false,icon:'SMALLCIRLCEICON',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/decoration-shapes/small_cirlce.svg',tags:''},\r\n {id:63, code:'',name:'STANDARD OVAL', description:'(W x H): 2.92 X 2.11', type:'decoration-type-shape', linkedNodes:[7,8,9,10,11,12,13,14,15], threeD:false,icon:'STANDARDOVALICON',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/decoration-shapes/standard_oval.svg',tags:''},\r\n {id:64, code:'',name:'SMALL OVAL', description:'(W x H): 2.92 X 2.11', type:'decoration-type-shape', linkedNodes:[7,8,9,10,11,12,13,14,15], threeD:false,icon:'SMALLOVALICON',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/decoration-shapes/small_oval.svg',tags:''},\r\n {id:65, code:'',name:'REVERED TRIANGLE', description:'(W x H): 2.92 X 2.11', type:'decoration-type-shape', linkedNodes:[7,8,9,10,11,12,13,14,15], threeD:false,icon:'REVEREDTRIANGLEICON',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/decoration-shapes/revered_triangle.svg',tags:''},\r\n {id:66, code:'',name:'BADGE', description:'(W x H): 2.92 X 2.11', type:'decoration-type-shape', linkedNodes:[7,8,9,10,11,12,13,14,15], threeD:false,icon:'BADGEICON',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/decoration-shapes/badge.svg',tags:''},\r\n {id:67, code:'',name:'HEXAGON', description:'(W x H): 2.92 X 2.11', type:'decoration-type-shape', linkedNodes:[7,8,9,10,11,12,13,14,15], threeD:false,icon:'HEXAGONICON',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/decoration-shapes/hexagon.svg',tags:''},\r\n {id:68, code:'',name:'ELONGATED HEXAGON', description:'(W x H): 2.92 X 2.11', type:'decoration-type-shape', linkedNodes:[7,8,9,10,11,12,13,14,15], threeD:false,icon:'ELONGATEDHEXAGONICON',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/decoration-shapes/elongated_hexagon.svg',tags:''},\r\n {id:69, code:'',name:'ELONGATED DIAMOND', description:'(W x H): 2.92 X 2.11', type:'decoration-type-shape', linkedNodes:[7,8,9,10,11,12,13,14,15], threeD:false,icon:'ELONGATEDDIAMONDICON',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/decoration-shapes/elongated_diamond.svg',tags:''},\r\n {id:70, code:'',name:'Marrowed', description:'', type:'decoration-edge-type', linkedNodes:[12,13,14,15], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:71, code:'',name:'Satin Stitch Edge ', description:'', type:'decoration-edge-type', linkedNodes:[12,13,14,15], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:72, code:'',name:'Custom',description:'', type:'design-type', linkedNodes:[1,2,3,4,5,6], threeD:false,icon:'CustomDecorationIcon',thumbnail:'',tags:''},\r\n {id:73, code:'',name:'Team Decoration',description:'', type:'design-type', linkedNodes:[1], threeD:false,icon:'TeamDecorationIcon',thumbnail:'',tags:''},\r\n {id:74, code:'91-F1',name:'Design Concepts', description:'', type:'design-type', linkedNodes:[1,2,3,4,5,6], threeD:false,icon:'DesignConceptsIcon',thumbnail:'',tags:''},\r\n {id:75, code:'90-ND200',name:'Text (Wordings)', description:'', type:'design-style', linkedNodes:[73], threeD:true,icon:'WordingDecorationIcon',thumbnail:'',tags:''},\r\n {id:76, code:'90-TL11C',name:'Team Letters', description:'', type:'design-style', linkedNodes:[73], threeD:true,icon:'LetterDecorationIcon',thumbnail:'',tags:''},\r\n {id:77, code:'90-ND200',name:'Stock Mascots & Objects', description:'', type:'design-style', linkedNodes:[73], threeD:true,icon:'MascotDecorationIcon',thumbnail:'',tags:''},\r\n {id:78, code:'90-ND200',name:'Team Custom', description:'', type:'design-style', linkedNodes:[73], threeD:true,icon:'TeamCustomIcon',thumbnail:'',tags:''},\r\n {id:79, code:'91-F1',name:'Custom File Upload', description:'', type:'design-style', linkedNodes:[72], threeD:false,icon:'TeamCustom',thumbnail:'',tags:''},\r\n// {id:80, code:'',name:'Supporting File Upload', description:'', type:'design-style', linkedNodes:[72], threeD:false,icon:'TeamCustom',thumbnail:'',tags:''},\r\n {id:81, code:'91-F1',name:'My Logos', description:'', type:'design-style', linkedNodes:[72], threeD:false,icon:'TeamCustom',thumbnail:'',tags:''},\r\n {id:82, code:'',name:'Athletic - Design Concepts ', description:'', type:'design-style', linkedNodes:[74], threeD:false,icon:'AthleticIcon',thumbnail:'',tags:''},\r\n {id:83, code:'',name:'Resort & Golf - Design Concepts ', description:'', type:'design-style', linkedNodes:[74], threeD:false,icon:'ResortGolfIcon',thumbnail:'',tags:''},\r\n {id:84, code:'',name:'Outdoor - Design Concepts ', description:'', type:'design-style', linkedNodes:[74], threeD:false,icon:'OutdoorIcon',thumbnail:'',tags:''},\r\n {id:85, code:'',name:'ATHLETICBLOCK', description:'ATHLETIC BLOCK', type:'design-style-letters-font', linkedNodes:[75,76], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:86, code:'',name:'BALLPARK', description:'BALL PARK', type:'design-style-letters-font', linkedNodes:[75,76], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:87, code:'',name:'BLADE', description:'BLADE', type:'design-style-letters-font', linkedNodes:[75,76], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:88, code:'',name:'BOLT', description:'BOLT', type:'design-style-letters-font', linkedNodes:[75,76], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:89, code:'',name:'CENTURY', description:'CENTURY', type:'design-style-letters-font', linkedNodes:[75,76], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:90, code:'',name:'CITYBLOCK', description:'CITY BLOCK', type:'design-style-letters-font', linkedNodes:[75,76], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:91, code:'',name:'FANCYBLOCK', description:'FANCY BLOCK', type:'design-style-letters-font', linkedNodes:[75,76], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:92, code:'',name:'FORCE', description:'FORCE', type:'design-style-letters-font', linkedNodes:[75,76], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:93, code:'',name:'FULLBLOCK', description:'FULL BLOCK', type:'design-style-letters-font', linkedNodes:[75,76], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:94, code:'',name:'HARDBALL', description:'HARD BALL', type:'design-style-letters-font', linkedNodes:[75,76], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:95, code:'',name:'JERSEYBLOCK', description:'JERSEY BLOCK', type:'design-style-letters-font', linkedNodes:[75,76], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:96, code:'',name:'OLDENGLISH', description:'OLD ENGLISH', type:'design-style-letters-font', linkedNodes:[75,76], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:97, code:'',name:'PROBLOCK', description:'PRO BLOCK', type:'design-style-letters-font', linkedNodes:[75,76], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:98, code:'',name:'SPORTSCRIPT', description:'SPORT SCRIPT', type:'design-style-letters-font', linkedNodes:[75,76], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:99, code:'',name:'TIFFANY', description:'TIFFANY', type:'design-style-letters-font', linkedNodes:[75,76], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:100, code:'',name:'UNISCRIPT', description:'UNISCRIPT', type:'design-style-letters-font', linkedNodes:[75,76], threeD:false,icon:'',thumbnail:'',tags:''},\r\n// {id:101, code:'',name:'UNISCRIPT', description:'UNISCRIPT', type:'design-style-letters-font', linkedNodes:[75,76], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:102, code:'',name:'VELO', description:'VELO', type:'design-style-letters-font', linkedNodes:[75,76], threeD:false,icon:'',thumbnail:'',tags:''},\r\n\r\n\r\n{id:103, code:'',name:'ARWH001', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/ARWH001.svg',tags:'Arrows'},\r\n{id:104, code:'',name:'ARWH002', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/ARWH002.svg',tags:'Arrows'},\r\n{id:105, code:'',name:'BASE002', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/BASE002.svg',tags:'Balls,Baseball'},\r\n {id:106, code:'',name:'BDOG001', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/BDOG001.svg',tags:'Bulldogs'},\r\n {id:107, code:'',name:'BDOG003', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/BDOG003.svg',tags:'Bulldogs'},\r\n{id:108, code:'',name:'BDOG004', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/BDOG004.svg',tags:'Bulldogs'},\r\n {id:109, code:'',name:'BEAR004', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/BEAR004.svg',tags:'Bears'},\r\n {id:110, code:'',name:'BEAR005', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/BEAR005.svg',tags:'Bears'},\r\n{id:111, code:'',name:'BJAY001', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/BJAY001.svg',tags:'Cardinals'},\r\n{id:112, code:'',name:'BOLT002', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/BOLT002.svg',tags:'Bolts'},\r\n {id:113, code:'',name:'BULL002', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/BULL002.svg',tags:'Buffalo & Bulls'},\r\n {id:114, code:'',name:'CARD001', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/CARD001.svg',tags:'Cardinals'},\r\n{id:115, code:'',name:'CARD002', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/CARD002.svg',tags:'Cardinals'},\r\n {id:116, code:'',name:'CARD006', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/CARD006.svg',tags:'Cardinals'},\r\n {id:117, code:'',name:'CATS005', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/CATS005.svg',tags:'Cats'},\r\n {id:118, code:'',name:'CATS012', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/CATS012.svg',tags:'Cats'},\r\n{id:119, code:'',name:'CLVR001', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/CLVR001.svg',tags:'Leaves'},\r\n {id:120, code:'',name:'COBR001', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/COBR001.svg',tags:'Snakes'},\r\n {id:121, code:'',name:'COWB002', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/COWB002.svg',tags:'Cowboys & Rebels'},\r\n{id:122, code:'',name:'CRSS001', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/CRSS001.svg',tags:'Shapes'},\r\n {id:123, code:'',name:'DEVL001', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/DEVL001.svg',tags:'Devils'},\r\n {id:124, code:'',name:'DRGN001', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/DRGN001.svg',tags:'Dragons'},\r\n {id:125, code:'',name:'EAGL004', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/EAGL004.svg',tags:'Eagles'},\r\n {id:126, code:'',name:'EAGL005', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/EAGL005.svg',tags:'Eagles'},\r\n// {id:127, code:'',name:'EAGL005_bu', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/EAGL005_bu.svg',tags:'Eagles'},\r\n{id:128, code:'',name:'FLAG002', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/FLAG002.svg',tags:'Flags'},\r\n// {id:129, code:'',name:'FLAG002_RIGHT', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/FLAG002_RIGHT.svg',tags:'Flags'},\r\n{id:130, code:'',name:'FLGW002', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/FLGW002.svg',tags:'Flags'},\r\n// {id:131, code:'',name:'FLGW002_bu', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/FLGW002_bu.svg',tags:'Flags'},\r\n// {id:132, code:'',name:'FLGW002_NO_BORDER', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/FLGW002_NO_BORDER.svg',tags:'Flags'},\r\n// {id:133, code:'',name:'FLGW002_RIGHT', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/FLGW002_RIGHT.svg',tags:'Flags'},\r\n// {id:134, code:'',name:'FLGW002_RIGHT_bu', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/FLGW002_RIGHT_bu.svg',tags:'Flags'},\r\n// {id:135, code:'',name:'FLGW002_RIGHT_old', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/FLGW002_RIGHT_old.svg',tags:'Flags'},\r\n{id:136, code:'',name:'FLUR001', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/FLUR001.svg',tags:'Shapes'},\r\n{id:137, code:'',name:'FTBL001', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/FTBL001.svg',tags:'Football,Balls'},\r\n// {id:138, code:'',name:'FTBL001_OG', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/FTBL001_OG.svg',tags:'Football,Balls'},\r\n {id:139, code:'',name:'GATR001', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/GATR001.svg',tags:'Gators'},\r\n{id:140, code:'',name:'GOLF004', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/GOLF004.svg',tags:'Balls'},\r\n {id:141, code:'',name:'GRIZ001', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/GRIZ001.svg',tags:'Bears'},\r\n{id:142, code:'',name:'HATC002', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/HATC002.svg',tags:'Objects,Shapes'},\r\n {id:143, code:'',name:'HAWK001', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/HAWK001.svg',tags:'Hawks'},\r\n {id:144, code:'',name:'HAWK003', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/HAWK003.svg',tags:'Hawks'},\r\n {id:145, code:'',name:'HAWK004', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/HAWK004.svg',tags:'Hawks'},\r\n {id:146, code:'',name:'HORS002', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/HORS002.svg',tags:'Horses'},\r\n {id:147, code:'',name:'HORS003', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/HORS003.svg',tags:'Horses'},\r\n {id:148, code:'',name:'HORS006', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/HORS006.svg',tags:'Horses'},\r\n {id:149, code:'',name:'HRNT005', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/HRNT005.svg',tags:'Hornets'},\r\n {id:150, code:'',name:'INDN001', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/INDN001.svg',tags:'Indians'},\r\n {id:151, code:'',name:'KNGH003', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/KNGH003.svg',tags:'Knights'},\r\n {id:152, code:'',name:'KNGH004', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/KNGH004.svg',tags:'Knights'},\r\n// {id:153, code:'',name:'KNGH005', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/KNGH005.svg',tags:'Knights'},\r\n {id:154, code:'',name:'LION003', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/LION003.svg',tags:'Lions'},\r\n {id:155, code:'',name:'LION004', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/LION004.svg',tags:'Lions'},\r\n {id:156, code:'',name:'LION008', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/LION008.svg',tags:'Lions'},\r\n {id:157, code:'',name:'LNGH003', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/LNGH003.svg',tags:'Buffalo & Bulls'},\r\n{id:158, code:'',name:'LOGR002', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/LOGR002.svg',tags:'Logger'},\r\n {id:159, code:'',name:'OWLH001', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/OWLH001.svg',tags:'Owls'},\r\n {id:160, code:'',name:'PAWP001', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/PAWP001.svg',tags:'Paws'},\r\n{id:161, code:'',name:'PAWP004', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/PAWP004.svg',tags:'Paws'},\r\n {id:162, code:'',name:'PRTE005', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/PRTE005.svg',tags:'Pirates'},\r\n {id:163, code:'',name:'PTFL001', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/PTFL001.svg',tags:'Pirates'},\r\n {id:164, code:'',name:'RAMH003', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/RAMH003.svg',tags:'Rams'},\r\n {id:165, code:'',name:'RAMH008', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/RAMH008.svg',tags:'Rams'},\r\n {id:166, code:'',name:'RAVN001', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/RAVN001.svg',tags:'Ravens'},\r\n {id:167, code:'',name:'RAVN002', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/RAVN002.svg',tags:'Ravens'},\r\n {id:168, code:'',name:'RAZR003', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/RAZR003.svg',tags:'Boar'},\r\n {id:169, code:'',name:'REBL001', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/REBL001.svg',tags:'Cowboys & Rebels'},\r\n {id:170, code:'',name:'SKLL001', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/SKLL001.svg',tags:'Skulls'},\r\n{id:171, code:'',name:'STAR003', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/STAR003.svg',tags:'Ravens'},\r\n {id:172, code:'',name:'TIGR003', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/TIGR003.svg',tags:'Tigers'},\r\n// {id:173, code:'',name:'TIGR003_bu', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/TIGR003_bu.svg',tags:'Tigers'},\r\n// {id:174, code:'',name:'TIGR003_original', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/TIGR003_original.svg',tags:'Tigers'},\r\n// {id:175, code:'',name:'TIGR004 - Original', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/TIGR004 - Original.svg',tags:'Tigers'},\r\n {id:176, code:'',name:'TIGR004', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/TIGR004.svg',tags:'Tigers'},\r\n{id:177, code:'',name:'TIGR005 - Original', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/TIGR005 - Original.svg',tags:'Tigers'},\r\n {id:178, code:'',name:'TIGR005', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/TIGR005.svg',tags:'Tigers'},\r\n {id:179, code:'',name:'TRJN002', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/TRJN002.svg',tags:'Spartans'},\r\n {id:180, code:'',name:'TRJN004', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/TRJN004.svg',tags:'Spartans'},\r\n {id:181, code:'',name:'TRJN006', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/TRJN006.svg',tags:'Spartans'},\r\n {id:182, code:'',name:'TRND003', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/TRND003.svg',tags:'Bolts'},\r\n {id:183, code:'',name:'VIKG001', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/VIKG001.svg',tags:'Cavaliers & Vikings'},\r\n {id:184, code:'',name:'VIKG006', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/VIKG006.svg',tags:'Cavaliers & Vikings'},\r\n{id:185, code:'',name:'VIPR001', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/VIPR001.svg',tags:'Snakes'},\r\n{id:186, code:'',name:'WNGF001', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/WNGF001.svg',tags:'Wings'},\r\n {id:187, code:'',name:'WOLF005', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/WOLF005.svg',tags:'Wolves'},\r\n\r\n {id:188, code:'',name:'ATHLETICBLOCK', description:'', type:'design-style-letters-font', linkedNodes:[75], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/WOLF005.svg',tags:''},\r\n {id:189, code:'',name:'BALLPARK', description:'', type:'design-style-letters-font', linkedNodes:[75], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/WOLF005.svg',tags:''},\r\n {id:190, code:'',name:'BLADE', description:'', type:'design-style-letters-font', linkedNodes:[75], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/WOLF005.svg',tags:''},\r\n {id:191, code:'',name:'BOLT', description:'', type:'design-style-letters-font', linkedNodes:[75], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/WOLF005.svg',tags:''},\r\n {id:192, code:'',name:'CENTURY', description:'', type:'design-style-letters-font', linkedNodes:[75], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/WOLF005.svg',tags:''},\r\n {id:193, code:'',name:'CITYBLOCK', description:'', type:'design-style-letters-font', linkedNodes:[75], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-poc-assets/fonts/cityb.woff',tags:''},\r\n {id:194, code:'',name:'FANCYBLOCK', description:'', type:'design-style-letters-font', linkedNodes:[75], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/WOLF005.svg',tags:''},\r\n {id:195, code:'',name:'FORCE', description:'', type:'design-style-letters-font', linkedNodes:[75], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/WOLF005.svg',tags:''},\r\n {id:196, code:'',name:'FULLBLOCK', description:'', type:'design-style-letters-font', linkedNodes:[75], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/WOLF005.svg',tags:''},\r\n {id:197, code:'',name:'HARDBALL', description:'', type:'design-style-letters-font', linkedNodes:[75], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/WOLF005.svg',tags:''},\r\n {id:198, code:'',name:'JERSEYBLOCK', description:'', type:'design-style-letters-font', linkedNodes:[75], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/WOLF005.svg',tags:''},\r\n {id:199, code:'',name:'OLDENGLISH', description:'', type:'design-style-letters-font', linkedNodes:[75], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/WOLF005.svg',tags:''},\r\n {id:200, code:'',name:'PROBLOCK', description:'', type:'design-style-letters-font', linkedNodes:[75], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-poc-assets/fonts/pro_block.woff',tags:''},\r\n {id:201, code:'',name:'SPORTSCRIPT', description:'', type:'design-style-letters-font', linkedNodes:[75], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/WOLF005.svg',tags:''},\r\n {id:202, code:'',name:'TIFFANY', description:'', type:'design-style-letters-font', linkedNodes:[75], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-poc-assets/fonts/tiffany.woff',tags:''},\r\n {id:203, code:'',name:'UNISCRIPT', description:'', type:'design-style-letters-font', linkedNodes:[75], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/WOLF005.svg',tags:''},\r\n {id:204, code:'',name:'UNISCRIPT', description:'', type:'design-style-letters-font', linkedNodes:[75], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/WOLF005.svg',tags:''},\r\n {id:205, code:'',name:'VELO', description:'', type:'design-style-letters-font', linkedNodes:[75], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/WOLF005.svg',tags:''},\r\n {id:206, code:'',name:'Teamwear', description:'', type:'teamwear', linkedNodes:[], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:207, code:'',name:'Fabric', description:'', type:'teamwear', linkedNodes:[206], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:208, code:'',name:'Templates', description:'', type:'teamwear', linkedNodes:[206], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:209, code:'',name:'Color', description:'', type:'teamwear', linkedNodes:[206], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:210, code:'',name:'Piping', description:'', type:'teamwear', linkedNodes:[206], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:211, code:'',name:'Decoration', description:'', type:'teamwear', linkedNodes:[206], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:212, code:'',name:'Brand', description:'', type:'teamwear', linkedNodes:[206], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:213, code:'',name:'Roster', description:'', type:'teamwear', linkedNodes:[206], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:214, code:'',name:'Produra', description:'Premium, Durable, Moisture Wicking, 100% Knitted Polyester with Mechanical Stretch', type:'fabric-type', linkedNodes:[207], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/fabrics/PRODURA.png',tags:'SUBLIMATION AND HYPR TWILL'},\r\n {id:215, code:'',name:'Protek', description:'Premium, Durable, Moisture Wicking, 100% Knitted Polyester with Mechanical Stretch', type:'fabric-type', linkedNodes:[207], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/fabrics/PROTEK.png',tags:'SUBLIMATION AND HYPR TWILL'},\r\n {id:216, code:'',name:'Ignite LT', description:'Premium, Durable, Lightweight, Moisture Wicking, Woven 90% Polyester / 10% Elastane with Four-Way Stretch', type:'fabric-type', linkedNodes:[207], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/fabrics/IGNITE_LT.png',tags:'SUBLIMATION ONLY'},\r\n {id:217, code:'',name:'Matrix Mesh', description:'Premium, Durable, Moisture Wicking, Knitted Pin-Dot Mesh, 90% Polyester / 10% Elastane with Four-Way Stretch', type:'fabric-type', linkedNodes:[207], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/fabrics/MATRIX_MESH.png',tags:'SUBLIMATION AND HYPR TWILL'},\r\n {id:218, code:'',name:'Dryve LT', description:'Soft, Lightweight, Moisture Wicking, 100% Knitted Polyester Mesh', type:'fabric-type', linkedNodes:[207], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/fabrics/DRYVE_LT.png',tags:'SUBLIMATION ONLY'},\r\n {id:219, code:'',name:'FLY LT', description:'Soft, Lightweight, Moisture Wicking, 100% Flat Knit Polyester', type:'fabric-type', linkedNodes:[207], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/fabrics/FLY_LT.png',tags:'SUBLIMATION ONLY'},\r\n {id:220, code:'',name:'FLX', description:'Premium, Soft, Four-Way Stretch, 90% Polyester/10% Elastine', type:'fabric-type', linkedNodes:[207], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/fabrics/FLX.png',tags:'SUBLIMATION ONLY'},\r\n {id:221, code:'',name:'PRODURA - DYED (HYPR TWILL DECORATION ONLY)', description:'', type:'fabric-type', linkedNodes:[207], threeD:false,icon:'',thumbnail:'',tags:'HYPR TWILL'},\r\n {id:222, code:'',name:'PROTEK - DYED (HYPR TWILL DECORATION ONLY)', description:'', type:'fabric-type', linkedNodes:[207], threeD:false,icon:'',thumbnail:'',tags:'HYPR TWILL'},\r\n {id:223, code:'',name:'Neck Piping', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'https://resources.uniform-customizer.io/uploadedfiles/dRGF2JCBvodIg0QY21oHbuDfz6twjAVl.png',tags:''},\r\n {id:224, code:'',name:'Center Piping', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'https://resources.uniform-customizer.io/uploadedfiles/oWpQa0fFddLuG2RJ6lBnITsIS6BcdW7g.png',tags:''},\r\n {id:225, code:'',name:'Yoke Piping', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'https://resources.uniform-customizer.io/uploadedfiles/5BEjBO66Ei1aNzvVGxE39AJzOOOiN6TT.png',tags:''},\r\n {id:226, code:'',name:'Raglan Piping', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'https://resources.uniform-customizer.io/uploadedfiles/RG6MuauqiOMWJrOEsCHJ4tC53neMxL7W.png',tags:''},\r\n {id:227, code:'',name:'Sleeve Piping 1 inch up', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'https://resources.uniform-customizer.io/uploadedfiles/kOMLERHCuUVPWRIRWIhw1FlOvtiy1eBe.png',tags:''},\r\n {id:228, code:'',name:'End of Sleeve Piping', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'https://resources.uniform-customizer.io/uploadedfiles/lr2zDaP9l792oXHqcq7CmYcuzoIrQhkj.png',tags:''},\r\n {id:229, code:'',name:'Pant', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'https://resources.uniform-customizer.io/uploadedfiles/BqGJKQ8kJdTUeY9CEGTwwYC45Ar8rvYR.png',tags:''},\r\n {id:230, code:'',name:'Pant Tunnel', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'https://resources.uniform-customizer.io/uploadedfiles/kFN2ZAjjdJEoIfnkZQThax0bALOdP90l.png',tags:''},\r\n {id:231, code:'',name:'Left Sleeve', description:'', type:'brand-type', linkedNodes:[212], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:232, code:'',name:'Back Neck', description:'', type:'brand-type', linkedNodes:[212], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:233, code:'',name:'Front Left Hip', description:'', type:'brand-type', linkedNodes:[212], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:234, code:'',name:'Back Center Tunnel', description:'', type:'brand-type', linkedNodes:[212], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:235, code:'',name:'Pro Select 2 Button End of Sleeve', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/piping/PRO%20SELECT/PTS8012CU/Pro%20Select%202%20Button%20End%20of%20Sleeve.png',tags:''},\r\n {id:236, code:'',name:'Pro Select 2 Button Neck', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/piping/PRO%20SELECT/PTS8012CU/Pro%20Select%202%20Button%20Neck.png',tags:''},\r\n {id:237, code:'',name:'Pro Select 2 Button Raglan', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/piping/PRO%20SELECT/PTS8012CU/Pro%20Select%202%20Button%20Raglan.png',tags:''},\r\n {id:238, code:'',name:'Pro Select 2 Button Sleeve 1 Inch up', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/piping/PRO%20SELECT/PTS8012CU/Pro%20Select%202%20Button%20Sleeve%201%20Inch%20Up.png',tags:''},\r\n {id:239, code:'',name:'Pro Select 2 Button Yoke', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/piping/PRO%20SELECT/PTS8012CU/Pro%20Select%202%20Button%20Yoke.png',tags:''},\r\n {id:240, code:'',name:'Pro Select Full Button Center', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/piping/PRO%20SELECT/PTS8013CU/Pro%20Select%20Full%20Button%20Center.png',tags:''},\r\n {id:241, code:'',name:'Pro Select Full Button End of Sleeve', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/piping/PRO%20SELECT/PTS8013CU/Pro%20Select%20Full%20Button%20End%20of%20Sleeve.png',tags:''},\r\n {id:242, code:'',name:'Pro Select Full Button Neck', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/piping/PRO%20SELECT/PTS8013CU/Pro%20Select%20Full%20Button%20Neck.png',tags:''},\r\n {id:243, code:'',name:'Pro Select Full Button Raglan', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/piping/PRO%20SELECT/PTS8013CU/Pro%20Select%20Full%20Button%20Raglan.png',tags:''},\r\n {id:244, code:'',name:'Pro Select Full Button Sleeve 1 Inch up', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/piping/PRO%20SELECT/PTS8013CU/Pro%20Select%20Full%20Button%20Sleeve%201%20Inch%20Up.png',tags:''},\r\n {id:245, code:'',name:'Pro Select Full Button Yoke', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/piping/PRO%20SELECT/PTS8013CU/Pro%20Select%20Full%20Button%20Yoke.png',tags:''},\r\n {id:246, code:'',name:'Pro Select Sleeveless Full Button Center', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/piping/PRO%20SELECT/PTS8014CU/Pro%20Select%20Sleeveless%20Full%20Button%20Center.png',tags:''},\r\n {id:247, code:'',name:'Pro Select Sleeveless Full Button Neck', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/piping/PRO%20SELECT/PTS8014CU/Pro%20Select%20Sleeveless%20Full%20Button%20Neck.png',tags:''},\r\n {id:248, code:'',name:'Pro Select Sleeveless Full Button Set In', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/piping/PRO%20SELECT/PTS8014CU/Pro%20Select%20Sleeveless%20Full%20Button%20Set%20In.png',tags:''},\r\n {id:249, code:'',name:'Pro Select Sleeveless Full Button Yoke', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/piping/PRO%20SELECT/PTS8014CU/Pro%20Select%20Sleeveless%20Full%20Button%20Yoke.png',tags:''},\r\n {id:250, code:'',name:'Pro Select Faux Button Center', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/piping/PRO%20SELECT/PTS8015CU/Pro%20Select%20Faux%20Button%20Center.png',tags:''},\r\n {id:251, code:'',name:'Pro Select Faux Button End of Sleeve', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/piping/PRO%20SELECT/PTS8015CU/Pro%20Select%20Faux%20Button%20End%20of%20Sleeve.png',tags:''},\r\n {id:252, code:'',name:'Pro Select Faux Button Neck', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/piping/PRO%20SELECT/PTS8015CU/Pro%20Select%20Faux%20Button%20Neck.png',tags:''},\r\n {id:253, code:'',name:'Pro Select Faux Button Raglan', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/piping/PRO%20SELECT/PTS8015CU/Pro%20Select%20Faux%20Button%20Neck.png',tags:''},\r\n {id:254, code:'',name:'Pro Select Faux Button Sleeve 1 Inch Up', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/piping/PRO%20SELECT/PTS8015CU/Pro%20Select%20Faux%20Button%20Sleeve%201%20Inch%20Up.png',tags:''},\r\n {id:255, code:'',name:'Pro Select Faux Button Yoke', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/piping/PRO%20SELECT/PTS8015CU/Pro%20Select%20Faux%20Button%20Yoke.png',tags:''},\r\n {id:256, code:'',name:'Pro Select Sleeveless Faux Button Center', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:257, code:'',name:'Pro Select Sleeveless Faux Button Neck', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:258, code:'',name:'Pro Select Sleeveless Faux Button Set In', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:259, code:'',name:'Pro Select Sleeveless Faux Button Yoke', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:260, code:'',name:'Pro Select Full Length Open Cuff Pant Piping', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:261, code:'',name:'Pro Select Full Length Open Cuff Tunnel Piping', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:262, code:'',name:'Pro Select Knicker Pant Piping', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:263, code:'',name:'Pro Select Knicker Tunnel Piping', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:264, code:'',name:'Pro Select Tapared FL Pant Piping', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:265, code:'',name:'Pro Select Tapered Tunnel Piping', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:266, code:'',name:'Select Crew Neck End of Sleeve', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:267, code:'',name:'Select Crew Neck Set In', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:268, code:'',name:'Select Crew Neck Sleeve 1 Inch up', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:269, code:'',name:'Select BSB V Neck End of Sleeve', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:270, code:'',name:'Select BSB V Neck Set In', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:271, code:'',name:'Select BSB V Neck Sleeve 1 inch up', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:272, code:'',name:'Select BSB V Neck', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:273, code:'',name:'Select 2 Button Center', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:274, code:'',name:'Select 2 Button End of Sleeve', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:275, code:'',name:'Select 2 Button Neck', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:276, code:'',name:'Select 2 Button Set In', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:277, code:'',name:'Select 2 Button Sleeve 1 inch up', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:278, code:'',name:'Select 2 Button Yoke', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:279, code:'',name:'Select Full Length Open Cuff Pant Piping', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:280, code:'',name:'Select Full Length Open Cuff Tunnel Piping', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:281, code:'',name:'Select Knicker Pant Piping', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:282, code:'',name:'Select Knicker Tunnel Piping', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:283, code:'',name:'Select Full Length Tapered Pant Piping', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:284, code:'',name:'Select Full Length Tapered Tunnel Piping', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:285, code:'',name:'Signature BSB V Neck End of Sleeve', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:286, code:'',name:'Signature BSB V Neck Neck', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:287, code:'',name:'Signature BSB V Neck Raglan', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:288, code:'',name:'Signature BSB V Neck Sleeve 1 Inch Up', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:289, code:'',name:'Signature 2 Button End of Sleeve', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:290, code:'',name:'Signature 2 Button Neck', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:291, code:'',name:'Signature 2 Button Raglan', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:292, code:'',name:'Signature 2 Button Sleeve 1 Inch Up', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:293, code:'',name:'Signature 2 Button Yoke', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:294, code:'',name:'Signature Full Button Center', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:295, code:'',name:'Signature Full Button End of Sleeve', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:296, code:'',name:'Signature Full Button Neck', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:297, code:'',name:'Signature Full Button Raglan', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:298, code:'',name:'Signature Full Button Sleeve 1 Inch Up', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:299, code:'',name:'Signature Full Button Yoke', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:300, code:'',name:'Signature Faux Button Center', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:301, code:'',name:'Signature Faux Button End of Sleeve', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:302, code:'',name:'Signature Faux Button Neck', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:303, code:'',name:'Signature Faux Button Raglan', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:304, code:'',name:'Signature Faux Button Sleeve 1 Inch Up', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:305, code:'',name:'Signature Faux Button Yoke', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:306, code:'',name:'Signature Full Length Open Cuff Back Insert Piping', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:307, code:'',name:'Signature Full Length Open Cuff Pant Piping', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:308, code:'',name:'Signature Full Length Open Cuff Tunnel Piping', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:309, code:'',name:'Signature Knicker Back Insert Piping', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:310, code:'',name:'Signature Knicker Pant Piping', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:311, code:'',name:'Signature Knicker Tunnel Piping', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:312, code:'',name:'Signature Full Length Tapered Back Insert Piping', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:313, code:'',name:'Signature Full Length Tapered Pant Piping', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:314, code:'',name:'Signature Full Length Tapered Tunnel Piping', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:315, code:'',name:'Patches Custom', description:'', type:'decoration-type-shape', linkedNodes:[3], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:316, code:'',name:'Leather Custom ', description:'', type:'decoration-type-shape', linkedNodes:[2], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:317, code:'',name:'Rust ', description:'', type:'decoration-type-color', linkedNodes:[10], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/leather/F100.jpg',tags:''},\r\n {id:318, code:'',name:'Tan', description:'', type:'decoration-type-color', linkedNodes:[10], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/leather/F102.jpg',tags:''},\r\n {id:319, code:'',name:'Brown', description:'', type:'decoration-type-color', linkedNodes:[10], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/leather/F104.jpg',tags:''},\r\n { id: 320, code: '', name: 'Black', description: '', type: 'decoration-type-color', linkedNodes: [10], threeD: false, icon: '', thumbnail: 'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/leather/F106.jpg', tags: '' },\r\n {id:321, code:'',name:'GF841_Mammoth', description:'', type:'decoration-design-concepts', linkedNodes:[2], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/design_concept/GF841_Mammoth.svg',tags:'Resort & Golf'},\r\n {id:322, code:'',name:'CL223_Backwoods', description:'', type:'decoration-design-concepts', linkedNodes:[2], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/design_concept/CL223_Backwoods.svg',tags:'Resort & Golf'},\r\n// {id:323, code:'',name:'OD924_Maine2', description:'', type:'decoration-design-concepts', linkedNodes:[2], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/design_concept/OD924_Maine2.svg',tags:'Atheletic'},\r\n// {id:324, code:'',name:'CL165_Frostburg', description:'', type:'decoration-design-concepts', linkedNodes:[2], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/design_concept/CL165_Frostburg.svg',tags:'Outdoor'},\r\n// {id:325, code:'',name:'GF857_Brookside', description:'', type:'decoration-design-concepts', linkedNodes:[2], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/design_concept/GF857_Brookside.svg',tags:'Atheletic'},\r\n// {id:326, code:'',name:'GF841_Mammoth', description:'', type:'decoration-design-concepts', linkedNodes:[1], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/design_concept/GF841_Mammoth.svg',tags:'Resort & Golf'},\r\n// {id:327, code:'',name:'CL223_Backwoods', description:'', type:'decoration-design-concepts', linkedNodes:[1], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/design_concept/CL223_Backwoods.svg',tags:'Resort & Golf'},\r\n {id:328, code:'',name:'OD924_Maine2', description:'', type:'decoration-design-concepts', linkedNodes:[1], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/design_concept/OD924_Maine2.svg',tags:'Atheletic'},\r\n {id:329, code:'',name:'CL165_Frostburg', description:'', type:'decoration-design-concepts', linkedNodes:[1], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/design_concept/CL165_Frostburg.svg',tags:'Outdoor'},\r\n {id:330, code:'',name:'GF857_Brookside', description:'', type:'decoration-design-concepts', linkedNodes:[1], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/design_concept/GF857_Brookside.svg',tags:'Atheletic'},\r\n {id:331, code:'',name:'GF841_Mammoth', description:'', type:'decoration-design-concepts', linkedNodes:[3], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/design_concept/GF841_Mammoth.svg',tags:'Resort & Golf'},\r\n {id:332, code:'',name:'CL223_Backwoods', description:'', type:'decoration-design-concepts', linkedNodes:[3], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/design_concept/CL223_Backwoods.svg',tags:'Resort & Golf'},\r\n {id:333, code:'',name:'OD924_Maine2', description:'', type:'decoration-design-concepts', linkedNodes:[3], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/design_concept/OD924_Maine2.svg',tags:'Atheletic'},\r\n {id:334, code:'',name:'CL165_Frostburg', description:'', type:'decoration-design-concepts', linkedNodes:[3], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/design_concept/CL165_Frostburg.svg',tags:'Outdoor'},\r\n {id:335, code:'',name:'GF857_Brookside', description:'', type:'decoration-design-concepts', linkedNodes:[3], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/design_concept/GF857_Brookside.svg',tags:'Atheletic'},\r\n {id:336, code:'',name:'GF841_Mammoth', description:'', type:'decoration-design-concepts', linkedNodes:[4], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/design_concept/GF841_Mammoth.svg',tags:'Resort & Golf'},\r\n {id:337, code:'',name:'CL223_Backwoods', description:'', type:'decoration-design-concepts', linkedNodes:[4], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/design_concept/CL223_Backwoods.svg',tags:'Resort & Golf'},\r\n {id:338, code:'',name:'OD924_Maine2', description:'', type:'decoration-design-concepts', linkedNodes:[4], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/design_concept/OD924_Maine2.svg',tags:'Atheletic'},\r\n {id:339, code:'',name:'CL165_Frostburg', description:'', type:'decoration-design-concepts', linkedNodes:[4], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/design_concept/CL165_Frostburg.svg',tags:'Outdoor'},\r\n {id:340, code:'',name:'GF857_Brookside', description:'', type:'decoration-design-concepts', linkedNodes:[4], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/design_concept/GF857_Brookside.svg',tags:'Atheletic'},\r\n {id:341, code:'',name:'GF841_Mammoth', description:'', type:'decoration-design-concepts', linkedNodes:[5], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/design_concept/GF841_Mammoth.svg',tags:'Resort & Golf'},\r\n {id:342, code:'',name:'CL223_Backwoods', description:'', type:'decoration-design-concepts', linkedNodes:[5], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/design_concept/CL223_Backwoods.svg',tags:'Resort & Golf'},\r\n {id:343, code:'',name:'OD924_Maine2', description:'', type:'decoration-design-concepts', linkedNodes:[5], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/design_concept/OD924_Maine2.svg',tags:'Atheletic'},\r\n {id:344, code:'',name:'CL165_Frostburg', description:'', type:'decoration-design-concepts', linkedNodes:[5], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/design_concept/CL165_Frostburg.svg',tags:'Outdoor'},\r\n {id:345, code:'',name:'GF857_Brookside', description:'', type:'decoration-design-concepts', linkedNodes:[5], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/design_concept/GF857_Brookside.svg',tags:'Atheletic'},\r\n {id:346, code:'',name:'GF841_Mammoth', description:'', type:'decoration-design-concepts', linkedNodes:[6], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/design_concept/GF841_Mammoth.svg',tags:'Resort & Golf'},\r\n {id:347, code:'',name:'CL223_Backwoods', description:'', type:'decoration-design-concepts', linkedNodes:[6], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/design_concept/CL223_Backwoods.svg',tags:'Resort & Golf'},\r\n {id:348, code:'',name:'OD924_Maine2', description:'', type:'decoration-design-concepts', linkedNodes:[6], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/design_concept/OD924_Maine2.svg',tags:'Atheletic'},\r\n {id:349, code:'',name:'CL165_Frostburg', description:'', type:'decoration-design-concepts', linkedNodes:[6], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/design_concept/CL165_Frostburg.svg',tags:'Outdoor'},\r\n { id: 350, code: '', name: 'GF857_Brookside', description: '', type: 'decoration-design-concepts', linkedNodes: [6], threeD: false, icon: '', thumbnail: 'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/design_concept/GF857_Brookside.svg', tags: 'Atheletic' },\r\n {id:351, code:'',name:'BRUSHSCRIPT', description:'BRUSHSCRIPT', type:'design-style-letters-font', linkedNodes:[75,76], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:352, code:'',name:'UNITED', description:'UNITED', type:'design-style-letters-font', linkedNodes:[76], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:353, code:'',name:'My Logos', description:'', type:'design-substyle', linkedNodes:[78], threeD:false,icon:'TeamCustom',thumbnail:'',tags:''},\r\n {id:354, code:'',name:'Custom File Upload', description:'', type:'design-substyle', linkedNodes:[78], threeD:false,icon:'TeamCustom',thumbnail:'',tags:''},\r\n];\r\n","import React from 'react';\r\n// import { MdOutlineArrowForwardIos } from 'react-icons/md';\r\n//import { Searchbar } from '../searchbar';\r\nimport { Card, CardMedia, CardBody, CardTitle } from '../card';\r\n// import { Button } from '../button';\r\nimport { shallow } from 'zustand/shallow';\r\nimport { use3dddPlus } from '../../store';\r\nimport { Loader } from '../loader';\r\nimport ListDropdown from './listDropDown';\r\nimport { getDecorationDataByTypeAndParentId } from './decorationService';\r\nimport _ from 'lodash';\r\nexport const AddMascot = () => {\r\n const [\r\n stockLogoHandler,\r\n loading,\r\n handleMascotObjectFilterValues,\r\n availableMascots,\r\n filterValue,\r\n filteredMascots,\r\n ] = use3dddPlus(\r\n (state) => [\r\n state.stockLogoHandler,\r\n state.loading,\r\n state.handleMascotObjectFilterValues,\r\n state.availableMascots,\r\n state.filterValue,\r\n state.filteredMascots,\r\n ],\r\n shallow\r\n );\r\n\r\n let dropdownData = Array.from(\r\n new Set(availableMascots.flatMap((mascot) => mascot.tags))\r\n );\r\n // Prepend 'All' to the array\r\n dropdownData.unshift('All');\r\n React.useEffect(() => {\r\n const availableMascots = getDecorationDataByTypeAndParentId(\r\n 'design-style-mascots'\r\n ).map((item) => ({\r\n ...item,\r\n tags: item.tags.split(',').filter(Boolean),\r\n }));\r\n\r\n use3dddPlus.getState().setAvailableMascots(availableMascots);\r\n use3dddPlus\r\n .getState()\r\n .setFilteredMascots(availableMascots);\r\n }, []);\r\n\r\n return (\r\n <>\r\n <div className=\"bg-[#F7F7F7] absolute z-100 w-[90%] h-full pr-[56px]\">\r\n <div className=\"w-full flex mt-[50px] flex-row \">\r\n <div className=\"w-1/2 flex justify-end\">\r\n <div className=\"text-left mr-[24px] h-[40px]\">\r\n <div className=\"w-[10vw] mb-3 \"></div>\r\n </div>\r\n </div>\r\n <div className=\" flex-1 justify-end\">\r\n <ListDropdown\r\n //placeholder=\"All \"\r\n value={filterValue}\r\n dropdownData={dropdownData}\r\n handleSelected={handleMascotObjectFilterValues}\r\n // label={'Select Stock Mascots & Objects'}\r\n labelClass={`!mb-[14.5px]`}\r\n labelSpan={`uppercase !text-[18px] !text-[#353535] !leading-[24px] !font-bold`}\r\n buttonClass={`!shadow-[0px_7px_64px_rgba(0,0,0,0.07)] border !border-[#ebebeb] text-[15px] font-bold leading-[20px] !py-[11px] !pl-[17px]`}\r\n dropdownClass={`!shadow-[0px_7px_64px_rgba(0,0,0,0.11)] !bg-[#ffffff] !max-h-[31.25rem] pt-[7px] pb-[17px]`}\r\n dropdownLiClass={`!text-[15px] leading-[20px] pl-[16px]`}\r\n />\r\n </div>\r\n </div>\r\n {/* <div className=\"flex flex-row gap-2\"> */}\r\n <div className=\"flex\">\r\n <div className=\"flex mt-[30px] overflow-y-auto overflow-x-hidden h-[65vh] w-full\">\r\n {/* <div className=\"max-h-[140px] grid gap-3.5 grid-cols-3 md:grid-cols-3 lg:grid-cols-4 w-full \"> */}\r\n <div className=\"max-h-[170px] grid gap-[2vw] grid-cols-3 md:grid-cols-5 lg:grid-cols-5 xl:grid-cols-6 2xl:grid-cols-7 w-full p-[30px]\">\r\n {filteredMascots.length > 0\r\n ? filteredMascots.map((logo, index) => (\r\n <Card\r\n key={'logoImage' + index}\r\n // cardClass={`rounded-none bg-white cursor-pointer `}\r\n cardClass={`rounded-none !bg-transparent cursor-pointer min-h-[140px] min-w-[140px] max-w-[140px] `}\r\n style={{ boxShadow: '0px 0px 6px #98989829' }}\r\n onClick={() => stockLogoHandler(logo.thumbnail)}\r\n >\r\n <CardMedia src={logo.thumbnail} imageClass=\"h-full m-[15px] mb-0\" />\r\n\r\n <CardBody bodyClass=\"p-2.5\">\r\n <CardTitle\r\n titleClass={`text-[11px] uppercase flex justify-center`}\r\n name={logo.name}\r\n />\r\n </CardBody>\r\n </Card>\r\n ))\r\n : 'No Stock Logos'}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n {loading && <Loader />}\r\n </>\r\n );\r\n};\r\n","import { decorationData } from './mockData';\r\n\r\nexport type DecorationTypes =\r\n | 'decoration-type'\r\n | 'decoration-sub-type'\r\n | 'decoration-type-color'\r\n | 'decoration-ink-option'\r\n | 'decoration-type-shape'\r\n | 'decoration-edge-type'\r\n | 'design-type'\r\n | 'design-style'\r\n | 'design-style-letters-font'\r\n | 'design-style-mascots';\r\n\r\nexport const getDecorationDataById = (id: number) => {\r\n return decorationData.filter((e) => e.id === id)?.[0];\r\n};\r\n\r\nexport const getDecorationDataByName = (name: string) => {\r\n return decorationData.filter((e) => e.name === name)?.[0];\r\n};\r\n\r\nexport const getDecorationDataByTypeAndParentId = (\r\n type: DecorationTypes,\r\n parentId?: number\r\n) => {\r\n return parentId\r\n ? decorationData.filter(\r\n (item) => item.type === type && item.linkedNodes.includes(parentId)\r\n )\r\n : decorationData.filter(\r\n (item) => item.type === type \r\n );\r\n};\r\n\r\nexport const getAllTypes = () => {\r\n return [new Set(decorationData?.map((item) => item.type))];\r\n};\r\n","import React from 'react';\r\n// import { use3dddPlus } from '../../store';\r\nimport { MODAL_BG_COLOR } from '../../theme';\r\n\r\nexport interface ModalProps {\r\n children?: React.ReactNode;\r\n className?: string;\r\n}\r\n\r\nexport const LogoEditorSaveDesignModal = ({\r\n children,\r\n className = '',\r\n}: ModalProps) => {\r\n // const closeDesign = use3dddPlus((state) => state.setToggleSaveLogo);\r\n return (\r\n <>\r\n <div\r\n className={`modal modal-middle modal-open backdrop-blur-[45px] bg-[#00000046]`}\r\n id=\"saveLogoModel\"\r\n >\r\n <div className={`${className} modal-box ${MODAL_BG_COLOR} `}>\r\n {children}\r\n </div>\r\n {/* <form method=\"dialog\" className={`modal-backdrop ${BACKDROP_BLUR}`}>\r\n <button>close</button>\r\n </form> */}\r\n </div>\r\n </>\r\n );\r\n};","import React from 'react';\r\nimport { FloatingLabel } from 'flowbite-react';\r\nimport { EDIT_DESIGN_INFO_INPUT_BORDER_COLOR } from '../../theme';\r\ninterface CustomInputProps extends React.InputHTMLAttributes<HTMLInputElement> {\r\n type: string;\r\n id: string;\r\n name: string;\r\n label: string;\r\n customLabelStyle?: string;\r\n customInputStyle?: string;\r\n onChange?: (event: React.ChangeEvent<HTMLInputElement>) => void;\r\n onBlur?: (event: React.FocusEvent<HTMLInputElement>) => void;\r\n value?: string | undefined;\r\n onKeyDown?: (event: React.KeyboardEvent<HTMLInputElement>) => void;\r\n}\r\nexport const CustomInput: React.FC<CustomInputProps> = ({\r\n type,\r\n id,\r\n name,\r\n label,\r\n customLabelStyle,\r\n customInputStyle,\r\n onChange,\r\n onBlur,\r\n value,\r\n onKeyDown,\r\n className = '',\r\n}) => {\r\n return (\r\n <div className=\"w-full\">\r\n <FloatingLabel\r\n type={type}\r\n id={id}\r\n value={value}\r\n name={name}\r\n variant=\"outlined\"\r\n label={label}\r\n onChange={onChange}\r\n onBlur={onBlur}\r\n onKeyDown={onKeyDown}\r\n theme={{\r\n label: {\r\n default: {\r\n outlined: {\r\n sm: `absolute left-4 top-2 z-10 origin-[0] -translate-y-4 transition-transform bg-white peer-focus:px-[0.125rem] px-[0.125rem] text-[#5D5D5D] duration-300 peer-placeholder-shown:top-1/2 peer-placeholder-shown:-translate-y-1/2 peer-focus:top-2 peer-focus:-translate-y-4 font-medium ${customLabelStyle} ${className}`,\r\n\r\n md: `absolute left-4 top-2 z-10 origin-[0] -translate-y-4 transition-transform bg-white peer-focus:px-[0.125rem] px-[0.125rem] text-[#5D5D5D] duration-300 peer-placeholder-shown:top-1/2 peer-placeholder-shown:-translate-y-1/2 peer-focus:top-2 peer-focus:-translate-y-4 font-medium ${customLabelStyle} ${className}`,\r\n },\r\n },\r\n },\r\n input: {\r\n default: {\r\n outlined: {\r\n sm: `border peer block w-full appearance-none rounded-none border-[#ECEBED] px-4 pb-2.5 pt-4 focus:border-[#ECEBED] focus:outline-none focus:ring-0 w-full h-[3rem] mt-0 ${customInputStyle} ${EDIT_DESIGN_INFO_INPUT_BORDER_COLOR}`,\r\n\r\n md: `border peer block w-full appearance-none rounded-none border-[#ECEBED] px-4 pb-2.5 pt-4 focus:border-[#ECEBED] focus:outline-none focus:ring-0 w-full h-[3rem] mt-0 ${customInputStyle} ${EDIT_DESIGN_INFO_INPUT_BORDER_COLOR}`,\r\n },\r\n },\r\n },\r\n helperText: {\r\n default: 'mt-0 ',\r\n success: 'mt-0 ',\r\n error: 'mt-0',\r\n },\r\n }}\r\n />\r\n </div>\r\n );\r\n};\r\n","import React, { useState, useEffect } from 'react';\r\nimport {\r\n BUTTON_TEXT_COLOR,\r\n EDIT_DESIGN_INFO_BG_COLOR_4,\r\n EDIT_DESIGN_INFO_INPUT_BORDER_COLOR,\r\n EDIT_DESIGN_INFO_TEXT_COLOR_1,\r\n EDIT_DESIGN_INFO_TEXT_COLOR_3,\r\n INPUT_ERROR_TEXT_COLOR,\r\n SAVEBUTTON_BG_COLOR,\r\n SECONDARY_COLOR,\r\n TEXT_SIZE_12,\r\n TEXT_SIZE_4,\r\n TEXT_SIZE_5,\r\n TEXT_SIZE_9,\r\n} from '../../theme';\r\nimport { RxCross2 } from 'react-icons/rx';\r\nimport { use3dddPlus } from '../../store';\r\nimport { LogoEditorSaveDesignModal } from './saveDesignModal';\r\nimport './saveDesign.css';\r\nimport { CustomInput } from '../input/customInput';\r\nimport { fabric } from 'fabric';\r\n\r\nexport const SaveDesign = ({ onSaveLogo }) => {\r\n const [designNameValidation, setDesignNameValidation] = useState('');\r\n //@ts-ignore\r\n const tempCanvas = new fabric.Canvas();\r\n let dataURL='';\r\n const [commaInTagName, setCommaInTagName] = useState(false);\r\n const [tagNameLength, setTagNameLength] = useState(false);\r\n const [isSaving, setIsSaving] = useState(false);\r\n const [\r\n canvas,\r\n logoName,\r\n logoTag,\r\n closeModal,\r\n toggleSaveLogo,\r\n disableSaveButton,\r\n saveLogo,\r\n uploadLogoConfig,\r\n setLogoData,\r\n \r\n ] = use3dddPlus((state) => [\r\n state.fabricCanvas,\r\n state.logoName,\r\n state.logoTag,\r\n state.setToggleSaveLogo,\r\n state.toggleSaveLogo,\r\n state.disableSaveButton,\r\n state.saveLogo,\r\n state.uploadLogoConfig,\r\n state.setLogoData,\r\n ]);\r\n const [tagName, setTagName] = React.useState('');\r\n\r\n const checkValidations = () => {\r\n const nameValidation = logoName.length >= 1;\r\n if (!nameValidation) {\r\n setDesignNameValidation('length');\r\n return nameValidation;\r\n } else return true;\r\n };\r\n \r\n const onSaveHandler = async () => { \r\n \r\n if (!isSaving) {\r\n if (!checkValidations()) return;\r\n setIsSaving(true);\r\n canvas.backgroundColor = null;\r\n const canvasGetobject = canvas.getObjects();\r\n canvasGetobject.forEach((obj : any) => {\r\n if (obj.type === 'line') {\r\n canvas.remove(obj);\r\n }else{\r\n obj?._objects?.forEach((ele : any) => {\r\n if(ele.fill === undefined){\r\n ele.set({\r\n scaleX :0,\r\n scaleY:0,\r\n })\r\n }\r\n });\r\n }\r\n });\r\n\r\n // saving all path text data (text with shapes applied)\r\n let pathTextsData = {};\r\n canvasGetobject.forEach((obj) => {\r\n if (obj.type === 'path' && obj.pathData !== undefined) {\r\n pathTextsData[obj.text] = {\r\n width: obj.width,\r\n height: obj.height,\r\n left: obj.left,\r\n top: obj.top,\r\n pathData: obj.pathData,\r\n shapeSize: obj.shapeSize,\r\n shapeType: obj.shapeType,\r\n fontFamily: obj.fontFamily,\r\n fontWeight: obj.fontWeight,\r\n fontSize: obj.fontSize,\r\n charSpacing: obj.charSpacing,\r\n textAlign: obj.textAlign,\r\n fontStyle: obj.fontStyle,\r\n text: obj.text,\r\n };\r\n }\r\n });\r\n const selectAllCanvasObjects = (padding: number = 20): Promise<string> => {\r\n //@ts-ignore\r\n return new Promise((resolve, reject) => {\r\n const objs = canvas.getObjects().map(obj => obj.set('active', true));\r\n const group = new fabric.ActiveSelection(objs, {\r\n canvas: canvas,\r\n originX: 'center',\r\n originY: 'center'\r\n });\r\n canvas.setActiveObject(group);\r\n canvas.requestRenderAll();\r\n \r\n group.clone((clonedGroup) => {\r\n const boundingRect = clonedGroup.getBoundingRect();\r\n const paddedWidth = boundingRect.width + 4 * padding;\r\n const paddedHeight = boundingRect.height + 6 * padding;\r\n \r\n tempCanvas.setWidth(paddedWidth);\r\n tempCanvas.setHeight(paddedHeight);\r\n clonedGroup.left = padding + boundingRect.left;\r\n clonedGroup.top = padding + boundingRect.top;\r\n clonedGroup.setCoords();\r\n \r\n tempCanvas.add(clonedGroup);\r\n clonedGroup.center();\r\n clonedGroup.setCoords();\r\n tempCanvas.requestRenderAll();\r\n const dataURL = tempCanvas.toDataURL();\r\n tempCanvas.clear();\r\n tempCanvas.dispose();\r\n clonedGroup = null;\r\n canvas.discardActiveObject();\r\n resolve(dataURL);\r\n });\r\n });\r\n };\r\n \r\n (async () => {\r\n try {\r\n dataURL = await selectAllCanvasObjects();\r\n console.log();\r\n } catch (error) {\r\n console.error('Error capturing canvas objects:', error);\r\n }\r\n })();\r\n\r\n const canvasData = use3dddPlus.getState().applyColorFill();\r\n // dataURL = canvas.toDataURL();\r\n // looping through the text shape objects & taking out text data to inject in the canvas json data & save\r\n let pathTextsKeys = Object.keys(pathTextsData);\r\n for (let i = 0; i < pathTextsKeys.length; i++) {\r\n let pathData = pathTextsData[pathTextsKeys[i]];\r\n for (let o = 0; o < canvasData.objects.length; o++) {\r\n const obj = canvasData.objects[o];\r\n if (\r\n obj.type === 'path' &&\r\n obj.left === Math.round(pathData.left * 100) / 100 &&\r\n obj.top === Math.round(pathData.top * 100) / 100 &&\r\n obj.width === Math.round(pathData.width * 100) / 100 &&\r\n obj.height === Math.round(pathData.height * 100) / 100\r\n ) {\r\n Object.assign(canvasData.objects[o], pathData);\r\n }\r\n }\r\n }\r\n \r\n const dataCh = JSON.stringify(canvasData);\r\n const S3UrlPath = await uploadLogoConfig(\r\n dataCh,\r\n use3dddPlus.getState().customerId\r\n );\r\n \r\n const canvasSvg = canvas.toSVG();\r\n closeModal('', false, '', {});\r\n const raw = JSON.stringify({\r\n customer_id: use3dddPlus.getState().customerId,\r\n tag: logoTag.join(','),\r\n name: logoName,\r\n base64_image: dataURL,\r\n svg_image: canvasSvg,\r\n logo_config_url: S3UrlPath,\r\n });\r\n\r\n const horizontalLine = new fabric.Line(\r\n [0, canvas.height / 2, canvas.height, canvas.height / 2],\r\n {\r\n stroke: 'red',\r\n scaleX: 11,\r\n visible: false,\r\n selectable: false,\r\n type: 'line',\r\n }\r\n );\r\n\r\n const verticalLine = new fabric.Line(\r\n [canvas.width / 2, 0, canvas.width / 2, canvas.width],\r\n {\r\n stroke: 'red',\r\n visible: false,\r\n selectable: false,\r\n type: 'line',\r\n }\r\n );\r\n\r\n horizontalLine.centerH();\r\n canvas.add(horizontalLine);\r\n canvas.add(verticalLine);\r\n canvas.sendBackwards(horizontalLine);\r\n canvas.sendBackwards(verticalLine);\r\n use3dddPlus.setState({ horizontalLine: horizontalLine });\r\n use3dddPlus.setState({ verticalLine: verticalLine });\r\n saveLogo(raw)\r\n .then((data) => {\r\n setIsSaving(false);\r\n onSaveLogo(data);\r\n setLogoData(data);\r\n use3dddPlus.getState().toastMessages.saveSuccess();\r\n })\r\n .catch((ex) => {\r\n setIsSaving(false);\r\n console.log('ERROR in Save Logo:', ex);\r\n });\r\n }\r\n use3dddPlus.setState({ logoName: '' });\r\n use3dddPlus.setState({ logoTag: [] });\r\n };\r\n\r\n useEffect(() => {\r\n if (tagName !== '') {\r\n const reg = /^[a-zA-Z0-9 ]+$/;\r\n const regTest = reg.test(tagName);\r\n\r\n if (!regTest) {\r\n setCommaInTagName(true);\r\n } else if (!!commaInTagName) {\r\n setCommaInTagName(false);\r\n }\r\n } else if (!!commaInTagName) {\r\n setCommaInTagName(false);\r\n }\r\n }, [tagName]);\r\n\r\n const handleTagChange = (event: any) => {\r\n if (event?.target?.value !== ' ') {\r\n setTagName(event.target.value);\r\n }\r\n };\r\n\r\n const handleKeyDown = (event: any) => {\r\n if (logoTag.length > 4 && tagName !== '') {\r\n event.preventDefault();\r\n setTagNameLength(true);\r\n setTagName('');\r\n return;\r\n } else {\r\n setTagNameLength(false);\r\n }\r\n\r\n if (\r\n event.key === 'Enter' ||\r\n event.key === 'Tab' ||\r\n (event.keyCode === 188 && tagName !== '') ||\r\n (event.type === 'blur' && tagName !== '')\r\n ) {\r\n event.preventDefault();\r\n\r\n const reg = /^[a-zA-Z0-9 ]+$/;\r\n const regTest = reg.test(tagName);\r\n if (!regTest) {\r\n setCommaInTagName(true);\r\n return;\r\n }\r\n if (!!regTest) {\r\n tagName !== '' && handleAdd();\r\n }\r\n } else if (tagName === '' && event.key === 'Backspace') {\r\n handleBackspace();\r\n }\r\n if (tagName.length !== 0 && (!!commaInTagName || !!tagNameLength)) {\r\n if (event?.type === 'blur' || event?.type === 'keydown') {\r\n setCommaInTagName(false);\r\n setTagNameLength(false);\r\n }\r\n }\r\n };\r\n\r\n const handleNameChange = (value) => {\r\n use3dddPlus.setState({ logoName: value });\r\n if (designNameValidation === 'length') {\r\n setDesignNameValidation('');\r\n }\r\n };\r\n\r\n const handleAdd = () => {\r\n let newList = [...logoTag];\r\n if (!newList.includes(tagName.trim())) {\r\n newList.push(tagName.trim());\r\n }\r\n use3dddPlus.setState({ logoTag: newList.filter(Boolean) });\r\n setTagName('');\r\n };\r\n\r\n const handleBackspace = () => {\r\n let newList = [...logoTag];\r\n newList.pop();\r\n use3dddPlus.setState({ logoTag: newList.filter(Boolean) });\r\n };\r\n\r\n const handleDelete = (e) => {\r\n const newList = logoTag.filter((item) => item !== e);\r\n use3dddPlus.setState({ logoTag: newList });\r\n };\r\n const onCancelHandler = () => {\r\n closeModal('', false, '', {});\r\n };\r\n return (\r\n <LogoEditorSaveDesignModal\r\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]\r\n `}\r\n >\r\n <button\r\n className=\"absolute right-[0.6875rem] top-[0.6875rem] px-[0.75rem] py-[0.75rem] hover:bg-[#E11A38] hover:text-[#ffffff] hover:rounded-none\"\r\n onClick={() => {\r\n use3dddPlus.getState().goBack();\r\n closeModal('', false, '', {});\r\n use3dddPlus.setState({ showCrossSave: false });\r\n \r\n }}\r\n >\r\n <RxCross2 strokeWidth={1} />\r\n </button>\r\n\r\n <div className={`flex h-max w-full`}>\r\n <div\r\n className={`w-full md:px-[112px] md:p-[98px] p-[30px] bg-white h-full flex justify-center`}\r\n >\r\n <div className=\"w-full\">\r\n <span\r\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}\r\n `}\r\n >\r\n {toggleSaveLogo.title}\r\n </span>\r\n <div>\r\n <div className=\"\">\r\n <CustomInput\r\n customLabelStyle={`${TEXT_SIZE_9} leading-[1.25rem] border-0 font-medium text-[#727272]`}\r\n value={logoName}\r\n onBlur={(e) =>\r\n handleNameChange(e?.target?.value?.trimStart())\r\n }\r\n type=\"text\"\r\n id=\"logoName\"\r\n name=\"logoName\"\r\n label=\"Design Name\"\r\n onChange={(e) =>\r\n handleNameChange(e?.target?.value?.trimStart())\r\n }\r\n customInputStyle={`${\r\n designNameValidation === 'length'\r\n ? `border border-[#e11a38]`\r\n : `border border-[#ecebed]`\r\n } text-[#727272] ${TEXT_SIZE_9} bg-transparent`}\r\n />\r\n </div>\r\n {designNameValidation === 'length' && (\r\n <div\r\n role=\"alert\"\r\n className={`text-sm ${INPUT_ERROR_TEXT_COLOR}`}\r\n >\r\n * Please enter a name with at least 1 character\r\n </div>\r\n )}\r\n {designNameValidation === 'specialCharacter' && (\r\n <div\r\n role=\"alert\"\r\n className={`text-sm ${INPUT_ERROR_TEXT_COLOR}`}\r\n >\r\n * Design Name can not have any special characters\r\n </div>\r\n )}\r\n <div\r\n className={`relative flex flex-row py-[0.695rem] border ${EDIT_DESIGN_INFO_INPUT_BORDER_COLOR} flex-wrap place-content-start mt-5 `}\r\n >\r\n <div className=\"flex flex-row gap-[0.5rem] flex-wrap items-center px-[1rem]\">\r\n {Array.isArray(logoTag) &&\r\n logoTag?.map((el: any, i) => (\r\n <div\r\n key={i}\r\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}`}\r\n >\r\n {el}\r\n <button onClick={() => handleDelete(el)}>\r\n <RxCross2\r\n className={`${EDIT_DESIGN_INFO_TEXT_COLOR_1} font-bold`}\r\n />\r\n </button>\r\n </div>\r\n ))}\r\n\r\n <div>\r\n <input\r\n name=\"tags\"\r\n type=\"text\"\r\n placeholder=\" \"\r\n className={` ${EDIT_DESIGN_INFO_TEXT_COLOR_3} font-light block w-[6.25rem] focus:outline-none !border-0 py-0 focus:border-0 peer focus:ring-0 ring-0 px-4`}\r\n value={tagName}\r\n onChange={handleTagChange}\r\n onKeyDown={handleKeyDown}\r\n onBlur={handleKeyDown}\r\n onClick={(e) => {\r\n e.currentTarget.focus();\r\n }}\r\n />\r\n <label\r\n htmlFor=\"designTags\"\r\n className={` ${\r\n logoTag?.length > 0 || !!commaInTagName\r\n ? 'py-0 !top-0 !font-[13px] !text-[#727272] !bg-white !opacity-1 !left-[1rem]'\r\n : ''\r\n } ${TEXT_SIZE_9} peer-focus:${EDIT_DESIGN_INFO_TEXT_COLOR_1} font-medium leading-[1.25rem] absolute z-10 transition-all top-2 transform -translate-y-1/2 peer-placeholder-shown:-translate-y-1/2 peer-placeholder-shown:top-1/2 peer-focus:top-0 peer-focus:font-[13px] peer-focus:!bg-white peer-focus:-translate-y-[10px] peer-focus:opacity-1 peer-placeholder-shown:text-[#727272] left-4 `}\r\n >\r\n Tags\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n {(() => {\r\n switch (true) {\r\n case !!commaInTagName && !!tagNameLength:\r\n return (\r\n <div\r\n role=\"alert\"\r\n className={`text-sm ${INPUT_ERROR_TEXT_COLOR} mb-5`}\r\n >\r\n * Tag Name can not have any special characters & Maximum\r\n number of tag can be 5\r\n </div>\r\n );\r\n case !!commaInTagName:\r\n return (\r\n <div\r\n role=\"alert\"\r\n className={`text-sm ${INPUT_ERROR_TEXT_COLOR} mb-5`}\r\n >\r\n * Tag Name can not have any special characters\r\n </div>\r\n );\r\n case !!tagNameLength:\r\n return (\r\n <div\r\n role=\"alert\"\r\n className={`text-sm ${INPUT_ERROR_TEXT_COLOR} mb-5`}\r\n >\r\n * Maximum number of tag can be 5\r\n </div>\r\n );\r\n\r\n default:\r\n return null;\r\n }\r\n })()}\r\n\r\n <div\r\n className={`${\r\n !disableSaveButton ? 'flex flex-col lg:flex-row' : ''\r\n } gap-[19px] leading-[23px] font-bold ${TEXT_SIZE_4} mt-5`}\r\n >\r\n {toggleSaveLogo.key === 'save' && (\r\n <>\r\n <button\r\n className={`md:btn-md lg:w-2/5 w-full rounded-none uppercase active:${SAVEBUTTON_BG_COLOR} ${\r\n isSaving ? 'bg-[#d77382]' : SAVEBUTTON_BG_COLOR\r\n } ${BUTTON_TEXT_COLOR} ${\r\n isSaving ? '' : 'hover:bg-[#E11A38]'\r\n }`}\r\n onClick={() => onSaveHandler()}\r\n disabled={isSaving}\r\n >\r\n SAVE\r\n </button>\r\n <button\r\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 `}\r\n onClick={() => onCancelHandler()}\r\n >\r\n Cancel\r\n </button>\r\n </>\r\n )}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </LogoEditorSaveDesignModal>\r\n );\r\n};\r\n","import React, { useRef, useEffect } from 'react';\r\n/**\r\n * Hook that alerts clicks outside of the passed ref\r\n */\r\nfunction useOutsideAlerter(ref: any, onClick: any) {\r\n useEffect(() => {\r\n /**\r\n * Alert if clicked on outside of element\r\n */\r\n function handleClickOutside(event: any) {\r\n if (ref.current && !ref.current.contains(event.target)) {\r\n // alert('You clicked outside of me!');\r\n onClick(event);\r\n }\r\n }\r\n function handleEscape(event: any) {\r\n if (event.key == 'Escape') onClick(event);\r\n }\r\n // Bind the event listener\r\n document.addEventListener('keydown', handleEscape);\r\n document.addEventListener('mousedown', handleClickOutside);\r\n return () => {\r\n // Unbind the event listener on clean up\r\n document.removeEventListener('mousedown', handleClickOutside);\r\n document.removeEventListener('keydown', handleEscape);\r\n };\r\n }, [ref]);\r\n}\r\n\r\n/**\r\n * Component that alerts if you click outside of it\r\n */\r\nfunction OutsideAlerter(props: any) {\r\n const wrapperRef = useRef(null);\r\n useOutsideAlerter(wrapperRef, props.onClick);\r\n\r\n return <div ref={wrapperRef}>{props.children}</div>;\r\n}\r\n\r\nexport default OutsideAlerter;\r\n","import React, { useState } from 'react';\r\nimport { ChromePicker } from 'react-color';\r\nimport { use3dddPlus } from '../../store';\r\nimport { shallow } from 'zustand/shallow';\r\nimport OutsideAlerter from '../../hooks/outsideAlerter';\r\nexport const ColorPicker = () => {\r\n const [setDisplayProductColor, displayProductColor] = use3dddPlus(\r\n (state) => [state.setDisplayProductColor, state.displayProductColor],\r\n shallow\r\n );\r\n const [currentColor, setCurrentColor] = useState('#fff');\r\n\r\n const handleOnChange = (color) => {\r\n setCurrentColor(color.hex);\r\n const canvas = use3dddPlus.getState().fabricCanvas;\r\n canvas.backgroundColor = color.hex;\r\n canvas.renderAll();\r\n };\r\n\r\n return (\r\n <div className=\"absolute\">\r\n {displayProductColor && (\r\n <div className=\"relative top-[25vh] left-5 flex\">\r\n <OutsideAlerter onClick={() => setDisplayProductColor()}>\r\n <ChromePicker\r\n color={currentColor}\r\n onChange={handleOnChange}\r\n // onChangeComplete={handleOnChange}\r\n disableAlpha={true}\r\n onClose={() => setDisplayProductColor()}\r\n />\r\n </OutsideAlerter>\r\n </div>\r\n )}\r\n </div>\r\n );\r\n};\r\n","import React from 'react';\r\nimport { Canvas } from '../canvas';\r\nimport { use3dddPlus } from '../../store';\r\nimport { shallow } from 'zustand/shallow';\r\nimport { UploadLogo } from '../uploadLogo';\r\nimport { Rightmenu } from '../Rightmenu';\r\nimport { AddMascot } from '../addMascot';\r\nimport { MyLogo } from '../myLogo';\r\nimport { SaveDesign } from '../saveDesign';\r\nimport {ColorPicker} from '../leftMenu/colorPicker'\r\nexport const MiddleMenu = ({ onApply, onSaveLogo }) => {\r\n const [selectedStepper, toggleSaveLogo, loadingLogo] = use3dddPlus(\r\n (state) => [state.selectedStepper, state.toggleSaveLogo, state.loadingLogo],\r\n shallow\r\n );\r\n React.useEffect(() => {\r\n if (selectedStepper === 2) loadingLogo('');\r\n }, []);\r\n return (\r\n <>\r\n <div className=\" flex flex-col md:flex-row flex-1 z-0 w-[90%] h-full\">\r\n <div className=\"flex w-[70%] h-[100%]\">\r\n <Canvas />\r\n </div>\r\n {toggleSaveLogo.status && <SaveDesign onSaveLogo={onSaveLogo} />}\r\n <div className=\"flex-1 z-[7] h-full\">\r\n <Rightmenu />\r\n </div>\r\n </div>\r\n {selectedStepper === 1 && <UploadLogo />}\r\n {selectedStepper === 4 && <AddMascot />}\r\n {selectedStepper === 2 && <MyLogo onApply={onApply} />}\r\n {selectedStepper === 5 && <ColorPicker />}\r\n </>\r\n );\r\n};\r\n","// FontLoader.ts\r\n\r\nimport { useEffect } from 'react';\r\n\r\nconst FontLoader = ({ fontPath }) => {\r\n useEffect(() => {\r\n const timeStamp = Date.now();\r\n // @ts-ignore\r\n const font = new FontFace(\r\n fontPath.name,\r\n `url('${fontPath.src}?timestamp=${timeStamp})`\r\n );\r\n font\r\n .load()\r\n .then((value) => {\r\n //@ts-ignore\r\n document.fonts?.add(value);\r\n document.body.classList.add('fonts-loaded');\r\n })\r\n .catch((error) => {\r\n console.error('Font is not available', error);\r\n });\r\n }, [fontPath]);\r\n\r\n return null;\r\n};\r\n\r\nexport default FontLoader;\r\n","import { useEffect } from 'react';\r\n\r\nconst LoadGoogleFonts = () => {\r\n useEffect(() => {\r\n // Fetch the fonts JSON\r\n fetch('https://storage.googleapis.com/3ddplusgcp/richardson-customizer/fonts/googleFonts.json')\r\n .then((response) => response.json())\r\n .then((data) => {\r\n console.log(data);\r\n const { fonts } = data;\r\n fonts.forEach((fontUrl) => {\r\n const link = document.createElement('link');\r\n link.href = fontUrl;\r\n link.rel = 'stylesheet';\r\n document.head.appendChild(link);\r\n });\r\n console.log(\"Loaded dsssuuuu...\");\r\n })\r\n .catch((error) => console.error('Error loading fonts:', error));\r\n }, []);\r\n\r\n return null; // This component doesn't render anything\r\n};\r\n\r\nexport default LoadGoogleFonts;\r\n","export const defaultColorNames = [\r\n { color: 'transparent', name: 'Transparent' },\r\n { color: '#040404', name: 'Black' },\r\n { color: '#FFFFFF', name: 'White' },\r\n { color: '#D7DEE2', name: 'Light Silver' },\r\n { color: '#C6C8C8', name: 'Heather Grey' },\r\n { color: '#BDBDC0', name: 'Silver' },\r\n { color: '#6C7A89', name: 'Steel Grey' },\r\n { color: '#5F6162', name: 'Charcoal' },\r\n { color: '#3B4548', name: 'Asphalt' },\r\n { color: '#12242C', name: 'Graphite' },\r\n { color: '#FAF7ED', name: 'Cream' },\r\n { color: '#E9E7D9', name: 'Eggshell' },\r\n { color: '#E9D7B7', name: 'Khaki' },\r\n { color: '#BFA881', name: 'Beige' },\r\n { color: '#C09B7B', name: 'Taupe' },\r\n { color: '#93715B', name: 'Light Brown' },\r\n { color: '#624B36', name: 'Medium Brown' },\r\n { color: '#532D23', name: 'Brown' },\r\n { color: '#482925', name: 'Walnut' },\r\n { color: '#332322', name: 'Dark Walnut' },\r\n { color: '#362519', name: 'Mud' },\r\n { color: '#5F452F', name: 'Bark' },\r\n { color: '#D6D1C3', name: 'Stone' },\r\n { color: '#C2C2B8', name: 'Dark Stone' },\r\n { color: '#BDA998', name: 'Camo Stone' },\r\n { color: '#867E72', name: 'Putty' },\r\n { color: '#766A5B', name: 'Driftwood' },\r\n { color: '#857262', name: 'Desert Brown' },\r\n { color: '#67451F', name: 'Buck Mesh' },\r\n { color: '#824323', name: 'Buck' },\r\n { color: '#8C4522', name: 'Copper' },\r\n { color: '#C16A27', name: 'Toast' },\r\n { color: '#CE8A2D', name: 'Mustard' },\r\n { color: '#CB9E59', name: 'Old Gold' },\r\n { color: '#F4B716', name: 'Dark Cal Gold' },\r\n { color: '#ED9717', name: 'Dark Gold' },\r\n { color: '#FFB81C', name: 'Gold - Ath' },\r\n { color: '#F5DDA2', name: 'Vegas Gold' },\r\n { color: '#DEB66A', name: 'Brass' },\r\n { color: '#EFC78D', name: 'Tan' },\r\n { color: '#F6D75E', name: 'Lt. Cal Gold' },\r\n { color: '#FFF9B7', name: 'Mellow Yellow' },\r\n { color: '#FDED00', name: 'Lemon' },\r\n { color: '#FCC614', name: 'Yellow' },\r\n { color: '#FBB66E', name: 'Honey' },\r\n { color: '#FCAE77', name: 'Light Peach' },\r\n { color: '#F3751F', name: 'Gold Orange' },\r\n { color: '#F5831E', name: 'Tenn. Orange' },\r\n { color: '#E86432', name: 'Salmon' },\r\n { color: '#E45224', name: 'Orange' },\r\n { color: '#94321D', name: 'Texas Orange' },\r\n { color: '#F27D66', name: 'Southern Peach' },\r\n { color: '#F4AC96', name: 'Peach' },\r\n { color: '#F5A2C6', name: 'Cotton Candy' },\r\n { color: '#F283B4', name: 'Pink' },\r\n { color: '#DD2825', name: 'Red-Orange' },\r\n { color: '#B82026', name: 'Red' },\r\n { color: '#7D1523', name: 'Cardinal' },\r\n { color: '#581C28', name: 'Burgundy' },\r\n { color: '#451112', name: 'Maroon' },\r\n { color: '#8E2056', name: 'Violet' },\r\n { color: '#DE1761', name: 'Fuchsia' },\r\n { color: '#CE9F9F', name: 'Light Rose' },\r\n { color: '#AB6B6C', name: 'Dark Rose' },\r\n { color: '#B790C2', name: 'Pale Lilac' },\r\n { color: '#A276B3', name: 'Lavender' },\r\n { color: '#4856A6', name: 'Lilac' },\r\n { color: '#5E1B56', name: 'Grape' },\r\n { color: '#48236E', name: 'Purple' },\r\n { color: '#7BBEE8', name: 'Columbia Blue' },\r\n { color: '#1B91D0', name: 'Sky Blue' },\r\n { color: '#16B1D1', name: 'Aqua' },\r\n { color: '#0A96BD', name: 'Cyan' },\r\n { color: '#0080C1', name: 'Bright Blue' },\r\n { color: '#2481B3', name: 'Baltic Blue' },\r\n { color: '#005F9C', name: 'Air Force Blue' },\r\n { color: '#0D5EA0', name: 'Royal' },\r\n { color: '#163959', name: 'Denim' },\r\n { color: '#0B162E', name: 'Navy' },\r\n { color: '#063E44', name: 'Forest Teal' },\r\n { color: '#8BD6D4', name: 'Aruba Blue' },\r\n { color: '#6AC4CC', name: 'Southern Mint' },\r\n { color: '#007680', name: 'Blue Teal' },\r\n { color: '#007189', name: 'Surf Blue' },\r\n { color: '#53878B', name: 'Bahama Blue' },\r\n { color: '#84B5B2', name: 'Smoke Blue' },\r\n { color: '#00A192', name: 'Green Teal' },\r\n { color: '#05A17E', name: 'Mint' },\r\n { color: '#AADAC9', name: 'Light Mint' },\r\n { color: '#CDE4B4', name: 'Patina Green' },\r\n { color: '#AECBAC', name: 'Willow' },\r\n { color: '#72C164', name: 'Key Lime' },\r\n { color: '#00A34A', name: 'Emerald' },\r\n { color: '#00A84E', name: 'Emerald Maderia' },\r\n { color: '#00643B', name: 'Irish Green' },\r\n { color: '#0B5935', name: 'Kelly' },\r\n { color: '#364D44', name: 'Spruce' },\r\n { color: '#005028', name: 'Dark Green' },\r\n { color: '#004125', name: 'Dark Pine' },\r\n { color: '#3F7336', name: 'Lime Green' },\r\n { color: '#81A046', name: 'D Sport Green' },\r\n { color: '#9BA997', name: 'Spring Green' },\r\n { color: '#89906D', name: 'Light Olive' },\r\n { color: '#667360', name: 'Mute Green' },\r\n { color: '#747C32', name: 'Moss' },\r\n { color: '#3D471F', name: 'Olive' },\r\n { color: '#454126', name: 'Army Olive' },\r\n { color: '#535435', name: 'Loden Mesh' },\r\n { color: '#39392A', name: 'Sage' },\r\n { color: '#59501C', name: 'Army Gold' },\r\n { color: '#BEA82F', name: 'Green Gold' },\r\n { color: '#E64677', name: 'Neon Pink' },\r\n { color: '#F37F95', name: 'Optic Pink' },\r\n { color: '#F04D30', name: 'Blaze Orange' },\r\n { color: '#F26920', name: 'Neon Orange' },\r\n { color: '#F8ED4D', name: 'Neon Yellow' },\r\n { color: '#C6FF19', name: 'Optic Green' },\r\n { color: '#85C44B', name: 'Neon Green' },\r\n];\r\n","import React, { useEffect, useState } from 'react';\r\nimport { Modal } from './components';\r\n// import { ToastContainer, Bounce } from 'react-toastify';\r\nimport { LeftMenu } from './components/leftMenu';\r\nimport { Loader } from './components/loader';\r\nimport { MiddleMenu } from './components/middleMenu';\r\nimport FontLoader from './loaders/FontLoader';\r\nimport { use3dddPlus } from './store';\r\nimport 'react-toastify/dist/ReactToastify.css';\r\nimport './index.css';\r\nimport LoadGoogleFonts from './loaders/GoogleFontLoader';\r\nimport { defaultColorNames } from './assets/colors/colors';\r\n\r\nconst LogoEditor = ({\r\n stepperId,\r\n onApply,\r\n customLogoColorList,\r\n defaultColorList,\r\n logoData,\r\n customerId,\r\n onSaveLogo,\r\n onClose,\r\n options = {}\r\n}) => {\r\n const [\r\n setSelectedStepper,\r\n loading,\r\n myLogoHandler,\r\n toggleSaveLogo\r\n ] = use3dddPlus((state) => [\r\n state.setSelectedStepper,\r\n state.loading,\r\n state.myLogoHandler,\r\n state.toggleSaveLogo,\r\n ]);\r\n const [fontList, setFontList] = useState([]);\r\n\r\n useEffect(() => {\r\n setSelectedStepper(stepperId);\r\n }, [stepperId]);\r\n\r\n useEffect(() => {\r\n setSelectedStepper(stepperId);\r\n if (stepperId === undefined) {\r\n myLogoHandler(logoData);\r\n }\r\n const colorList = (defaultColorList && defaultColorList.length > 0) ? defaultColorList : defaultColorNames;\r\n const availableColorCodes = colorList.map(item => item.color.toUpperCase());\r\n use3dddPlus.setState({\r\n customUploadLogoColorList: customLogoColorList,\r\n defaultColorList: colorList,\r\n customerId: customerId,\r\n availableColorCodes: availableColorCodes,\r\n customOptions: options\r\n });\r\n\r\n fetch(\r\n 'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/fonts/fontFamilies.json'\r\n )\r\n .then((response) => response.json())\r\n .then((data) => {\r\n setFontList(data);\r\n const uniqueFonts = data.filter(\r\n (obj1, index, arr) =>\r\n arr.findIndex((obj2) => obj2.name === obj1.name) === index\r\n );\r\n const sortedFonts = uniqueFonts.sort((a, b) => a.sortOrder - b.sortOrder);\r\n use3dddPlus.setState({\r\n fontFamilies: sortedFonts,\r\n });\r\n })\r\n .catch((error) => console.error('Error fetching font families:', error));\r\n }, [\r\n // stepperId,\r\n // customLogoColorList,\r\n // defaultColorList,\r\n // customerId,\r\n // logoData,\r\n // myLogoHandler,\r\n // setSelectedStepper,\r\n ]);\r\n\r\n return (\r\n <Modal\r\n backdropStyle=\"z-[7]\"\r\n contentStyle=\"top-0 bottom-0 !m-[auto] z-[7] w-[80%] p-0\"\r\n crossOnClick={onClose}\r\n >\r\n <div className={`flex flex-col md:flex-row w-full h-[88vh] ${toggleSaveLogo.status ? \"z-10\" : \"\"}`}>\r\n {/* <ToastContainer\r\n position=\"top-center\"\r\n autoClose={3000}\r\n hideProgressBar\r\n newestOnTop={false}\r\n closeOnClick\r\n rtl={false}\r\n pauseOnFocusLoss\r\n draggable\r\n pauseOnHover\r\n theme=\"colored\"\r\n transition={Bounce}\r\n containerId={\"logoEditor\"}\r\n /> */}\r\n {fontList.map((font, index) => (\r\n <FontLoader key={index} fontPath={font} />\r\n ))}\r\n <LoadGoogleFonts />\r\n {loading && <Loader />}\r\n <div className=\"w-[10%] h-[100%]\">\r\n <LeftMenu />\r\n </div>\r\n <div className=\"flex h-full w-[90%] flex-1\">\r\n <MiddleMenu onApply={onApply} onSaveLogo={onSaveLogo} />\r\n </div>\r\n </div>\r\n </Modal>\r\n );\r\n};\r\n\r\nexport default LogoEditor;\r\n"],"names":["Icon","React","forwardRef","_ref","ref","label","icon","className","props","_objectWithoutPropertiesLoose","_excluded","tooltip","useTooltipState","placement","TooltipReference","as","Button","Tooltip","style","zIndex","IconButton","_ref2","_ref2$size","size","_ref2$icon","undefined","_excluded2","IconContext","Provider","value","HorizontalFlip","GenIcon","tag","attr","xmlns","width","height","viewBox","child","d","VerticalFlip","fill","stroke","transform","Error","cx","cy","r","stroke-linecap","stroke-width","RLogo","id","fillRule","strokeWidth","MyLogo","AddText","FlipH","data-name","clip-path","FlipV","SelectAll","_extends","rx","x","y","Copy","SendToBack","stroke-miterlimit","SendToFront","SendAObject","SendUnderObject","EyeDropper","Delete","SnapToCenter","CustomToast","type","message","toastId","toast","info","toastGen","error","success","warning","toastMessages","deleteLogoSuccess","e","saveSuccess","somethingWentWrong","updateLogoSuccess","updateSuccess","noOfColors","noIteminCanvas","fileSize","noChangesMade","fontsNotAvailable","pleaseSelectTheImage","pleaseSelectTheImageDulpicate","applyLogoColorNotAvailable","decType","saveLogoColorNotAvailable","graphqlSlice","set","get","displayLoginModal","showProductBreakUpModal","status","loadDesignModal","productInfoModal","toggleSaveLogo","key","title","details","showModalAfterLogin","selectedDesign","changeModel","alert","confirmDesignModal","confirmUpdateDesignModal","toggleSuccessfullDesign","designUpdateSuccessfulModal","getListFromRack","setSelectedDesign","selected","setLoadDesignModal","loadDesign","clearLayers","use3dddPlus","setState","storeAllObject","setToggleSaveLogo","setConfirmDesignModal","setConfirmUpdateDesignModal","state","setToggleSuccessfullDesign","setProductInfoModal","editDesignInfo","saveDesignModal","current","getState","navigateTo","logoName","designNotes","logoTag","string","characters","i","charAt","Math","floor","random","length","designNumber","customerId","toggleLoginModal","setShowModalAfterLogin","disableSaveButton","_unused","share","saveRackSuccessfulModal","setSaveRackSuccessfulModal","toggleAction","toogleShowProductBreakUpModal","disableUpdate","productBreakup","logoSearchText","logoSortBy","logoSortDir","logoPageNo","logoPageSize","showCrossSave","baseURL","process","env","REACT_APP_LAMBDA_URL","instance","axios","create","timeout","headers","Content-Type","Authorization","responseBody","response","data","requests","url","then","post","body","config","put","delete","lambdaSlice","_set","_get","lambdaClient","loadingLogo","_loadingLogo","_asyncToGenerator","_regeneratorRuntime","mark","_callee","_data","res","wrap","_context","prev","next","loading","sent","retriveLogoDesign","abrupt","t0","console","stop","_x","apply","arguments","getStockLogos","_getStockLogos","_callee2","_context2","fabric","Object","prototype","hasControls","hasBorders","stockLogos","saveLogo","_saveLogo","_callee3","logo","_context3","_x2","vectorize","_vectorize","_callee4","formData","_context4","FormData","append","log","image","_x3","saveDesignSlice","designImageUrl","designProofPdfUrl","designConfig","designId","hasDesignNumber","showSaveCTA","showSaveRackCTA","_oldURL","REACT_APP_IMAGE_URL_OLD","_newURL","REACT_APP_IMAGE_URL","getCookie","cname","name","ca","decodeURIComponent","document","cookie","split","c","substring","indexOf","setCookie","cvalue","exdays","Date","setTime","getTime","expires","toUTCString","clearCookie","encryptToken","CryptoJS","AES","encrypt","JSON","stringify","toString","decryptToken","ciphertext","bytes","decrypt","parse","enc","Utf8","includes","replace","texture","item","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","createElement","appendChild","download","href","click","removeChild","which","keycode","preventDefault","authSlice","customUploadLogoColorList","defaultColorList","availableColorCodes","customOptions","priceLevel","clearLoginInfo","sessionStorage","removeItem","authType","cardCode","customerEmail","customerType","generateCustomizerToken","setInCookies","customizerToken","setItem","setCustomizerToken","getItem","isLoggedIn","historySlice","history","page","concat","goBack","previousPage","pop","fabricSlice","popUpCanvasCount","popupCanvasStoreHistory","availableMascots","filteredMascots","logoData","setLogoData","allColor","selectedStepper","setSelectedStepper","hasUploadScreen","setHasUploadScreen","storeHistory","fabricCanvas","popupCanv","textInfo","uploadImageModalDisplay","mylogoAdded","currentSelection","activeSelection","selectedAll","colorFill","defaultColorFill","loadedObject","defaultColorFillCopy","iconImage","HideControls","tl","tr","bl","br","ml","mt","mr","mb","mtr","showContextMenu","forStoringAllObject","unshift","forIconCapture","activeObject","getActiveObject","dataURL","toDataURL","nameCounter","guid","u","now","repeat","substr","duplicateObject","clipboard","activeObj","clone","cloned","clonedObj","discardActiveObject","evented","canvas","forEachObject","obj","index","_objects","pathData","shapeSize","shapeType","fontFamily","fontWeight","fontSize","charSpacing","textAlign","fontStyle","text","add","setCoords","top","left","setActiveObject","brNew","getBoundingRect","updateModifaction","deleteButtonControls","count","skipEvent","undo","clear","renderAll","loadFromJSON","getObjects","forEach","remove","horizontalLine","Line","scaleX","visible","selectable","verticalLine","centerH","sendToBack","element","redo","abs","sendBackwards","moveDown","moveUp","moveRight","moveLeft","applyColorFill","toJSON","setDefaultColorFill","dcf","setDefaultColorFillCopy","toSet","push","contextMenuCoordinates","stockLogoHandler","logos","loadMascots","loadSVGFromURL","objects","options","util","groupSVGElements","scaleToWidth","scaleToHeight","objImage","_Fills","ele","fillColor","removeDuplicates","fillColors","centerObject","myLogoHandler","fetch","logo_config_url","method","result","loadingRetrivedFiles","bind","backgroundColor","uploadLogoConfig","_uploadLogoConfig","jsonConfig","bucketName","region","S3","microTime","filePath","params","s3UrlPath","REACT_APP_BUCKET","REACT_APP_REGION","AWS","update","accessKeyId","REACT_APP_ACCESSKEY","secretAccessKey","REACT_APP_SECRET_ACCESSKEY","Bucket","Key","Body","ContentType","Promise","resolve","reject","putObject","err","setAvailableMascots","setFilteredMascots","handleMascotObjectFilterValues","event","filterValue","filteredData","filter","tags","displayProductColor","setDisplayProductColor","popUpCanvasAllColor","popUpCanvasApplyColorFill","popUpCanvasUpdateModification","historyObject","json","popUpCanvasUndo","_V","colors","perPixelTargetFind","canvasWidth","canvasHeight","numCols","ceil","numRows","line","lockMovementX","lockMovementY","lockScalingX","lockScalingY","j","rect","Rect","isEvenRow","popUpCanvasRedo","forPopupCanvasReset","forPopupCanvasColor","imageData","lastPosition","setLastPosition","validateColorAvailability","imgColorCodes","allowedColorCodes","validation","colorCode","trim","toUpperCase","fontFamilies","TIFFParser","this","tiffDataView","littleEndian","fileDirectories","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","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","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","pixelSamples","red","green","blue","opacity","k","invertValue","samples","colorMapIndex","fillRect","converterSlice","_convertPdfToImages","_loadImageFromURL","_aiConvert","_tiffConvert","processImage","svgstr","colorValue","canvasToLoad","addCheckerBox","loadSVGFromString","svgData","getDesignConceptSVGData","resItem","node","_resItem$node$childre","_resItem$node$childre2","children","getAttribute","pathStartOffset","parseFloat","startOffset","baseVal","valueAsString","_canvasToLoad","val","minX","fillCounts","colorObjects","_ele$id","sortedFillColors","keys","sort","topColors","colorObjectsHex","_C","RGBToHex","hex","defaultCF","euclideanDistance","color1","color2","c1","Color","getSource","c2","diffG","diffB","sqrt","cf","property","default","updated","colorMap","color","closestColor","reduce","curr","_use3dddPlus$getState","_use3dddPlus$getState2","_use3dddPlus$getState3","textElements","DOMParser","parseFromString","querySelectorAll","textElement","_textElement$parentNo","hrefValue","_textElement$getAttri","parentNode","file","setFile","tiffConvert","tiffParser","canvasEl","tiffCanvas","imageUrl","arrayBuffer","aiConvert","aiFile","REACT_APP_MAGENTO_URL","REACT_APP_MAGENTO_TOKEN","loadImageFromURL","createCheckerBox","blob","loadDesignConcept","_x4","_x5","_resItem$node$childre3","_resItem$node$childre4","object","toObject","extend","call","items","_restoreObjectsState","ungroup","imageToSVG","ext","isSVG","convert","reader","FileReader","onload","target","readAsText","refreshColor","arr","rgb","rgba","parseInt","sep","changeSVGColor","defaultColorObject","find","addText","Text","lineHeight","paintFirst","padding","lockScalingFlip","layer0","layer1","setControlsVisibility","pdfConverter","_resolve","buffer","convertPdfToImages","readAsArrayBuffer","_callee5","pdf","viewport","context","_context5","pdfjsLib","promise","numPages","getPage","getViewport","scale","render","canvasContext","_x6","subscribeWithSelector","actionSlice","datasbase","styleInject","css","insertAt","head","getElementsByTagName","firstChild","insertBefore","styleSheet","cssText","createTextNode","ToolTip","arrowOnTop","_ref$className","ActionButtons","shallow","canvasActions","onClick","sel","ActiveSelection","requestRenderAll","disabled","MdLayers","getActiveObjects","findIndex","splice","CgUndo","CgRedo","justifyContent","CANVAS_MENU_TEXT","NudgeButtons","textSelected","nudgeMove","aCoords","marginTop","marginBottom","version","ContextMenu","_use3dddPlus","menu","onclick","display","bringForward","bringToFront","flipX","originX","toGroup","_canvas$getActiveObje","_canvas$getActiveObje2","canvasRef","useRef","resizeCanvas","getElementById","outerCanvasContainer","containerWidth","clientWidth","getWidth","zoom","getZoom","setWidth","setHeight","clientHeight","setViewportTransform","useEffect","canv","left1","top1","scale1x","scale1y","width1","height1","fontList","Set","fonts","font","family","Array","from","FontFaceObserver","load","Canvas","centeredScaling","preserveObjectStacking","stopContextMenu","isObjectInCenter","canvasCenterX","objCenterX","isObjectInVerticalCenter","canvasCenterY","getHeight","isObjectInHorizontalCenter","deleteImg","crossOrigin","src","rotateImg","settingImg","renderIcon","fabricObject","cornerSize","save","translate","rotate","degreesToRadians","angle","drawImage","restore","objectCaching","transparentCorners","cornerColor","cornerStrokeColor","borderColor","cornerStyle","borderDashArray","traverse","fn","_step","_iterator","_createForOfIteratorHelperLoose","done","_step2","_iterator2","controls","deleteControl","Control","offsetY","offsetX","cursorStyle","mouseUpHandler","eventData","settingControl","getElement","getBoundingClientRect","clientX","clientY","actionHandler","controlsUtils","rotationWithSnapping","actionName","withConnection","getAllColors","on","_e$selected","_e$selected$","_e$selected2","_e$selected2$","isNaN","pointer","max","min","scaleY","lockRotation","centeredRotation","initCanvas","addEventListener","FontFace","_document$fonts","classList","position","border","boxShadow","onBlur","Card","cardClass","CardBody","bodyClass","CardMedia","role","alt","imageClass","backgroundImage","CardTags","tagsClass","CardTitle","titleClass","FileUploadButton","onFileSelect","fileInputRef","_useState","useState","setIsDragging","onDragEnter","onDragLeave","onDragOver","onDrop","droppedFile","dataTransfer","files","htmlFor","MdOutlineFileUpload","_fileInputRef$current","onChange","selectedFile","_event$target$files","accept","ColorPalette","previousColor","_ref$previousClass","previousClass","_ref$mainIndex","mainIndex","handleColorChange","_ref$style","selectColor","setSelectColor","colorList","handleColorClick","TEXT_SIZE_9","ColorBox","boxClass","_ref2$boxClass","background","marginLeft","ColorImpl","mClass","stopPropagation","setDisplayPallet","callback","setPosition","innerHeight","PopUpCanvas","popupCanvas","colorCount","setColorCount","_useState2","colorFillCount","setColorFillCount","_useState3","isRefresh","setIsRefresh","_useState4","isNextClicked","setIsNextClicked","defaultColorFillRef","_useState5","zoomLevel","setZoomLevel","_useState6","displayPallet","_useState7","hasPallet","_defaultColorFill$fin","setTimeout","onColorUpdate","removeColorPalatte","cursorUrl","popupcanvas","defaultCursor","hoverCursor","_popupcanvas$getObjec","flat","Boolean","toActiveSelection","viewportCenter","Initpopup","removedColors","defaultColorsCopy","rc","dc","removeEventListener","canvasPan","direction","relativePan","Point","conflictColors","useMemo","newZoomLevel","center","getCenter","zoomToPoint","x1","x2","y1","y2","currentColors","colorFromDefaultCopy","dcc","resetHandler","overflow","alignItems","Number","CgArrowRight","onSelectColor","cursor","GiDrop","handleChange","MdOutlineCancel","bottom","right","mixBlendMode","objs","alltogetherObj","Group","onContinue","mainClass","UploadLogo","setSelectedFile","svgConverter","lastIndexOf","s3_file_url","svgText","ex","svg_url","Searchbar","searchBarMainClass","placeholder","onKeyPress","onPaste","currentTarget","focus","Modal","contentStyle","crossOnClick","modalStyle","backdropStyle","open","RxCross2","SortAndFilterButton","icons","buttonLabelClass","SortByDropdown","sortOptions","isDropdownOpen","setIsDropdownOpen","dropdownRef","toggleDropdown","handleOutsideClick","contains","BsSortDown","option","sortBy","sortDir","onApply","_React$useState","logoSelected","setLogoSelected","scrollEnd","setScrollEnd","morePages","setMorePages","myRef","debouncedSearchText","milliSeconds","debouncedValue","setDebouncedValue","handler","clearTimeout","useDebounce","handleScroll","useCallback","scrollY","scrollTop","scrollHeight","fetchData","fetchSvgImageColors","_ref4","svgUrl","parser","svgDoc","elementsWithColors","extractedColors","strokeColor","styleProps","extractStyles","rgbToHex","match","styleRegex","exec","rgbArray","_rgbArray$map","padStart","handleApplyLogo","_ref5","_customOptions$decora","logo_svg_url","decorationType","onScroll","_logo$tag","_logo$tag$split","_logo$tag$split$filte","logo_id","logo_url","BsCheckLg","_ref$label","_ref$iconPosition","iconPosition","checkMarkClass","IoMdCheckmarkCircle","downloadClass","iconClass","pdfUrl","downloadIconClass","HiOutlineDownload","flagClass","flag","descriptionClass","InputImpl","buttons","buttonMainClass","button","buttonClass","headingStyle","labelStyle","onIconClick","iconStyle","LeftMenu","StepperList","FaRegImage","BiSolidColorFill","TEXT_COLOR_1","SELECT_TEXT_COLOR","step","SELECT_BG_COLOR","Loader","_ref$position","_ref$height","loaderRef","UpIcon","DownIcon","DeleteIcon","Layers","onSave","changeArr","fromIndex","toIndex","layerHandle","currentObject","margin","deleteElement","textShapes","tabs","warpTypes","None","Arc","Bridge","Bowtie","Vertical Arch","Reverse Vertical Arch","textProperties","errorPopup","TextProperties","onTextChange","fontChange","textStyle","textColorChange","textAlignDisplay","activeButton","textAlignHandler","textOutlineHandler","strokeColorChange","textSpacingHandler","textShapeChange","shapeSizeVal","textShapeSizeHandler","INPUT_BG_COLOR","list","underline","FiAlignLeft","FiAlignCenter","FiAlignRight","ErrorColorDiv","Properties","activeTab","setTextAlignDisplay","bold","italic","setFontStyle","setActiveButton","setShapeSizeVal","textLength","setTextLength","bridgeshapeBendSize","setBridgeShapeBendSize","bowtieshapeBendSize","setBowtieShapeBendSize","_ref3","textValue","lines","isFontWithCamelCase","formattedText","Configuration","fontWithCamelCase","reduceFontSize","changeSVGTextColor","setPropertyColor","setColorFill","_ref6","_updated","_updated3","_updated5","SelectedObjet","tempColorFill","textToPath","_ref7","promises","pathObj","fontSource","o","getPath","fabricPath","Path","toPathData","all","bridgeShapeChange","_ref8","textChange","p","_text","dims","newTextPath","_dims","toClipPathSVG","_removeCacheCanvas","updateStoreAllObject","warp","bend","output","_calcDimensions","_x7","_x8","_x9","_x10","_x11","_x12","_ref9","_callee6","_activeObj","_context6","mergedColors","_Object$keys","tempColors","uniqueColors","_property","activeText","newSize","valueAsNumber","warpType","prop","applyTextProperties","dimensions","setNewPathDimensions","setShapeSizeOnTextPath","dublicateText","oldCharSpacing","_extends2","_Object$keys2","ErrorPopup","t","s","h","exports","l","defineProperty","configurable","enumerable","n","__esModule","hasOwnProperty","_class","source","A","B","C","D","Aleft","Atop","Btop","Bright","Cright","Cbottom","Dbottom","Dleft","ABx","ABy","CDx","CDy","BCx","BCy","ADx","ADy","STEPS","distortX","distortY1","distortY2","T1","T2","kAB","kBC","kCD","kAD","applyParameters","_proto","_parameters","PI","sin","cos","kt","distortV","distortH","setAnchors","setArc","setArcLower","setArcUpper","setArch","setBulge","setFlag","setFish","setRise","setInflate","setSqueeze","setWaveLower","setWaveUpper","setControls","changeCubic","_changePoint","getPointOn","getNewSegment","changePoint","calculateArms","_class2","Exception","_props","vertical","commands","parseString","_proto2","calcRectangle","xMin","yMin","xMax","yMax","Rightmenu","initTE","Tab","setActiveTab","removeColorPalette","unSub","subscribe","_current","_previous","tab","DropdownIndicator","components","control","base","&:hover","isSelected","isFocused",":active","ListDropdown","dropdownData","handleSelected","setData","Select","defaultValue","isSearchable","IndicatorSeparator","styles","decorationData","code","description","linkedNodes","threeD","thumbnail","AddMascot","flatMap","mascot","labelClass","labelSpan","dropdownClass","dropdownLiClass","LogoEditorSaveDesignModal","CustomInput","customLabelStyle","customInputStyle","FloatingLabel","variant","onKeyDown","theme","outlined","sm","md","input","helperText","SaveDesign","onSaveLogo","designNameValidation","setDesignNameValidation","tempCanvas","commaInTagName","setCommaInTagName","tagNameLength","setTagNameLength","isSaving","setIsSaving","closeModal","tagName","setTagName","onSaveHandler","canvasGetobject","pathTextsData","selectAllCanvasObjects","canvasData","pathTextsKeys","dataCh","S3UrlPath","canvasSvg","raw","nameValidation","_obj$_objects","group","originY","clonedGroup","boundingRect","paddedHeight","dispose","round","assign","toSVG","customer_id","base64_image","svg_image","test","handleKeyDown","keyCode","regTest","handleAdd","handleBackspace","handleNameChange","newList","_e$target","_e$target$value","trimStart","_e$target2","_e$target2$value","isArray","el","TEXT_SIZE_12","EDIT_DESIGN_INFO_TEXT_COLOR_1","_event$target","OutsideAlerter","wrapperRef","handleClickOutside","handleEscape","ColorPicker","setCurrentColor","ChromePicker","disableAlpha","onClose","MiddleMenu","FontLoader","fontPath","timeStamp","LoadGoogleFonts","fontUrl","rel","defaultColorNames","stepperId","customLogoColorList","_ref$options","setFontList","sortedFonts","obj1","obj2","sortOrder"],"mappings":"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ACLC,KAAM,CACJkB,GAAI,YACJM,YAAa,YACblB,EAAG,uDAELD,MAAO,IAET,CACEN,IAAK,OACLC,KAAM,CACJkB,GAAI,YACJM,YAAa,YACblB,EAAG,wDAELD,MAAO,IAET,CACEN,IAAK,OACLC,KAAM,CACJkB,GAAI,YACJM,YAAa,YACblB,EAAG,2KAELD,MAAO,MApCNP,CAuCJvB,ICtCQiE,GAAe,SAACjE,GAC3B,OAAOuB,UAAQ,CACbC,IAAK,MACLC,KAAM,CACJkB,GAAI,aACJM,YAAa,aACbvB,MAAO,6BACPC,MAAO,KACPC,OAAQ,SACRC,QAAS,iBAEXC,MAAO,CACL,CACEN,IAAK,IACLC,KAAM,CACJkB,GAAI,aACJM,YAAa,cAEfnB,MAAO,CACL,CACEN,IAAK,OACLC,KAAM,CACJkB,GAAI,YACJM,YAAa,YACblB,EAAG,+QACHI,UAAW,wBACXF,KAAM,WAERH,MAAO,IAET,CACEN,IAAK,OACLC,KAAM,CACJkB,GAAI,YACJM,YAAa,YACblB,EAAG,mQACHI,UAAW,iBACXF,KAAM,WAERH,MAAO,IAET,CACEN,IAAK,OACLC,KAAM,CACJkB,GAAI,YACJM,YAAa,YACblB,EAAG,yWACHI,UAAW,+BACXF,KAAM,WAERH,MAAO,IAET,CACEN,IAAK,OACLC,KAAM,CACJkB,GAAI,YACJM,YAAa,YACblB,EAAG,4RACHI,UAAW,yBACXF,KAAM,WAERH,MAAO,IAET,CACEN,IAAK,OACLC,KAAM,CACJkB,GAAI,YACJM,YAAa,YACblB,EAAG,iJACHI,UAAW,+BACXF,KAAM,WAERH,MAAO,IAET,CACEN,IAAK,OACLC,KAAM,CACJkB,GAAI,YACJM,YAAa,YACblB,EAAG,yFACHI,UAAW,8BACXF,KAAM,WAERH,MAAO,IAET,CACEN,IAAK,OACLC,KAAM,CACJkB,GAAI,YACJM,YAAa,YACblB,EAAG,wFACHI,UAAW,6BACXF,KAAM,WAERH,MAAO,IAET,CACEN,IAAK,OACLC,KAAM,CACJkB,GAAI,YACJM,YAAa,YACblB,EAAG,2DACHI,UAAW,+BACXF,KAAM,WAERH,MAAO,I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"}
|