@nyris/nyris-webapp 0.3.47 → 0.3.48

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.
Files changed (60) hide show
  1. package/build/asset-manifest.json +16 -12
  2. package/build/index.html +1 -1
  3. package/build/js/settings.example.js +84 -13
  4. package/build/{precache-manifest.694373c4d80fe3bb40d0d6526b473852.js → precache-manifest.87ecf17e376539dad2c663829130bfdc.js} +26 -10
  5. package/build/service-worker.js +1 -1
  6. package/build/static/css/main.24b5a712.chunk.css +2 -0
  7. package/build/static/css/main.24b5a712.chunk.css.map +1 -0
  8. package/build/static/js/2.f9395632.chunk.js +3 -0
  9. package/build/static/js/2.f9395632.chunk.js.map +1 -0
  10. package/build/static/js/main.e2a2eb38.chunk.js +3 -0
  11. package/build/static/js/main.e2a2eb38.chunk.js.map +1 -0
  12. package/build/static/media/add.ba46a4bf.svg +4 -0
  13. package/build/static/media/arrow_left.fd9d4390.svg +3 -0
  14. package/build/static/media/arrow_right.c6fdab0b.svg +3 -0
  15. package/build/static/media/minus.3fce6c0a.svg +3 -0
  16. package/package.json +3 -3
  17. package/public/js/settings.example.js +84 -13
  18. package/src/Store/Store.ts +1 -0
  19. package/src/Store/search/Search.ts +36 -0
  20. package/src/Store/search/search.initialState.ts +1 -0
  21. package/src/Store/search/types.ts +1 -0
  22. package/src/common/assets/icons/add.svg +4 -0
  23. package/src/common/assets/icons/minus.svg +3 -0
  24. package/src/components/HeaderMobile.tsx +33 -12
  25. package/src/components/ImagePreviewMobile.tsx +1 -0
  26. package/src/components/Inquiry/InquiryBanner.tsx +1 -1
  27. package/src/components/Layout.tsx +19 -1
  28. package/src/components/MobilePostFilter.tsx +14 -5
  29. package/src/components/PanelResult/PostFilter.tsx +314 -0
  30. package/src/components/PanelResult/{index.tsx → PostFilterAlgolia.tsx} +44 -15
  31. package/src/components/PanelResult/expandable-panel.tsx +20 -14
  32. package/src/components/ProductAttribute.tsx +38 -34
  33. package/src/components/ProductDetailView.tsx +37 -22
  34. package/src/components/ProductList/index.tsx +0 -3
  35. package/src/components/ProductList/useProductList.ts +6 -3
  36. package/src/components/SelectedPostFilter.tsx +103 -0
  37. package/src/components/SidePanel.tsx +18 -7
  38. package/src/components/common.scss +4 -0
  39. package/src/components/current-refinements/getCurrentRefinement.ts +10 -18
  40. package/src/components/icon-label/icon-label.tsx +23 -18
  41. package/src/components/input/inputSearch.tsx +2 -2
  42. package/src/components/pre-filter/index.tsx +16 -10
  43. package/src/components/results/ItemResult.tsx +33 -22
  44. package/src/hooks/useFilter.ts +92 -0
  45. package/src/hooks/useFilteredResult.ts +29 -0
  46. package/src/index.css +2 -1
  47. package/src/page/landingPage/AppMD.tsx +1 -5
  48. package/src/page/landingPage/common.scss +10 -3
  49. package/src/page/result/index.tsx +37 -29
  50. package/src/services/image.ts +0 -5
  51. package/src/translations.ts +9 -0
  52. package/src/types.ts +1 -5
  53. package/build/static/css/main.21021ebe.chunk.css +0 -2
  54. package/build/static/css/main.21021ebe.chunk.css.map +0 -1
  55. package/build/static/js/2.3e652625.chunk.js +0 -3
  56. package/build/static/js/2.3e652625.chunk.js.map +0 -1
  57. package/build/static/js/main.37e28702.chunk.js +0 -3
  58. package/build/static/js/main.37e28702.chunk.js.map +0 -1
  59. /package/build/static/js/{2.3e652625.chunk.js.LICENSE.txt → 2.f9395632.chunk.js.LICENSE.txt} +0 -0
  60. /package/build/static/js/{main.37e28702.chunk.js.LICENSE.txt → main.e2a2eb38.chunk.js.LICENSE.txt} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["common/assets/icons/Union.svg","common/assets/images/no-image.svg","../nyris-react-components/webpack/bootstrap","../webpack:/nyris-react-components/external \"react\"","../webpack:/nyris-react-components/external \"@nyris/nyris-api\"","../nyris-react-components/src/index.tsx","../nyris-react-components/src/components/Preview/Preview.tsx","../webpack:/nyris-react-components/external \"react-konva\"","../webpack:/nyris-react-components/external \"konva\"","../webpack:/nyris-react-components/external \"react-move\"","../nyris-react-components/src/components/Capture/Capture.tsx","../nyris-react-components/src/components/Capture/Capture.css?1149","../nyris-react-components/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js","../nyris-react-components/src/components/Capture/Capture.css","../nyris-react-components/node_modules/css-loader/dist/runtime/api.js","../nyris-react-components/src/components/Capture/images/capture.svg","../nyris-react-components/src/components/Capture/images/arrow_back.svg","../nyris-react-components/src/utils.ts","../../utils.ts","common/assets/images/imageCaptureHelp/img-1-1.png","common/assets/images/imageCaptureHelp/img-1-2.png","common/assets/images/imageCaptureHelp/img2-1.png","common/assets/images/imageCaptureHelp/img2-2.png","common/assets/images/imageCaptureHelp/img3-1.png","common/assets/images/imageCaptureHelp/img3-2.png","common/assets/images/imageCaptureHelp/img4-1.png","common/assets/images/imageCaptureHelp/img4-2.png","common/assets/images/imageCaptureHelp/img5-1.png","common/assets/images/imageCaptureHelp/img5-2.png","common/assets/images/imageCaptureHelp/img6-1.png","common/assets/images/imageCaptureHelp/img6-2.png","common/assets/icons/reverse_camera.svg","common/assets/icons/icon_search.svg","common/assets/icons/camera.svg","common/assets/icons/email_share.svg","../../index.ts","serviceWorker.ts","constants.ts","Store/search/search.initialState.ts","Store/search/Search.ts","utils.ts","Store/Store.ts","Store/constants.ts","common/assets/icons/icon_camera_mobile.svg","services/image.ts","components/drawer/cameraCustom.tsx","common/assets/icons/home.svg","common/assets/icons/info-tooltip.svg","common/assets/icons/logout.svg","common/assets/icons/close.svg","common/assets/images/powered_by_nyris.svg","components/modal/DefaultModal.tsx","components/FooterMobile.tsx","common/assets/icons/filter_settings.svg","webpack:///./src/common/assets/icons/icon_search.svg?1356","common/assets/icons/filter.svg","hooks/useQuery.ts","components/HeaderMobile.tsx","common/assets/icons/avatar.svg","components/Header.tsx","services/session.ts","components/ImageCaptureHelpModal.tsx","common/assets/icons/minus.svg","components/dynamic-widgets/dynamic-widgets.tsx","common/assets/icons/add.svg","components/icon-label/icon-label.tsx","components/collapse/collapse.tsx","components/PanelResult/refinements.ts","components/PanelResult/PostFilterAlgolia.tsx","components/PanelResult/virtual-state-results.ts","components/PanelResult/expandable-panel.tsx","hooks/useFilter.ts","components/PanelResult/PostFilter.tsx","components/MobilePostFilter.tsx","services/filter.ts","helpers/truncateString.ts","components/pre-filter/index.tsx","components/AppMobile.tsx","components/Loading.tsx","components/Provider/InstantSearchProvider.tsx","common/assets/images/powered_by_nyris_colored.svg","components/PoweredByNyris.tsx","components/Layout.tsx","translations.ts","common/assets/icons/IconUploadDownward.svg","components/DragDropFile.tsx","components/input/inputSearch.tsx","page/landingPage/AppMD.tsx","common/assets/icons/take_photo.svg","page/landingPage/AppMobile.tsx","App.tsx","components/clear-refinements/clear-refinements.tsx","components/chip/chip.tsx","components/current-refinements/current-refinements.tsx","components/current-refinements/getCurrentRefinement.ts","components/FooterResult.tsx","common/assets/icons/Fill.svg","common/assets/icons/icon_dislike.svg","common/assets/icons/icon_like.svg","common/assets/icons/icon_search_image2.svg","common/assets/icons/3d.svg","components/ShareModal.tsx","services/Feedback.ts","components/carousel/ImagePreviewCarousel.tsx","components/ProductAttribute.tsx","common/assets/icons/download.svg","components/CadenasLoading.tsx","components/CadenasWebViewer.tsx","components/ProductDetailView.tsx","helpers/CommonHelper.ts","components/results/ItemResult.tsx","hooks/useFilteredResult.ts","components/ProductList/useProductList.ts","components/ProductList/index.tsx","common/assets/icons/error.svg","helpers/getCroppedCanvas.ts","helpers/ToastHelper.ts","components/rfq/RfqModal.tsx","common/assets/icons/arrow_right.svg","common/assets/icons/arrow_left.svg","components/SidePanel.tsx","common/assets/icons/arrow_up.svg","hooks/useFilteredRegions.ts","common/assets/icons/arrow_down.svg","common/assets/icons/trash.svg","components/ImagePreviewMobile.tsx","components/rfq/RfqBanner.tsx","components/Inquiry/InquiryModal.tsx","common/assets/icons/icon_email.svg","common/assets/icons/call.svg","components/Inquiry/InquiryBanner.tsx","components/Feedback.tsx","components/SelectedPostFilter.tsx","page/result/index.tsx","components/NoAccess.tsx","components/AuthenticatedRoute.tsx","page/Login.tsx","page/Logout.tsx","Router.tsx","components/Toaster.tsx","components/Provider/AuthProvider.tsx","index.tsx"],"names":["module","exports","installedModules","__webpack_require__","moduleId","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","require","default","getCursor","state","dotHover","tlHover","trHover","blHover","brHover","rectHover","dotColor","image","maxHeight","maxWidth","minHeight","minWidth","minCropHeight","minCropWidth","onSelectionChange","regions","rounded","selection","expandAnimation","shrinkAnimation","onExpand","showGrip","style","resize","draggable","divRef","useRef","stageRef","shrinkAnimationRef","maxSizeRef","width","height","dimensions","setDimensions","initialWidth","setInitialWidth","initialMaxWidth","setInitialMaxWidth","initialMaxHeight","setInitialMaxHeight","useEffect","current","handleResize","offsetWidth","window","addEventListener","removeEventListener","w","h","Math","max","x1","x2","y1","y2","cover","min","minX","minY","selectionRef","replaceState","setState","assign","handleDragMove","elem","evt","target","Stage","x","y","newRect","newX","newY","elemWidth","elemHeight","gripPadding","newState","notifySelection","a","Animation","frame","angleDiff","time","dashOffset","getLayer","start","stop","handleDragMoveRect","handleDragMoveTl","handleDragMoveTr","handleDragMoveBl","handleDragMoveBr","dots","map","region","show","gripSize","darkOpacity","cornerRadius","clipFunc","ctx","beginPath","topLeft","topRight","bottomLeft","bottomRight","moveTo","lineTo","arc","PI","closePath","loaded","setLoaded","newWidth","newHeight","animExpand","easing","currentWidth","currentHeight","animShrink","attrs","ref","cursor","margin","onClick","onTap","Layer","Image","fill","Rect","stroke","opacity","strokeWidth","onDragMove","dragBoundFunc","onMouseOver","onMouseOut","dash","Path","data","lineCap","shadowColor","shadowBlur","shadowOffset","shadowOpacity","offsetX","offsetY","NodeGroup","keyAccessor","enter","timing","delay","duration","ds","Circle","normalizedRect","radius","position","onCaptureComplete","onCaptureCanceled","useAppText","video","u","stream","setStream","navigator","mediaDevices","getUserMedia","facingMode","then","vid","srcObject","catch","reason","alert","getVideoTracks","getAudioTracks","className","autoPlay","playsInline","type","id","accept","capture","onChange","e","fileInput","files","urlOrBlobToCanvas","file","htmlFor","src","alt","elementToCanvas","api","content","locals","memo","getTarget","styleTarget","document","querySelector","HTMLIFrameElement","contentDocument","head","stylesInDom","getIndexByIdentifier","identifier","result","length","modulesToDom","list","options","idCountMap","identifiers","item","base","count","concat","index","obj","css","media","sourceMap","references","updater","push","addStyle","insertStyleElement","createElement","attributes","nonce","keys","forEach","setAttribute","insert","Error","appendChild","textStore","replaceText","replacement","filter","Boolean","join","applyToSingletonTag","remove","styleSheet","cssText","cssNode","createTextNode","childNodes","removeChild","insertBefore","applyToTag","removeAttribute","btoa","unescape","encodeURIComponent","JSON","stringify","firstChild","singleton","singletonCounter","update","styleIndex","parentNode","newObj","all","atob","lastIdentifiers","newList","toString","newLastIdentifiers","_i","_index","splice","___CSS_LOADER_API_IMPORT___","useSourceMap","this","base64","cssMapping","sourceMapping","sourceURLs","sources","source","sourceRoot","mediaQuery","dedupe","alreadyImportedModules","_extends","arguments","apply","_ref","_ref2","xlinkHref","transform","_ref3","fillOpacity","SvgCapture","props","SvgArrowBack","makeFileHandler","fh","changeEvent","dragEvent","dataTransfer","settings","limit","location","hostname","match","DEFAULT_REGION","showHits","label","visualSearchHelp","title","description","imageLeft","img1","imageRight","img2","img3","img4","img5","img6","img7","img8","img9","img10","img11","img12","initialState","categoryPredictions","codes","configureFilter","errorMessage","fetchingRegions","fetchingResults","filterOptions","filters","imageThumbSearchInput","isShowModalDetailItemMobile","preFilter","loadingSearchAlgolia","preFilterDropdown","imageCaptureHelpModal","requestImage","undefined","results","resultSearchText","selectedRegion","textSearchInputMobile","valueTextSearch","configure","page","refinementList","postFilter","searchSlice","createSlice","reducers","setSearchResults","payload","requestId","sessionId","setRegions","setSelectedRegion","setRequestImage","canvas","random","selectionChanged","loadFileSelectRegion","loadingActionResults","loadingActionRegions","searchFileImageNonRegion","changeValueTextSearch","updateResults","updateQueryText","queryText","reset","onResetRequestImage","setUpdateSession","updateResultChangePosition","setError","setImageSearchInput","updateStatusLoading","updateValueTextSearchMobile","onToggleModalItemDetail","setPreFilter","setPreFilterDropdown","setImageCaptureHelpModal","setFilter","setPostFilter","isUndefined","clearPostFilter","actions","getUrlParam","RegExp","exec","href","decodeURIComponent","algolia","enabled","preview","normalizedSettings","auth0","apiKey","appId","indexName","xOptions","jpegQuality","baseUrl","instantRedirectPatterns","theme","field","ctaLinkField","productName","productDetails","manufacturerNumber","productTag","warehouseNumber","warehouseNumberValue","warehouseShelfNumber","warehouseShelfNumberValue","warehouseStock","warehouseStockValue","_path","combineReducers","search","Search","store","configureStore","reducer","devTools","process","useAppDispatch","useDispatch","useAppSelector","useSelector","_excluded","_objectWithoutProperties","excluded","sourceKeys","indexOf","_objectWithoutPropertiesLoose","getOwnPropertySymbols","sourceSymbolKeys","propertyIsEnumerable","svgRef","viewBox","fillRule","clipRule","ForwardRef","forwardRef","createImage","fileOrUrl","HTMLCanvasElement","getRegionByMaxConfidence","reduce","prev","confidence","findRegions","nyrisApi","NyrisAPI","isEqual","find","text","cropRect","CameraCustom","isToggle","onToggleModal","webcamRef","useState","setFacingMode","scaleCamera","setScaleCamera","stateGlobal","history","useHistory","dispatch","handleClick","useCallback","prevState","handlerFindImage","pathname","imageConvert","handlerCloseModal","res","preFilterValues","visualSearchFilterKey","values","isEmpty","sku","score","console","log","Box","Drawer","anchor","open","onClose","backgroundColor","fontSize","color","display","justifyContent","alignItems","overflow","audio","imageSmoothing","screenshotFormat","forceScreenshotSourceSize","videoConstraints","aspectRatio","objectFit","screenshotQuality","getScreenshot","imageSrc","xmlns","cx","cy","ReverseCamera","secondaryColor","fs","URL","createObjectURL","event","IconButton","aria-label","component","borderRadius","padding","enableBackground","DefaultModal","children","openModal","handleClose","classNameModal","classNameComponentChild","Modal","overflowY","FooterMobile","isOpenModalCamera","setOpenModalCamera","useAuth0","user","isAuthenticated","logout","showLogoutModal","setShowLogoutModal","fontWeight","paddingTop","paddingLeft","paddingRight","marginTop","email","logoutParams","returnTo","origin","showPoweredByNyris","activeClassName","to","Button","gap","useQuery","useLocation","useMemo","URLSearchParams","HeaderMobile","connectSearchBox","connectStateResults","onToggleFilterMobile","refine","query","containerRefInputMobile","isShowFilter","setShowFilter","valueInput","setValueInput","searchQuery","setTimeout","searchOrRedirect","debounce","isPostFilterApplied","isApplied","disablePostFilter","postFilterOption","allSearchResults","hits","background","headerColor","lineHeight","appBarLogoUrl","logoWidth","logoHeight","email_verified","columnGap","preFilterOption","primaryColor","top","left","currentTarget","marginRight","border","flexShrink","boxShadow","Input","element","getElementById","inputEventFn","keyboardEvent","blur","useTranslation","flexGrow","outline","placeholder","Header","React","anchorEl","setAnchorEl","StyledMenu","withStyles","root","paper","Menu","elevation","getContentAnchorEl","anchorOrigin","vertical","horizontal","transformOrigin","StyledMenuItem","palette","primary","main","common","white","MenuItem","aria-controls","aria-haspopup","keepMounted","flexDirection","httpClient","axios","createSessionByApi","headers","request","method","url","response","session","ImageCaptureHelpModal","_rect","paddingBottom","rowGap","marginBottom","DynamicWidgetsCT","isOpen","setOpen","rx","IconLabel","icon","labelPosition","classNameLabel","tagIcon","setTagIcon","variants","collapsed","shouldReduceMotion","pointerEvents","transitionEnd","expanded","transition","ease","Collapse","isCollapsed","useReducedMotion","motion","div","initial","animate","classNames","custom","getRefinementPanelId","refinement","attribute","getPanelId","widgets","panelId","refinementWidget","getRefinementPanelAttribute","getPanelAttributes","panelAttributes","refinementsPanelsExpandedAtom","atom","refinementsPanelsAtom","v","set","panels","val","acc","panelKey","WidgetPanel","onToggle","onToggleMemoized","ExpandablePanelCustom","PostFilterPanelAlgolia","dynamicWidgets","onApply","disjunctiveFacets","refinements","useAtom","setPanels","refinementsPanelsExpanded","setRefinementsPanelsExpanded","isMobile","useMediaQuery","prevPanels","isExpanded","RefinementList","translations","noResults","sortBy","widgetsPanels","widget","header","isOpened","onTogglePanelsClick","handlerApplyfillter","zIndex","bottom","textTransform","stateResultsAtom","searchResults","isSearchStalled","searchResultsAtom","selectAtom","setStateResults","useUpdateAtom","connectCurrentRefinements","items","hasRefinements","facets","hierarchicalFacets","found","facet","useHasRefinements","useAtomValue","hidden","borderTop","aria-expanded","fontFamily","countOccurrences","inputArray","countMap","entries","useFilter","postFilters","nextFilters","xKey","every","yKey","postFilterValues","some","includes","getNextFilters","filterCount","resultObject","PostFilterPanel","filterList","Checkbox","size","checked","getFilters","number","searchFilters","settingsNyris","newValue","truncateString","str","num","slice","PreFilterComponent","resultFilter","setResultFilter","keyFilterState","keyFilter","setKeyFilter","isLoading","setLoading","columns","setColumns","selectedFilter","getDataFilterDesktop","dataResultFilter","newResult","sort","k","toLocaleUpperCase","finally","filterSearchHandler","onHandlerSubmitData","pickBy","Typography","preFilterTitle","justifyItems","IconSearch","flexWrap","marginLeft","columnCount","Tooltip","placement","arrow","disableHoverListener","textOverflow","whiteSpace","Array","_","mb","Skeleton","animation","AppMobile","isOpenFilter","setOpenFilter","overflowX","LoadingSvg","gradientUnits","stopColor","offset","Loading","_defs","isAlgoliaEnabled","conditionalQuery","searchClient","algoliasearch","initIndex","requests","params","endsWith","Promise","resolve","nbHits","nbPages","processingTimeMS","InstantSearch","searchState","onSearchStateChange","PoweredByNyris","isHovered","setHovered","jQuery","ready","psol","core","setUserInfo","server_type","firstname","lastname","userfirm","street","zip","city","country","phone","fax","setServiceBaseUrl","onpageshow","persisted","reload","i18n","use","initReactI18next","init","resources","en","translation","Brand","loading","Cancel","Apply","de","pt","fallbackLng","interpolation","escapeValue","returnNull","HeaderApp","FooterApp","isShowHeaderMobile","language","showApp","changeLanguage","createSession","appTitle","classNameBoxVersion","vh","innerHeight","documentElement","setProperty","onChangeLoading","useDropzone","onDrop","getRootProps","getInputProps","isDragActive","stopPropagation","CustomSearchBox","focusInp","isOpenModalFilterDesktop","setToggleModalFilterDesktop","focus","withImage","order","IconCamera","AppMD","CustomInfiniteHits","connectInfiniteHits","headerText","acceptTypes","mixBlendMode","App","SelectedApp","ClearRefinements","handleButtonClick","disabled","ChipComponent","selected","closeIcon","CurrentRefinements","statusSwitchButton","newItems","setListItems","config","refinementConfig","refinementOptions","getRefinementConfig","category","getCurrentRefinement","li","FooterResult","connectPagination","Grid","container","ShareModal","dataItem","setModalState","main_image_link","Paper","clipboard","writeText","IconEmail","feedbackSuccessEpic","success","sendFeedbackByApi","feedbackClickEpic","positions","product_ids","feedbackConversionEpic","feedbackRegionEpic","rect","sendFeedback","ImagePreviewCarousel","imgItem","setSelectedImage","mainRef","thumbsRef","contentWidth","modalWidth","mainOptions","perPage","perMove","pagination","arrows","thumbsOptions","rewind","fixedWidth","fixedHeight","isNavigation","renderSlides","thumbs","slide","splide","sync","onActive","ProductAttribute","LoadingSpinner","CadenasLoading","favoriteActions3d","CadenasWebViewer","is3dView","setStatus3dView","status3dView","mident","setMident","webViewer3DSettings","$container","$","viewerBackendType","components","WebViewer3D","ViewerBackends","WebGL","devicePixelRatio","radialMenuActions","favoriteActions","showProgressDialog","webglViewerSettings","ColorTL","ColorTR","ColorML","ColorMR","ColorBL","ColorBR","showLogo","logoTexture","logoScaleFactor","logoMixFactor","material","preset","edit","measureGrid","colors","grid","unit","helperOptions","gridOn","axisOn","shadeMode","ShadeModes","ShadeAndLines","enableEditableDimensions","showPartNameTooltip","webviewer3d","setApiKey","cadenas","cadenasAPIKey","ajaxGetOrPost","getServiceBaseUrl","catalog","part","exact","reverseMapResult","loadByVarset","err","showWebViewer","right","DownloadDialog","useStyles","makeStyles","buttonStyle3D","breakpoints","up","buttonStyleImageSearch","ProductDetailView","handlerFeedback","onHandlerModalShare","show3dView","onSearchImage","brand","collapDescription","setCollapDescription","feedback","setFeedback","setIs3dView","dataImageCarousel","setDataImageCarouSel","urlImage","setUrlImage","classes","ctaLink","checkDataItemResult","handlerCheckUrlImage","timeout","img","onerror","onabort","clearTimeout","timer","onload","valueKey","newObject","prepareImageList","details","cadenas3dWebView","NoImage","warehouseVariant","gridGap","CTAButtonText","xs","md","itemIdLabel","brandName","align","letterSpacing","IconOpenLink","htmlColor","in","showFeedbackAndShare","shareOption","isHover","handlerGroupItem","isGroupItem","handlerCloseGroup","indexItem","openDetailedView","setOpenDetailedView","isOpenModalShare","setOpenModalShare","collap","preventDefault","wordBreak","useFilteredResult","filterType","filterValues","resultFilterValues","filterResultsBasedOnPostFilter","useProductList","showGroup","itemShowDefault","setItemShowDefault","algoliaRequest","setAlgoliaRequest","hitGroups","setHitGroups","listHistDefaultGroups","newArrayShowGroup","newArrayShowItem","groupHits","hit","group_id","uniqueId","groups","groupBy","isGroup","setListHitDefault","filteredResult","productList","images","newItemList","firstArr","secondArr","otherItemsInGroup","shift","hasError","loadProductList","ProductList","getUrlToCanvasFile","sendFeedBackAction","renderItem","hitItem","textAlign","getCroppedCanvas","crop","originalSize","getElementSize","getRectAspectRatio","scaledSize","getThumbSizeArea","ToastHelper","msg","toast","error","emailRegex","getErrorMessage","status","RfqModal","setIsRfqModalOpen","isRfqModalOpen","setRfqStatus","setEmail","emailValid","setEmailValid","information","setInformation","setFormattedContent","emailjs","test","handleRfq","croppedImage","templateId","rfq","emailTemplateId","send","email_id","trim","information_text","request_image","toDataURL","alignSelf","TextareaAutosize","SidePanel","setImageSelection","imageSelection","debouncedOnImageSelectionChange","filteredRegions","showAdjustInfoBasedOnConfidence","showAdjustInfo","showPostFilter","toggleColLeft","setToggleColLeft","useFilteredRegions","ImagePreviewMobile","rest","editActive","setEditActive","Hidden","sx","mdUp","bgcolor","RfqBanner","rfqStatus","rfqRef","InquiryModal","setIsInquiryModalOpen","isInquiryModalOpen","handleInquiry","support","prefilter_values","InquiryBanner","inquiryStatus","setInquiryStatus","emailInquiry","supportNumber","Feedback","submitFeedback","onFeedbackClose","SelectedPostFilter","selectedFilters","flexFlow","refBoxResult","executeScroll","scrollIntoView","filterString","setFilterString","setAdjustInfo","setShowAdjustInfoBasedOnConfidence","imageUploadRef","isScrolled","setIsScrolled","showFeedback","setShowFeedback","showFeedbackSuccess","setShowFeedbackSuccess","isPostFilterEnabled","findImageByApiNyris","findItemsInSelection","searchRegion","nonEmptyFilter","filterSkus","reverse","f","filterSkusString","alogoliaFilterField","preFilterString","showSidePanel","handleScroll","Configure","showFirst","previous","next","HitsPerPage","defaultRefinement","NoAccess","supportEmail","AuthenticatedRoute","loginWithRedirect","Component","render","Login","Logout","path","strict","ResultComponent","Toaster","containerStyle","resolveValue","message","dismiss","AuthProvider","domain","clientId","authorizationParams","redirect_uri","host","createTheme","overrides","MuiTooltip","tooltip","ReactDOM","serviceWorker","registration","unregister"],"mappings":"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","file":"static/js/main.e2a2eb38.chunk.js","sourcesContent":["module.exports = __webpack_public_path__ + \"static/media/Union.2545c072.svg\";","module.exports = __webpack_public_path__ + \"static/media/no-image.04b676b3.svg\";"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 2);\n","module.exports = require(\"react\");","module.exports = require(\"@nyris/nyris-api\");","export {default as Preview} from \"./components/Preview/Preview\";\nexport {default as Capture} from \"./components/Capture/Capture\";\n\nexport * from './utils';\n\n","import React, { useEffect, useRef, useState } from \"react\";\nimport { Layer, Stage, Image, Circle, Rect, Path } from \"react-konva\";\nimport { RectCoords, Region, getThumbSizeLongestEdge } from \"@nyris/nyris-api\";\nimport Konva from \"konva\";\nimport { NodeGroup } from \"react-move\";\n\ntype PreviewElem = \"tl\" | \"tr\" | \"bl\" | \"br\" | \"rect\";\ninterface IRegion extends Region {\n show?: boolean;\n}\n\n/** Properties of the Preview Component. */\ninterface PreviewProps {\n /** A canvas to render as the image. */\n image: HTMLCanvasElement;\n /** Initial selection on the image, setting this, won't send a selection change event. */\n selection: RectCoords;\n /** List of regions to display on the image */\n regions: IRegion[];\n /** Handler for changed selection. */\n onSelectionChange?: (r: RectCoords) => void;\n /** Maximal width of the image to display in pixels. */\n maxWidth?: number;\n /** Maximal height of the image to display in pixels. */\n maxHeight?: number;\n /** minimal width of the image to display in pixels. */\n minWidth?: number;\n /** minimal height of the image to display in pixels. */\n minHeight?: number;\n /** Color of the dot, which is rendered center of not selected regions. */\n dotColor: string;\n /** Minimum width of the cropper to display in pixels. */\n minCropWidth: number;\n /** Minimum height of the cropper to display in pixels. */\n minCropHeight: number;\n /** handles if the image corner should be rounded */\n rounded?: boolean;\n /** enables image expand animation*/\n expandAnimation?: boolean;\n /** enables image shrink animation*/\n shrinkAnimation?: boolean;\n /** enables/disables corner grips*/\n showGrip?: boolean;\n /** on expand. */\n onExpand?: () => void;\n /** wrapper styles */\n style?: React.CSSProperties | undefined;\n /** enable resize on window resize */\n resize?: boolean;\n /** enables draggable of cropping frame */\n draggable?: boolean;\n}\n\n/** @internal State of the Preview component */\ninterface PreviewState {\n tlHover: boolean;\n trHover: boolean;\n blHover: boolean;\n brHover: boolean;\n dotHover: boolean;\n rectHover: boolean;\n}\n\nconst getCursor = (state: PreviewState) => {\n if (state.dotHover) {\n return \"pointer\";\n }\n if (state.tlHover) {\n return \"nw-resize\";\n }\n if (state.trHover) {\n return \"ne-resize\";\n }\n if (state.blHover) {\n return \"sw-resize\";\n }\n if (state.brHover) {\n return \"se-resize\";\n }\n if (state.rectHover) {\n return \"move\";\n }\n return \"default\";\n};\n\nconst calcNewRect = (\n { x1, x2, y1, y2 }: RectCoords,\n elem: PreviewElem,\n newX: number,\n newY: number,\n elemWidth: number,\n elemHeight: number\n) => {\n switch (elem) {\n case \"rect\":\n return {\n x1: newX,\n y1: newY,\n x2: newX + elemWidth,\n y2: newY + elemHeight,\n };\n case \"tl\":\n return {\n x1: newX,\n y1: newY,\n x2,\n y2,\n };\n case \"tr\":\n return {\n x2: newX,\n y1: newY,\n x1,\n y2,\n };\n case \"bl\":\n return {\n x1: newX,\n y2: newY,\n x2,\n y1,\n };\n case \"br\":\n return {\n x2: newX,\n y2: newY,\n x1,\n y1,\n };\n }\n};\n\nfunction scaleToPreviewPixels(\n width: number,\n height: number,\n { x1, x2, y1, y2 }: RectCoords,\n minWidth?: number,\n minHeight?: number\n) {\n const cover = {\n x1: Math.max(x1 * width, 5),\n x2: Math.min(x2 * width, width - 5),\n y1: Math.max(y1 * height, 5),\n y2: Math.min(y2 * height, height - 5),\n };\n\n if (\n minWidth &&\n minHeight &&\n cover.x2 - cover.x1 < minWidth &&\n cover.y2 - cover.y1 < minHeight\n ) {\n return {\n x1: Math.max(x1 * width - minWidth / 2, 5),\n x2: Math.min(x2 * width + minWidth / 2, width - 5),\n y1: Math.max(y1 * height - minHeight / 2, 5),\n y2: Math.min(y2 * height + minHeight / 2, height - 5),\n };\n }\n\n return cover;\n}\n\n/** The Preview component. */\nconst Preview = ({\n dotColor,\n image,\n maxHeight: initialMaxHeightProps,\n maxWidth: initialMaxWidthProps,\n minHeight = 80,\n minWidth = 80,\n minCropHeight,\n minCropWidth,\n onSelectionChange,\n regions,\n rounded,\n selection,\n expandAnimation,\n shrinkAnimation,\n onExpand,\n showGrip = true,\n style,\n resize,\n draggable = true,\n}: PreviewProps) => {\n const divRef = useRef<any>(null);\n const stageRef = useRef<any>(null);\n const shrinkAnimationRef = useRef<any>(shrinkAnimation);\n\n const maxSizeRef = useRef<any>({\n width: 0,\n height: 0,\n });\n\n const [dimensions, setDimensions] = useState({\n width: 0,\n height: 0,\n });\n\n const [initialWidth, setInitialWidth] = useState(0);\n\n const [initialMaxWidth, setInitialMaxWidth] = useState(initialMaxWidthProps);\n const [initialMaxHeight, setInitialMaxHeight] = useState(\n initialMaxHeightProps\n );\n\n useEffect(() => {\n shrinkAnimationRef.current = shrinkAnimation;\n }, [shrinkAnimation]);\n\n const handleResize = () => {\n if (divRef.current?.offsetWidth && !shrinkAnimationRef.current) {\n setInitialWidth(divRef.current?.offsetWidth);\n if (!initialMaxHeight) {\n setInitialMaxHeight(divRef.current?.offsetWidth);\n setInitialMaxWidth(divRef.current?.offsetWidth);\n }\n\n setDimensions({\n width: divRef.current.offsetWidth,\n height: divRef.current.offsetWidth,\n });\n }\n\n if (divRef.current?.offsetWidth) {\n maxSizeRef.current = {\n maxHeight: divRef.current.offsetWidth,\n maxWidth: divRef.current.offsetWidth,\n };\n }\n };\n\n const maxHeight = initialMaxHeight || dimensions.height;\n const maxWidth = initialMaxWidth || dimensions.width;\n\n useEffect(() => {\n if (divRef.current?.offsetWidth) {\n setInitialWidth(divRef.current?.offsetWidth);\n if (!initialMaxHeight) {\n setInitialMaxHeight(divRef.current?.offsetWidth);\n setInitialMaxWidth(divRef.current?.offsetWidth);\n }\n\n if (!shrinkAnimation) {\n setDimensions({\n width: divRef.current.offsetWidth,\n height: divRef.current.offsetWidth,\n });\n }\n }\n\n if (resize) {\n window.addEventListener(\"resize\", handleResize);\n }\n\n return () => {\n window.removeEventListener(\"resize\", handleResize);\n };\n }, []);\n\n let { w, h } = getThumbSizeLongestEdge(\n dimensions.width,\n dimensions.height,\n image.width,\n image.height\n );\n const width = Math.max(minWidth, w);\n const height = Math.max(minHeight, h);\n\n const { x1, y1, x2, y2 } = scaleToPreviewPixels(\n width,\n height,\n selection,\n minCropWidth,\n minCropHeight\n );\n let [minX, minY] = [100, 100];\n\n const handleDragBoundTl = ({ x, y }: { x: number; y: number }) => {\n return {\n x: Math.max(Math.min(x, x2 - minX), 0),\n y: Math.max(Math.min(y, y2 - minY), 0),\n };\n };\n\n const handleDragBoundTr = ({ x, y }: { x: number; y: number }) => {\n return {\n x: Math.min(Math.max(x, x1 + minX), width),\n y: Math.max(Math.min(y, y2 - minY), 0),\n };\n };\n\n const handleDragBoundBl = ({ x, y }: { x: number; y: number }) => {\n return {\n x: Math.max(Math.min(x, x2 - minX), 0),\n y: Math.min(Math.max(y, y1 + minY), height),\n };\n };\n\n const handleDragBoundBr = ({ x, y }: { x: number; y: number }) => {\n return {\n x: Math.min(Math.max(x, x1 + minX), width),\n y: Math.min(Math.max(y, y1 + minY), height),\n };\n };\n\n const handleDragBoundRect = ({ x, y }: { x: number; y: number }) => {\n let elemWidth = x2 - x1 + 5;\n let elemHeight = y2 - y1 + 5;\n return {\n x: Math.max(Math.min(x, width - elemWidth), 5),\n y: Math.max(Math.min(y, height - elemHeight), 5),\n };\n };\n\n const selectionRef = useRef<Konva.Rect>(null);\n const [state, replaceState] = useState<PreviewState>({\n tlHover: false,\n trHover: false,\n blHover: false,\n brHover: false,\n dotHover: false,\n rectHover: false,\n });\n\n const setState = (s: any) => {\n let o = {};\n Object.assign(o, state, s);\n replaceState(o as PreviewState);\n };\n\n const handleDragMove = (\n elem: PreviewElem,\n evt: Konva.KonvaEventObject<DragEvent>\n ) => {\n if (evt.target instanceof Konva.Stage) {\n return;\n }\n\n let { x: newX, y: newY } = evt.target.getAbsolutePosition();\n let { width: elemWidth, height: elemHeight } = evt.target.getSize();\n const modifiedX = newX + (elem !== \"rect\" ? gripPadding : 0);\n const modifiedY = newY + (elem !== \"rect\" ? gripPadding : 0);\n\n const newRect = calcNewRect(\n { x1, x2, y1, y2 },\n elem,\n modifiedX,\n modifiedY,\n elemWidth,\n elemHeight\n );\n let newState = {\n x1: newRect.x1 / width,\n x2: newRect.x2 / width,\n y1: newRect.y1 / height,\n y2: newRect.y2 / height,\n };\n\n notifySelection(newState);\n };\n\n // animate selection\n useEffect(() => {\n let speed = 40;\n if (!selectionRef.current) {\n return;\n }\n let a = new Konva.Animation((frame) => {\n if (!frame) {\n return;\n }\n if (!selectionRef.current) {\n return;\n }\n let angleDiff = (frame.time * speed) / 1000;\n selectionRef.current.dashOffset(-angleDiff);\n }, selectionRef.current.getLayer());\n a.start();\n\n return () => {\n a && a.stop();\n };\n }, [selectionRef]);\n\n const handleDragMoveRect = handleDragMove.bind(null, \"rect\");\n const handleDragMoveTl = handleDragMove.bind(null, \"tl\");\n const handleDragMoveTr = handleDragMove.bind(null, \"tr\");\n const handleDragMoveBl = handleDragMove.bind(null, \"bl\");\n const handleDragMoveBr = handleDragMove.bind(null, \"br\");\n\n const notifySelection = (r: RectCoords) => {\n if (onSelectionChange) {\n onSelectionChange(r);\n }\n };\n\n if (!image) {\n return null;\n }\n\n const dots = regions.map((region, i) => {\n let { x1, x2, y1, y2 } = region.normalizedRect;\n let x = width * ((x2 - x1) / 2 + x1);\n let y = height * ((y2 - y1) / 2 + y1);\n return {\n // get middle of box and map to pixels\n region,\n key: `${x}-${y}-${i}`,\n x,\n y,\n show: region.show,\n };\n });\n\n let gripSize = 20;\n let gripPadding = gripSize / 2;\n let darkOpacity = shrinkAnimation ? 0.4 : 0.3;\n const cornerRadius = [4, 4, 4, 4];\n const clipFunc = (ctx: any) => {\n ctx.beginPath();\n let topLeft = 0;\n let topRight = 0;\n let bottomLeft = 0;\n let bottomRight = 0;\n if (typeof cornerRadius === \"number\" && rounded) {\n topLeft =\n topRight =\n bottomLeft =\n bottomRight =\n Math.min(cornerRadius, width / 2, height / 2);\n } else if (rounded) {\n topLeft = Math.min(cornerRadius[0] || 0, maxWidth / 2, maxHeight / 2);\n topRight = Math.min(cornerRadius[1] || 0, maxWidth / 2, maxHeight / 2);\n bottomRight = Math.min(cornerRadius[2] || 0, maxWidth / 2, maxHeight / 2);\n bottomLeft = Math.min(cornerRadius[3] || 0, maxWidth / 2, maxHeight / 2);\n }\n ctx.moveTo(topLeft, 0);\n ctx.lineTo(maxWidth - topRight, 0);\n ctx.arc(\n maxWidth - topRight,\n topRight,\n topRight,\n (Math.PI * 3) / 2,\n 0,\n false\n );\n ctx.lineTo(maxWidth, maxHeight - bottomRight);\n ctx.arc(\n maxWidth - bottomRight,\n maxHeight - bottomRight,\n bottomRight,\n 0,\n Math.PI / 2,\n false\n );\n ctx.lineTo(bottomLeft, maxHeight);\n ctx.arc(\n bottomLeft,\n maxHeight - bottomLeft,\n bottomLeft,\n Math.PI / 2,\n Math.PI,\n false\n );\n ctx.lineTo(0, topLeft);\n ctx.arc(topLeft, topLeft, topLeft, Math.PI, (Math.PI * 3) / 2, false);\n ctx.closePath();\n };\n const [loaded, setLoaded] = useState(true);\n\n useEffect(() => {\n if (!maxSizeRef.current.maxWidth) {\n const maxHeight = initialMaxHeight || divRef.current.offsetWidth;\n const maxWidth = initialMaxWidth || divRef.current.offsetWidth;\n maxSizeRef.current = {\n maxHeight,\n maxWidth,\n };\n }\n\n const newWidth = maxSizeRef.current.maxWidth;\n const newHeight = maxSizeRef.current.maxHeight;\n\n const animExpand = new Konva.Animation((frame: any) => {\n const easing = frame.time / 200;\n\n const currentWidth = minWidth;\n const currentHeight = minHeight;\n\n const widthDiff = newWidth - currentWidth;\n const heightDiff = newHeight - currentHeight;\n\n setDimensions({\n width: currentWidth + easing * widthDiff,\n height: currentHeight + easing * heightDiff,\n });\n\n if (frame.time >= 170) {\n animExpand.stop();\n setLoaded(true);\n }\n });\n\n if (expandAnimation) {\n setLoaded(false);\n animExpand.start();\n }\n\n return () => {\n animExpand.stop();\n };\n }, [expandAnimation]);\n\n useEffect(() => {\n const currentWidth = maxSizeRef.current.maxWidth;\n const currentHeight = maxSizeRef.current.maxHeight;\n\n const animShrink = new Konva.Animation((frame: any) => {\n const easing = frame.time / 200;\n const newWidth = minWidth;\n const newHeight = minHeight;\n\n const widthDiff = newWidth - currentWidth;\n const heightDiff = newHeight - currentHeight;\n\n setDimensions({\n width: currentWidth + easing * widthDiff,\n height: currentHeight + easing * heightDiff,\n });\n\n if (easing >= 1 || stageRef.current?.attrs?.width < minWidth) {\n animShrink.stop();\n }\n });\n\n if (shrinkAnimation && stageRef.current?.attrs?.width > minWidth) {\n animShrink.start();\n } else if (stageRef.current?.attrs?.width === 0) {\n setDimensions({\n width: minWidth || initialWidth,\n height: minHeight || initialWidth,\n });\n }\n\n return () => {\n animShrink.stop();\n };\n }, [shrinkAnimation]);\n\n return (\n <div ref={divRef} style={{ width: \"100%\", ...style }}>\n <Stage\n width={width}\n height={height}\n style={{\n cursor: getCursor(state),\n width: width,\n height: height,\n margin: \"auto\",\n }}\n ref={(ref) => {\n stageRef.current = ref;\n }}\n onClick={() => {\n if (onExpand) onExpand();\n }}\n onTap={() => {\n if (onExpand) onExpand();\n }}\n >\n <Layer key=\"img\" clipFunc={clipFunc}>\n <Image image={image} width={width} height={height} fill=\"white\" />\n </Layer>\n {loaded && (\n <>\n <Layer key=\"selection\" clipFunc={clipFunc}>\n {/* Selection box */}\n <Rect\n stroke=\"white\"\n opacity={0}\n strokeWidth={0}\n x={x1}\n y={y1}\n width={x2 - x1}\n height={y2 - y1}\n />\n <Rect\n stroke=\"black\"\n draggable={draggable ? true : false}\n onDragMove={handleDragMoveRect}\n dragBoundFunc={handleDragBoundRect}\n onMouseOver={() => {\n if (draggable) setState({ rectHover: true });\n }}\n onMouseOut={() => setState({ rectHover: false })}\n opacity={0}\n strokeWidth={2}\n x={x1}\n y={y1}\n width={x2 - x1}\n height={y2 - y1}\n dash={[0, 0]}\n ref={selectionRef}\n />\n\n {/* Dark areas */}\n {/* top */}\n <Rect\n fill=\"black\"\n opacity={darkOpacity}\n x={0}\n y={0}\n width={width}\n height={y1 + 0.08}\n />\n {/* bottom */}\n <Rect\n fill=\"black\"\n opacity={darkOpacity}\n x={0}\n y={y2}\n width={width}\n height={height - y2}\n />\n {/* left */}\n <Rect\n fill=\"black\"\n opacity={darkOpacity}\n x={0}\n y={y1}\n width={x1}\n height={y2 - y1 + 0.08}\n />\n {/* right */}\n <Rect\n fill=\"black\"\n opacity={darkOpacity}\n x={x2}\n y={y1}\n width={width - x2}\n height={y2 - y1 + 0.08}\n />\n </Layer>\n\n {/* grips */}\n {showGrip && (\n <Layer>\n {/* top left */}\n <Path\n data=\"M2 18V10C2 5.58172 5.58172 2 10 2H18\"\n stroke={\"white\"}\n strokeWidth={5}\n lineCap=\"round\"\n opacity={1}\n x={x1 - 3}\n y={y1 - 3}\n shadowColor={\"#000000\"}\n shadowBlur={4}\n shadowOffset={{ x: 0, y: 0 }}\n shadowOpacity={0.25}\n />\n <Rect\n draggable={true}\n onDragMove={handleDragMoveTl}\n dragBoundFunc={handleDragBoundTl}\n onMouseOver={() => setState({ tlHover: true })}\n onMouseOut={() => setState({ tlHover: false })}\n opacity={1}\n width={gripSize + gripPadding}\n height={gripSize + gripPadding}\n x={x1 - gripPadding}\n y={y1 - gripPadding}\n />\n {/* top right */}\n <Path\n data=\"M2 2L10 2C14.4183 2 18 5.58172 18 10L18 18\"\n stroke={\"white\"}\n strokeWidth={5}\n lineCap=\"round\"\n opacity={1}\n x={x2 + 3}\n y={y1 - 3}\n offsetX={gripSize}\n shadowColor={\"#000000\"}\n shadowBlur={4}\n shadowOffset={{ x: 0, y: 0 }}\n shadowOpacity={0.25}\n />\n <Rect\n draggable={true}\n onDragMove={handleDragMoveTr}\n dragBoundFunc={handleDragBoundTr}\n onMouseOver={() => setState({ trHover: true })}\n onMouseOut={() => setState({ trHover: false })}\n opacity={1}\n width={gripSize + gripPadding}\n height={gripSize + gripPadding}\n x={x2 - gripPadding}\n y={y1 - gripPadding}\n offsetX={gripSize - gripPadding}\n />\n {/* bottom left */}\n <Path\n data=\"M18 18L10 18C5.58172 18 2 14.4183 2 10L2 2\"\n stroke={\"white\"}\n strokeWidth={5}\n lineCap=\"round\"\n opacity={1}\n x={x1 - 3}\n y={y2 + 3}\n offsetY={gripSize}\n shadowColor={\"#000000\"}\n shadowBlur={4}\n shadowOffset={{ x: 0, y: 0 }}\n shadowOpacity={0.25}\n />\n <Rect\n draggable={true}\n onDragMove={handleDragMoveBl}\n dragBoundFunc={handleDragBoundBl}\n onMouseOver={() => setState({ blHover: true })}\n onMouseOut={() => setState({ blHover: false })}\n opacity={1}\n width={gripSize + gripPadding}\n height={gripSize + gripPadding}\n x={x1 - gripPadding}\n y={y2 - gripPadding}\n offsetY={gripSize - gripPadding}\n />\n {/* bottom right */}\n <Path\n data=\"M18 2L18 10C18 14.4183 14.4183 18 10 18L2 18\"\n stroke={\"white\"}\n strokeWidth={5}\n lineCap=\"round\"\n x={x2 + 3}\n y={y2 + 3}\n opacity={1}\n offsetY={gripSize}\n offsetX={gripSize}\n shadowColor={\"#000000\"}\n shadowBlur={4}\n shadowOffset={{ x: 0, y: 0 }}\n shadowOpacity={0.25}\n />\n <Rect\n opacity={1}\n draggable={true}\n onDragMove={handleDragMoveBr}\n dragBoundFunc={handleDragBoundBr}\n onMouseOver={() => setState({ brHover: true })}\n onMouseOut={() => setState({ brHover: false })}\n x={x2 - gripPadding}\n y={y2 - gripPadding}\n width={gripSize + gripPadding}\n height={gripSize + gripPadding}\n offsetY={gripSize - gripPadding}\n offsetX={gripSize - gripPadding}\n />\n </Layer>\n )}\n\n <NodeGroup\n data={dots}\n keyAccessor={(r) => r.key}\n start={(d, i) => ({ opacity: 0, x: -100, y: d.y })}\n enter={(d, i) => ({\n opacity: [1],\n x: [d.x],\n y: d.y,\n timing: { delay: i * 100, duration: 300 },\n })}\n >\n {(ds) => (\n <Layer key=\"dots\">\n {ds.map(({ key, data, state: position }) => (\n <Circle\n onClick={() => {\n notifySelection(data.region.normalizedRect);\n setState({ dotHover: false });\n }}\n onTap={() => {\n notifySelection(data.region.normalizedRect);\n setState({ dotHover: false });\n }}\n onMouseOver={() => setState({ dotHover: true })}\n onMouseOut={() => setState({ dotHover: false })}\n key={key}\n radius={7}\n {...position}\n stroke={dotColor}\n fill=\"white\"\n strokeWidth={5}\n opacity={dotColor ? data.region.show : 0}\n />\n ))}\n </Layer>\n )}\n </NodeGroup>\n </>\n )}\n </Stage>\n </div>\n );\n};\n\nexport default Preview;\n","module.exports = require(\"react-konva\");","module.exports = require(\"konva\");","module.exports = require(\"react-move\");","import React, {ChangeEvent, useEffect, useRef, useState} from 'react';\nimport './Capture.css';\nimport {urlOrBlobToCanvas, elementToCanvas} from \"@nyris/nyris-api\";\nimport captureSvg from './images/capture.svg';\nimport arrowBackSvg from './images/arrow_back.svg';\n\nexport interface CaptureProps {\n onCaptureComplete: (image: HTMLCanvasElement) => void\n onCaptureCanceled: () => void\n useAppText: string\n}\n\n\nconst Capture = ({onCaptureComplete, onCaptureCanceled, useAppText} : CaptureProps) => {\n const video = useRef<HTMLVideoElement>(null);\n const [stream, setStream] = useState<MediaStream>();\n\n const grabFrame = () => {\n if (video.current) {\n let frame = elementToCanvas(video.current);\n onCaptureComplete(frame);\n }\n };\n\n const onFileSelected = async (e: ChangeEvent) => {\n let fileInput = e.target as HTMLInputElement;\n if (fileInput && fileInput.files) {\n let file = await urlOrBlobToCanvas(fileInput.files[0]);\n onCaptureComplete(file);\n }\n };\n\n useEffect(() => {\n navigator.mediaDevices.getUserMedia({\n video: {\n facingMode: 'environment', // prefers wrong entry on old android: facingMode: ['environment', 'user'],\n width: 640//this.settings.maxWidth,// unsupported on ios {ideal: settings.maxWidth},\n //height: this.settings.maxHeight\n }\n }).then(stream => {\n let vid = video.current;\n if (vid) {\n vid.srcObject = stream;\n setStream(stream);\n }\n }).catch(reason => {\n switch (reason.name) {\n case 'NotFoundError':\n alert('Camera not found. Try with a file instead.');\n break;\n case 'NotAllowedError':\n alert('You have to allow using the camera in order to take pictures. If you are not asked again for permissions, go to site settings and reset permissions there.');\n break;\n default:\n alert(`Sorry, something has gone wrong while enabeling the camera. (${reason})`);\n break;\n }\n });\n }, [video]);\n\n useEffect(() => () => {\n if (!stream) {\n return;\n }\n if (stream.getVideoTracks && stream.getAudioTracks) {\n stream.getVideoTracks().map(track => track.stop());\n stream.getAudioTracks().map(track => track.stop());\n } else {\n ((stream as unknown) as MediaStreamTrack).stop();\n }\n }, [stream]);\n\n return (\n <div className=\"nyris-capture-captureUi\">\n <video autoPlay playsInline ref={video} className=\"nyris-capture-video\"/>\n <input type=\"file\" name=\"file\" id=\"capture_file\" className='nyris-capture-inputFile' accept=\"image/*\"\n capture=\"environment\" onChange={onFileSelected}/>\n <label className=\"nyris-capture-app-button\" htmlFor=\"capture_file\">{useAppText}</label>\n <button className=\"nyris-capture-backBtn\" onClick={onCaptureCanceled}><img src={arrowBackSvg}\n alt=\"back\"\n width=\"72\"/></button>\n <button className=\"nyris-capture-searchBtn\" onClick={grabFrame}><img src={captureSvg}\n alt=\"capture\"/>\n </button>\n </div>\n );\n};\n\n\nexport default Capture;\n","var api = require(\"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n var content = require(\"!!../../../node_modules/css-loader/dist/cjs.js??ref--6-1!../../../node_modules/postcss-loader/src/index.js!./Capture.css\");\n\n content = content.__esModule ? content.default : content;\n\n if (typeof content === 'string') {\n content = [[module.id, content, '']];\n }\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","\"use strict\";\n\nvar isOldIE = function isOldIE() {\n var memo;\n return function memorize() {\n if (typeof memo === 'undefined') {\n // Test for IE <= 9 as proposed by Browserhacks\n // @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805\n // Tests for existence of standard globals is to allow style-loader\n // to operate correctly into non-standard environments\n // @see https://github.com/webpack-contrib/style-loader/issues/177\n memo = Boolean(window && document && document.all && !window.atob);\n }\n\n return memo;\n };\n}();\n\nvar getTarget = function getTarget() {\n var memo = {};\n return function memorize(target) {\n if (typeof memo[target] === 'undefined') {\n var styleTarget = document.querySelector(target); // Special case to return head of iframe instead of iframe itself\n\n if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {\n try {\n // This will throw an exception if access to iframe is blocked\n // due to cross-origin restrictions\n styleTarget = styleTarget.contentDocument.head;\n } catch (e) {\n // istanbul ignore next\n styleTarget = null;\n }\n }\n\n memo[target] = styleTarget;\n }\n\n return memo[target];\n };\n}();\n\nvar stylesInDom = [];\n\nfunction getIndexByIdentifier(identifier) {\n var result = -1;\n\n for (var i = 0; i < stylesInDom.length; i++) {\n if (stylesInDom[i].identifier === identifier) {\n result = i;\n break;\n }\n }\n\n return result;\n}\n\nfunction modulesToDom(list, options) {\n var idCountMap = {};\n var identifiers = [];\n\n for (var i = 0; i < list.length; i++) {\n var item = list[i];\n var id = options.base ? item[0] + options.base : item[0];\n var count = idCountMap[id] || 0;\n var identifier = \"\".concat(id, \" \").concat(count);\n idCountMap[id] = count + 1;\n var index = getIndexByIdentifier(identifier);\n var obj = {\n css: item[1],\n media: item[2],\n sourceMap: item[3]\n };\n\n if (index !== -1) {\n stylesInDom[index].references++;\n stylesInDom[index].updater(obj);\n } else {\n stylesInDom.push({\n identifier: identifier,\n updater: addStyle(obj, options),\n references: 1\n });\n }\n\n identifiers.push(identifier);\n }\n\n return identifiers;\n}\n\nfunction insertStyleElement(options) {\n var style = document.createElement('style');\n var attributes = options.attributes || {};\n\n if (typeof attributes.nonce === 'undefined') {\n var nonce = typeof __webpack_nonce__ !== 'undefined' ? __webpack_nonce__ : null;\n\n if (nonce) {\n attributes.nonce = nonce;\n }\n }\n\n Object.keys(attributes).forEach(function (key) {\n style.setAttribute(key, attributes[key]);\n });\n\n if (typeof options.insert === 'function') {\n options.insert(style);\n } else {\n var target = getTarget(options.insert || 'head');\n\n if (!target) {\n throw new Error(\"Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.\");\n }\n\n target.appendChild(style);\n }\n\n return style;\n}\n\nfunction removeStyleElement(style) {\n // istanbul ignore if\n if (style.parentNode === null) {\n return false;\n }\n\n style.parentNode.removeChild(style);\n}\n/* istanbul ignore next */\n\n\nvar replaceText = function replaceText() {\n var textStore = [];\n return function replace(index, replacement) {\n textStore[index] = replacement;\n return textStore.filter(Boolean).join('\\n');\n };\n}();\n\nfunction applyToSingletonTag(style, index, remove, obj) {\n var css = remove ? '' : obj.media ? \"@media \".concat(obj.media, \" {\").concat(obj.css, \"}\") : obj.css; // For old IE\n\n /* istanbul ignore if */\n\n if (style.styleSheet) {\n style.styleSheet.cssText = replaceText(index, css);\n } else {\n var cssNode = document.createTextNode(css);\n var childNodes = style.childNodes;\n\n if (childNodes[index]) {\n style.removeChild(childNodes[index]);\n }\n\n if (childNodes.length) {\n style.insertBefore(cssNode, childNodes[index]);\n } else {\n style.appendChild(cssNode);\n }\n }\n}\n\nfunction applyToTag(style, options, obj) {\n var css = obj.css;\n var media = obj.media;\n var sourceMap = obj.sourceMap;\n\n if (media) {\n style.setAttribute('media', media);\n } else {\n style.removeAttribute('media');\n }\n\n if (sourceMap && btoa) {\n css += \"\\n/*# sourceMappingURL=data:application/json;base64,\".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), \" */\");\n } // For old IE\n\n /* istanbul ignore if */\n\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n while (style.firstChild) {\n style.removeChild(style.firstChild);\n }\n\n style.appendChild(document.createTextNode(css));\n }\n}\n\nvar singleton = null;\nvar singletonCounter = 0;\n\nfunction addStyle(obj, options) {\n var style;\n var update;\n var remove;\n\n if (options.singleton) {\n var styleIndex = singletonCounter++;\n style = singleton || (singleton = insertStyleElement(options));\n update = applyToSingletonTag.bind(null, style, styleIndex, false);\n remove = applyToSingletonTag.bind(null, style, styleIndex, true);\n } else {\n style = insertStyleElement(options);\n update = applyToTag.bind(null, style, options);\n\n remove = function remove() {\n removeStyleElement(style);\n };\n }\n\n update(obj);\n return function updateStyle(newObj) {\n if (newObj) {\n if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap) {\n return;\n }\n\n update(obj = newObj);\n } else {\n remove();\n }\n };\n}\n\nmodule.exports = function (list, options) {\n options = options || {}; // Force single-tag solution on IE6-9, which has a hard limit on the # of <style>\n // tags it will allow on a page\n\n if (!options.singleton && typeof options.singleton !== 'boolean') {\n options.singleton = isOldIE();\n }\n\n list = list || [];\n var lastIdentifiers = modulesToDom(list, options);\n return function update(newList) {\n newList = newList || [];\n\n if (Object.prototype.toString.call(newList) !== '[object Array]') {\n return;\n }\n\n for (var i = 0; i < lastIdentifiers.length; i++) {\n var identifier = lastIdentifiers[i];\n var index = getIndexByIdentifier(identifier);\n stylesInDom[index].references--;\n }\n\n var newLastIdentifiers = modulesToDom(newList, options);\n\n for (var _i = 0; _i < lastIdentifiers.length; _i++) {\n var _identifier = lastIdentifiers[_i];\n\n var _index = getIndexByIdentifier(_identifier);\n\n if (stylesInDom[_index].references === 0) {\n stylesInDom[_index].updater();\n\n stylesInDom.splice(_index, 1);\n }\n }\n\n lastIdentifiers = newLastIdentifiers;\n };\n};","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".nyris-capture-app-button {\\n position: fixed;\\n top: 0;\\n right: 0;\\n color: white;\\n margin: 10px;\\n padding: 10px;\\n background-color: rgba(255,255,255,0.3);\\n border-radius: 2px;\\n text-shadow: 1px 1px 3px #000;\\n line-height: 1em;\\n box-shadow: 1px 1px 3px rgba(0, 0, 0,0.5);\\n}\\n\\n.nyris-capture-inputFile {\\n visibility: hidden;\\n}\\n\\n.nyris-capture-captureUi {\\n position: fixed;\\n top: 0;\\n left: 0;\\n bottom: 0;\\n height: 100%;\\n width: 100%;\\n background-color: black;\\n z-index: 10000;\\n}\\n\\n.nyris-capture-video {\\n position: fixed;\\n min-height: 100%;\\n min-width: 100%;\\n top: 50%;\\n left: 50%;\\n transform: translateX(-50%) translateY(-50%);\\n width: auto;\\n height: auto;\\n}\\n\\n.nyris-capture-searchBtn {\\n position: fixed;\\n bottom: 0;\\n right: 0;\\n z-index: 10001;\\n left: 50%;\\n transform: translateX(-50%);\\n\\n color: black;\\n background-color: transparent;\\n text-transform: uppercase;\\n border: 0;\\n margin: auto;\\n display: block;\\n -webkit-filter: drop-shadow( 1px 1px 5px #000 );\\n filter: drop-shadow( 1px 1px 5px #000 );\\n\\n}\\n\\n.nyris-capture-backBtn {\\n position: fixed;\\n bottom: 0;\\n left: 0;\\n z-index: 10001;\\n color: white;\\n background-color: transparent;\\n border: 0;\\n\\n text-transform: uppercase;\\n border-radius: 50%;\\n display: block;\\n padding: 0;\\n font-size: 16px;\\n margin-bottom: 5px;\\n margin-left: 5px;\\n -webkit-filter: drop-shadow( 1px 1px 5px #000 );\\n filter: drop-shadow( 1px 1px 5px #000 );\\n}\\n\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n","\"use strict\";\n\n/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\n// eslint-disable-next-line func-names\nmodule.exports = function (useSourceMap) {\n var list = []; // return the list of modules as css string\n\n list.toString = function toString() {\n return this.map(function (item) {\n var content = cssWithMappingToString(item, useSourceMap);\n\n if (item[2]) {\n return \"@media \".concat(item[2], \" {\").concat(content, \"}\");\n }\n\n return content;\n }).join('');\n }; // import a list of modules into the list\n // eslint-disable-next-line func-names\n\n\n list.i = function (modules, mediaQuery, dedupe) {\n if (typeof modules === 'string') {\n // eslint-disable-next-line no-param-reassign\n modules = [[null, modules, '']];\n }\n\n var alreadyImportedModules = {};\n\n if (dedupe) {\n for (var i = 0; i < this.length; i++) {\n // eslint-disable-next-line prefer-destructuring\n var id = this[i][0];\n\n if (id != null) {\n alreadyImportedModules[id] = true;\n }\n }\n }\n\n for (var _i = 0; _i < modules.length; _i++) {\n var item = [].concat(modules[_i]);\n\n if (dedupe && alreadyImportedModules[item[0]]) {\n // eslint-disable-next-line no-continue\n continue;\n }\n\n if (mediaQuery) {\n if (!item[2]) {\n item[2] = mediaQuery;\n } else {\n item[2] = \"\".concat(mediaQuery, \" and \").concat(item[2]);\n }\n }\n\n list.push(item);\n }\n };\n\n return list;\n};\n\nfunction cssWithMappingToString(item, useSourceMap) {\n var content = item[1] || ''; // eslint-disable-next-line prefer-destructuring\n\n var cssMapping = item[3];\n\n if (!cssMapping) {\n return content;\n }\n\n if (useSourceMap && typeof btoa === 'function') {\n var sourceMapping = toComment(cssMapping);\n var sourceURLs = cssMapping.sources.map(function (source) {\n return \"/*# sourceURL=\".concat(cssMapping.sourceRoot || '').concat(source, \" */\");\n });\n return [content].concat(sourceURLs).concat([sourceMapping]).join('\\n');\n }\n\n return [content].join('\\n');\n} // Adapted from convert-source-map (MIT)\n\n\nfunction toComment(sourceMap) {\n // eslint-disable-next-line no-undef\n var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))));\n var data = \"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(base64);\n return \"/*# \".concat(data, \" */\");\n}","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport * as React from \"react\";\n\nvar _ref = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"path\", {\n id: \"capture_svg__a\",\n d: \"M150 540a30 30 0 1160 0 30 30 0 01-60 0z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n id: \"capture_svg__b\",\n d: \"M144 540a36 36 0 1172 0 36 36 0 01-72 0zm36 33.95a33.94 33.94 0 100-67.89 33.94 33.94 0 000 67.89z\"\n}));\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"use\", {\n fill: \"#c00\",\n xlinkHref: \"#capture_svg__a\",\n transform: \"translate(-144 -504)\"\n});\n\nvar _ref3 = /*#__PURE__*/React.createElement(\"use\", {\n fill: \"#c00\",\n fillOpacity: 0.9,\n xlinkHref: \"#capture_svg__b\",\n opacity: 0.7,\n transform: \"translate(-144 -504)\"\n});\n\nfunction SvgCapture(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 72,\n height: 72\n }, props), _ref, _ref2, _ref3);\n}\n\nexport default \"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iNzIiIGhlaWdodD0iNzIiIHZpZXdCb3g9IjAgMCA3MiA3MiI+PGRlZnM+PHBhdGggaWQ9IjFoN3JhIiBkPSJNMTUwIDU0MGEzMCAzMCAwIDEgMSA2MCAwIDMwIDMwIDAgMCAxLTYwIDB6Ii8+PHBhdGggaWQ9IjFoN3JiIiBkPSJNMTQ0IDU0MGEzNiAzNiAwIDEgMSA3MiAwIDM2IDM2IDAgMCAxLTcyIDB6bTM2IDMzLjk1YTMzLjk0IDMzLjk0IDAgMSAwIDAtNjcuODkgMzMuOTQgMzMuOTQgMCAwIDAgMCA2Ny44OXoiLz48L2RlZnM+PGc+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTE0NCAtNTA0KSI+PHVzZSBmaWxsPSIjYzAwIiB4bGluazpocmVmPSIjMWg3cmEiLz48L2c+PGcgb3BhY2l0eT0iLjciIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0xNDQgLTUwNCkiPjx1c2UgZmlsbD0iI2MwMCIgZmlsbC1vcGFjaXR5PSIuOSIgeGxpbms6aHJlZj0iIzFoN3JiIi8+PC9nPjwvZz48L3N2Zz4=\";\nexport { SvgCapture as ReactComponent };","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport * as React from \"react\";\n\nvar _ref = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M0 0h24v24H0z\",\n fill: \"none\"\n});\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M20 11H7.83l5.59-5.59L12 4l-8 8 8 8 1.41-1.41L7.83 13H20v-2z\",\n fill: \"#fff\"\n});\n\nfunction SvgArrowBack(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 24,\n height: 24\n }, props), _ref, _ref2);\n}\n\nexport default \"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICAgIDxwYXRoIGQ9Ik0wIDBoMjR2MjRIMHoiIGZpbGw9Im5vbmUiLz4KICAgIDxwYXRoIGQ9Ik0yMCAxMUg3LjgzbDUuNTktNS41OUwxMiA0bC04IDggOCA4IDEuNDEtMS40MUw3LjgzIDEzSDIwdi0yeiIgZmlsbD0id2hpdGUiLz4KPC9zdmc+Cg==\";\nexport { SvgArrowBack as ReactComponent };","import {ChangeEvent} from \"react\";\n\nexport type FileHandler = (f: File) => void;\n\nexport const makeFileHandler = (fh: FileHandler) => (e: ChangeEvent | DragEvent) => {\n let file = null;\n\n const changeEvent = e as ChangeEvent;\n if (changeEvent && changeEvent.target) {\n const fileInput = changeEvent.target as HTMLInputElement;\n if (fileInput.files && fileInput.files[0]) {\n file = fileInput.files[0];\n }\n\n // reset input\n if (fileInput.value) {\n fileInput.value = \"\";\n }\n if (file) {\n return fh(file);\n }\n }\n\n const dragEvent = e as DragEvent;\n if (dragEvent) {\n file = (dragEvent.dataTransfer && dragEvent.dataTransfer.files[0]);\n }\n\n if (file) {\n return fh(file);\n }\n};\n","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar blueimp_load_image_1 = __importDefault(require(\"blueimp-load-image\"));\n/**\n * Gets url parameter values by name.\n * @param name The parameter name.\n * @returns string value if it has value assigned with `=`, true if it is specified but without value or `undefined` if not present\n */\nfunction getUrlParam(name) {\n var results = new RegExp(\"[?&]\" + name + \"(=([^&#]*))?(&|$|#)\", 'i')\n .exec(window.location.href);\n if (results && results[2]) { // has value\n console.log('has value', name, results[2]);\n return decodeURIComponent(results[2]);\n }\n return (results && true) // present but without value\n || undefined; // not present\n}\nexports.getUrlParam = getUrlParam;\n/**\n * Calculate the size of a thumbnail image while keeping proportions, based on pixel area.\n * This leads to better results in cases, where the aspect ratio is extreme.\n * @param targetWidth The desired width of the image.\n * @param targetHeight The desired height of the image.\n * @param aspectRatio Aspect ratio of the image.\n */\nfunction getThumbSizeArea(targetWidth, targetHeight, aspectRatio) {\n var targetArea = targetWidth * targetHeight;\n var width = Math.sqrt(targetArea * aspectRatio);\n return {\n w: width,\n h: width / aspectRatio\n };\n}\nexports.getThumbSizeArea = getThumbSizeArea;\n/**\n * Calculate the size of a thumbnail image to fit in `maxWith` and `maxHeight` while preserving the aspect ratio.\n * @param maxWidth\n * @param maxHeight\n * @param originalWidth\n * @param originalHeight\n */\nfunction getThumbSizeLongestEdge(maxWidth, maxHeight, originalWidth, originalHeight) {\n var iR = originalWidth / originalHeight;\n var dR = maxWidth / maxHeight;\n if (dR > iR) {\n return {\n w: originalWidth * maxHeight / originalHeight,\n h: maxHeight\n };\n }\n return {\n w: maxWidth,\n h: originalHeight * maxWidth / originalWidth\n };\n}\nexports.getThumbSizeLongestEdge = getThumbSizeLongestEdge;\nfunction scaleRect(r, size) {\n return {\n x1: r.x1 * size.w,\n x2: r.x2 * size.w,\n y1: r.y1 * size.h,\n y2: r.y2 * size.h\n };\n}\nexports.scaleRect = scaleRect;\n/**\n * Calculates the size of a rect.\n * @param r The [[RectCoords]].\n */\nfunction getRectSize(r) {\n return {\n w: r.x2 - r.x1,\n h: r.y2 - r.y1\n };\n}\nexports.getRectSize = getRectSize;\n/**\n * Get aspect ratio of a rect\n * @param rect The normalized rect.\n * @param size The original image size.\n */\nfunction getRectAspectRatio(rect, size) {\n var scaledRect = scaleRect(rect, size);\n var _a = getRectSize(scaledRect), w = _a.w, h = _a.h;\n return w / h;\n}\nexports.getRectAspectRatio = getRectAspectRatio;\nfunction getElementSize(elem) {\n var img = elem;\n var video = elem;\n return {\n w: img.naturalWidth || video.videoWidth || elem.width,\n h: img.naturalHeight || video.videoHeight || elem.height\n };\n}\nexports.getElementSize = getElementSize;\nfunction elementToCanvas(elem, newSize, normalizedRect) {\n var _a = getElementSize(elem), ow = _a.w, oh = _a.h;\n var _b = normalizedRect ? normalizedRect : {\n x1: 0,\n x2: 1,\n y1: 0,\n y2: 1\n }, x1 = _b.x1, x2 = _b.x2, y1 = _b.y1, y2 = _b.y2;\n var w = x2 - x1;\n var h = y2 - y1;\n // scale to absolute pixels\n var sx = ow * x1;\n var sw = ow * w;\n var sy = oh * y1;\n var sh = oh * h;\n var dw = (newSize && newSize.w) || ow;\n var dh = (newSize && newSize.h) || oh;\n var canvas = document.createElement('canvas');\n canvas.width = dw;\n canvas.height = dh;\n var context = canvas.getContext('2d');\n if (!context) {\n throw Error(\"Error converting element to canvas: Can not get 2d context\");\n }\n // fill with white first to\n context.fillStyle = \"rgb(255, 255,255)\";\n context.fillRect(0, 0, dw, dh);\n context.drawImage(elem, sx, sy, sw, sh, 0, 0, // dx dy\n dw, dh);\n return canvas;\n}\nexports.elementToCanvas = elementToCanvas;\nfunction urlOrBlobToCanvas(file) {\n return new Promise(function (resolve, reject) {\n // File can also be an image element\n blueimp_load_image_1.default(file, (function (data) {\n var c = data;\n if (c) {\n resolve(c);\n }\n else {\n reject();\n }\n }), {\n canvas: true,\n orientation: true,\n crossOrigin: 'anonymous'\n });\n });\n}\nexports.urlOrBlobToCanvas = urlOrBlobToCanvas;\nfunction canvasToJpgBlob(canvas, quality) {\n return new Promise(function (resolve, reject) {\n canvas.toBlob(function (blob) {\n if (blob) {\n resolve(blob);\n }\n else {\n reject();\n }\n }, 'image/jpeg', quality);\n });\n}\nexports.canvasToJpgBlob = canvasToJpgBlob;\nexports.cadExtensions = ['.stp', '.step', '.stl', '.obj', '.glb', '.gltf'];\nfunction isCadFile(file) {\n return exports.cadExtensions.some(function (ex) { return file.name.endsWith(ex); });\n}\nexports.isCadFile = isCadFile;\nfunction isImageFile(file) {\n return file.type.startsWith('image/');\n}\nexports.isImageFile = isImageFile;\n/**\n * Measures time remaining for a promise to resolve.\n * @param promise The promise\n */\nfunction timePromise(promise) {\n return __awaiter(this, void 0, void 0, function () {\n var t1, res, t2;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n t1 = Date.now();\n return [4 /*yield*/, promise];\n case 1:\n res = _a.sent();\n t2 = Date.now();\n return [2 /*return*/, { res: res, durationSeconds: (t2 - t1) / 1000 }];\n }\n });\n });\n}\nexports.timePromise = timePromise;\n//# sourceMappingURL=utils.js.map","module.exports = __webpack_public_path__ + \"static/media/img-1-1.6144e5f9.png\";","module.exports = __webpack_public_path__ + \"static/media/img-1-2.ad943f0f.png\";","module.exports = __webpack_public_path__ + \"static/media/img2-1.a87c79c7.png\";","module.exports = __webpack_public_path__ + \"static/media/img2-2.39c5b73f.png\";","module.exports = __webpack_public_path__ + \"static/media/img3-1.443b0c3a.png\";","module.exports = __webpack_public_path__ + \"static/media/img3-2.37db7999.png\";","module.exports = __webpack_public_path__ + \"static/media/img4-1.9c34c158.png\";","module.exports = __webpack_public_path__ + \"static/media/img4-2.9d280a04.png\";","module.exports = __webpack_public_path__ + \"static/media/img5-1.b61dbd4d.png\";","module.exports = __webpack_public_path__ + \"static/media/img5-2.1c77c093.png\";","module.exports = __webpack_public_path__ + \"static/media/img6-1.8b03dd21.png\";","module.exports = __webpack_public_path__ + \"static/media/img6-2.1e3e7fed.png\";","module.exports = __webpack_public_path__ + \"static/media/reverse_camera.28c80509.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon_search.373c3cc4.svg\";","module.exports = __webpack_public_path__ + \"static/media/camera.ae3f4f51.svg\";","module.exports = __webpack_public_path__ + \"static/media/email_share.92bbfb8b.svg\";","\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nfunction __export(m) {\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n}\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nrequire(\"blueimp-canvas-to-blob\");\nvar utils_1 = require(\"./utils\");\nvar axios_1 = __importDefault(require(\"axios\"));\n// re-export utils\n__export(require(\"./utils\"));\nvar NyrisAPI = /** @class */ (function () {\n function NyrisAPI(settings) {\n this.httpClient = axios_1.default.create();\n if (!settings.apiKey) {\n throw new Error(\"The api-key is not set.\");\n }\n this.apiKey = settings.apiKey;\n var baseUrl = settings.baseUrl || \"https://api.nyris.io\";\n this.imageMatchingUrl = baseUrl + \"/find/v1.1\";\n this.cadMatchingUrl = baseUrl + \"/cad/find/v0.1\";\n this.imageMatchingUrlBySku = baseUrl + \"/recommend/v1/\";\n this.imageMatchingSubmitManualUrl = baseUrl + \"/find/v1/manual/\";\n this.feedbackUrl = baseUrl + \"/feedback/v1/\";\n this.regionProposalUrl = baseUrl + \"/find/v2/regions/\";\n this.findFilters = baseUrl + \"/find/v1/filters\";\n this.responseFormat = \"application/offers.complete+json\";\n this.maxHeight = settings.maxHeight || 1024;\n this.maxWidth = settings.maxWidth || 1024;\n this.jpegQuality = settings.jpegQuality || 0.9;\n this.customSearchRequest = settings.customSearchRequest;\n this.responseHook = settings.responseHook;\n this.xOptions = settings.xOptions;\n }\n NyrisAPI.prototype.prepareImage = function (canvas, cropRect) {\n return __awaiter(this, void 0, void 0, function () {\n var crop, originalSize, aspectRatio, scaledSize, resizedCroppedCanvas;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n crop = cropRect || {\n x1: 0,\n x2: 1,\n y1: 0,\n y2: 1,\n };\n originalSize = utils_1.getElementSize(canvas);\n aspectRatio = utils_1.getRectAspectRatio(crop, originalSize);\n scaledSize = utils_1.getThumbSizeArea(this.maxWidth, this.maxHeight, aspectRatio);\n resizedCroppedCanvas = utils_1.elementToCanvas(canvas, scaledSize, crop);\n return [4 /*yield*/, utils_1.canvasToJpgBlob(resizedCroppedCanvas, this.jpegQuality)];\n case 1: return [2 /*return*/, _a.sent()];\n }\n });\n });\n };\n NyrisAPI.prototype.getSearchRequestHeaders = function (contentType) {\n // Create headers\n var headers = {\n \"X-Api-Key\": this.apiKey,\n \"Accept-Language\": \"de,*;q=0.5\",\n Accept: this.responseFormat,\n \"Content-Type\": contentType || \"application/octet-stream\",\n };\n // Add options\n var xOptions = [];\n if (this.xOptions)\n xOptions.push(this.xOptions);\n if (xOptions.length > 0)\n headers[\"X-Options\"] = xOptions.join(\" \");\n return headers;\n };\n NyrisAPI.prototype.getRegionRequestHeaders = function (contentType) {\n // Create headers\n var headers = {\n \"X-Api-Key\": this.apiKey,\n \"Content-Type\": contentType || \"application/octet-stream\",\n };\n // Add options\n var xOptions = [];\n if (this.xOptions)\n xOptions.push(this.xOptions);\n if (xOptions.length > 0)\n headers[\"X-Options\"] = xOptions.join(\" \");\n return headers;\n };\n NyrisAPI.prototype.getParams = function (options) {\n var params = options.geoLocation\n ? {\n lat: options.geoLocation.lat.toString(),\n lon: options.geoLocation.lon.toString(),\n dist: options.geoLocation.dist.toString(),\n }\n : {};\n params = __assign(__assign({}, params), { text: options.text });\n return params;\n };\n NyrisAPI.prototype.parseCategoryPredictions = function (categoryPredictionResponse) {\n return Object.entries(categoryPredictionResponse || {})\n .map(function (_a) {\n var name = _a[0], score = _a[1];\n return ({\n name: name,\n score: score,\n });\n })\n .sort(function (a, b) { return b.score - a.score; });\n };\n /**\n * Search using the experimental CAD API\n * @param file - A CAD file\n * @param options - Image search options\n * @deprecated This is a prototype API and might be removed/changed at any time.\n */\n NyrisAPI.prototype.findByCad = function (file, options) {\n return __awaiter(this, void 0, void 0, function () {\n var fileType, headers, params, res;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n fileType = file.type;\n headers = this.getSearchRequestHeaders(fileType);\n params = this.getParams(options);\n return [4 /*yield*/, utils_1.timePromise(this.httpClient.request({\n method: \"POST\",\n url: this.cadMatchingUrl,\n data: file,\n params: params,\n headers: headers,\n responseType: \"json\",\n }))];\n case 1:\n res = (_a.sent()).res;\n return [2 /*return*/, res.data];\n }\n });\n });\n };\n /**\n * Search for an image.\n * @param canvas Image, Video (frame) or Canvas to use use for image search.\n * @param filters key values of filters\n * @param options See [[ImageSearchOptions]].\n */\n NyrisAPI.prototype.find = function (options, canvas, filters) {\n return __awaiter(this, void 0, void 0, function () {\n var requestBody, params, headers, text, rest, imageBytes, i, j, res;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n requestBody = new FormData();\n params = {};\n headers = this.getSearchRequestHeaders(\"image/jpeg\");\n if (canvas && options.text) {\n requestBody.append(\"text\", options.text);\n text = options.text, rest = __rest(options, [\"text\"]);\n params = this.getParams(rest);\n }\n else if (options.text && filters && filters.length > 0) {\n requestBody.append(\"text\", options.text);\n }\n else {\n params = this.getParams(options);\n }\n if (!canvas) return [3 /*break*/, 2];\n return [4 /*yield*/, this.prepareImage(canvas, options.cropRect)];\n case 1:\n imageBytes = _a.sent();\n if (this.customSearchRequest)\n return [2 /*return*/, this.customSearchRequest(imageBytes, this.httpClient)];\n requestBody.append(\"image\", imageBytes);\n _a.label = 2;\n case 2:\n if (filters && filters.length > 0) {\n for (i = 0; i < filters.length; i++) {\n requestBody.append(\"filters[\" + i + \"].filterType\", filters[i].key);\n for (j = 0; j < filters[i].values.length; j++) {\n requestBody.append(\"filters[\" + i + \"].filterValues[\" + j + \"]\", filters[i].values[j]);\n }\n }\n }\n return [4 /*yield*/, utils_1.timePromise(this.httpClient.request(__assign({ method: \"POST\", url: this.imageMatchingUrl, params: params,\n headers: headers, responseType: \"json\" }, (canvas || (filters && filters.length)\n ? { data: requestBody }\n : { data: null }))))];\n case 3:\n res = (_a.sent()).res;\n return [2 /*return*/, res.data];\n }\n });\n });\n };\n /**\n * Search by SKU (itemID)\n * @param sku The SKU or ID of the item.\n * @param mid The index ID.\n */\n NyrisAPI.prototype.findBySku = function (sku, mid) {\n return __awaiter(this, void 0, void 0, function () {\n var headers, url, r;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n headers = this.getSearchRequestHeaders();\n url = \"\" + this.imageMatchingUrlBySku + encodeURIComponent(sku) + \"/\" + encodeURIComponent(mid);\n return [4 /*yield*/, this.httpClient.get(url, {\n headers: headers,\n responseType: \"json\",\n })];\n case 1:\n r = _a.sent();\n if (this.responseHook) {\n r = this.responseHook;\n }\n return [2 /*return*/, r];\n }\n });\n });\n };\n /**\n * Find significant sections in the image.\n * @param canvas Canvas, video or image to search with.\n * @returns A list of regions, see [[Region]].\n */\n NyrisAPI.prototype.findRegions = function (canvas) {\n return __awaiter(this, void 0, void 0, function () {\n var _a, origW, origH, scaledSize, resizedCroppedCanvas, blob, headers, response, regions;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n _a = utils_1.getElementSize(canvas), origW = _a.w, origH = _a.h;\n scaledSize = utils_1.getThumbSizeArea(this.maxWidth, this.maxHeight, origW / origH);\n resizedCroppedCanvas = utils_1.elementToCanvas(canvas, scaledSize);\n return [4 /*yield*/, utils_1.canvasToJpgBlob(resizedCroppedCanvas, this.jpegQuality)];\n case 1:\n blob = _b.sent();\n headers = this.getRegionRequestHeaders(\"image/jpeg\");\n return [4 /*yield*/, this.httpClient.request({\n method: \"POST\",\n url: this.regionProposalUrl,\n data: blob,\n headers: headers,\n })];\n case 2:\n response = _b.sent();\n regions = response.data.regions;\n return [2 /*return*/, regions.map(function (r) { return ({\n classId: r.classId,\n confidence: r.confidence,\n normalizedRect: {\n x1: r.region.left / scaledSize.w,\n x2: r.region.right / scaledSize.w,\n y1: r.region.top / scaledSize.h,\n y2: r.region.bottom / scaledSize.h,\n },\n }); })];\n }\n });\n });\n };\n /**\n * Send feedback event.\n * @param sessionId ID of the session. Usually the first request ID returned.\n * @param requestId The request ID to submit the feedback event to.\n * @param payload See [[FeedbackEventPayload]].\n */\n NyrisAPI.prototype.sendFeedback = function (sessionId, requestId, payload) {\n return __awaiter(this, void 0, void 0, function () {\n var headers, data;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n headers = {\n \"X-Api-Key\": this.apiKey,\n \"Content-Type\": \"application/json\",\n };\n data = __assign({ request_id: requestId, timestamp: new Date(), session_id: sessionId }, payload);\n return [4 /*yield*/, this.httpClient.request({\n method: \"POST\",\n url: this.feedbackUrl,\n headers: headers,\n data: data,\n })];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n NyrisAPI.prototype.getFilters = function (limit) {\n return __awaiter(this, void 0, void 0, function () {\n var headers, url, response;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n headers = this.getSearchRequestHeaders();\n url = this.findFilters + \"?limit=\" + limit;\n return [4 /*yield*/, this.httpClient.get(url, {\n headers: headers,\n responseType: \"json\",\n })];\n case 1:\n response = _a.sent();\n return [2 /*return*/, response.data];\n }\n });\n });\n };\n NyrisAPI.prototype.searchFilters = function (key, value, limit) {\n if (limit === void 0) { limit = 100; }\n return __awaiter(this, void 0, void 0, function () {\n var headers, url, response;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n headers = this.getSearchRequestHeaders();\n url = this.findFilters + \"/\" + key + \"/\" + value + \"?limit=\" + limit;\n return [4 /*yield*/, this.httpClient.get(url, {\n headers: headers,\n responseType: \"json\",\n })];\n case 1:\n response = _a.sent();\n return [2 /*return*/, response.data];\n }\n });\n });\n };\n return NyrisAPI;\n}());\nexports.default = NyrisAPI;\n//# sourceMappingURL=index.js.map","// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.1/8 is considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n);\n\ntype Config = {\n onSuccess?: (registration: ServiceWorkerRegistration) => void;\n onUpdate?: (registration: ServiceWorkerRegistration) => void;\n};\n\nexport function register(config?: Config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(\n (process as { env: { [key: string]: string } }).env.PUBLIC_URL,\n window.location.href\n );\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit https://bit.ly/CRA-PWA'\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl: string, config?: Config) {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n 'New content is available and will be used when all ' +\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch(error => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl: string, config?: Config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl)\n .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type');\n if (\n response.status === 404 ||\n (contentType != null && contentType.indexOf('javascript') === -1)\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log(\n 'No internet connection found. App is running in offline mode.'\n );\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister();\n });\n }\n}\n","import img1 from 'common/assets/images/imageCaptureHelp/img-1-1.png';\nimport img2 from 'common/assets/images/imageCaptureHelp/img-1-2.png';\nimport img3 from 'common/assets/images/imageCaptureHelp/img2-1.png';\nimport img4 from 'common/assets/images/imageCaptureHelp/img2-2.png';\nimport img5 from 'common/assets/images/imageCaptureHelp/img3-1.png';\nimport img6 from 'common/assets/images/imageCaptureHelp/img3-2.png';\nimport img7 from 'common/assets/images/imageCaptureHelp/img4-1.png';\nimport img8 from 'common/assets/images/imageCaptureHelp/img4-2.png';\nimport img9 from 'common/assets/images/imageCaptureHelp/img5-1.png';\nimport img10 from 'common/assets/images/imageCaptureHelp/img5-2.png';\nimport img11 from 'common/assets/images/imageCaptureHelp/img6-1.png';\nimport img12 from 'common/assets/images/imageCaptureHelp/img6-2.png';\n\nexport const DEFAULT_REGION = { x1: 0, x2: 1, y1: 0, y2: 1 };\nexport const showHits = [\n { value: 10, label: '10' },\n { value: 20, label: '20' },\n { value: 30, label: '30' },\n { value: 40, label: '40' },\n { value: 50, label: '50' },\n { value: 60, label: '60' },\n { value: 70, label: '70' },\n { value: 80, label: '80' },\n { value: 90, label: '90' },\n { value: 100, label: '100' },\n];\nexport const visualSearchHelp = [\n {\n title: 'SELECT THE RIGHT IMAGE AREA',\n description:\n 'The main object should occupy the major part of the image. Use the cropping tool available to crop the image and remove excess background.',\n imageLeft: img1,\n imageRight: img2,\n },\n {\n title: 'PICTURE CLARITY',\n description: 'The image should not be blurred or out of focus.',\n imageLeft: img3,\n imageRight: img4,\n },\n {\n title: 'OPTIMAL LIGHTING',\n description:\n 'The images should be taken in a bright area or use your camera’s flash to take a well-lit picture.',\n imageLeft: img5,\n imageRight: img6,\n },\n {\n title: 'MONOCHROME BACKGROUND',\n description:\n 'The object should be placed on a plain and light background and patterned background should be avoided.',\n imageLeft: img7,\n imageRight: img8,\n },\n {\n title: 'VISIBILITY OF THE OBJECT',\n description:\n 'Click an image encapsulating most of the object’s key components.',\n imageLeft: img9,\n imageRight: img10,\n },\n {\n title: 'OCR CAPTURE',\n description:\n 'It is recommended to take a clear picture of the text on the typeplate etc, to ensure that the model can detect the text and give accurate results.',\n imageLeft: img11,\n imageRight: img12,\n },\n];\n","import { SearchState } from './types';\n\nexport const initialState: SearchState = {\n categoryPredictions: [],\n codes: [],\n configureFilter: {},\n errorMessage: '',\n fetchingRegions: false,\n fetchingResults: false,\n filterOptions: [],\n filters: [],\n imageThumbSearchInput: '',\n isShowModalDetailItemMobile: false,\n preFilter: {},\n loadingSearchAlgolia: false,\n preFilterDropdown: false,\n imageCaptureHelpModal: false,\n regions: [],\n requestImage: undefined,\n results: [],\n resultSearchText: [],\n selectedRegion: undefined,\n textSearchInputMobile: '',\n valueTextSearch: {\n configure: { filters: '' },\n page: 1,\n refinementList: '',\n },\n postFilter: {},\n};\n","import { RectCoords, Region } from '@nyris/nyris-api';\nimport { createSlice, PayloadAction } from '@reduxjs/toolkit';\nimport { DEFAULT_REGION } from '../../constants';\nimport { initialState } from './search.initialState';\nimport { isUndefined } from 'lodash';\n\nexport const searchSlice = createSlice({\n name: 'search',\n initialState,\n reducers: {\n setSearchResults: (state, data) => {\n const { payload } = data;\n const {\n results,\n requestId,\n categoryPredictions,\n codes,\n duration,\n filters,\n } = payload;\n\n return {\n ...state,\n filters,\n results,\n requestId,\n categoryPredictions,\n codes,\n duration,\n sessionId: state.sessionId || requestId,\n fetchingResults: false,\n };\n },\n\n setRegions: (state, data: PayloadAction<Region[]>) => ({\n ...state,\n regions: data.payload,\n }),\n\n setSelectedRegion: (state, data: PayloadAction<RectCoords | undefined>) => {\n return {\n ...state,\n selectedRegion: data.payload,\n };\n },\n\n setRequestImage: (state, data: PayloadAction<any>) => ({\n ...state,\n requestImage: {\n canvas: data.payload,\n id: Math.random().toString(),\n },\n regions: [],\n }),\n\n selectionChanged: (state, data: PayloadAction<RectCoords>) => {\n const { payload } = data;\n return {\n ...state,\n selectedRegion: payload,\n };\n },\n\n loadFileSelectRegion: (state, data: PayloadAction<any>) => {\n const { payload } = data;\n\n const { results, requestId, categoryPredictions, codes, duration } =\n payload;\n return {\n ...state,\n results,\n requestId,\n categoryPredictions,\n codes,\n duration,\n sessionId: state.sessionId || requestId,\n fetchingRegions: false,\n };\n },\n\n loadingActionResults: state => {\n return {\n ...state,\n fetchingResults: true,\n };\n },\n\n loadingActionRegions: state => {\n return {\n ...state,\n fetchingRegions: true,\n };\n },\n\n searchFileImageNonRegion: (state, data: PayloadAction<any>) => {\n const { payload } = data;\n const { results, requestId, duration, categoryPredictions, codes } =\n payload;\n return {\n ...state,\n results,\n requestId,\n duration,\n categoryPredictions,\n codes,\n fetchingResults: false,\n };\n },\n\n changeValueTextSearch: (state, data: PayloadAction<any>) => {\n const { payload } = data;\n return {\n ...state,\n valueTextSearch: payload,\n };\n },\n\n resultSearchText: (state, data: PayloadAction<any>) => {\n const { payload } = data;\n return {\n ...state,\n resultSearchText: payload,\n };\n },\n\n updateResults: (state, data: PayloadAction<any>) => {\n const { payload } = data;\n return {\n ...state,\n results: payload,\n };\n },\n updateQueryText: (state, data: PayloadAction<string>) => {\n const { payload } = data;\n return {\n ...state,\n queryText: payload,\n };\n },\n reset: (state, data: PayloadAction<any>) => {\n return {\n results: [],\n regions: [],\n selectedRegion: DEFAULT_REGION,\n requestImage: undefined,\n fetchingResults: false,\n fetchingRegions: false,\n filterOptions: [],\n categoryPredictions: [],\n codes: [],\n errorMessage: '',\n valueTextSearch: {},\n resultSearchText: [],\n filters: [],\n loadingSearchAlgolia: false,\n imageThumbSearchInput: '',\n textSearchInputMobile: '',\n isShowModalDetailItemMobile: false,\n preFilter: state.preFilter || {},\n postFilter: {},\n preFilterDropdown: false,\n imageCaptureHelpModal: false,\n };\n },\n\n onResetRequestImage: (state, data: PayloadAction<any>) => {\n return {\n ...state,\n requestImage: undefined,\n imageThumbSearchInput: '',\n results: [],\n regions: [],\n };\n },\n\n configureFilter: (state, data: PayloadAction<any>) => {\n const { payload } = data;\n return {\n ...state,\n configureFilter: payload,\n };\n },\n\n setUpdateSession: (state, data: PayloadAction<string>) => {\n const { payload } = data;\n return {\n ...state,\n sessionId: payload,\n };\n },\n\n updateResultChangePosition: (state, data: PayloadAction<any>) => {\n const { payload } = data;\n const { results } = payload;\n return {\n ...state,\n fetchingResults: false,\n results,\n };\n },\n\n setError: (state, data: PayloadAction<string>) => {\n return {\n ...state,\n fetchingRegions: false,\n fetchingResults: false,\n errorMessage: data.payload,\n };\n },\n\n setImageSearchInput: (state, data: PayloadAction<string>) => {\n const { payload } = data;\n return {\n ...state,\n imageThumbSearchInput: payload,\n };\n },\n updateStatusLoading: (state, data: PayloadAction<any>) => {\n const { payload } = data;\n return {\n ...state,\n loadingSearchAlgolia: payload,\n };\n },\n updateValueTextSearchMobile: (state, data: PayloadAction<string>) => {\n const { payload } = data;\n return {\n ...state,\n textSearchInputMobile: payload,\n };\n },\n onToggleModalItemDetail: (state, data: PayloadAction<boolean>) => {\n const { payload } = data;\n\n return {\n ...state,\n isShowModalDetailItemMobile: payload,\n };\n },\n setPreFilter: (state, data: PayloadAction<Record<string, boolean>>) => {\n const { payload } = data;\n return {\n ...state,\n preFilter: payload,\n };\n },\n setPreFilterDropdown: (state, data: PayloadAction<boolean>) => {\n return {\n ...state,\n preFilterDropdown: data.payload,\n };\n },\n setImageCaptureHelpModal: (state, data: PayloadAction<boolean>) => {\n return {\n ...state,\n imageCaptureHelpModal: data.payload,\n };\n },\n setFilter: (state, data: PayloadAction<any>) => {\n return {\n ...state,\n filter: data.payload,\n };\n },\n setPostFilter: (state, data: PayloadAction<Record<string, string>>) => {\n const { payload } = data;\n\n let filter = { ...state.postFilter } || {};\n const key = Object.keys(payload)[0];\n\n if (\n !isUndefined(filter[key]) &&\n !isUndefined(filter[key][payload[key]])\n ) {\n filter[key] = {\n ...filter[key],\n [payload[key]]: !filter[key][payload[key]],\n };\n } else if (!filter[key]) {\n filter = { ...filter, [key]: { [payload[key]]: true } };\n } else {\n filter[key] = { ...filter[key], [payload[key]]: true };\n }\n\n return {\n ...state,\n postFilter: { ...filter },\n };\n },\n\n clearPostFilter: state => {\n return {\n ...state,\n postFilter: {},\n };\n },\n },\n});\n\nexport const {\n changeValueTextSearch,\n clearPostFilter,\n configureFilter,\n loadFileSelectRegion,\n loadingActionRegions,\n loadingActionResults,\n onResetRequestImage,\n onToggleModalItemDetail,\n reset,\n resultSearchText,\n searchFileImageNonRegion,\n selectionChanged,\n setError,\n setFilter,\n setImageCaptureHelpModal,\n setImageSearchInput,\n setPostFilter,\n setPreFilter,\n setPreFilterDropdown,\n setRegions,\n setRequestImage,\n setSearchResults,\n setSelectedRegion,\n setUpdateSession,\n updateQueryText,\n updateResultChangePosition,\n updateResults,\n updateStatusLoading,\n updateValueTextSearchMobile,\n} = searchSlice.actions;\nexport default searchSlice.reducer;\n","import { WH } from '@nyris/nyris-api';\n\n/**\n * Gets url parameter values by name.\n * @param name The parameter name.\n * @returns string value if it has value assigned with `=`, true if it is specified but without value or `undefined` if not present\n */\nexport function getUrlParam(name: string): string | boolean | undefined {\n let results = new RegExp(`[?&]${name}(=([^&#]*))?(&|$|#)`, 'i').exec(\n window.location.href,\n );\n if (results && results[2]) {\n // has value\n return decodeURIComponent(results[2]);\n }\n return (\n (results && true) || // present but without value\n undefined\n ); // not present\n}\n\nexport function getThumbSizeLongestEdge(\n maxW: number,\n maxH: number,\n iW: number,\n iH: number,\n): WH {\n let iR = iW / iH;\n let dR = maxW / maxH;\n if (dR > iR) {\n return {\n w: (iW * maxH) / iH,\n h: maxH,\n };\n }\n return {\n w: maxW,\n h: (iH * maxW) / iW,\n };\n}\n","import { configureStore } from '@reduxjs/toolkit';\nimport { TypedUseSelectorHook, useDispatch, useSelector } from 'react-redux';\nimport { combineReducers } from 'redux';\nimport { AppSettings } from 'types';\nimport { getUrlParam } from 'utils';\nimport Search from 'Store/search/Search';\nimport { defaultSettings } from './constants';\n\ndeclare var settings: AppSettings;\n\nsettings.algolia.enabled = true;\nsettings.preview = true;\n\nlet normalizedSettings: AppSettings = {\n ...defaultSettings,\n ...settings,\n};\n\nnormalizedSettings = {\n ...normalizedSettings,\n apiKey: (getUrlParam('apiKey') as string) || normalizedSettings.apiKey,\n xOptions: (getUrlParam('xOptions') as string) || normalizedSettings.xOptions,\n regions:\n (getUrlParam('use.regions') as boolean) || normalizedSettings.regions,\n preview:\n (getUrlParam('use.preview') as boolean) || normalizedSettings.preview,\n};\n\nconst reducers = combineReducers({\n settings: () => normalizedSettings,\n search: Search,\n});\n\nexport const store = configureStore({\n reducer: reducers,\n devTools: process.env.NODE_ENV !== 'production',\n});\n\nexport type RootState = ReturnType<typeof store.getState>;\nexport type AppDispatch = typeof store.dispatch;\n\nexport const useAppDispatch = () => useDispatch<AppDispatch>();\nexport const useAppSelector: TypedUseSelectorHook<RootState> = useSelector;\n","import { AppSettings } from '../types';\n\nexport const defaultSettings: AppSettings = {\n auth0: {},\n algolia: {\n enabled: true,\n apiKey: '',\n appId: '',\n indexName: '',\n },\n xOptions: false,\n apiKey: 'UNSET',\n preview: true,\n regions: false,\n maxWidth: 500,\n maxHeight: 500,\n jpegQuality: 0.92,\n baseUrl: 'https://api.nyris.io',\n instantRedirectPatterns: [\n '^https?://(www.)?youtube.com/',\n '^https?://(www.)?youtu.be/',\n '^https?://(www.)?vimeo.com/',\n '^https?://(www.)?dailymotion.com/',\n '^https?://(www.)?dai.ly/',\n ],\n theme: {},\n field: {\n ctaLinkField: '',\n productName: '',\n productDetails: '',\n manufacturerNumber: '',\n productTag: '',\n warehouseNumber: '',\n warehouseNumberValue: '',\n warehouseShelfNumber: '',\n warehouseShelfNumberValue: '',\n warehouseStock: '',\n warehouseStockValue: '',\n },\n};\n","var _path;\nvar _excluded = [\"svgRef\", \"title\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport React from \"react\";\nvar SvgIconCameraMobile = function SvgIconCameraMobile(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 28,\n height: 28,\n viewBox: \"0 0 28 28\",\n fill: \"currentColor\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M28 24C28 24.5523 27.5523 25 27 25H1C0.447715 25 0 24.5523 0 24V7C0 6.44772 0.447715 6 1 6H7.46L9.17 3.45C9.35398 3.17061 9.66548 3.00173 10 3H18C18.3345 3.00173 18.646 3.17061 18.83 3.45L20.54 6H27C27.5523 6 28 6.44772 28 7V24ZM2 23H26V8H20C19.6655 7.99827 19.354 7.82939 19.17 7.55L17.46 5H10.54L8.83 7.55C8.64602 7.82939 8.33452 7.99827 8 8H2V23ZM14 21C10.6863 21 8 18.3137 8 15C8 11.6863 10.6863 9 14 9C17.3137 9 20 11.6863 20 15C20 18.3137 17.3137 21 14 21ZM14 11C11.7909 11 10 12.7909 10 15C10 17.2091 11.7909 19 14 19C16.2091 19 18 17.2091 18 15C18 12.7909 16.2091 11 14 11Z\",\n fill: \"currentColor\"\n })));\n};\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgIconCameraMobile, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/icon_camera_mobile.4d7a272f.svg\";\nexport { ForwardRef as ReactComponent };","import NyrisAPI, {\n ImageSearchOptions,\n NyrisAPISettings,\n RectCoords,\n Region,\n urlOrBlobToCanvas,\n} from '@nyris/nyris-api';\nimport { isEqual } from 'lodash';\nimport { DEFAULT_REGION } from '../constants';\nexport interface Filter {\n key?: string;\n values: string[];\n}\n\nexport const createImage = async (\n fileOrUrl: File | string | HTMLCanvasElement,\n) => {\n const image =\n fileOrUrl instanceof HTMLCanvasElement\n ? fileOrUrl\n : await urlOrBlobToCanvas(fileOrUrl);\n return image;\n};\n\nconst getRegionByMaxConfidence = (regions: Region[]) => {\n if (regions.length === 0) {\n return DEFAULT_REGION;\n }\n const regionWithMaxConfidence = regions.reduce((prev, current) => {\n prev.confidence = prev.confidence || 0;\n current.confidence = current.confidence || 0;\n return prev.confidence >= current.confidence ? prev : current;\n });\n return regionWithMaxConfidence.normalizedRect;\n};\n\nexport const findRegions = async (\n image: HTMLCanvasElement,\n settings: NyrisAPISettings,\n) => {\n const nyrisApi = new NyrisAPI(settings);\n let regions = await nyrisApi.findRegions(image);\n const selectedRegion = getRegionByMaxConfidence(regions);\n return {\n selectedRegion: isEqual(selectedRegion, DEFAULT_REGION)\n ? DEFAULT_REGION\n : selectedRegion,\n regions,\n };\n};\n\nexport const find = ({\n image,\n settings,\n region,\n filters,\n text,\n}: {\n image?: HTMLCanvasElement;\n settings: NyrisAPISettings;\n region?: RectCoords;\n filters?: Filter[];\n text?: string;\n}) => {\n const nyrisApi = new NyrisAPI(settings);\n let options: ImageSearchOptions = text ? { text } : {};\n\n if (region) {\n options = { ...options, cropRect: region };\n }\n return nyrisApi.find(options, image, filters);\n};\n","import { Box, Drawer } from '@material-ui/core';\nimport IconButton from '@material-ui/core/IconButton';\nimport CloseIcon from '@material-ui/icons/Close';\nimport PhotoLibraryIcon from '@material-ui/icons/PhotoLibrary';\nimport { RectCoords } from '@nyris/nyris-api';\nimport ReverseCamera from 'common/assets/icons/reverse_camera.svg';\nimport { isEmpty } from 'lodash';\nimport React, { useCallback, useRef, useState } from 'react';\nimport { useHistory } from 'react-router-dom';\nimport Webcam from 'react-webcam';\nimport { createImage, find, findRegions } from 'services/image';\nimport {\n onToggleModalItemDetail,\n setImageSearchInput,\n setRequestImage,\n setSearchResults,\n updateStatusLoading,\n loadingActionResults,\n setRegions,\n setSelectedRegion,\n} from 'Store/search/Search';\nimport { useAppDispatch, useAppSelector } from 'Store/Store';\n\ninterface Props {\n isToggle: boolean;\n onToggleModal?: any;\n}\n\nconst FACING_MODE_USER = 'environment';\nconst FACING_MODE_ENVIRONMENT = 'user';\n\nfunction CameraCustom(props: Props) {\n const { isToggle, onToggleModal } = props;\n const webcamRef: any = useRef(null);\n const [facingMode, setFacingMode] = useState(FACING_MODE_USER);\n const [scaleCamera, setScaleCamera] = useState<number>(1);\n const stateGlobal = useAppSelector(state => state);\n const { search, settings } = stateGlobal;\n const history = useHistory();\n const dispatch = useAppDispatch();\n const { preFilter } = search;\n\n const videoConstraints = {\n width: 1080,\n aspectRatio: 1.11111,\n };\n\n const handleClick = useCallback(() => {\n setFacingMode(prevState =>\n prevState === FACING_MODE_USER\n ? FACING_MODE_ENVIRONMENT\n : FACING_MODE_USER,\n );\n }, []);\n\n const handlerFindImage = async (image: any) => {\n dispatch(updateStatusLoading(true));\n dispatch(loadingActionResults());\n if (history.location.pathname !== '/result') {\n history.push('/result');\n }\n let region: RectCoords | undefined;\n let imageConvert = await createImage(image);\n dispatch(setRequestImage(imageConvert));\n dispatch(onToggleModalItemDetail(false));\n handlerCloseModal();\n\n if (settings.regions) {\n let res = await findRegions(imageConvert, settings);\n dispatch(setRegions(res.regions));\n region = res.selectedRegion;\n dispatch(setSelectedRegion(region));\n }\n\n const preFilterValues = [\n {\n key: settings.visualSearchFilterKey,\n values: Object.keys(preFilter) as string[],\n },\n ];\n let filters: any[] = [];\n\n find({\n image: imageConvert,\n settings,\n filters: !isEmpty(preFilter) ? preFilterValues : undefined,\n region,\n })\n .then((res: any) => {\n res?.results.map((item: any) => {\n filters.push({\n sku: item.sku,\n score: item.score,\n });\n });\n const payload = {\n ...res,\n filters,\n };\n dispatch(setSearchResults(payload));\n dispatch(updateStatusLoading(false));\n })\n .catch((e: any) => {\n console.log('error input search', e);\n dispatch(updateStatusLoading(false));\n });\n };\n\n const handlerCloseModal = () => {\n setFacingMode('environment');\n setScaleCamera(1);\n onToggleModal();\n };\n\n return (\n <Box className=\"box-camera-custom\">\n <Drawer\n anchor={'bottom'}\n open={isToggle}\n onClose={handlerCloseModal}\n className=\"modal-togggle-cam\"\n >\n <Box className=\"wrap-camera\">\n <button\n className=\"btn-close-modal right\"\n style={{\n backgroundColor: '#666666',\n }}\n onClick={handlerCloseModal}\n >\n <CloseIcon style={{ fontSize: 20, color: '#fff' }} />\n </button>\n\n <div\n style={{\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n overflow: 'hidden',\n width: '100%',\n }}\n className=\"full-height\"\n >\n <Webcam\n audio={false}\n width={'100%'}\n className=\"full-height\"\n imageSmoothing={true}\n screenshotFormat=\"image/jpeg\"\n forceScreenshotSourceSize={true}\n videoConstraints={{\n ...videoConstraints,\n facingMode,\n }}\n ref={webcamRef}\n style={{\n height: '100%',\n width: '100%',\n objectFit: 'cover',\n transform: `scale(${scaleCamera})`,\n }}\n screenshotQuality={1}\n >\n {({ getScreenshot }: any) => (\n <button\n onClick={() => {\n const imageSrc = getScreenshot();\n handlerFindImage(imageSrc);\n dispatch(setImageSearchInput(imageSrc));\n }}\n className=\"btn-capture-camera\"\n >\n <svg\n width=\"63\"\n height=\"63\"\n viewBox=\"0 0 63 63\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <circle cx=\"31.5\" cy=\"31.5\" r=\"31.5\" fill=\"white\" />\n </svg>\n </button>\n )}\n </Webcam>\n </div>\n\n <button className=\"btn-switch-camera\" onClick={handleClick}>\n <img src={ReverseCamera} alt=\"\" width={52} height={52} />\n </button>\n\n <div\n className=\"box-scale-camera\"\n style={{\n backgroundColor: settings.theme?.secondaryColor,\n }}\n >\n <button\n className={`${scaleCamera === 1 && 'active'}`}\n style={{\n backgroundColor: scaleCamera === 1 && 'active' ? 'white' : '',\n color: scaleCamera === 1 && 'active' ? 'black' : 'white',\n }}\n onClick={() => setScaleCamera(1)}\n >\n 1\n </button>\n <button\n className={`${scaleCamera === 1.5 && 'active'}`}\n style={{\n backgroundColor: scaleCamera === 1.5 && 'active' ? 'white' : '',\n color: scaleCamera === 1.5 && 'active' ? 'black' : 'white',\n }}\n onClick={() => setScaleCamera(1.5)}\n >\n 1.5\n </button>\n <button\n className={`${scaleCamera === 2 && 'active'}`}\n style={{\n backgroundColor: scaleCamera === 2 && 'active' ? 'white' : '',\n color: scaleCamera === 2 && 'active' ? 'black' : 'white',\n }}\n onClick={() => setScaleCamera(2)}\n >\n 2\n </button>\n </div>\n <div className=\"wrap-box-input-mobile custom-library\">\n <input\n id=\"icon-button-file\"\n type=\"file\"\n style={{ display: 'none' }}\n onChange={(fs: any) => {\n const file = fs.target?.files[0];\n if (!file) return;\n dispatch(setImageSearchInput(URL.createObjectURL(file)));\n handlerFindImage(file);\n }}\n accept=\"image/jpeg,image/png,image/webp\"\n onClick={event => {\n // @ts-ignore\n event.target.value = '';\n }}\n />\n <label htmlFor=\"icon-button-file\">\n <IconButton\n color=\"primary\"\n aria-label=\"upload picture\"\n component=\"span\"\n style={{\n width: 32,\n height: 32,\n borderRadius: '100%',\n padding: 7,\n backgroundColor: '#F3F3F5',\n }}\n >\n <PhotoLibraryIcon style={{ fontSize: 20, color: 'red' }} />\n </IconButton>\n </label>\n </div>\n </Box>\n </Drawer>\n </Box>\n );\n}\n\nexport default CameraCustom;\n","var _path;\nvar _excluded = [\"svgRef\", \"title\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport React from \"react\";\nvar SvgHome = function SvgHome(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 24,\n height: 22,\n viewBox: \"0 0 22 21\",\n style: {\n enableBackground: \"new 0 0 22 20.28\"\n },\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n className: \"st3\",\n d: \"M 10.959 1.845 C 11.109 1.845 11.266 1.886 11.408 1.96 L 19.66 6.661 C 19.935 6.825 20.101 7.112 20.101 7.424 L 20.101 15.776 C 20.101 16.111 19.91 16.415 19.61 16.562 L 15.912 18.384 C 15.787 18.449 15.646 18.474 15.513 18.474 C 15.347 18.474 15.189 18.433 15.048 18.343 C 14.782 18.178 14.624 17.9 14.624 17.596 L 14.624 10.041 L 10.959 7.957 L 7.294 10.041 L 7.294 17.605 C 7.294 17.908 7.136 18.196 6.87 18.351 C 6.728 18.441 6.562 18.483 6.405 18.483 C 6.272 18.483 6.13 18.449 6.006 18.392 L 2.307 16.57 C 2.008 16.415 1.817 16.111 1.817 15.776 L 1.817 7.424 C 1.817 7.112 1.983 6.817 2.265 6.661 L 10.519 1.96 C 10.651 1.886 10.801 1.845 10.959 1.845 M 10.959 0.205 C 10.51 0.205 10.069 0.32 9.679 0.541 L 1.426 5.242 C 0.645 5.693 0.155 6.529 0.155 7.424 L 0.155 15.776 C 0.155 16.735 0.695 17.596 1.568 18.031 L 5.266 19.852 C 5.615 20.025 6.014 20.115 6.405 20.115 C 6.878 20.115 7.343 19.984 7.742 19.738 C 8.499 19.278 8.956 18.474 8.956 17.596 L 8.956 10.984 L 10.959 9.844 L 12.962 10.984 L 12.962 17.596 C 12.962 18.474 13.41 19.278 14.175 19.738 C 14.583 19.984 15.039 20.115 15.522 20.115 C 15.912 20.115 16.311 20.025 16.66 19.852 L 20.359 18.031 C 21.231 17.605 21.771 16.735 21.771 15.776 L 21.771 7.424 C 21.771 6.529 21.281 5.693 20.492 5.242 L 12.239 0.541 C 11.848 0.32 11.408 0.205 10.959 0.205 Z\",\n fill: \"currentColor\",\n transform: \"matrix(0.999999, 0.00121, -0.00121, 0.999999, 0.012302, -0.013258)\"\n })));\n};\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgHome, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/home.defd14bf.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nvar _excluded = [\"svgRef\", \"title\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport React from \"react\";\nvar SvgInfoTooltip = function SvgInfoTooltip(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 12,\n height: 12,\n viewBox: \"0 0 12 12\",\n fill: \"currentColor\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M2.66658 10.9888C3.65328 11.6481 4.81331 12 6 12C7.5913 12 9.11742 11.3679 10.2426 10.2426C11.3679 9.11742 12 7.5913 12 6C12 4.81331 11.6481 3.65328 10.9888 2.66658C10.3295 1.67989 9.39246 0.910851 8.2961 0.456725C7.19975 0.0025997 5.99335 -0.11622 4.82946 0.115291C3.66557 0.346802 2.59648 0.918247 1.75736 1.75736C0.918247 2.59648 0.346802 3.66557 0.115291 4.82946C-0.11622 5.99335 0.0025997 7.19975 0.456725 8.2961C0.910851 9.39246 1.67989 10.3295 2.66658 10.9888ZM3.14278 1.72387C3.98852 1.15877 4.98284 0.857145 6 0.857145C7.36397 0.857145 8.67208 1.39898 9.63655 2.36345C10.601 3.32793 11.1429 4.63603 11.1429 6C11.1429 7.01716 10.8412 8.01148 10.2761 8.85722C9.71103 9.70296 8.90782 10.3621 7.96809 10.7514C7.02835 11.1406 5.9943 11.2425 4.99668 11.044C3.99906 10.8456 3.08269 10.3558 2.36345 9.63655C1.64421 8.91731 1.1544 8.00094 0.955964 7.00332C0.757526 6.00571 0.859372 4.97165 1.24862 4.03192C1.63787 3.09218 2.29705 2.28898 3.14278 1.72387ZM6 2.57143C5.87285 2.57143 5.74857 2.60913 5.64285 2.67977C5.53713 2.75041 5.45473 2.85081 5.40608 2.96827C5.35742 3.08574 5.34469 3.215 5.36949 3.3397C5.3943 3.4644 5.45553 3.57895 5.54543 3.66885C5.63534 3.75876 5.74988 3.81999 5.87458 3.84479C5.99929 3.8696 6.12854 3.85686 6.24601 3.80821C6.36348 3.75955 6.46388 3.67715 6.53452 3.57144C6.60515 3.46572 6.64286 3.34143 6.64286 3.21429C6.64286 3.04379 6.57513 2.88028 6.45457 2.75972C6.33401 2.63916 6.1705 2.57143 6 2.57143ZM6.42857 8.57143V5.14286H4.71428V6H5.57143V8.57143H4.28571V9.42857H7.71428V8.57143H6.42857Z\",\n fill: \"currentColor\"\n })));\n};\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgInfoTooltip, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/info-tooltip.b98e8a9c.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nvar _excluded = [\"svgRef\", \"title\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport React from \"react\";\nvar SvgLogout = function SvgLogout(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M13.5 22.5H4.5C4.10232 22.4995 3.72105 22.3414 3.43984 22.0602C3.15864 21.7789 3.00046 21.3977 3 21V3C3.00046 2.60232 3.15864 2.22105 3.43984 1.93984C3.72105 1.65864 4.10232 1.50046 4.5 1.5H13.5C13.8977 1.50046 14.279 1.65864 14.5602 1.93984C14.8414 2.22105 14.9995 2.60232 15 3V5.25H13.5V3H4.5V21H13.5V18.75H15V21C14.9995 21.3977 14.8414 21.7789 14.5602 22.0602C14.279 22.3414 13.8977 22.4995 13.5 22.5ZM18.129 12.75L15.4395 15.4395L16.5 16.5L21 12L16.5 7.5L15.4395 8.5605L18.129 11.25H8.25C7.83579 11.25 7.5 11.5858 7.5 12C7.5 12.4142 7.83579 12.75 8.25 12.75H18.129Z\",\n fill: \"#AAABB5\"\n })));\n};\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgLogout, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/logout.07b9ef7f.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nvar _excluded = [\"svgRef\", \"title\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport React from \"react\";\nvar SvgClose = function SvgClose(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 16,\n height: 16,\n viewBox: \"0 0 16 16\",\n fill: \"none\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M13.475 3.575C13.7649 3.28505 13.7649 2.81495 13.475 2.525C13.1851 2.23505 12.715 2.23505 12.425 2.525L8.70711 6.24289C8.31658 6.63342 7.68342 6.63342 7.29289 6.24289L3.575 2.525C3.28505 2.23505 2.81495 2.23505 2.525 2.525C2.23505 2.81495 2.23505 3.28505 2.525 3.575L6.24289 7.29289C6.63342 7.68342 6.63342 8.31658 6.24289 8.70711L2.525 12.425C2.23505 12.7149 2.23505 13.1851 2.525 13.475C2.81495 13.7649 3.28505 13.7649 3.575 13.475L7.29289 9.75711C7.68342 9.36658 8.31658 9.36658 8.70711 9.75711L12.425 13.475C12.7149 13.7649 13.1851 13.7649 13.475 13.475C13.7649 13.1851 13.7649 12.715 13.475 12.425L9.75711 8.70711C9.36658 8.31658 9.36658 7.68342 9.75711 7.29289L13.475 3.575Z\",\n fill: \"currentColor\"\n })));\n};\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgClose, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/close.07dcb75c.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nvar _excluded = [\"svgRef\", \"title\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport React from \"react\";\nvar SvgPoweredByNyris = function SvgPoweredByNyris(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 80,\n height: 10,\n viewBox: \"0 0 80 10\",\n fill: \"none\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M53.4951 2.32957V7.28957H54.9651V3.93957C55.1251 3.78624 55.2718 3.66957 55.4051 3.58957C55.5384 3.5029 55.6984 3.45957 55.8851 3.45957C56.0984 3.45957 56.2518 3.52624 56.3451 3.65957C56.4451 3.7929 56.4951 4.03957 56.4951 4.39957V7.28957H57.9651V4.20957C57.9651 3.58957 57.8451 3.1029 57.6051 2.74957C57.3651 2.38957 56.9718 2.20957 56.4251 2.20957C56.0918 2.20957 55.7951 2.2829 55.5351 2.42957C55.2751 2.57624 55.0418 2.7529 54.8351 2.95957H54.7951L54.6951 2.32957H53.4951ZM59.3778 9.19957C59.4911 9.21957 59.6211 9.22957 59.7677 9.22957C60.1611 9.22957 60.4877 9.15624 60.7477 9.00957C61.0144 8.86957 61.2378 8.65957 61.4177 8.37957C61.6044 8.09957 61.7777 7.7529 61.9377 7.33957L63.6577 2.32957H62.2477L61.6478 4.45957C61.5877 4.6929 61.5277 4.92957 61.4678 5.16957L61.3078 5.86957H61.2677C61.2011 5.6229 61.1377 5.3829 61.0777 5.14957C61.0177 4.91624 60.9511 4.68624 60.8778 4.45957L60.1677 2.32957H58.6877L60.5977 7.15957L60.5277 7.41957C60.4678 7.60624 60.3677 7.75957 60.2277 7.87957C60.0944 8.00624 59.9044 8.06957 59.6577 8.06957C59.6111 8.06957 59.5611 8.06624 59.5077 8.05957C59.4611 8.05957 59.4011 8.04957 59.3277 8.02957L59.0677 9.10957C59.1677 9.14957 59.2711 9.17957 59.3778 9.19957ZM64.4326 2.32957V7.28957H65.9026V4.40957C66.0359 4.06957 66.2026 3.8329 66.4026 3.69957C66.6093 3.56624 66.8059 3.49957 66.9926 3.49957C67.0993 3.49957 67.1893 3.50624 67.2626 3.51957C67.3359 3.52624 67.4126 3.53957 67.4926 3.55957L67.7726 2.30957C67.7059 2.27624 67.6259 2.2529 67.5326 2.23957C67.4393 2.21957 67.3226 2.20957 67.1826 2.20957C66.9226 2.20957 66.6659 2.2929 66.4126 2.45957C66.1659 2.61957 65.9526 2.86624 65.7726 3.19957H65.7326L65.6326 2.32957H64.4326ZM68.417 2.32957V7.28957H69.887V2.32957H68.417ZM68.547 1.38957C68.7003 1.52957 68.9003 1.59957 69.147 1.59957C69.3936 1.59957 69.5936 1.52957 69.747 1.38957C69.9003 1.24957 69.977 1.0629 69.977 0.829571C69.977 0.596237 69.9003 0.40957 69.747 0.269571C69.5936 0.12957 69.3936 0.0595703 69.147 0.0595703C68.9003 0.0595703 68.7003 0.12957 68.547 0.269571C68.3936 0.40957 68.317 0.596237 68.317 0.829571C68.317 1.0629 68.3936 1.24957 68.547 1.38957ZM71.6306 7.21957C71.9773 7.34624 72.314 7.40957 72.6406 7.40957C73.0873 7.40957 73.4606 7.33957 73.7606 7.19957C74.0606 7.0529 74.2873 6.85957 74.4406 6.61957C74.6006 6.37957 74.6806 6.10957 74.6806 5.80957C74.6806 5.53624 74.6206 5.3029 74.5006 5.10957C74.3806 4.91624 74.214 4.75624 74.0006 4.62957C73.794 4.49624 73.564 4.38624 73.3106 4.29957C73.104 4.2329 72.9306 4.1729 72.7906 4.11957C72.6573 4.05957 72.5573 3.99624 72.4906 3.92957C72.424 3.8629 72.3906 3.7829 72.3906 3.68957C72.3906 3.57624 72.4373 3.4829 72.5306 3.40957C72.624 3.33624 72.7673 3.29957 72.9606 3.29957C73.134 3.29957 73.3106 3.32957 73.4906 3.38957C73.6706 3.4429 73.8506 3.5329 74.0306 3.65957L74.6606 2.83957C74.4473 2.6529 74.1906 2.5029 73.8906 2.38957C73.5973 2.26957 73.2706 2.20957 72.9106 2.20957C72.344 2.20957 71.884 2.3529 71.5306 2.63957C71.184 2.91957 71.0106 3.2929 71.0106 3.75957C71.0106 4.01957 71.0706 4.2429 71.1906 4.42957C71.3173 4.61624 71.4806 4.77624 71.6806 4.90957C71.8806 5.0429 72.1006 5.1529 72.3406 5.23957C72.5206 5.30624 72.6806 5.36957 72.8206 5.42957C72.9673 5.4829 73.084 5.54624 73.1706 5.61957C73.264 5.6929 73.3106 5.78624 73.3106 5.89957C73.3106 6.02624 73.2606 6.12957 73.1606 6.20957C73.0606 6.2829 72.9006 6.31957 72.6806 6.31957C72.474 6.31957 72.2573 6.28624 72.0306 6.21957C71.8106 6.14624 71.5873 6.01957 71.3606 5.83957L70.7406 6.66957C70.9873 6.90957 71.284 7.0929 71.6306 7.21957ZM76.2742 3.91957C76.5742 4.0929 76.9076 4.17957 77.2742 4.17957C77.6342 4.17957 77.9642 4.0929 78.2642 3.91957C78.5709 3.74624 78.8109 3.50957 78.9842 3.20957C79.1642 2.9029 79.2542 2.5529 79.2542 2.15957C79.2542 1.76624 79.1642 1.41957 78.9842 1.11957C78.8109 0.812904 78.5709 0.572904 78.2642 0.399571C77.9642 0.226237 77.6342 0.13957 77.2742 0.13957C76.9076 0.13957 76.5742 0.226237 76.2742 0.399571C75.9742 0.572904 75.7342 0.812904 75.5542 1.11957C75.3742 1.41957 75.2842 1.76624 75.2842 2.15957C75.2842 2.5529 75.3742 2.9029 75.5542 3.20957C75.7342 3.50957 75.9742 3.74624 76.2742 3.91957ZM78.0142 3.49957C77.8009 3.62624 77.5542 3.68957 77.2742 3.68957C76.9942 3.68957 76.7442 3.62624 76.5242 3.49957C76.3109 3.3729 76.1409 3.19624 76.0142 2.96957C75.8942 2.73624 75.8342 2.46624 75.8342 2.15957C75.8342 1.8529 75.8942 1.58624 76.0142 1.35957C76.1409 1.12624 76.3109 0.946237 76.5242 0.819571C76.7442 0.692904 76.9942 0.629571 77.2742 0.629571C77.5542 0.629571 77.8009 0.692904 78.0142 0.819571C78.2276 0.946237 78.3942 1.12624 78.5142 1.35957C78.6409 1.58624 78.7042 1.8529 78.7042 2.15957C78.7042 2.46624 78.6409 2.73624 78.5142 2.96957C78.3942 3.19624 78.2276 3.3729 78.0142 3.49957ZM76.4642 1.15957V3.12957H77.0342V2.52957H77.3242L77.6242 3.12957H78.2242L77.8142 2.35957C77.9342 2.30624 78.0209 2.22957 78.0742 2.12957C78.1342 2.02957 78.1642 1.92624 78.1642 1.81957C78.1642 1.5929 78.0876 1.42624 77.9342 1.31957C77.7809 1.2129 77.5876 1.15957 77.3542 1.15957H76.4642ZM77.2442 2.12957H77.0342V1.58957H77.2442C77.3442 1.58957 77.4176 1.61624 77.4642 1.66957C77.5176 1.71624 77.5442 1.77624 77.5442 1.84957C77.5442 1.92957 77.5176 1.99624 77.4642 2.04957C77.4176 2.1029 77.3442 2.12957 77.2442 2.12957ZM0.745093 0.729571V7.28957H1.57509V4.68957H2.65509C3.13509 4.68957 3.55509 4.61624 3.91509 4.46957C4.28176 4.31624 4.56509 4.0929 4.76509 3.79957C4.97176 3.49957 5.07509 3.11957 5.07509 2.65957C5.07509 2.17957 4.97176 1.79957 4.76509 1.51957C4.55843 1.23957 4.27176 1.03957 3.90509 0.919571C3.53843 0.792904 3.10843 0.729571 2.61509 0.729571H0.745093ZM2.55509 4.00957H1.57509V1.39957H2.51509C3.08843 1.39957 3.51843 1.4929 3.80509 1.67957C4.09843 1.85957 4.24509 2.18624 4.24509 2.65957C4.24509 3.11957 4.10509 3.45957 3.82509 3.67957C3.55176 3.89957 3.12843 4.00957 2.55509 4.00957ZM6.86501 7.10957C7.21168 7.30957 7.58168 7.40957 7.97501 7.40957C8.37501 7.40957 8.74502 7.30957 9.08502 7.10957C9.42501 6.90957 9.69835 6.61957 9.90501 6.23957C10.1183 5.85957 10.225 5.4029 10.225 4.86957C10.225 4.3229 10.1183 3.85957 9.90501 3.47957C9.69835 3.09957 9.42501 2.80957 9.08502 2.60957C8.74502 2.40957 8.37501 2.30957 7.97501 2.30957C7.58168 2.30957 7.21168 2.40957 6.86501 2.60957C6.52501 2.80957 6.24835 3.09957 6.03501 3.47957C5.82835 3.85957 5.72501 4.3229 5.72501 4.86957C5.72501 5.4029 5.82835 5.85957 6.03501 6.23957C6.24835 6.61957 6.52501 6.90957 6.86501 7.10957ZM8.71501 6.49957C8.50168 6.6529 8.25501 6.72957 7.97501 6.72957C7.69501 6.72957 7.44835 6.6529 7.23501 6.49957C7.02835 6.33957 6.86501 6.11957 6.74501 5.83957C6.63168 5.55957 6.57501 5.23624 6.57501 4.86957C6.57501 4.49624 6.63168 4.16957 6.74501 3.88957C6.86501 3.6029 7.02835 3.3829 7.23501 3.22957C7.44835 3.06957 7.69501 2.98957 7.97501 2.98957C8.25501 2.98957 8.50168 3.06957 8.71501 3.22957C8.92835 3.3829 9.09168 3.6029 9.20502 3.88957C9.31835 4.16957 9.37502 4.49624 9.37502 4.86957C9.37502 5.23624 9.31835 5.55957 9.20502 5.83957C9.09168 6.11957 8.92835 6.33957 8.71501 6.49957ZM10.8859 2.42957L12.2359 7.28957H13.2559L13.9059 4.68957C13.9659 4.46957 14.0192 4.24624 14.0659 4.01957C14.1192 3.7929 14.1692 3.53624 14.2159 3.24957H14.2559C14.3092 3.53624 14.3592 3.7929 14.4059 4.01957C14.4592 4.23957 14.5125 4.4629 14.5659 4.68957L15.2159 7.28957H16.2859L17.5959 2.42957H16.7959L16.0859 5.23957L15.9459 5.89957C15.8992 6.11957 15.8492 6.35957 15.7959 6.61957H15.7559C15.7025 6.35957 15.6492 6.11957 15.5959 5.89957C15.5492 5.67957 15.4959 5.45957 15.4359 5.23957L14.7059 2.42957H13.8059L13.0859 5.23957L12.9259 5.89957C12.8792 6.11957 12.8292 6.35957 12.7759 6.61957H12.7359C12.6959 6.35957 12.6525 6.11957 12.6059 5.89957C12.5592 5.67957 12.5092 5.45957 12.4559 5.23957L11.7459 2.42957H10.8859ZM19.3943 7.10957C19.7543 7.30957 20.151 7.40957 20.5843 7.40957C20.9176 7.40957 21.2143 7.3629 21.4743 7.26957C21.741 7.17624 21.981 7.05624 22.1943 6.90957L21.8943 6.36957C21.7276 6.4829 21.541 6.5729 21.3343 6.63957C21.1343 6.70624 20.9176 6.73957 20.6843 6.73957C20.391 6.73957 20.121 6.66957 19.8743 6.52957C19.6276 6.3829 19.431 6.16957 19.2843 5.88957C19.1711 5.66316 19.1037 5.39316 19.082 5.07957H22.3343C22.3543 4.99957 22.3643 4.91957 22.3643 4.83957C22.371 4.75957 22.3743 4.67624 22.3743 4.58957C22.3743 4.12957 22.301 3.72957 22.1543 3.38957C22.0076 3.04957 21.7876 2.78624 21.4943 2.59957C21.2076 2.40624 20.8576 2.30957 20.4443 2.30957C20.071 2.30957 19.7176 2.4129 19.3843 2.61957C19.051 2.82624 18.7776 3.11957 18.5643 3.49957C18.351 3.87957 18.2443 4.3329 18.2443 4.85957C18.2443 5.39957 18.3476 5.85957 18.5543 6.23957C18.761 6.6129 19.041 6.9029 19.3943 7.10957ZM21.6343 4.42957H19.0962C19.1257 4.1659 19.185 3.94256 19.2743 3.75957C19.4143 3.48624 19.591 3.28957 19.8043 3.16957C20.0176 3.0429 20.2343 2.97957 20.4543 2.97957C20.8343 2.97957 21.1243 3.10624 21.3243 3.35957C21.531 3.60624 21.6343 3.9629 21.6343 4.42957ZM23.5752 2.42957V7.28957H24.3952V4.16957C24.5619 3.75624 24.7552 3.46624 24.9752 3.29957C25.2019 3.1329 25.4186 3.04957 25.6252 3.04957C25.7252 3.04957 25.8052 3.05624 25.8652 3.06957C25.9319 3.07624 26.0019 3.08957 26.0752 3.10957L26.2552 2.40957C26.1752 2.36957 26.0952 2.3429 26.0152 2.32957C25.9352 2.31624 25.8419 2.30957 25.7352 2.30957C25.4552 2.30957 25.1952 2.39957 24.9552 2.57957C24.7153 2.75957 24.5152 3.0029 24.3552 3.30957H24.3252L24.2552 2.42957H23.5752ZM27.7244 7.10957C28.0844 7.30957 28.4811 7.40957 28.9144 7.40957C29.2477 7.40957 29.5444 7.3629 29.8044 7.26957C30.0711 7.17624 30.3111 7.05624 30.5244 6.90957L30.2244 6.36957C30.0577 6.4829 29.8711 6.5729 29.6644 6.63957C29.4644 6.70624 29.2477 6.73957 29.0144 6.73957C28.7211 6.73957 28.4511 6.66957 28.2044 6.52957C27.9577 6.3829 27.7611 6.16957 27.6144 5.88957C27.5012 5.66316 27.4337 5.39316 27.4121 5.07957H30.6644C30.6844 4.99957 30.6944 4.91957 30.6944 4.83957C30.7011 4.75957 30.7044 4.67624 30.7044 4.58957C30.7044 4.12957 30.6311 3.72957 30.4844 3.38957C30.3377 3.04957 30.1177 2.78624 29.8244 2.59957C29.5377 2.40624 29.1877 2.30957 28.7744 2.30957C28.4011 2.30957 28.0477 2.4129 27.7144 2.61957C27.3811 2.82624 27.1077 3.11957 26.8944 3.49957C26.6811 3.87957 26.5744 4.3329 26.5744 4.85957C26.5744 5.39957 26.6777 5.85957 26.8844 6.23957C27.0911 6.6129 27.3711 6.9029 27.7244 7.10957ZM29.9644 4.42957H27.4262C27.4557 4.1659 27.5151 3.94256 27.6044 3.75957C27.7444 3.48624 27.9211 3.28957 28.1344 3.16957C28.3477 3.0429 28.5644 2.97957 28.7844 2.97957C29.1644 2.97957 29.4544 3.10624 29.6544 3.35957C29.8611 3.60624 29.9644 3.9629 29.9644 4.42957ZM32.0953 6.74957C32.462 7.18957 32.952 7.40957 33.5653 7.40957C33.852 7.40957 34.122 7.3429 34.3753 7.20957C34.6287 7.06957 34.8487 6.90624 35.0353 6.71957H35.0653L35.1353 7.28957H35.8153V0.169571H34.9853V2.03957L35.0253 2.86957C34.812 2.68957 34.602 2.5529 34.3953 2.45957C34.1953 2.35957 33.952 2.30957 33.6653 2.30957C33.292 2.30957 32.9453 2.4129 32.6253 2.61957C32.3053 2.82624 32.0453 3.1229 31.8453 3.50957C31.652 3.88957 31.5553 4.3429 31.5553 4.86957C31.5553 5.67624 31.7353 6.3029 32.0953 6.74957ZM34.3853 6.54957C34.1853 6.6629 33.972 6.71957 33.7453 6.71957C33.3187 6.71957 32.9887 6.55624 32.7553 6.22957C32.522 5.89624 32.4053 5.43957 32.4053 4.85957C32.4053 4.48624 32.4687 4.1629 32.5953 3.88957C32.722 3.60957 32.8887 3.3929 33.0953 3.23957C33.3087 3.07957 33.5453 2.99957 33.8053 2.99957C34.0053 2.99957 34.202 3.03957 34.3953 3.11957C34.5887 3.1929 34.7853 3.3229 34.9853 3.50957V6.04957C34.7853 6.26957 34.5853 6.43624 34.3853 6.54957ZM40.9042 7.24957C41.1442 7.35624 41.3775 7.40957 41.6042 7.40957C41.9708 7.40957 42.3142 7.30624 42.6342 7.09957C42.9542 6.8929 43.2108 6.5929 43.4042 6.19957C43.6042 5.80624 43.7042 5.3329 43.7042 4.77957C43.7042 4.27957 43.6308 3.84624 43.4842 3.47957C43.3375 3.10624 43.1208 2.81957 42.8342 2.61957C42.5475 2.4129 42.1942 2.30957 41.7742 2.30957C41.5075 2.30957 41.2408 2.37624 40.9742 2.50957C40.7142 2.63624 40.4742 2.79624 40.2542 2.98957L40.2742 2.10957V0.169571H39.4542V7.28957H40.1142L40.1842 6.78957H40.2142C40.4342 6.9829 40.6642 7.13624 40.9042 7.24957ZM42.1742 6.48957C41.9675 6.6429 41.7308 6.71957 41.4642 6.71957C41.3042 6.71957 41.1175 6.6829 40.9042 6.60957C40.6975 6.52957 40.4875 6.39624 40.2742 6.20957V3.65957C40.5075 3.43957 40.7308 3.27624 40.9442 3.16957C41.1642 3.05624 41.3742 2.99957 41.5742 2.99957C41.8808 2.99957 42.1275 3.07624 42.3142 3.22957C42.5008 3.37624 42.6375 3.58624 42.7242 3.85957C42.8108 4.12624 42.8542 4.43624 42.8542 4.78957C42.8542 5.18957 42.7942 5.53624 42.6742 5.82957C42.5542 6.11624 42.3875 6.33624 42.1742 6.48957ZM44.7124 9.34957C44.8124 9.36957 44.9158 9.37957 45.0224 9.37957C45.3491 9.37957 45.6258 9.30624 45.8524 9.15957C46.0791 9.0129 46.2724 8.80957 46.4324 8.54957C46.5924 8.29624 46.7291 8.00957 46.8424 7.68957L48.6724 2.42957H47.8724L47.0024 5.11957C46.9424 5.3329 46.8758 5.55957 46.8024 5.79957C46.7358 6.0329 46.6658 6.2629 46.5924 6.48957H46.5524C46.4791 6.2629 46.4024 6.02957 46.3224 5.78957C46.2424 5.54957 46.1624 5.32624 46.0824 5.11957L45.0924 2.42957H44.2424L46.1924 7.29957L46.0824 7.65957C45.9824 7.95957 45.8424 8.20624 45.6624 8.39957C45.4891 8.59957 45.2624 8.69957 44.9824 8.69957C44.9291 8.69957 44.8724 8.6929 44.8124 8.67957C44.7524 8.6729 44.6924 8.65957 44.6324 8.63957L44.4524 9.27957C44.5324 9.30624 44.6191 9.32957 44.7124 9.34957Z\",\n fill: \"currentColor\"\n })));\n};\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgPoweredByNyris, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/powered_by_nyris.e6766baf.svg\";\nexport { ForwardRef as ReactComponent };","import React from 'react';\nimport Modal from '@material-ui/core/Modal';\n\ninterface Props {\n children: JSX.Element;\n openModal: boolean;\n handleClose: (e: any) => void;\n classNameModal?: string;\n classNameComponentChild?: string;\n rounded?: boolean;\n}\n\nfunction DefaultModal(props: Props): JSX.Element {\n const {\n children,\n openModal = false,\n handleClose,\n classNameModal,\n classNameComponentChild,\n rounded = true,\n } = props;\n\n return (\n <Modal\n open={openModal}\n onClose={handleClose}\n className={`modal-container ${classNameModal || ''}`}\n style={{\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n }}\n // BackdropProps={{\n // style: {\n // backgroundColor: '#2B2C46',\n // opacity: 0.85,\n // },\n // }}\n >\n <div\n className={classNameComponentChild}\n style={{\n overflowY: 'auto',\n maxHeight: '95vh',\n borderRadius: rounded ? 8 : 0,\n }}\n >\n {children}\n </div>\n </Modal>\n );\n}\n\nexport default DefaultModal;\n","import { Box, Button } from '@material-ui/core';\nimport React, { useState } from 'react';\nimport { ReactComponent as IconCameraMobile } from 'common/assets/icons/icon_camera_mobile.svg';\nimport CameraCustom from './drawer/cameraCustom';\nimport { ReactComponent as Home } from 'common/assets/icons/home.svg';\nimport { NavLink, useHistory } from 'react-router-dom';\nimport { useAppDispatch, useAppSelector } from 'Store/Store';\nimport { ReactComponent as IconInfo } from 'common/assets/icons/info-tooltip.svg';\nimport { ReactComponent as IconLogout } from 'common/assets/icons/logout.svg';\nimport { ReactComponent as CloseIcon } from 'common/assets/icons/close.svg';\nimport { ReactComponent as PoweredByNyrisImage } from 'common/assets/images/powered_by_nyris.svg';\n\nimport {\n reset,\n setImageCaptureHelpModal,\n setPreFilter,\n} from 'Store/search/Search';\nimport { useAuth0 } from '@auth0/auth0-react';\nimport DefaultModal from './modal/DefaultModal';\n\ninterface Props {\n onLoadingMobile?: any;\n}\n\nfunction FooterMobile(props: Props): JSX.Element {\n const [isOpenModalCamera, setOpenModalCamera] = useState<boolean>(false);\n const history = useHistory();\n const {\n search: { imageCaptureHelpModal },\n } = useAppSelector(state => state);\n const dispatch = useAppDispatch();\n\n const { settings } = useAppSelector(state => state);\n const { user, isAuthenticated, logout } = useAuth0();\n const auth0 = settings.auth0;\n\n const [showLogoutModal, setShowLogoutModal] = useState(false);\n\n return (\n <>\n <DefaultModal\n openModal={showLogoutModal}\n handleClose={() => {\n setShowLogoutModal(false);\n }}\n >\n <div\n style={{\n backgroundColor: 'white',\n width: '360px',\n padding: '24px',\n }}\n >\n <div\n style={{\n display: 'flex',\n justifyContent: 'flex-end',\n }}\n onClick={() => setShowLogoutModal(false)}\n >\n <CloseIcon\n width={'16px'}\n height={'16px'}\n fontSize={'16px'}\n color=\"black\"\n />\n </div>\n <p style={{ fontSize: '36px', fontWeight: 'bold', color: '#2B2C46' }}>\n Logout\n </p>\n <p style={{ fontSize: '13px', color: '#2B2C46', paddingTop: '16px' }}>\n Are you sure you want to log out? Your session will be securely\n closed.\n </p>\n <p style={{ fontSize: '13px', color: '#2B2C46', paddingTop: '16px' }}>\n Email\n </p>\n <div\n style={{\n backgroundColor: '#FAFAFA',\n height: '32px',\n paddingLeft: '16px',\n paddingRight: '16px',\n marginTop: '8px',\n }}\n >\n {user?.email}\n </div>\n <div style={{ display: 'flex', width: '100%', marginTop: '16px' }}>\n <div\n style={{\n width: '50%',\n backgroundColor: '#2B2C46',\n color: 'white',\n padding: '16px',\n }}\n onClick={() => {\n logout({\n logoutParams: { returnTo: window.location.origin },\n });\n }}\n >\n Confirm log out\n </div>\n </div>\n </div>\n </DefaultModal>\n {history.location?.pathname === '/' && settings.showPoweredByNyris && (\n <div\n style={{\n backgroundColor: '#fff',\n display: 'flex',\n justifyContent: 'center',\n padding: '16px 0px 16px 0px',\n }}\n >\n <PoweredByNyrisImage\n style={{ cursor: 'pointer' }}\n onClick={() => {\n window.open('https://www.nyris.io', '_blank');\n }}\n color=\"#AAABB5\"\n />\n </div>\n )}\n <Box\n className=\"box-footer-mobile\"\n display={'flex'}\n position={'relative'}\n alignItems={'center'}\n height={'100%'}\n justifyContent={'space-between'}\n style={{ paddingLeft: '16px', paddingRight: '16px', height: '64px' }}\n >\n <NavLink\n style={{\n width: '48px',\n height: '48px',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n borderRadius: '100%',\n backgroundColor:\n history.location.pathname === '/' && !imageCaptureHelpModal\n ? `#E0E0E0`\n : '',\n }}\n activeClassName=\"active\"\n to={'/'}\n className=\"nav-link p-0 menu-children rounded-0\"\n onClick={() => {\n dispatch(reset(''));\n dispatch(setPreFilter({}));\n dispatch(setImageCaptureHelpModal(false));\n }}\n >\n <Home\n color={\n history.location.pathname === '/' && !imageCaptureHelpModal\n ? '#2B2C46'\n : '#AAABB5'\n }\n />\n </NavLink>\n {history.location?.pathname !== '/' && !imageCaptureHelpModal && (\n <Box className=\"box-icon-camera-mobile\">\n <Button\n onClick={() => {\n setOpenModalCamera(!isOpenModalCamera);\n }}\n >\n <IconCameraMobile color=\"#55566B\" />\n </Button>\n </Box>\n )}\n <div style={{ display: 'flex', gap: '24px' }}>\n {history.location?.pathname !== '/' && (\n <div\n style={{\n width: '48px',\n height: '48px',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n borderRadius: '100%',\n backgroundColor: imageCaptureHelpModal ? `#E0E0E0` : '',\n }}\n onClick={() => {\n dispatch(setImageCaptureHelpModal(!imageCaptureHelpModal));\n }}\n >\n <IconInfo\n fontSize={24}\n width={24}\n height={24}\n color={imageCaptureHelpModal ? '#2B2C46' : '#AAABB5'}\n />\n </div>\n )}\n {auth0.enabled && isAuthenticated && (\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n }}\n onClick={() => {\n setShowLogoutModal(true);\n }}\n >\n <IconLogout fontSize={24} width={24} height={24} />\n </div>\n )}\n </div>\n </Box>\n <Box className=\"box-screenshot-camera\">\n <CameraCustom\n isToggle={isOpenModalCamera}\n onToggleModal={() => {\n setOpenModalCamera(!isOpenModalCamera);\n }}\n />\n </Box>\n </>\n );\n}\n\nexport default FooterMobile;\n","var _path;\nvar _excluded = [\"svgRef\", \"title\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport React from \"react\";\nvar SvgFilterSettings = function SvgFilterSettings(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 16,\n height: 16,\n viewBox: \"0 0 16 16\",\n fill: \"currentColor\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M15 4H12.95C12.7 2.85 11.7 2 10.5 2C9.3 2 8.3 2.85 8.05 4H1V5H8.05C8.3 6.15 9.3 7 10.5 7C11.7 7 12.7 6.15 12.95 5H15V4ZM10.5 6C9.65 6 9 5.35 9 4.5C9 3.65 9.65 3 10.5 3C11.35 3 12 3.65 12 4.5C12 5.35 11.35 6 10.5 6ZM1 12H3.05C3.3 13.15 4.3 14 5.5 14C6.7 14 7.7 13.15 7.95 12H15V11H7.95C7.7 9.85 6.7 9 5.5 9C4.3 9 3.3 9.85 3.05 11H1V12ZM5.5 10C6.35 10 7 10.65 7 11.5C7 12.35 6.35 13 5.5 13C4.65 13 4 12.35 4 11.5C4 10.65 4.65 10 5.5 10Z\",\n fill: \"currentColor\"\n })));\n};\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgFilterSettings, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/filter_settings.fa0682a5.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nvar _excluded = [\"svgRef\", \"title\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport React from \"react\";\nvar SvgIconSearch = function SvgIconSearch(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M23.3723 22.117C23.719 22.4637 23.719 23.0257 23.3723 23.3723C23.0257 23.719 22.4637 23.719 22.117 23.3723L16.8475 18.1028C16.3904 17.6457 15.6641 17.6208 15.123 17.9745C11.1608 20.5639 5.82363 19.9525 2.55769 16.3754C-0.967972 12.5138 -0.832726 6.56215 2.86471 2.86471C6.56215 -0.832726 12.5138 -0.967972 16.3754 2.55769C19.9525 5.82363 20.5639 11.1608 17.9745 15.123C17.6208 15.6641 17.6457 16.3904 18.1028 16.8475L23.3723 22.117ZM9.79677 1.80687C5.38428 1.80687 1.80725 5.3839 1.80725 9.79639C1.81214 14.2069 5.38631 17.781 9.79677 17.7859C14.2093 17.7859 17.7863 14.2089 17.7863 9.79639C17.7863 5.3839 14.2093 1.80687 9.79677 1.80687Z\",\n fill: \"#000\"\n })));\n};\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgIconSearch, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/icon_search.373c3cc4.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nvar _excluded = [\"svgRef\", \"title\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport React from \"react\";\nvar SvgFilter = function SvgFilter(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 16,\n height: 16,\n viewBox: \"0 0 16 16\",\n fill: \"currentColor\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M9.33333 16H6.66667C6.31305 16 5.97391 15.8595 5.72386 15.6095C5.47381 15.3594 5.33333 15.0203 5.33333 14.6667V9.60667L0.393333 4.66667C0.142942 4.41777 0.00148853 4.07972 0 3.72667V1.33333C0 0.979711 0.140476 0.640573 0.390524 0.390524C0.640573 0.140476 0.979711 0 1.33333 0H14.6667C15.0203 0 15.3594 0.140476 15.6095 0.390524C15.8595 0.640573 16 0.979711 16 1.33333V3.72667C15.9985 4.07972 15.8571 4.41777 15.6067 4.66667L10.6667 9.60667V14.6667C10.6667 15.0203 10.5262 15.3594 10.2761 15.6095C10.0261 15.8595 9.68696 16 9.33333 16ZM1.33333 1.33333V3.72667L6.66667 9.06V14.6667H9.33333V9.06L14.6667 3.72667V1.33333H1.33333Z\",\n fill: \"currentColor\"\n })));\n};\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgFilter, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/filter.bc412f08.svg\";\nexport { ForwardRef as ReactComponent };","import { useMemo } from \"react\";\nimport { useLocation } from \"react-router-dom\";\n\nexport const useQuery = () => {\n const { search } = useLocation();\n return useMemo(() => new URLSearchParams(search), [search]);\n}","import { Box, Button } from '@material-ui/core';\nimport CloseIcon from '@material-ui/icons/Close';\nimport { ReactComponent as IconFilter } from 'common/assets/icons/filter_settings.svg';\n\nimport React, {\n memo,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { connectSearchBox, connectStateResults } from 'react-instantsearch-dom';\nimport { NavLink, useHistory } from 'react-router-dom';\nimport {\n reset,\n updateValueTextSearchMobile,\n setPreFilterDropdown,\n setPreFilter,\n updateQueryText,\n updateStatusLoading,\n setSearchResults,\n} from 'Store/search/Search';\nimport { useAppDispatch, useAppSelector } from 'Store/Store';\nimport { AppState } from 'types';\nimport { ReactComponent as IconSearch } from 'common/assets/icons/icon_search.svg';\nimport { ReactComponent as FilterIcon } from 'common/assets/icons/filter.svg';\n\nimport { debounce, isEmpty } from 'lodash';\nimport { useQuery } from 'hooks/useQuery';\nimport { useTranslation } from 'react-i18next';\nimport { find } from 'services/image';\nimport { useAuth0 } from '@auth0/auth0-react';\n\ninterface Props {\n onToggleFilterMobile?: any;\n refine?: any;\n allSearchResults?: any;\n}\n\nfunction HeaderMobileComponent(props: Props): JSX.Element {\n const { user } = useAuth0();\n const { auth0 } = useAppSelector(state => state.settings);\n\n const { onToggleFilterMobile, refine } = props;\n const dispatch = useAppDispatch();\n const stateGlobal = useAppSelector(state => state);\n const { search } = stateGlobal;\n const {\n imageThumbSearchInput,\n textSearchInputMobile,\n preFilter,\n preFilterDropdown,\n valueTextSearch,\n queryText,\n requestImage,\n selectedRegion,\n results,\n postFilter,\n } = search;\n\n const query = useQuery();\n const containerRefInputMobile = useRef<HTMLDivElement>(null);\n const [isShowFilter, setShowFilter] = useState<boolean>(false);\n const history = useHistory();\n const { settings } = useAppSelector<AppState>((state: any) => state);\n const [valueInput, setValueInput] = useState<string>(queryText || '');\n const searchQuery = query.get('query') || '';\n\n useEffect(() => {\n if (\n history.location?.pathname === '/result' &&\n (imageThumbSearchInput || textSearchInputMobile)\n ) {\n setShowFilter(true);\n } else {\n setShowFilter(false);\n }\n }, [imageThumbSearchInput, history.location, textSearchInputMobile]);\n\n useEffect(() => {\n if (imageThumbSearchInput !== '') {\n history.push('/result');\n dispatch(updateValueTextSearchMobile(''));\n if (settings.algolia?.enabled) {\n refine('');\n } else {\n dispatch(updateQueryText(''));\n setValueInput('');\n }\n }\n }, [imageThumbSearchInput, dispatch, refine, history, settings.algolia]);\n\n useEffect(() => {\n if (!isEmpty(searchQuery)) {\n dispatch(updateValueTextSearchMobile(searchQuery));\n if (settings.algolia?.enabled) {\n refine(searchQuery);\n // not an ideal solution: fixes text search not working from landing page\n setTimeout(() => {\n refine(searchQuery);\n }, 100);\n } else {\n dispatch(updateQueryText(searchQuery));\n }\n }\n }, [query, refine, dispatch, searchQuery, settings.algolia]);\n\n const searchOrRedirect = useCallback(\n debounce((value: any) => {\n if (!settings.algolia?.enabled) {\n dispatch(updateQueryText(value));\n let payload: any;\n let filters: any[] = [];\n const preFilterValues = [\n {\n key: settings.visualSearchFilterKey,\n values: Object.keys(preFilter) as string[],\n },\n ];\n\n if (value || requestImage) {\n dispatch(updateStatusLoading(true));\n find({\n image: requestImage?.canvas as HTMLCanvasElement,\n settings,\n filters: !isEmpty(preFilter) ? preFilterValues : undefined,\n region: selectedRegion,\n text: value,\n })\n .then((res: any) => {\n res?.results.map((item: any) => {\n filters.push({\n sku: item.sku,\n score: item.score,\n });\n });\n payload = {\n ...res,\n filters,\n };\n dispatch(setSearchResults(payload));\n dispatch(updateStatusLoading(false));\n })\n .catch((e: any) => {\n console.log('error input search', e);\n dispatch(updateStatusLoading(false));\n });\n } else {\n dispatch(setSearchResults([]));\n }\n }\n\n if (value) {\n history.push({\n pathname: '/result',\n search: `?query=${value}`,\n });\n } else {\n history.push('/result');\n }\n }, 500),\n [requestImage],\n );\n const isPostFilterApplied = useMemo(() => {\n let isApplied = false;\n\n if (settings.algolia.enabled) {\n if (!valueTextSearch?.refinementList) return false;\n Object.keys(valueTextSearch?.refinementList).forEach(key => {\n if (typeof valueTextSearch.refinementList[key] === 'object') {\n isApplied = true;\n return;\n }\n });\n } else {\n Object.keys(postFilter).forEach(key => {\n const filter = postFilter[key];\n Object.keys(filter).forEach(value => {\n if (filter[value]) {\n isApplied = true;\n return;\n }\n });\n });\n }\n\n return isApplied;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [valueTextSearch?.refinementList, settings, postFilter]);\n\n const onChangeText = (event: any) => {\n // debounceSearch(event.currentTarget.value);\n searchOrRedirect(event.currentTarget.value);\n if (event.currentTarget.value === '') {\n dispatch(updateValueTextSearchMobile(''));\n refine('');\n } else {\n dispatch(updateValueTextSearchMobile(event.currentTarget.value));\n }\n };\n const disablePostFilter = useMemo(() => {\n if (settings.algolia.enabled) {\n return settings.postFilterOption &&\n props.allSearchResults?.hits.length > 0\n ? false\n : true;\n } else {\n return settings.postFilterOption && results?.length > 0 ? false : true;\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [settings, results, props.allSearchResults?.hits]);\n\n return (\n <div style={{ width: '100%', background: '#fff' }}>\n {history.location?.pathname !== '/result' && (\n <Box\n className=\"box-content\"\n style={{\n display: 'flex',\n alignItems: 'center',\n height: '48px',\n background: settings.theme?.headerColor,\n }}\n >\n <NavLink\n to=\"/\"\n style={{ lineHeight: 0, paddingLeft: '10px' }}\n onClick={() => {\n dispatch(reset(''));\n dispatch(setPreFilter({}));\n }}\n >\n <img\n src={settings.theme?.appBarLogoUrl}\n alt=\"logo\"\n style={{\n aspectRatio: 1,\n width: settings.theme?.logoWidth,\n height: settings.theme?.logoHeight,\n }}\n />\n </NavLink>\n </Box>\n )}\n\n {((auth0.enabled && user?.email_verified) || !auth0.enabled) && (\n <div\n style={{\n margin: '16px 8px',\n display: 'flex',\n columnGap: '8px',\n alignItems: 'center',\n }}\n >\n <div className=\"wrap-header-mobile\" style={{ height: '56px' }}>\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n height: '100%',\n }}\n >\n <div\n ref={containerRefInputMobile}\n id=\"box-input-search\"\n className=\"d-flex w-100\"\n style={{\n alignItems: 'center',\n height: '100%',\n }}\n >\n <Box\n className=\"pre-filter-icon\"\n onClick={() => {\n if (settings.preFilterOption) {\n onToggleFilterMobile(false);\n dispatch(setPreFilterDropdown(!preFilterDropdown));\n }\n }}\n style={{ cursor: settings.preFilterOption ? 'pointer' : '' }}\n >\n {settings.preFilterOption && (\n <div\n className=\"icon-hover\"\n style={{\n ...(!isEmpty(preFilter)\n ? {\n backgroundColor: `${settings.theme?.primaryColor}`,\n }\n : {\n backgroundColor: `#2B2C46`,\n }),\n }}\n >\n <IconFilter color=\"white\" />\n </div>\n )}\n {!settings.preFilterOption && (\n <IconSearch width={16} height={16} />\n )}\n {!isEmpty(preFilter) && (\n <div\n style={{\n position: 'absolute',\n top: '7px',\n left: '35px',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n background: 'white',\n width: '10px',\n height: '10px',\n borderRadius: '100%',\n }}\n >\n <div\n style={{\n width: '8px',\n height: '8px',\n background: settings.theme?.primaryColor,\n borderRadius: '100%',\n }}\n ></div>\n </div>\n )}\n </Box>\n\n <Input\n value={textSearchInputMobile || searchQuery || valueInput}\n onChange={onChangeText}\n />\n\n {history.location?.pathname !== '/' &&\n textSearchInputMobile && (\n <Button\n onClick={() => {\n if (imageThumbSearchInput) {\n history.push('/result');\n dispatch(updateValueTextSearchMobile(''));\n refine('');\n return;\n }\n dispatch(updateValueTextSearchMobile(''));\n dispatch(reset(''));\n refine('');\n history.push('/');\n }}\n style={{\n // background: '#fff',\n marginRight: '8px',\n border: 0,\n width: '40px',\n height: '40px',\n }}\n >\n <CloseIcon\n style={{\n fontSize: 16,\n color: settings.theme?.secondaryColor,\n }}\n />\n </Button>\n )}\n </div>\n </div>\n </div>\n {isShowFilter && settings.postFilterOption && (\n <div\n style={{\n position: 'relative',\n width: '56px',\n height: '56px',\n padding: ' 8px',\n flexShrink: 0,\n borderRadius: '32px',\n background: '#FAFAFA',\n boxShadow: ' 0px 0px 8px 0px rgba(0, 0, 0, 0.15)',\n }}\n onClick={() => {\n if (disablePostFilter) return;\n onToggleFilterMobile();\n dispatch(setPreFilterDropdown(false));\n }}\n >\n <div\n style={{\n display: 'flex',\n background: `${\n disablePostFilter ? '#F3F3F5' : settings.theme?.primaryColor\n }`,\n borderRadius: '40px',\n width: '40px',\n height: '40px',\n justifyContent: 'center',\n alignItems: 'center',\n }}\n >\n <FilterIcon\n color={`${disablePostFilter ? '#E0E0E0' : 'white'}`}\n />\n </div>\n\n {isPostFilterApplied && !disablePostFilter && (\n <div\n style={{\n position: 'absolute',\n top: '8px',\n left: '37px',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n background: 'white',\n width: '10px',\n height: '10px',\n borderRadius: '100%',\n }}\n >\n <div\n style={{\n width: '8px',\n height: '8px',\n background: settings.theme?.primaryColor,\n borderRadius: '100%',\n }}\n ></div>\n </div>\n )}\n </div>\n )}\n </div>\n )}\n </div>\n );\n}\n\nconst HeaderMobile = connectSearchBox<any>(\n memo(connectStateResults<Props>(HeaderMobileComponent)),\n);\nexport default HeaderMobile;\n\nconst INPUT_ID = 'mobile-input-search';\n\nconst Input = ({ value, onChange }: any) => {\n useEffect(() => {\n const element = document.getElementById(INPUT_ID);\n const inputEventFn = (keyboardEvent: any) => {\n if (keyboardEvent.key === 'Enter') {\n element?.blur();\n }\n };\n\n element?.addEventListener('keyup', inputEventFn, false);\n\n return () => {\n element?.removeEventListener('scroll', inputEventFn, false);\n };\n }, []);\n const { t } = useTranslation();\n\n return (\n <input\n style={{\n border: '0px',\n width: '100%',\n display: 'flex',\n flexGrow: 1,\n fontSize: 14,\n paddingLeft: '12px',\n paddingRight: '4px',\n color: '#2B2C46',\n outline: 'none',\n borderRadius: '32px',\n }}\n className=\"input-search\"\n placeholder={t('Search')}\n value={value}\n onChange={onChange}\n id={INPUT_ID}\n />\n );\n};\n","var _path;\nvar _excluded = [\"svgRef\", \"title\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport React from \"react\";\nvar SvgAvatar = function SvgAvatar(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 16,\n height: 16,\n viewBox: \"0 0 16 16\",\n fill: \"none\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M14.153 13.1029C16.4093 10.3896 16.6189 6.51922 14.6686 3.57859C12.7184 0.63796 9.06952 -0.677581 5.68945 0.34128C2.30938 1.36014 -0.00263212 4.47248 2.24892e-06 8.00018C0.00045013 9.86651 0.658681 11.6731 1.85919 13.1029L1.84775 13.1123C1.86985 13.139 1.89369 13.1635 1.91756 13.188L1.91757 13.1881L1.91758 13.1881C1.93694 13.208 1.95633 13.2279 1.97482 13.249C2.00851 13.2878 2.04377 13.3248 2.07913 13.3618L2.07914 13.3619L2.07918 13.3619C2.09781 13.3814 2.11647 13.401 2.13494 13.4209C2.29507 13.5942 2.45942 13.761 2.63247 13.918C2.66868 13.9509 2.70582 13.9824 2.74301 14.0139L2.74305 14.0139L2.79259 14.0561C2.97558 14.2138 3.16338 14.3631 3.35873 14.5026C3.37125 14.5114 3.38306 14.5212 3.39489 14.5311L3.39492 14.5311C3.40691 14.5411 3.41892 14.5511 3.4317 14.5601V14.5528C6.17596 16.4824 9.83728 16.4824 12.5815 14.5528V14.5599C12.5943 14.5509 12.6063 14.5409 12.6183 14.531C12.6302 14.5211 12.642 14.5113 12.6545 14.5025C12.8496 14.363 13.0377 14.2137 13.2207 14.056L13.2614 14.0214L13.2614 14.0214C13.3015 13.9874 13.3417 13.9534 13.3808 13.9179C13.5538 13.7608 13.7182 13.594 13.8783 13.4208C13.8971 13.4005 13.9161 13.3806 13.935 13.3607L13.9351 13.3606C13.97 13.3239 14.0049 13.2872 14.0384 13.2489C14.057 13.2276 14.0766 13.2074 14.0962 13.1873L14.0962 13.1873L14.0962 13.1873C14.1199 13.163 14.1436 13.1386 14.1655 13.1122L14.153 13.1029ZM8.00611 3.42892C9.42735 3.42892 10.5795 4.58015 10.5795 6.00026C10.5795 7.42036 9.42735 8.57159 8.00611 8.57159C6.58486 8.57159 5.43271 7.42036 5.43271 6.00026C5.43271 4.58015 6.58486 3.42892 8.00611 3.42892ZM6.29051 10.2858C4.72789 10.2866 3.4558 11.5416 3.43525 13.1029C6.03294 15.4418 9.97927 15.4418 12.577 13.1029C12.5564 11.5416 11.2843 10.2866 9.7217 10.2858H6.29051Z\",\n fill: \"#2B2C46\"\n })));\n};\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgAvatar, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/avatar.4c5346ed.svg\";\nexport { ForwardRef as ReactComponent };","import { Box, Menu, MenuProps, withStyles } from '@material-ui/core';\nimport React from 'react';\nimport './common.scss';\nimport { useAppDispatch, useAppSelector } from 'Store/Store';\nimport { reset, setPreFilter } from 'Store/search/Search';\nimport { useAuth0 } from '@auth0/auth0-react';\nimport { ReactComponent as AvatarIcon } from 'common/assets/icons/avatar.svg';\nimport MenuItem from '@material-ui/core/MenuItem';\n\nfunction Header(): JSX.Element {\n const dispatch = useAppDispatch();\n const { settings } = useAppSelector(state => state);\n const { user, isAuthenticated, logout } = useAuth0();\n const auth0 = settings.auth0;\n\n const [anchorEl, setAnchorEl] = React.useState(null);\n\n const handleClick = (event: any) => {\n setAnchorEl(event.currentTarget);\n };\n\n const handleClose = () => {\n setAnchorEl(null);\n };\n\n const StyledMenu = withStyles({\n root: {},\n paper: {\n border: '0px',\n boxShadow: '0px 0px 8px 0px rgba(0, 0, 0, 0.20)',\n top: '58px !important',\n borderRadius: '0px !important',\n },\n })((props: MenuProps) => (\n <Menu\n elevation={0}\n getContentAnchorEl={null}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'center',\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'center',\n }}\n {...props}\n />\n ));\n\n const StyledMenuItem = withStyles(theme => ({\n root: {\n '&:focus': {\n backgroundColor: theme.palette.primary.main,\n '& .MuiListItemIcon-root, & .MuiListItemText-primary': {\n color: theme.palette.common.white,\n },\n },\n padding: '0px',\n },\n }))(MenuItem);\n\n return (\n <Box className=\"box-content\" display={'flex'}>\n <a\n href={window.location.origin}\n style={{ lineHeight: 0, paddingLeft: '10px' }}\n onClick={() => {\n dispatch(reset(''));\n dispatch(setPreFilter({}));\n }}\n >\n <img\n src={settings.theme?.appBarLogoUrl}\n alt=\"logo\"\n style={{\n aspectRatio: 1,\n width: settings.theme?.logoWidth,\n height: settings.theme?.logoHeight,\n }}\n />\n </a>\n\n {auth0.enabled && isAuthenticated && (\n <div style={{ position: 'relative' }}>\n <div\n style={{\n display: 'flex',\n columnGap: '16px',\n alignItems: 'center',\n paddingRight: '24px',\n cursor: 'pointer',\n }}\n aria-controls=\"simple-menu\"\n aria-haspopup=\"true\"\n onClick={handleClick}\n >\n <p style={{ color: '#2B2C46' }}>{user?.email}</p>\n <AvatarIcon />\n </div>\n <StyledMenu\n id=\"simple-menu\"\n anchorEl={anchorEl}\n keepMounted\n open={Boolean(anchorEl)}\n onClose={handleClose}\n >\n <StyledMenuItem>\n <div\n style={{\n display: 'flex',\n width: '152px',\n paddingLeft: '8px',\n paddingRight: '8px',\n flexDirection: 'column',\n alignItems: 'flex-start',\n gap: '8px',\n boxShadow: '0px 0px 8px 0px rgba(0, 0, 0, 0.20)',\n // position: 'absolute',\n // zIndex: 99,\n // top: '50px',\n backgroundColor: '#fff',\n }}\n >\n <div\n style={{\n display: 'flex',\n width: '75px',\n height: '24px',\n padding: '4px 8px',\n alignItems: 'center',\n backgroundColor: '#2B2C46',\n color: '#fff',\n fontSize: '10px',\n cursor: 'pointer',\n }}\n onClick={() => {\n logout({\n logoutParams: { returnTo: window.location.origin },\n });\n }}\n >\n Sign out\n </div>\n </div>\n </StyledMenuItem>\n </StyledMenu>\n </div>\n )}\n </Box>\n );\n}\n\nexport default Header;\n","import axios from \"axios\";\nimport {NyrisAPISettings} from \"@nyris/nyris-api\";\n\nconst httpClient = axios.create();\n\nexport const createSessionByApi = async (settings: NyrisAPISettings) => {\n const { apiKey, baseUrl} = settings;\n let headers = {\n \"X-Api-Key\": apiKey,\n };\n let response = await httpClient.request({\n method: \"POST\",\n url: `${baseUrl}/find/v1/session`,\n headers,\n });\n return response.data.session;\n};\n","import { Box, Button } from '@material-ui/core';\nimport React from 'react';\nimport CloseIcon from '@material-ui/icons/Close';\nimport { visualSearchHelp } from '../constants';\n\ninterface Props {\n handleClose: any;\n}\n\nfunction ImageCaptureHelpModal({ handleClose }: Props) {\n return (\n <Box\n style={{\n paddingBottom: '24px',\n }}\n >\n <Box\n display={'flex'}\n justifyContent={'end'}\n position={'sticky'}\n top={0}\n style={{ background: 'white', width: '100%' }}\n >\n <Button\n onClick={handleClose}\n style={{ paddingTop: '8px', paddingRight: '8px' }}\n >\n <CloseIcon fontSize={'small'} />\n </Button>\n </Box>\n <p\n style={{\n fontSize: '40px',\n lineHeight: '40px',\n fontWeight: 700,\n color: '#2B2C46',\n paddingLeft: '24px',\n paddingRight: '24px',\n }}\n >\n Six ways to optimize visual search\n </p>\n <div\n style={{\n display: 'flex',\n flexDirection: 'column',\n rowGap: '16px',\n marginTop: '16px',\n paddingLeft: '24px',\n paddingRight: '24px',\n }}\n >\n {visualSearchHelp.map((data, index) => {\n return (\n <div\n key={index}\n style={{\n display: 'flex',\n flexDirection: 'column',\n rowGap: '8px',\n }}\n >\n <p\n style={{\n fontSize: '16px',\n lineHeight: '24px',\n fontWeight: 700,\n color: '#2B2C46',\n marginBottom: '0px',\n }}\n >\n {`${index + 1}- ${data.title}`}\n </p>\n <p\n style={{\n fontSize: '14px',\n lineHeight: '20px',\n fontWeight: 400,\n color: '#2B2C46',\n marginBottom: '0px',\n }}\n >\n {data.description}\n </p>\n <div style={{ display: 'flex', columnGap: '16px' }}>\n <div>\n <img src={data.imageLeft} alt=\"\" />\n </div>\n <div>\n <img src={data.imageRight} alt=\"\" />\n </div>\n </div>\n </div>\n );\n })}\n </div>\n </Box>\n );\n}\n\nexport default ImageCaptureHelpModal;\n","var _rect;\nvar _excluded = [\"svgRef\", \"title\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport React from \"react\";\nvar SvgMinus = function SvgMinus(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 16,\n height: 16,\n viewBox: \"0 0 16 16\",\n fill: \"none\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _rect || (_rect = /*#__PURE__*/React.createElement(\"rect\", {\n x: 3,\n y: 7.36328,\n width: 10,\n height: 1.27383,\n rx: 0.636915,\n fill: \"#2B2C46\"\n })));\n};\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgMinus, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/minus.3fce6c0a.svg\";\nexport { ForwardRef as ReactComponent };","import React, { useEffect, useState } from \"react\";\nexport type DynamicWidgetsProps = {\n children: React.ReactNode;\n enabled?: boolean;\n [index: string]: any;\n};\n\nexport function DynamicWidgetsCT({\n children,\n enabled = true,\n ...props\n}: DynamicWidgetsProps): JSX.Element {\n const [isOpen, setOpen] = useState<boolean>();\n useEffect(() => {\n setOpen(enabled);\n }, [enabled]);\n\n return isOpen ? <div {...props}>{children}</div> : <></>;\n}\n","var _path;\nvar _excluded = [\"svgRef\", \"title\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport React from \"react\";\nvar SvgAdd = function SvgAdd(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 16,\n height: 16,\n viewBox: \"0 0 16 16\",\n fill: \"none\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M8.625 7.375V3.625C8.625 3.27982 8.34518 3 8 3C7.65482 3 7.375 3.27982 7.375 3.625V7.375H3.625C3.27982 7.375 3 7.65482 3 8C3 8.34518 3.27982 8.625 3.625 8.625H7.375V12.375C7.375 12.7202 7.65482 13 8 13C8.34518 13 8.625 12.7202 8.625 12.375V8.625H12.375C12.7202 8.625 13 8.34518 13 8C13 7.65482 12.7202 7.375 12.375 7.375H8.625Z\",\n fill: \"#2B2C46\"\n })));\n};\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgAdd, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/add.ba46a4bf.svg\";\nexport { ForwardRef as ReactComponent };","import React, { useEffect, useState } from 'react';\nimport { ReactComponent as RemoveIcon } from 'common/assets/icons/minus.svg';\nimport { ReactComponent as AddIcon } from 'common/assets/icons/add.svg';\n\nexport type LabelPosition = 'bottom' | 'left' | 'right' | 'top';\n\nexport type IconLabelProps = {\n icon?: any;\n label?: string;\n labelPosition?: LabelPosition;\n className?: string;\n classNameLabel?: string;\n};\n\nexport default function IconLabel({\n icon,\n label,\n labelPosition = 'bottom',\n className = 'gap-1',\n classNameLabel = '',\n}: IconLabelProps) {\n const [tagIcon, setTagIcon] = useState<string>('');\n // let classNamePosition: string;\n // switch (labelPosition) {\n // case \"top\":\n // classNamePosition = \"flex-col-reverse\";\n // break;\n // case \"left\":\n // classNamePosition = \"flex-row-reverse\";\n // break;\n // case \"right\":\n // classNamePosition = \"flex-row\";\n // break;\n // case \"bottom\":\n // default:\n // classNamePosition = \"flex-col\";\n // break;\n // }\n useEffect(() => {\n setTagIcon(icon);\n }, [icon]);\n\n return (\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n gap: '8px',\n paddingRight: '2px',\n }}\n >\n {label && (\n <div className={classNameLabel}>\n <p\n style={{\n fontSize: 12,\n color: '#2B2C46',\n fontWeight: 500,\n }}\n >\n {label}\n </p>\n </div>\n )}\n {tagIcon === 'remove' ? (\n <RemoveIcon width={16} height={16} />\n ) : (\n <AddIcon width={16} height={16} />\n )}\n </div>\n );\n}\n","import React from \"react\";\nimport classNames from \"classnames\";\nimport type { Variants } from \"framer-motion\";\nimport { useReducedMotion, motion } from \"framer-motion\";\n\nexport type CollapseProps = {\n isCollapsed: boolean;\n className?: string;\n children: React.ReactNode;\n};\n\nconst variants: Variants = {\n collapsed: (shouldReduceMotion: boolean) => {\n return {\n height: shouldReduceMotion ? \"auto\" : 0,\n opacity: 0,\n pointerEvents: \"none\",\n transitionEnd: { display: \"none\" },\n };\n },\n expanded: (shouldReduceMotion: boolean) => {\n return {\n height: shouldReduceMotion ? \"auto\" : \"auto\",\n opacity: 1,\n pointerEvents: \"auto\",\n display: \"block\",\n };\n },\n};\n\nconst transition = {\n ease: [0.16, 1, 0.3, 1],\n duration: 0.6,\n};\n\nexport function Collapse({\n isCollapsed,\n className,\n children,\n}: CollapseProps): JSX.Element {\n const shouldReduceMotion = useReducedMotion();\n\n return (\n <>\n <motion.div\n key=\"collapse\"\n initial=\"collapsed\"\n animate={isCollapsed ? \"collapsed\" : \"expanded\"}\n variants={variants}\n className={classNames(\"overflow-hidden\", className)}\n transition={transition}\n custom={shouldReduceMotion}\n >\n {children}\n </motion.div>\n </>\n );\n}\n","import type { Refinement, RefinementWidget } from \"./refinements-type\";\n\nexport function getRefinementPanelId(\n refinement: Refinement | RefinementWidget\n) {\n return refinement?.attributes\n ? refinement.options?.attributes.join(\":\")\n : refinement?.attribute;\n}\n\nexport function getPanelId(refinement: Refinement | RefinementWidget) {\n const widgets = (refinement as Refinement).widgets;\n\n const panelId = [];\n if (widgets?.length) {\n widgets.forEach((refinementWidget: RefinementWidget) =>\n panelId.push(getRefinementPanelId(refinementWidget))\n );\n } else {\n panelId.push(getRefinementPanelId(refinement));\n }\n\n return panelId.join(\":\");\n}\n\nexport function getRefinementPanelAttribute(\n refinement: Refinement | RefinementWidget\n) {\n return refinement?.attribute;\n}\n\nexport function getPanelAttributes(refinement: Refinement | RefinementWidget) {\n const widgets = (refinement as Refinement)?.widgets;\n\n const panelAttributes = [];\n if (widgets?.length) {\n widgets.forEach((refinementWidget: RefinementWidget) =>\n panelAttributes.push(getRefinementPanelAttribute(refinementWidget))\n );\n } else {\n panelAttributes.push(getRefinementPanelAttribute(refinement));\n }\n return panelAttributes;\n}\n","import { Box, Button } from '@material-ui/core';\nimport { DynamicWidgetsCT } from 'components/dynamic-widgets/dynamic-widgets';\nimport IconLabel from 'components/icon-label/icon-label';\nimport { atom, useAtom } from 'jotai';\nimport React, { useCallback, useEffect, useMemo } from 'react';\nimport type {\n CurrentRefinementsProvided,\n SearchResults,\n} from 'react-instantsearch-core';\nimport { RefinementList } from 'react-instantsearch-dom';\nimport { useMediaQuery } from 'react-responsive';\nimport { useHistory } from 'react-router-dom';\nimport { useAppSelector } from 'Store/Store';\nimport { ExpandablePanelCustom } from './expandable-panel';\nimport { getPanelAttributes, getPanelId } from './refinements';\nimport { ReactComponent as CloseIcon } from 'common/assets/icons/close.svg';\nimport { useTranslation } from 'react-i18next';\n\nexport type ExpandablePanelProps = CurrentRefinementsProvided & {\n children: React.ReactNode;\n className?: string;\n header?: React.ReactNode | string;\n attributes?: string[];\n isOpened?: boolean;\n onToggle?: any;\n};\n\nexport type Panels = {\n [key: string]: boolean;\n};\n\nexport function useHasRefinements(\n searchResults: SearchResults,\n attributes: string[] = [],\n) {\n const facets = useMemo(() => {\n const disjunctiveFacets = searchResults?.disjunctiveFacets || [];\n const hierarchicalFacets = searchResults?.hierarchicalFacets || [];\n return [...disjunctiveFacets, ...hierarchicalFacets];\n }, [searchResults]);\n\n const hasRefinements = useMemo(() => {\n let found = !attributes.length;\n\n facets.forEach(facet => {\n attributes?.forEach(attribute => {\n if (facet.name === attribute && facet.data) {\n found = true;\n }\n });\n });\n\n return found;\n }, [facets, attributes]);\n\n return hasRefinements;\n}\n\nfunction togglePanels(panels: Panels, val: boolean) {\n return Object.keys(panels).reduce(\n (acc, panelKey) => ({ ...acc, [panelKey]: val }),\n {},\n );\n}\n\nexport const refinementsPanelsExpandedAtom = atom(\n get =>\n Boolean(Object.values(get(refinementsPanelsAtom)).find(v => v === true)),\n (get, set, update: (prev: boolean) => boolean) => {\n const expanded = update(get(refinementsPanelsExpandedAtom));\n set(\n refinementsPanelsAtom,\n togglePanels(get(refinementsPanelsAtom), expanded),\n );\n },\n);\n\nexport const refinementsPanelsAtom = atom<Panels>({});\n\nfunction WidgetPanel({ children, onToggle, panelId, ...props }: any) {\n const onToggleMemoized = useCallback(\n () => onToggle(panelId),\n [onToggle, panelId],\n );\n\n return (\n <ExpandablePanelCustom onToggle={onToggleMemoized} {...props}>\n {children}\n </ExpandablePanelCustom>\n );\n}\n\nexport default function PostFilterPanelAlgolia({\n dynamicWidgets = true,\n onApply,\n disjunctiveFacets,\n}: any) {\n const stateGlobal = useAppSelector(state => state);\n const { settings } = stateGlobal;\n const { refinements } = settings;\n const [panels, setPanels] = useAtom(refinementsPanelsAtom);\n const [refinementsPanelsExpanded, setRefinementsPanelsExpanded] = useAtom(\n refinementsPanelsExpandedAtom,\n );\n const history = useHistory();\n const isMobile = useMediaQuery({ query: '(max-width: 776px)' });\n const { t } = useTranslation();\n\n // Set initial panels value\n useEffect(() => {\n setPanels(prevPanels => ({\n ...prevPanels,\n ...refinements.reduce(\n (acc: any, current: any) => ({\n ...acc,\n [getPanelId(current)]: Boolean(current.isExpanded),\n }),\n {},\n ),\n }));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const onToggle = useCallback(\n (panelId: string) => {\n setPanels(prevPanels => {\n return {\n ...prevPanels,\n [panelId]: !prevPanels[panelId],\n };\n });\n },\n [setPanels],\n );\n\n const widgets = useMemo(\n () =>\n refinements.map((refinement: any) => {\n return (\n <RefinementList\n className=\"box-refinement-list\"\n attribute={refinement.attribute}\n {...refinement.options}\n translations={{\n noResults: 'No results',\n placeholder: '',\n }}\n sortBy={['isRefined:desc', 'name:asc']}\n />\n );\n }),\n [refinements],\n );\n\n const widgetsPanels = useMemo(\n () =>\n widgets.map((widget: any, i: any) => {\n const refinement = refinements[i];\n const panelId = getPanelId(refinement);\n const panelAttributes = getPanelAttributes(refinement);\n\n return widget ? (\n <WidgetPanel\n key={panelId}\n panelId={panelId}\n attributes={panelAttributes}\n header={refinement.header}\n isOpened={isMobile ? !panels[panelId] : panels[panelId]}\n onToggle={onToggle}\n >\n {widget}\n </WidgetPanel>\n ) : (\n <></>\n );\n }),\n [widgets, refinements, onToggle, panels, isMobile],\n );\n\n const onTogglePanelsClick = useCallback(() => {\n setRefinementsPanelsExpanded((expanded: boolean) => !expanded);\n }, [setRefinementsPanelsExpanded]);\n\n const handlerApplyfillter = () => {\n onApply();\n if (history.location.pathname !== '/result') {\n history.push('/result');\n }\n };\n\n return (\n <>\n {!isMobile && (\n <div className=\"wrap-main-header-panel\">\n <Box\n style={{\n cursor: 'pointer',\n paddingBottom: '8px',\n }}\n >\n <div\n onClick={onTogglePanelsClick}\n style={{ display: 'flex', justifyContent: 'flex-end' }}\n >\n <IconLabel\n icon={refinementsPanelsExpanded ? 'remove' : 'add'}\n label={`${\n refinementsPanelsExpanded\n ? t('Collapse all')\n : t('Expand all')\n } `}\n />\n </div>\n </Box>\n </div>\n )}\n <Box>\n {isMobile && (\n <div\n style={{\n display: 'flex',\n justifyContent: 'flex-end',\n position: 'sticky',\n top: '0px',\n zIndex: 100,\n background: 'white',\n alignItems: 'center',\n }}\n >\n <Button\n onClick={onApply}\n style={{\n width: '32px',\n height: '32px',\n }}\n >\n <CloseIcon color=\"#2B2C46\" />\n </Button>\n </div>\n )}\n <Box\n className=\"box-center-filter\"\n style={{\n ...(isMobile\n ? {\n paddingLeft: '24px',\n paddingRight: '24px',\n overflow: 'auto',\n marginBottom: '12px',\n }\n : {}),\n }}\n >\n <DynamicWidgetsCT enabled={dynamicWidgets}>\n {widgetsPanels}\n </DynamicWidgetsCT>\n </Box>\n </Box>\n {isMobile && (\n <Box\n style={{\n position: 'sticky',\n bottom: 0,\n width: '100%',\n display: 'flex',\n }}\n >\n <div\n className=\"text-white\"\n style={{\n width: '100%',\n backgroundColor: settings.theme?.secondaryColor,\n fontWeight: 500,\n fontSize: 14,\n borderRadius: 0,\n height: '66px',\n textTransform: 'none',\n padding: '16px',\n }}\n onClick={handlerApplyfillter}\n >\n Cancel\n </div>\n <div\n className=\"text-white\"\n style={{\n width: '100%',\n backgroundColor: settings.theme?.primaryColor,\n fontWeight: 500,\n fontSize: 14,\n borderRadius: 0,\n height: '66px',\n textTransform: 'none',\n padding: '16px',\n }}\n onClick={handlerApplyfillter}\n >\n Apply filters\n </div>\n </Box>\n )}\n </>\n );\n}\n","import { atom } from 'jotai'\nimport { selectAtom, useUpdateAtom } from 'jotai/utils'\nimport { memo, useEffect } from 'react'\nimport isEqual from 'react-fast-compare'\nimport type { StateResultsProvided } from 'react-instantsearch-core'\nimport { connectStateResults } from 'react-instantsearch-dom'\n\nexport type VirtualStateResultsProps = StateResultsProvided\n\nexport type VirtualStateResultsAtomValue = Partial<\n Pick<VirtualStateResultsProps, 'isSearchStalled' | 'searchResults'>\n>\n\nexport const stateResultsAtom = atom<VirtualStateResultsAtomValue>({\n searchResults: undefined,\n isSearchStalled: undefined,\n})\n\nexport const searchResultsAtom = selectAtom(\n stateResultsAtom,\n ({ searchResults }) => searchResults,\n isEqual\n)\nexport const isSearchStalledAtom = selectAtom(\n stateResultsAtom,\n ({ isSearchStalled }) => isSearchStalled\n)\n\nfunction VirtualStateResultsComponent({\n searchResults,\n isSearchStalled,\n}: VirtualStateResultsProps) {\n const setStateResults = useUpdateAtom(stateResultsAtom)\n\n useEffect(() => {\n setStateResults({ searchResults, isSearchStalled })\n }, [setStateResults, searchResults, isSearchStalled])\n\n return null\n}\n\nexport const VirtualStateResults = connectStateResults(\n memo(VirtualStateResultsComponent, isEqual)\n)\n","import { Box, Button } from '@material-ui/core';\nimport { ReactComponent as RemoveIcon } from 'common/assets/icons/minus.svg';\nimport { ReactComponent as AddIcon } from 'common/assets/icons/add.svg';\nimport classNames from 'classnames';\nimport { Collapse } from 'components/collapse/collapse';\nimport { useAtomValue } from 'jotai/utils';\nimport type { MouseEventHandler } from 'react';\nimport React, { memo } from 'react';\nimport type {\n CurrentRefinementsProvided,\n SearchResults,\n} from 'react-instantsearch-core';\nimport { connectCurrentRefinements } from 'react-instantsearch-dom';\nimport { useMediaQuery } from 'react-responsive';\nimport { useHasRefinements } from './PostFilterAlgolia';\nimport { searchResultsAtom } from './virtual-state-results';\n\nexport type ExpandablePanelProps = CurrentRefinementsProvided & {\n children: React.ReactNode;\n className?: string;\n header?: React.ReactNode | string;\n footer?: string;\n attributes?: string[];\n isOpened?: boolean;\n onToggle?: MouseEventHandler;\n};\n\nfunction ExpandablePanelComponent({\n children,\n className,\n header,\n attributes = [],\n isOpened = false,\n items,\n onToggle,\n}: ExpandablePanelProps) {\n const searchResults = useAtomValue(searchResultsAtom) as SearchResults;\n const hasRefinements = useHasRefinements(searchResults, attributes);\n const isMobile = useMediaQuery({ query: '(max-width: 776px)' });\n\n return (\n <Box>\n <div\n className={classNames(\n {\n hidden: !hasRefinements,\n },\n className,\n )}\n style={{\n borderTop: !isMobile ? '1px solid #d3d4d8' : '',\n }}\n >\n <Button\n className=\"w-full flex items-center justify-between group\"\n aria-expanded={isOpened}\n style={{\n paddingLeft: '2px',\n paddingRight: '2px',\n paddingTop: !isMobile ? '8px' : '0px',\n paddingBottom: '8px',\n marginTop: '16px',\n marginBottom: '16px',\n }}\n onClick={e => {\n if (typeof onToggle === 'function') {\n onToggle(e);\n }\n }}\n >\n <div className=\"flex items-center w-full subhead\">\n <p\n style={{\n textTransform: 'none',\n fontFamily: 'Source Sans 3 !important',\n fontSize: 14,\n fontWeight: 'bold',\n lineHeight: '16px',\n }}\n >\n {header || attributes[0]}\n </p>\n </div>\n {!isMobile && <>{isOpened ? <RemoveIcon /> : <AddIcon />}</>}\n </Button>\n\n <Collapse isCollapsed={!isOpened}>\n <div className=\"mt-4\">{children}</div>\n </Collapse>\n </div>\n </Box>\n );\n}\n\nexport const ExpandablePanelCustom = connectCurrentRefinements<any>(\n memo(ExpandablePanelComponent),\n);\n","import { useAppSelector } from 'Store/Store';\nimport { useMemo } from 'react';\n\n// Function to count occurrences and create array of objects\nfunction countOccurrences(inputArray: any[]) {\n const countMap: any = {};\n inputArray.forEach((value: string | number) => {\n countMap[value] = (countMap[value] || 0) + 1;\n });\n\n return Object.entries(countMap).map(([value, count]) => ({\n value,\n count,\n }));\n}\n\nconst getNextFilters = (data: any[], postFilters: any): any => {\n const nextFilters: any = {};\n\n data?.forEach(element => {\n const filters = element.filters || {};\n const keys = Object.keys(filters);\n\n for (let i = 0; i < keys.length; i++) {\n const xKey = keys[i];\n\n let isNextFilter = keys.every(yKey => {\n if (xKey !== yKey) {\n const postFilter = postFilters[yKey] || {};\n const filter = filters[yKey] || {};\n\n const postFilterValues = Object.keys(postFilter).filter(\n key => postFilter[key],\n );\n\n if (postFilterValues?.length > 0) {\n return postFilterValues?.some(element => {\n return filter?.includes(element);\n });\n }\n return true;\n }\n return true;\n });\n\n if (isNextFilter) {\n if (nextFilters[xKey]) {\n nextFilters[xKey] = [...nextFilters[xKey], ...filters[xKey]];\n } else {\n nextFilters[xKey] = filters[xKey];\n }\n }\n }\n });\n\n return nextFilters;\n};\n\nexport const useFilter = (data: any) => {\n const { postFilter } = useAppSelector(state => state.search);\n\n const filters = useMemo(() => {\n return getNextFilters(data, postFilter);\n }, [data, postFilter]);\n\n const filterCount = useMemo(() => {\n const resultObject: any = {};\n for (const key in filters) {\n if (filters.hasOwnProperty(key)) {\n resultObject[key] = countOccurrences(filters[key]);\n }\n }\n\n return resultObject;\n }, [filters]);\n\n // If there is no item for a selected filter add the filter with count 0\n Object.keys(postFilter).forEach(key => {\n const filter = postFilter[key];\n Object.keys(filter).forEach(value => {\n const isNextFilter = filterCount[key].some((data: { value: string }) => {\n return data.value === value;\n });\n\n if (!isNextFilter) {\n filterCount[key].push({ value, count: 0 });\n }\n });\n });\n\n return filterCount;\n};\n","import { Box, Button, Checkbox } from '@material-ui/core';\nimport { DynamicWidgetsCT } from 'components/dynamic-widgets/dynamic-widgets';\nimport IconLabel from 'components/icon-label/icon-label';\nimport { atom, useAtom } from 'jotai';\nimport React, { useCallback, useEffect, useMemo } from 'react';\nimport type { CurrentRefinementsProvided } from 'react-instantsearch-core';\nimport { useMediaQuery } from 'react-responsive';\nimport { useHistory } from 'react-router-dom';\nimport { useAppDispatch, useAppSelector } from 'Store/Store';\nimport { ExpandablePanelCustom } from './expandable-panel';\nimport { getPanelAttributes, getPanelId } from './refinements';\nimport { ReactComponent as CloseIcon } from 'common/assets/icons/close.svg';\nimport { useTranslation } from 'react-i18next';\nimport { setPostFilter } from 'Store/search/Search';\nimport { useFilter } from 'hooks/useFilter';\nimport { get } from 'lodash';\n\nexport type ExpandablePanelProps = CurrentRefinementsProvided & {\n children: React.ReactNode;\n className?: string;\n header?: React.ReactNode | string;\n attributes?: string[];\n isOpened?: boolean;\n onToggle?: any;\n};\n\nexport type Panels = {\n [key: string]: boolean;\n};\n\nfunction togglePanels(panels: Panels, val: boolean) {\n return Object.keys(panels).reduce(\n (acc, panelKey) => ({ ...acc, [panelKey]: val }),\n {},\n );\n}\n\nexport const refinementsPanelsExpandedAtom = atom(\n get =>\n Boolean(Object.values(get(refinementsPanelsAtom)).find(v => v === true)),\n (get, set, update: (prev: boolean) => boolean) => {\n const expanded = update(get(refinementsPanelsExpandedAtom));\n set(\n refinementsPanelsAtom,\n togglePanels(get(refinementsPanelsAtom), expanded),\n );\n },\n);\n\nexport const refinementsPanelsAtom = atom<Panels>({});\n\nfunction WidgetPanel({ children, onToggle, panelId, ...props }: any) {\n const onToggleMemoized = useCallback(\n () => onToggle(panelId),\n [onToggle, panelId],\n );\n\n return (\n <ExpandablePanelCustom onToggle={onToggleMemoized} {...props}>\n {children}\n </ExpandablePanelCustom>\n );\n}\n\nexport default function PostFilterPanel({\n dynamicWidgets = true,\n onApply,\n}: any) {\n const stateGlobal = useAppSelector(state => state);\n const {\n settings,\n search: { postFilter, results },\n } = stateGlobal;\n const { refinements } = settings;\n const [panels, setPanels] = useAtom(refinementsPanelsAtom);\n const [refinementsPanelsExpanded, setRefinementsPanelsExpanded] = useAtom(\n refinementsPanelsExpandedAtom,\n );\n const history = useHistory();\n const isMobile = useMediaQuery({ query: '(max-width: 776px)' });\n const { t } = useTranslation();\n const dispatch = useAppDispatch();\n\n const filter = useFilter(results);\n\n // Set initial panels value\n useEffect(() => {\n setPanels(prevPanels => ({\n ...prevPanels,\n ...refinements.reduce(\n (acc: any, current: any) => ({\n ...acc,\n [getPanelId(current)]: Boolean(current.isExpanded),\n }),\n {},\n ),\n }));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const onToggle = useCallback(\n (panelId: string) => {\n setPanels(prevPanels => {\n return {\n ...prevPanels,\n [panelId]: !prevPanels[panelId],\n };\n });\n },\n [setPanels],\n );\n\n const widgets = useMemo(() => {\n return refinements.map((refinement: any) => {\n const filterList = filter?.[refinement.attribute];\n\n return (\n <div\n style={{\n display: 'flex',\n flexDirection: 'column',\n rowGap: '16px',\n marginBottom: '8px',\n }}\n >\n {filterList?.map((item: any, index: number) => {\n return (\n <div\n key={index}\n style={{\n display: 'flex',\n alignItems: 'center',\n columnGap: '4px',\n }}\n >\n <Checkbox\n color=\"primary\"\n size=\"small\"\n style={{ padding: '0px' }}\n checked={\n !!get(postFilter, `${refinement.attribute}.${item.value}`)\n }\n onChange={() => {\n dispatch(\n setPostFilter({\n [refinement.attribute]: item.value,\n }),\n );\n }}\n />\n <p style={{ fontSize: '14px', paddingTop: '3px' }}>\n {item.value}\n </p>\n <p style={{ fontSize: '14px', paddingTop: '3px' }}>\n ({item.count})\n </p>\n </div>\n );\n })}\n </div>\n );\n });\n }, [refinements, filter, postFilter, dispatch]);\n\n const widgetsPanels = useMemo(\n () =>\n widgets.map((widget: any, i: any) => {\n const refinement = refinements[i];\n const panelId = getPanelId(refinement);\n const panelAttributes = getPanelAttributes(refinement);\n\n return widget ? (\n <WidgetPanel\n key={panelId}\n panelId={panelId}\n attributes={panelAttributes}\n header={refinement.header}\n isOpened={isMobile ? !panels[panelId] : panels[panelId]}\n onToggle={onToggle}\n >\n {widget}\n </WidgetPanel>\n ) : (\n <></>\n );\n }),\n [widgets, refinements, onToggle, panels, isMobile],\n );\n\n const onTogglePanelsClick = useCallback(() => {\n setRefinementsPanelsExpanded((expanded: boolean) => !expanded);\n }, [setRefinementsPanelsExpanded]);\n\n const handlerApplyfillter = () => {\n onApply();\n if (history.location.pathname !== '/result') {\n history.push('/result');\n }\n };\n\n return (\n <>\n {!isMobile && (\n <div className=\"wrap-main-header-panel\">\n <Box\n style={{\n cursor: 'pointer',\n paddingBottom: '8px',\n }}\n >\n <div\n onClick={onTogglePanelsClick}\n style={{ display: 'flex', justifyContent: 'flex-end' }}\n >\n <IconLabel\n icon={refinementsPanelsExpanded ? 'remove' : 'add'}\n label={`${\n refinementsPanelsExpanded\n ? t('Collapse all')\n : t('Expand all')\n } `}\n />\n </div>\n </Box>\n </div>\n )}\n <Box>\n {isMobile && (\n <div\n style={{\n display: 'flex',\n justifyContent: 'flex-end',\n position: 'sticky',\n top: '0px',\n zIndex: 100,\n background: 'white',\n alignItems: 'center',\n }}\n >\n <Button\n onClick={onApply}\n style={{\n width: '32px',\n height: '32px',\n }}\n >\n <CloseIcon color=\"#2B2C46\" />\n </Button>\n </div>\n )}\n <Box\n className=\"box-center-filter\"\n style={{\n ...(isMobile\n ? {\n paddingLeft: '24px',\n paddingRight: '24px',\n overflow: 'auto',\n marginBottom: '12px',\n }\n : {}),\n }}\n >\n <DynamicWidgetsCT enabled={dynamicWidgets}>\n {widgetsPanels}\n </DynamicWidgetsCT>\n </Box>\n </Box>\n {isMobile && (\n <Box\n style={{\n position: 'sticky',\n bottom: 0,\n width: '100%',\n display: 'flex',\n }}\n >\n <div\n className=\"text-white\"\n style={{\n width: '100%',\n backgroundColor: settings.theme?.secondaryColor,\n fontWeight: 500,\n fontSize: 14,\n borderRadius: 0,\n height: '66px',\n textTransform: 'none',\n padding: '16px',\n }}\n onClick={handlerApplyfillter}\n >\n Cancel\n </div>\n <div\n className=\"text-white\"\n style={{\n width: '100%',\n backgroundColor: settings.theme?.primaryColor,\n fontWeight: 500,\n fontSize: 14,\n borderRadius: 0,\n height: '66px',\n textTransform: 'none',\n padding: '16px',\n }}\n onClick={handlerApplyfillter}\n >\n Apply filters\n </div>\n </Box>\n )}\n </>\n );\n}\n","import React, { memo } from 'react';\n\nimport PostFilterPanel from './PanelResult/PostFilter';\nimport PostFilterPanelAlgolia from './PanelResult/PostFilterAlgolia';\n\nimport { connectStateResults } from 'react-instantsearch-dom';\nimport { useAppSelector } from 'Store/Store';\n\ninterface Props {\n allSearchResults: any;\n onApply: any;\n}\n\nfunction MobilePostFilter(props: Props) {\n const settings = useAppSelector(state => state.settings);\n return (\n <>\n {settings.algolia.enabled && (\n <PostFilterPanelAlgolia\n disjunctiveFacets={props?.allSearchResults?.disjunctiveFacets}\n onApply={props.onApply}\n />\n )}\n {!settings.algolia.enabled && <PostFilterPanel onApply={props.onApply} />}\n </>\n );\n}\n\nexport default connectStateResults<Props>(memo(MobilePostFilter));\n","import NyrisAPI, { NyrisAPISettings } from '@nyris/nyris-api';\n\nexport interface Filter {\n key?: string;\n values: string[];\n}\n\nexport const getFilters = async (\n number: number = 10,\n settings: NyrisAPISettings,\n) => {\n const nyrisApi = new NyrisAPI(settings);\n return nyrisApi.getFilters(number);\n};\n\nexport const searchFilters = async (\n key: any = '',\n value: string,\n settingsNyris: NyrisAPISettings,\n) => {\n const nyrisApi = new NyrisAPI(settingsNyris);\n const newValue = value ? value : '';\n return nyrisApi.searchFilters(key, newValue);\n};\n","export function truncateString(str: string, num: number): string {\n if (str?.length > num) {\n return str?.slice(0, num) + '...';\n } else {\n return str;\n }\n}\n","import { Box, Button, Tooltip, Typography } from '@material-ui/core';\nimport React, { useEffect, useMemo, useState } from 'react';\nimport CloseIcon from '@material-ui/icons/Close';\nimport IconSearch from 'common/assets/icons/icon_search.svg';\nimport { getFilters, searchFilters } from 'services/filter';\nimport { useAppDispatch, useAppSelector } from 'Store/Store';\nimport {\n setPreFilter,\n setSearchResults,\n updateStatusLoading,\n} from 'Store/search/Search';\nimport { useMediaQuery } from 'react-responsive';\nimport { isEmpty, pickBy } from 'lodash';\nimport { Skeleton } from '@material-ui/lab';\nimport { truncateString } from 'helpers/truncateString';\nimport { find } from 'services/image';\nimport { useQuery } from 'hooks/useQuery';\nimport { useTranslation } from 'react-i18next';\n\ninterface Props {\n handleClose?: any;\n // onChangeKeyFilter?: any;\n}\nconst maxFilter = 10;\nfunction PreFilterComponent(props: Props) {\n const { handleClose } = props;\n const dispatch = useAppDispatch();\n const stateGlobal = useAppSelector(state => state);\n const { settings } = stateGlobal;\n const [resultFilter, setResultFilter] = useState<any>([]);\n const query = useQuery();\n const searchQuery = query.get('query') || '';\n const { search } = stateGlobal;\n const {\n preFilter: keyFilterState,\n\n requestImage,\n selectedRegion,\n } = search;\n\n const [keyFilter, setKeyFilter] = useState<Record<string, boolean>>(\n keyFilterState || {},\n );\n\n const [isLoading, setLoading] = useState<boolean>(false);\n const [columns, setColumns] = useState<number>(0);\n const isMobile = useMediaQuery({ query: '(max-width: 776px)' });\n\n const selectedFilter = useMemo(\n () =>\n Object.keys(keyFilter).reduce((count, key) => {\n if (keyFilter[key] === true) {\n return count + 1;\n }\n return count;\n }, 0),\n [keyFilter],\n );\n\n const getDataFilterDesktop = async () => {\n setLoading(true);\n const dataResultFilter = getFilters(1000, settings)\n .then(res => {\n const arrResult =\n res.find(value => value.key === settings.visualSearchFilterKey)\n ?.values || [];\n\n const newResult = arrResult.sort().reduce((a: any, c: any) => {\n if (!c[0]) return a;\n let k = c[0]?.toLocaleUpperCase();\n if (a[k]) a[k].push(c);\n else a[k] = [c];\n return a;\n }, {});\n setResultFilter(newResult);\n setColumns(Object.keys(newResult).length);\n })\n .catch((e: any) => {\n console.log('err getDataFilterDesktop', e);\n })\n .finally(() => {\n setLoading(false);\n });\n\n return dataResultFilter;\n };\n\n useEffect(() => {\n getDataFilterDesktop();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const filterSearchHandler = async (value: any) => {\n if (!value) {\n getDataFilterDesktop();\n return;\n }\n const data = await searchFilters(\n settings.visualSearchFilterKey,\n encodeURIComponent(value),\n settings,\n )\n .then(res => {\n if (res.length > 0) {\n setResultFilter({ [res[0][0].toLocaleUpperCase()]: res });\n if (res.length <= 20) setColumns(1);\n else if (res.length <= 40) setColumns(2);\n else setColumns(4);\n } else {\n setResultFilter({});\n setColumns(4);\n }\n return;\n })\n .catch((e: any) => {\n console.log('err filterSearchHandler', e);\n });\n return data;\n };\n\n const onHandlerSubmitData = () => {\n const preFilter = pickBy(keyFilter, value => !!value);\n dispatch(setPreFilter(preFilter));\n\n if (!settings.algolia?.enabled && (searchQuery || requestImage)) {\n let payload: any;\n let filters: any[] = [];\n const preFilterValues = [\n {\n key: settings.visualSearchFilterKey,\n values: Object.keys(preFilter) as string[],\n },\n ];\n dispatch(updateStatusLoading(true));\n\n find({\n image: requestImage?.canvas as HTMLCanvasElement,\n settings,\n filters: !isEmpty(preFilter) ? preFilterValues : undefined,\n region: selectedRegion,\n text: searchQuery,\n })\n .then((res: any) => {\n res?.results.map((item: any) => {\n filters.push({\n sku: item.sku,\n score: item.score,\n });\n });\n payload = {\n ...res,\n filters,\n };\n dispatch(setSearchResults(payload));\n dispatch(updateStatusLoading(false));\n })\n .catch((e: any) => {\n dispatch(updateStatusLoading(false));\n });\n }\n handleClose();\n };\n const { t } = useTranslation();\n\n return (\n <Box\n className=\"box-child-component-filter-desktop\"\n display={'flex'}\n flexDirection={'column'}\n style={{ position: 'relative' }}\n >\n <div\n style={{\n background: 'white',\n width: '100%',\n display: 'flex',\n justifyContent: 'space-between',\n position: 'sticky',\n top: 0,\n zIndex: 100,\n }}\n >\n <Typography\n style={{\n color: '#000',\n fontSize: '24px',\n fontWeight: 700,\n paddingLeft: '14px',\n marginBottom: isMobile ? '0px' : '-8px',\n marginTop: isMobile ? '0px' : '24px',\n }}\n >\n {settings.preFilterTitle}\n </Typography>\n\n <Button onClick={handleClose}>\n <CloseIcon />\n </Button>\n </div>\n <Box\n className=\"box-top\"\n display={'flex'}\n justifyContent={'space-between'}\n alignItems={'center'}\n >\n <Box\n className=\"box-input-search-filter\"\n display={'flex'}\n justifyItems={'center'}\n style={isMobile ? { width: '100%' } : undefined}\n >\n <Box\n className=\"icon-search\"\n style={{ marginRight: 11 }}\n display={'flex'}\n justifyContent={'center'}\n alignItems={'center'}\n >\n <img\n style={{ maxWidth: 'fit-content' }}\n src={IconSearch}\n alt=\"\"\n width={18}\n height={18}\n />\n </Box>\n\n <input\n className=\"input-search-filter\"\n placeholder={t('Search')}\n onChange={(e: any) => {\n filterSearchHandler(e.target.value);\n }}\n />\n </Box>\n </Box>\n\n {!isEmpty(keyFilter) && selectedFilter > 0 && (\n <Box\n style={{\n padding: '10px 16px 10px 16px',\n display: 'flex',\n justifyContent: 'space-between',\n backgroundColor: '#FAFAFA',\n }}\n >\n <Box\n style={{\n display: 'flex',\n flexWrap: 'wrap',\n rowGap: '8px',\n columnGap: '8px',\n alignItems: 'baseline',\n fontSize: '12px',\n marginBottom: '4px',\n }}\n >\n {Object.keys(keyFilter).map((key, index) => {\n if (!keyFilter[key]) return <></>;\n return (\n <Box\n key={index}\n className=\"box-keyFilter\"\n style={{ display: 'flex', height: 'fit-content', gap: '8px' }}\n >\n <Typography className=\"keyFilter\">{key}</Typography>\n <Button\n style={{ padding: 0 }}\n onClick={() => setKeyFilter({ ...keyFilter, [key]: false })}\n >\n <CloseIcon style={{ fontSize: 12, color: '#2B2C46' }} />\n </Button>\n </Box>\n );\n })}\n <p\n style={{ fontWeight: 'bold', color: '#000' }}\n >{`${selectedFilter}/${maxFilter}`}</p>\n <Box\n style={{\n color: '#E31B5D',\n fontSize: '12px',\n cursor: 'pointer',\n marginLeft: '12px',\n }}\n onClick={() => {\n setKeyFilter({});\n }}\n >\n {t('Clear all')}\n </Box>\n </Box>\n </Box>\n )}\n <Box\n className=\"box-bottom\"\n height={'100%'}\n style={\n isMobile\n ? {\n columnCount: 1,\n marginBottom: keyFilter ? '50px' : '0px',\n }\n : columns <= 4\n ? {\n columnCount: columns,\n height: '100%',\n padding: '24px 24px 40px 24px',\n backgroundColor: '#FAFAFA',\n }\n : {\n columnCount: 4,\n padding: '24px 24px 40px 24px',\n backgroundColor: '#FAFAFA',\n }\n }\n >\n {Object.entries(resultFilter).map(([key, value]: any, i: any) => {\n return (\n <Box className=\"box-group-items\" key={key}>\n <Box\n style={{\n display: 'flex',\n flexDirection: 'column',\n rowGap: '12px',\n width: '100%',\n }}\n >\n <Typography\n style={{\n fontWeight: 'bold',\n color: '#000',\n fontSize: '12px',\n }}\n >\n {key}\n </Typography>\n\n {value.map((item: any, index: any) => {\n return (\n <Tooltip\n key={item}\n title={item}\n placement=\"top\"\n arrow={true}\n disableHoverListener={item.length < 35}\n >\n <Box\n aria-label={item}\n style={{\n cursor: 'pointer',\n fontSize: '12px',\n minHeight: '20px',\n color: '#2B2C46',\n width: '100%',\n maxWidth: 'fit-content',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n backgroundColor: keyFilter[item] ? '#E9E9EC' : '',\n borderRadius: 8,\n paddingLeft: '8px',\n paddingRight: '8px',\n }}\n onClick={() => {\n if (selectedFilter < maxFilter) {\n setKeyFilter({\n ...keyFilter,\n [item]: !keyFilter[item],\n });\n }\n }}\n >\n {truncateString(item, !isMobile ? 35 : 35)}\n </Box>\n </Tooltip>\n );\n })}\n </Box>\n </Box>\n );\n })}\n {isLoading && (\n <Box style={{ columnCount: isMobile ? 1 : 4 }}>\n {Array(12)\n .fill('')\n .map((_, index) => {\n return (\n <Box key={index} mb={5}>\n <Skeleton animation={'pulse'} height={30} width={60} />\n {Array(6)\n .fill('')\n .map((_, index) => (\n <Skeleton key={index} animation={'pulse'} height={30} />\n ))}\n </Box>\n );\n })}\n </Box>\n )}\n {isEmpty(resultFilter) && !isLoading && (\n <Typography>No result found</Typography>\n )}\n </Box>\n {!isMobile && (\n <Box\n className=\"footer\"\n style={{ height: 64, marginTop: 'auto' }}\n display={'flex'}\n >\n <Button\n className=\"button-left\"\n style={{\n width: '50%',\n backgroundColor: settings.theme.secondaryColor,\n color: '#fff',\n borderRadius: 0,\n justifyContent: 'flex-start',\n textTransform: 'none',\n paddingLeft: '16px',\n paddingTop: '16px',\n paddingBottom: '32px',\n }}\n onClick={() => handleClose()}\n >\n {t('Cancel')}\n </Button>\n <Button\n className=\"button-right\"\n style={{\n width: '50%',\n backgroundColor: settings.theme?.primaryColor,\n color: '#fff',\n borderRadius: 0,\n justifyContent: 'flex-start',\n textTransform: 'none',\n paddingLeft: '16px',\n paddingTop: '16px',\n paddingBottom: '32px',\n }}\n onClick={() => onHandlerSubmitData()}\n >\n {t('Apply')}\n </Button>\n </Box>\n )}\n {isMobile && (\n <Box\n className=\"footer\"\n style={{\n height: 64,\n marginTop: 'auto',\n position: 'fixed',\n bottom: '0px',\n left: '0px',\n width: '100vw',\n }}\n display={'flex'}\n >\n <Button\n className=\"button-left\"\n style={{\n width: '50%',\n backgroundColor: settings.theme.secondaryColor,\n color: '#fff',\n borderRadius: 0,\n justifyContent: 'flex-start',\n textTransform: 'none',\n }}\n onClick={() => handleClose()}\n >\n {t('Cancel')}\n </Button>\n <Button\n className=\"button-right\"\n style={{\n width: '50%',\n backgroundColor: settings.theme?.primaryColor,\n color: '#fff',\n borderRadius: 0,\n justifyContent: 'flex-start',\n textTransform: 'none',\n }}\n onClick={() => onHandlerSubmitData()}\n >\n {t('Apply')}\n </Button>\n </Box>\n )}\n </Box>\n );\n}\nexport default PreFilterComponent;\n","import React, { ReactNode, useState } from 'react';\nimport HeaderMobile from './HeaderMobile';\nimport { Box } from '@material-ui/core';\nimport {\n setPreFilterDropdown,\n setImageCaptureHelpModal,\n} from 'Store/search/Search';\nimport { isUndefined } from 'lodash';\nimport ImageCaptureHelpModal from './ImageCaptureHelpModal';\nimport MobilePostFilter from './MobilePostFilter';\nimport PreFilterComponent from './pre-filter';\nimport { useAppDispatch, useAppSelector } from 'Store/Store';\nimport { AppState } from 'types';\nimport FooterMobile from './FooterMobile';\n\nfunction AppMobile({ children }: { children: ReactNode }) {\n const dispatch = useAppDispatch();\n const { search } = useAppSelector<AppState>((state: any) => state);\n const { preFilterDropdown, imageCaptureHelpModal } = search;\n const [isOpenFilter, setOpenFilter] = useState<boolean>(false);\n\n return (\n <>\n <div className=\"wrap-mobile\">\n <div className=\"box-header-mobile-main\">\n <HeaderMobile\n onToggleFilterMobile={(show: boolean) => {\n setOpenFilter(isUndefined(show) ? !isOpenFilter : show);\n }}\n />\n </div>\n <div\n style={{\n display: 'flex',\n flexGrow: 1,\n flexDirection: 'column',\n overflowY: 'auto',\n overflowX: 'hidden',\n height: '100%',\n backgroundColor: '#fff',\n }}\n >\n {children}\n </div>\n <div\n className=\"footer-wrap-main\"\n style={{\n zIndex: 999,\n }}\n >\n <FooterMobile />\n </div>\n </div>\n <Box\n className={`box-filter ${isOpenFilter ? 'open' : 'close'} `}\n position={'absolute'}\n style={{\n top: '0px',\n height: '100%',\n width: '100%',\n }}\n >\n <MobilePostFilter\n onApply={() => {\n setOpenFilter(!isOpenFilter);\n }}\n />\n </Box>\n\n {preFilterDropdown && (\n <Box\n className={`box-filter open`}\n position={'absolute'}\n style={{ top: '0px', height: '100%', width: '100%', zIndex: 999 }}\n >\n <div style={{ width: '100%' }} className={'wrap-filter-desktop'}>\n <div className={'bg-white box-filter-desktop isMobile'}>\n <PreFilterComponent\n handleClose={() =>\n dispatch(setPreFilterDropdown(!preFilterDropdown))\n }\n />\n </div>\n </div>\n </Box>\n )}\n\n {imageCaptureHelpModal && (\n <Box\n className={`box-filter open`}\n position={'absolute'}\n style={{\n top: '0px',\n width: '100%',\n zIndex: 100,\n }}\n >\n <div style={{ width: '100%' }} className={'wrap-filter-desktop'}>\n <div className={'bg-white box-filter-desktop isMobile'}>\n <ImageCaptureHelpModal\n handleClose={() =>\n dispatch(setImageCaptureHelpModal(!imageCaptureHelpModal))\n }\n />\n </div>\n </div>\n </Box>\n )}\n </>\n );\n}\n\nexport default AppMobile;\n","import { Box } from '@material-ui/core';\nimport React from 'react';\nimport { useTranslation } from 'react-i18next';\n\nconst LoadingSvg = () => {\n return (\n <svg\n width={150}\n height={150}\n viewBox=\"0 0 150 150\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"loading-spinner\"\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M75 150C116.421 150 150 116.421 150 75C150 33.5786 116.421 0 75 0C33.5786 0 0 33.5786 0 75C0 116.421 33.5786 150 75 150ZM75 140.367C111.101 140.367 140.367 111.101 140.367 75.0003C140.367 38.8991 111.101 9.63332 75 9.63332C38.8988 9.63332 9.63304 38.8991 9.63304 75.0003C9.63304 111.101 38.8988 140.367 75 140.367Z\"\n fill=\"url(#paint0_linear_2236_26778)\"\n />\n <defs>\n <linearGradient\n id=\"paint0_linear_2236_26778\"\n x1={75}\n y1={0}\n x2={75}\n y2={150}\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"#3E36DC\" />\n <stop offset={0.916667} stopColor=\"#1E1F31\" />\n </linearGradient>\n </defs>\n </svg>\n );\n};\n\nconst Loading = () => {\n const { t } = useTranslation();\n return (\n <Box\n className=\"loadingSpinCT\"\n style={{\n top: 0,\n bottom: 0,\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n }}\n >\n <p\n style={{\n position: 'absolute',\n top: '50%',\n left: '50%',\n transform: 'translate(-50%, -50%)',\n fontSize: 16,\n color: '#fff',\n fontWeight: 300,\n }}\n >\n {t('loading')}\n </p>\n <LoadingSvg />\n </Box>\n );\n};\n\nexport default Loading;\n","import React, { memo, useMemo } from 'react';\nimport { MultipleQueriesQuery } from '@algolia/client-search';\nimport algoliasearch from 'algoliasearch/lite';\nimport { ReactNode } from 'components/common';\nimport { InstantSearch } from 'react-instantsearch-dom';\nimport { changeValueTextSearch } from 'Store/search/Search';\nimport { useAppDispatch, useAppSelector } from 'Store/Store';\nimport { AlgoliaSettings } from 'types';\n\nfunction InstantSearchProvider({ children }: ReactNode): JSX.Element {\n const dispatch = useAppDispatch();\n const { settings, search } = useAppSelector(state => state);\n const { valueTextSearch } = search;\n const { apiKey, appId, indexName } = settings.algolia as AlgoliaSettings;\n const isAlgoliaEnabled = settings.algolia?.enabled;\n\n const conditionalQuery = useMemo(() => {\n const searchClient = algoliasearch(appId, apiKey);\n searchClient.initIndex(indexName);\n return {\n ...searchClient,\n search(requests: MultipleQueriesQuery[]) {\n if (\n requests.every(\n (request: MultipleQueriesQuery) =>\n !request.params?.query &&\n (!request.params?.filters ||\n request.params?.filters.endsWith('<score=1>')),\n )\n ) {\n // Here we have to do something else\n return Promise.resolve({\n results: requests.map(() => ({\n hits: [],\n nbHits: 0,\n nbPages: 0,\n processingTimeMS: 0,\n })),\n });\n }\n if (isAlgoliaEnabled) {\n return searchClient.search(requests);\n }\n },\n };\n }, [apiKey, appId, indexName, isAlgoliaEnabled]);\n\n return (\n <div style={{ position: 'relative' }}>\n <InstantSearch\n indexName={indexName}\n searchClient={conditionalQuery}\n searchState={isAlgoliaEnabled ? valueTextSearch : {}}\n onSearchStateChange={state => {\n if (state.page && state.query !== undefined && isAlgoliaEnabled) {\n dispatch(changeValueTextSearch(state));\n }\n }}\n >\n {children}\n </InstantSearch>\n </div>\n );\n}\n\nexport default memo(InstantSearchProvider);\n","var _path, _defs;\nvar _excluded = [\"svgRef\", \"title\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport React from \"react\";\nvar SvgPoweredByNyrisColored = function SvgPoweredByNyrisColored(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 80,\n height: 10,\n viewBox: \"0 0 80 10\",\n fill: \"none\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M53.4951 2.66941V7.62941H54.9651V4.27941C55.1251 4.12608 55.2718 4.00941 55.4051 3.92941C55.5384 3.84275 55.6984 3.79941 55.8851 3.79941C56.0984 3.79941 56.2518 3.86608 56.3451 3.99941C56.4451 4.13275 56.4951 4.37941 56.4951 4.73941V7.62941H57.9651V4.54941C57.9651 3.92941 57.8451 3.44275 57.6051 3.08941C57.3651 2.72941 56.9718 2.54941 56.4251 2.54941C56.0918 2.54941 55.7951 2.62275 55.5351 2.76941C55.2751 2.91608 55.0418 3.09275 54.8351 3.29941H54.7951L54.6951 2.66941H53.4951ZM59.3778 9.53941C59.4911 9.55941 59.6211 9.56941 59.7677 9.56941C60.1611 9.56941 60.4877 9.49608 60.7477 9.34941C61.0144 9.20941 61.2378 8.99941 61.4177 8.71941C61.6044 8.43941 61.7777 8.09275 61.9377 7.67941L63.6577 2.66941H62.2477L61.6478 4.79941C61.5877 5.03275 61.5277 5.26941 61.4678 5.50941L61.3078 6.20941H61.2677C61.2011 5.96275 61.1377 5.72275 61.0777 5.48941C61.0177 5.25608 60.9511 5.02608 60.8778 4.79941L60.1677 2.66941H58.6877L60.5977 7.49941L60.5277 7.75941C60.4678 7.94608 60.3677 8.09941 60.2277 8.21941C60.0944 8.34608 59.9044 8.40941 59.6577 8.40941C59.6111 8.40941 59.5611 8.40608 59.5077 8.39942C59.4611 8.39942 59.4011 8.38941 59.3277 8.36941L59.0677 9.44941C59.1677 9.48941 59.2711 9.51941 59.3778 9.53941ZM64.4326 2.66941V7.62941H65.9026V4.74941C66.0359 4.40941 66.2026 4.17275 66.4026 4.03941C66.6093 3.90608 66.8059 3.83941 66.9926 3.83941C67.0993 3.83941 67.1893 3.84608 67.2626 3.85941C67.3359 3.86608 67.4126 3.87941 67.4926 3.89941L67.7726 2.64941C67.7059 2.61608 67.6259 2.59275 67.5326 2.57941C67.4393 2.55941 67.3226 2.54941 67.1826 2.54941C66.9226 2.54941 66.6659 2.63275 66.4126 2.79941C66.1659 2.95941 65.9526 3.20608 65.7726 3.53941H65.7326L65.6326 2.66941H64.4326ZM68.417 2.66941V7.62941H69.887V2.66941H68.417ZM68.547 1.72941C68.7003 1.86941 68.9003 1.93941 69.147 1.93941C69.3936 1.93941 69.5936 1.86941 69.747 1.72941C69.9003 1.58941 69.977 1.40275 69.977 1.16941C69.977 0.936081 69.9003 0.749414 69.747 0.609414C69.5936 0.469414 69.3936 0.399414 69.147 0.399414C68.9003 0.399414 68.7003 0.469414 68.547 0.609414C68.3936 0.749414 68.317 0.936081 68.317 1.16941C68.317 1.40275 68.3936 1.58941 68.547 1.72941ZM71.6306 7.55941C71.9773 7.68608 72.314 7.74941 72.6406 7.74941C73.0873 7.74941 73.4606 7.67941 73.7606 7.53941C74.0606 7.39275 74.2873 7.19941 74.4406 6.95941C74.6006 6.71941 74.6806 6.44941 74.6806 6.14941C74.6806 5.87608 74.6206 5.64275 74.5006 5.44941C74.3806 5.25608 74.214 5.09608 74.0006 4.96941C73.794 4.83608 73.564 4.72608 73.3106 4.63941C73.104 4.57275 72.9306 4.51275 72.7906 4.45941C72.6573 4.39941 72.5573 4.33608 72.4906 4.26941C72.424 4.20275 72.3906 4.12275 72.3906 4.02941C72.3906 3.91608 72.4373 3.82275 72.5306 3.74941C72.624 3.67608 72.7673 3.63941 72.9606 3.63941C73.134 3.63941 73.3106 3.66941 73.4906 3.72941C73.6706 3.78275 73.8506 3.87275 74.0306 3.99941L74.6606 3.17941C74.4473 2.99275 74.1906 2.84275 73.8906 2.72941C73.5973 2.60941 73.2706 2.54941 72.9106 2.54941C72.344 2.54941 71.884 2.69275 71.5306 2.97941C71.184 3.25941 71.0106 3.63275 71.0106 4.09941C71.0106 4.35941 71.0706 4.58275 71.1906 4.76941C71.3173 4.95608 71.4806 5.11608 71.6806 5.24941C71.8806 5.38275 72.1006 5.49275 72.3406 5.57941C72.5206 5.64608 72.6806 5.70941 72.8206 5.76941C72.9673 5.82275 73.084 5.88608 73.1706 5.95941C73.264 6.03275 73.3106 6.12608 73.3106 6.23941C73.3106 6.36608 73.2606 6.46941 73.1606 6.54941C73.0606 6.62275 72.9006 6.65941 72.6806 6.65941C72.474 6.65941 72.2573 6.62608 72.0306 6.55941C71.8106 6.48608 71.5873 6.35941 71.3606 6.17941L70.7406 7.00941C70.9873 7.24941 71.284 7.43275 71.6306 7.55941ZM76.2742 4.25941C76.5742 4.43275 76.9076 4.51941 77.2742 4.51941C77.6342 4.51941 77.9642 4.43275 78.2642 4.25941C78.5709 4.08608 78.8109 3.84941 78.9842 3.54941C79.1642 3.24275 79.2542 2.89275 79.2542 2.49941C79.2542 2.10608 79.1642 1.75941 78.9842 1.45941C78.8109 1.15275 78.5709 0.912748 78.2642 0.739414C77.9642 0.566081 77.6342 0.479414 77.2742 0.479414C76.9076 0.479414 76.5742 0.566081 76.2742 0.739414C75.9742 0.912748 75.7342 1.15275 75.5542 1.45941C75.3742 1.75941 75.2842 2.10608 75.2842 2.49941C75.2842 2.89275 75.3742 3.24275 75.5542 3.54941C75.7342 3.84941 75.9742 4.08608 76.2742 4.25941ZM78.0142 3.83941C77.8009 3.96608 77.5542 4.02941 77.2742 4.02941C76.9942 4.02941 76.7442 3.96608 76.5242 3.83941C76.3109 3.71275 76.1409 3.53608 76.0142 3.30941C75.8942 3.07608 75.8342 2.80608 75.8342 2.49941C75.8342 2.19275 75.8942 1.92608 76.0142 1.69941C76.1409 1.46608 76.3109 1.28608 76.5242 1.15941C76.7442 1.03275 76.9942 0.969414 77.2742 0.969414C77.5542 0.969414 77.8009 1.03275 78.0142 1.15941C78.2276 1.28608 78.3942 1.46608 78.5142 1.69941C78.6409 1.92608 78.7042 2.19275 78.7042 2.49941C78.7042 2.80608 78.6409 3.07608 78.5142 3.30941C78.3942 3.53608 78.2276 3.71275 78.0142 3.83941ZM76.4642 1.49941V3.46941H77.0342V2.86941H77.3242L77.6242 3.46941H78.2242L77.8142 2.69941C77.9342 2.64608 78.0209 2.56941 78.0742 2.46941C78.1342 2.36941 78.1642 2.26608 78.1642 2.15941C78.1642 1.93275 78.0876 1.76608 77.9342 1.65941C77.7809 1.55275 77.5876 1.49941 77.3542 1.49941H76.4642ZM77.2442 2.46941H77.0342V1.92941H77.2442C77.3442 1.92941 77.4176 1.95608 77.4642 2.00941C77.5176 2.05608 77.5442 2.11608 77.5442 2.18941C77.5442 2.26941 77.5176 2.33608 77.4642 2.38941C77.4176 2.44275 77.3442 2.46941 77.2442 2.46941ZM0.745093 1.06941V7.62941H1.57509V5.02941H2.65509C3.13509 5.02941 3.55509 4.95608 3.91509 4.80941C4.28176 4.65608 4.56509 4.43275 4.76509 4.13941C4.97176 3.83941 5.07509 3.45941 5.07509 2.99941C5.07509 2.51941 4.97176 2.13941 4.76509 1.85941C4.55843 1.57941 4.27176 1.37941 3.90509 1.25941C3.53843 1.13275 3.10843 1.06941 2.61509 1.06941H0.745093ZM2.55509 4.34941H1.57509V1.73941H2.51509C3.08843 1.73941 3.51843 1.83275 3.80509 2.01941C4.09843 2.19941 4.24509 2.52608 4.24509 2.99941C4.24509 3.45941 4.10509 3.79941 3.82509 4.01941C3.55176 4.23941 3.12843 4.34941 2.55509 4.34941ZM6.86501 7.44941C7.21168 7.64941 7.58168 7.74941 7.97501 7.74941C8.37501 7.74941 8.74502 7.64941 9.08502 7.44941C9.42501 7.24941 9.69835 6.95941 9.90501 6.57941C10.1183 6.19941 10.225 5.74275 10.225 5.20941C10.225 4.66275 10.1183 4.19941 9.90501 3.81941C9.69835 3.43941 9.42501 3.14941 9.08502 2.94941C8.74502 2.74941 8.37501 2.64941 7.97501 2.64941C7.58168 2.64941 7.21168 2.74941 6.86501 2.94941C6.52501 3.14941 6.24835 3.43941 6.03501 3.81941C5.82835 4.19941 5.72501 4.66275 5.72501 5.20941C5.72501 5.74275 5.82835 6.19941 6.03501 6.57941C6.24835 6.95941 6.52501 7.24941 6.86501 7.44941ZM8.71501 6.83941C8.50168 6.99275 8.25501 7.06941 7.97501 7.06941C7.69501 7.06941 7.44835 6.99275 7.23501 6.83941C7.02835 6.67941 6.86501 6.45941 6.74501 6.17941C6.63168 5.89941 6.57501 5.57608 6.57501 5.20941C6.57501 4.83608 6.63168 4.50941 6.74501 4.22941C6.86501 3.94275 7.02835 3.72275 7.23501 3.56941C7.44835 3.40941 7.69501 3.32941 7.97501 3.32941C8.25501 3.32941 8.50168 3.40941 8.71501 3.56941C8.92835 3.72275 9.09168 3.94275 9.20502 4.22941C9.31835 4.50941 9.37502 4.83608 9.37502 5.20941C9.37502 5.57608 9.31835 5.89941 9.20502 6.17941C9.09168 6.45941 8.92835 6.67941 8.71501 6.83941ZM10.8859 2.76941L12.2359 7.62941H13.2559L13.9059 5.02941C13.9659 4.80941 14.0192 4.58608 14.0659 4.35941C14.1192 4.13275 14.1692 3.87608 14.2159 3.58941H14.2559C14.3092 3.87608 14.3592 4.13275 14.4059 4.35941C14.4592 4.57941 14.5125 4.80275 14.5659 5.02941L15.2159 7.62941H16.2859L17.5959 2.76941H16.7959L16.0859 5.57941L15.9459 6.23941C15.8992 6.45941 15.8492 6.69941 15.7959 6.95941H15.7559C15.7025 6.69941 15.6492 6.45941 15.5959 6.23941C15.5492 6.01941 15.4959 5.79941 15.4359 5.57941L14.7059 2.76941H13.8059L13.0859 5.57941L12.9259 6.23941C12.8792 6.45941 12.8292 6.69941 12.7759 6.95941H12.7359C12.6959 6.69941 12.6525 6.45941 12.6059 6.23941C12.5592 6.01941 12.5092 5.79941 12.4559 5.57941L11.7459 2.76941H10.8859ZM19.3943 7.44941C19.7543 7.64941 20.151 7.74941 20.5843 7.74941C20.9176 7.74941 21.2143 7.70275 21.4743 7.60941C21.741 7.51608 21.981 7.39608 22.1943 7.24941L21.8943 6.70941C21.7276 6.82275 21.541 6.91275 21.3343 6.97941C21.1343 7.04608 20.9176 7.07941 20.6843 7.07941C20.391 7.07941 20.121 7.00941 19.8743 6.86941C19.6276 6.72275 19.431 6.50941 19.2843 6.22941C19.1711 6.003 19.1037 5.733 19.082 5.41941H22.3343C22.3543 5.33941 22.3643 5.25941 22.3643 5.17941C22.371 5.09941 22.3743 5.01608 22.3743 4.92941C22.3743 4.46941 22.301 4.06941 22.1543 3.72941C22.0076 3.38941 21.7876 3.12608 21.4943 2.93941C21.2076 2.74608 20.8576 2.64941 20.4443 2.64941C20.071 2.64941 19.7176 2.75275 19.3843 2.95941C19.051 3.16608 18.7776 3.45941 18.5643 3.83941C18.351 4.21941 18.2443 4.67275 18.2443 5.19941C18.2443 5.73941 18.3476 6.19941 18.5543 6.57941C18.761 6.95275 19.041 7.24275 19.3943 7.44941ZM21.6343 4.76941H19.0962C19.1257 4.50574 19.185 4.28241 19.2743 4.09941C19.4143 3.82608 19.591 3.62941 19.8043 3.50941C20.0176 3.38275 20.2343 3.31941 20.4543 3.31941C20.8343 3.31941 21.1243 3.44608 21.3243 3.69941C21.531 3.94608 21.6343 4.30275 21.6343 4.76941ZM23.5752 2.76941V7.62941H24.3952V4.50941C24.5619 4.09608 24.7552 3.80608 24.9752 3.63941C25.2019 3.47275 25.4186 3.38941 25.6252 3.38941C25.7252 3.38941 25.8052 3.39608 25.8652 3.40941C25.9319 3.41608 26.0019 3.42941 26.0752 3.44941L26.2552 2.74941C26.1752 2.70941 26.0952 2.68275 26.0152 2.66941C25.9352 2.65608 25.8419 2.64941 25.7352 2.64941C25.4552 2.64941 25.1952 2.73941 24.9552 2.91941C24.7153 3.09941 24.5152 3.34275 24.3552 3.64941H24.3252L24.2552 2.76941H23.5752ZM27.7244 7.44941C28.0844 7.64941 28.4811 7.74941 28.9144 7.74941C29.2477 7.74941 29.5444 7.70275 29.8044 7.60941C30.0711 7.51608 30.3111 7.39608 30.5244 7.24941L30.2244 6.70941C30.0577 6.82275 29.8711 6.91275 29.6644 6.97941C29.4644 7.04608 29.2477 7.07941 29.0144 7.07941C28.7211 7.07941 28.4511 7.00941 28.2044 6.86941C27.9577 6.72275 27.7611 6.50941 27.6144 6.22941C27.5012 6.003 27.4337 5.733 27.4121 5.41941H30.6644C30.6844 5.33941 30.6944 5.25941 30.6944 5.17941C30.7011 5.09941 30.7044 5.01608 30.7044 4.92941C30.7044 4.46941 30.6311 4.06941 30.4844 3.72941C30.3377 3.38941 30.1177 3.12608 29.8244 2.93941C29.5377 2.74608 29.1877 2.64941 28.7744 2.64941C28.4011 2.64941 28.0477 2.75275 27.7144 2.95941C27.3811 3.16608 27.1077 3.45941 26.8944 3.83941C26.6811 4.21941 26.5744 4.67275 26.5744 5.19941C26.5744 5.73941 26.6777 6.19941 26.8844 6.57941C27.0911 6.95275 27.3711 7.24275 27.7244 7.44941ZM29.9644 4.76941H27.4262C27.4557 4.50574 27.5151 4.28241 27.6044 4.09941C27.7444 3.82608 27.9211 3.62941 28.1344 3.50941C28.3477 3.38275 28.5644 3.31941 28.7844 3.31941C29.1644 3.31941 29.4544 3.44608 29.6544 3.69941C29.8611 3.94608 29.9644 4.30275 29.9644 4.76941ZM32.0953 7.08941C32.462 7.52941 32.952 7.74941 33.5653 7.74941C33.852 7.74941 34.122 7.68275 34.3753 7.54941C34.6287 7.40941 34.8487 7.24608 35.0353 7.05941H35.0653L35.1353 7.62941H35.8153V0.509414H34.9853V2.37941L35.0253 3.20941C34.812 3.02941 34.602 2.89275 34.3953 2.79941C34.1953 2.69941 33.952 2.64941 33.6653 2.64941C33.292 2.64941 32.9453 2.75275 32.6253 2.95941C32.3053 3.16608 32.0453 3.46275 31.8453 3.84941C31.652 4.22941 31.5553 4.68275 31.5553 5.20941C31.5553 6.01608 31.7353 6.64275 32.0953 7.08941ZM34.3853 6.88941C34.1853 7.00275 33.972 7.05941 33.7453 7.05941C33.3187 7.05941 32.9887 6.89608 32.7553 6.56941C32.522 6.23608 32.4053 5.77941 32.4053 5.19941C32.4053 4.82608 32.4687 4.50275 32.5953 4.22941C32.722 3.94941 32.8887 3.73275 33.0953 3.57941C33.3087 3.41941 33.5453 3.33941 33.8053 3.33941C34.0053 3.33941 34.202 3.37941 34.3953 3.45941C34.5887 3.53275 34.7853 3.66275 34.9853 3.84941V6.38941C34.7853 6.60941 34.5853 6.77608 34.3853 6.88941ZM40.9042 7.58941C41.1442 7.69608 41.3775 7.74941 41.6042 7.74941C41.9708 7.74941 42.3142 7.64608 42.6342 7.43941C42.9542 7.23275 43.2108 6.93275 43.4042 6.53941C43.6042 6.14608 43.7042 5.67275 43.7042 5.11941C43.7042 4.61941 43.6308 4.18608 43.4842 3.81941C43.3375 3.44608 43.1208 3.15941 42.8342 2.95941C42.5475 2.75275 42.1942 2.64941 41.7742 2.64941C41.5075 2.64941 41.2408 2.71608 40.9742 2.84941C40.7142 2.97608 40.4742 3.13608 40.2542 3.32941L40.2742 2.44941V0.509414H39.4542V7.62941H40.1142L40.1842 7.12941H40.2142C40.4342 7.32275 40.6642 7.47608 40.9042 7.58941ZM42.1742 6.82941C41.9675 6.98275 41.7308 7.05941 41.4642 7.05941C41.3042 7.05941 41.1175 7.02275 40.9042 6.94941C40.6975 6.86941 40.4875 6.73608 40.2742 6.54941V3.99941C40.5075 3.77941 40.7308 3.61608 40.9442 3.50941C41.1642 3.39608 41.3742 3.33941 41.5742 3.33941C41.8808 3.33941 42.1275 3.41608 42.3142 3.56941C42.5008 3.71608 42.6375 3.92608 42.7242 4.19941C42.8108 4.46608 42.8542 4.77608 42.8542 5.12941C42.8542 5.52941 42.7942 5.87608 42.6742 6.16941C42.5542 6.45608 42.3875 6.67608 42.1742 6.82941ZM44.7124 9.68941C44.8124 9.70941 44.9158 9.71941 45.0224 9.71941C45.3491 9.71941 45.6258 9.64608 45.8524 9.49941C46.0791 9.35275 46.2724 9.14942 46.4324 8.88941C46.5924 8.63608 46.7291 8.34941 46.8424 8.02941L48.6724 2.76941H47.8724L47.0024 5.45941C46.9424 5.67275 46.8758 5.89941 46.8024 6.13941C46.7358 6.37275 46.6658 6.60275 46.5924 6.82941H46.5524C46.4791 6.60275 46.4024 6.36941 46.3224 6.12941C46.2424 5.88941 46.1624 5.66608 46.0824 5.45941L45.0924 2.76941H44.2424L46.1924 7.63941L46.0824 7.99941C45.9824 8.29941 45.8424 8.54608 45.6624 8.73941C45.4891 8.93941 45.2624 9.03941 44.9824 9.03941C44.9291 9.03941 44.8724 9.03275 44.8124 9.01941C44.7524 9.01275 44.6924 8.99941 44.6324 8.97941L44.4524 9.61941C44.5324 9.64608 44.6191 9.66941 44.7124 9.68941Z\",\n fill: \"url(#paint0_linear_5277_64421)\"\n })), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"paint0_linear_5277_64421\",\n x1: 53,\n y1: 12.0596,\n x2: 80,\n y2: 12.0596,\n gradientUnits: \"userSpaceOnUse\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#3E36DC\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#E31B5D\"\n })))));\n};\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgPoweredByNyrisColored, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/powered_by_nyris_colored.08d00bae.svg\";\nexport { ForwardRef as ReactComponent };","import React, { useState } from 'react';\nimport { ReactComponent as PoweredByNyrisImage } from 'common/assets/images/powered_by_nyris.svg';\nimport { ReactComponent as PoweredByNyrisImageColored } from 'common/assets/images/powered_by_nyris_colored.svg';\n\nfunction PoweredByNyris() {\n const [isHovered, setHovered] = useState(false);\n\n const handleMouseOver = () => {\n setHovered(true);\n };\n\n const handleMouseOut = () => {\n setHovered(false);\n };\n\n return (\n <div\n className=\"powered-by-nyris\"\n style={{\n display: 'flex',\n padding: '9px 0px',\n justifyContent: 'center',\n borderTop: '1px solid #E0E0E0',\n }}\n onMouseOver={handleMouseOver}\n onMouseOut={handleMouseOut}\n >\n {isHovered && (\n <PoweredByNyrisImageColored\n style={{ cursor: 'pointer' }}\n onClick={() => {\n window.open('https://www.nyris.io', '_blank');\n }}\n />\n )}\n {!isHovered && (\n <PoweredByNyrisImage\n style={{ cursor: 'pointer' }}\n onClick={() => {\n window.open('https://www.nyris.io', '_blank');\n }}\n color=\"#2B2C46\"\n />\n )}\n </div>\n );\n}\n\nexport default PoweredByNyris;\n","import { Box } from '@material-ui/core';\nimport { ReactNode } from 'components/common';\nimport React, { memo, useEffect, useState } from 'react';\nimport { useMediaQuery } from 'react-responsive';\nimport { useHistory } from 'react-router-dom';\nimport {\n clearPostFilter,\n onResetRequestImage,\n setUpdateSession,\n} from 'Store/search/Search';\nimport { useAppDispatch, useAppSelector } from 'Store/Store';\nimport { AppState } from '../types';\nimport './appMobile.scss';\nimport './common.scss';\nimport FooterMobile from './FooterMobile';\nimport HeaderMobile from './HeaderMobile';\nimport Header from './Header';\nimport { createSessionByApi } from 'services/session';\nimport { isUndefined } from 'lodash';\nimport AppMobile from './AppMobile';\nimport jQuery from 'jquery';\nimport Loading from './Loading';\nimport i18n from 'i18next';\nimport { initReactI18next } from 'react-i18next';\nimport { translations } from 'translations';\nimport { useAuth0 } from '@auth0/auth0-react';\nimport InstantSearchProvider from './Provider/InstantSearchProvider';\nimport PoweredByNyris from './PoweredByNyris';\nimport { useQuery } from 'hooks/useQuery';\n\ndeclare var psol: any;\n\njQuery(document).ready(function () {\n psol.core.setUserInfo({\n server_type: 'oem_apps_cadenas_webcomponentsdemo',\n title: 'Herr',\n firstname: 'Max',\n lastname: 'Mustermann',\n userfirm: 'CADENAS GmbH',\n street: 'Berliner Allee 28 b+c',\n zip: '86153',\n city: 'Augsburg',\n country: 'de',\n phone: '+49 (0) 821 2 58 58 0-0',\n fax: '+49 (0) 821 2 58 58 0-999',\n email: 'info@cadenas.de',\n });\n psol.core.setServiceBaseUrl('https://webapi.partcommunity.com');\n window.onpageshow = function(event: any) {\n if (event.persisted) {\n window.location.reload();\n }\n };\n});\n\ni18n.use(initReactI18next).init({\n resources: translations,\n fallbackLng: 'en',\n interpolation: {\n escapeValue: false,\n },\n returnNull: false,\n});\n\nfunction Layout({ children }: ReactNode): JSX.Element {\n const dispatch = useAppDispatch();\n const { settings, search } = useAppSelector<AppState>((state: any) => state);\n const { loadingSearchAlgolia } = search;\n const isMobile = useMediaQuery({ query: '(max-width: 776px)' });\n const [isOpenFilter, setOpenFilter] = useState<boolean>(false);\n const history = useHistory();\n const query = useQuery();\n const searchQuery = query.get('query') || '';\n\n let isShowHeaderMobile =\n (isMobile && history.location?.pathname === '/result') ||\n history.location?.pathname === '/';\n const language = useAppSelector(state => state.settings.language);\n const { isAuthenticated } = useAuth0();\n const { auth0, showPoweredByNyris } = settings;\n const showApp = !auth0.enabled || (auth0.enabled && isAuthenticated);\n i18n.changeLanguage(language);\n\n useEffect(() => {\n const createSession = async () => {\n let payload = await createSessionByApi(settings);\n dispatch(setUpdateSession(payload));\n };\n\n createSession().catch(console.log);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n if (history.location?.pathname === '/') {\n document.title = settings.appTitle || '';\n dispatch(onResetRequestImage(''));\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [history.location]);\n\n let HeaderApp: any;\n let FooterApp: any;\n let classNameBoxVersion: string = 'newVersion';\n if (isMobile) {\n classNameBoxVersion = 'mobile';\n FooterApp = FooterMobile;\n HeaderApp = HeaderMobile;\n } else {\n HeaderApp = Header;\n }\n\n // First we get the viewport height and we multiple it by 1% to get a value for a vh unit\n let vh = window.innerHeight * 0.01;\n // Then we set the value in the --vh custom property to the root of the document\n document.documentElement.style.setProperty('--vh', `${vh}px`);\n\n useEffect(() => {\n const handleResize = () => {\n let vh = window.innerHeight * 0.01;\n document.documentElement.style.setProperty('--vh', `${vh}px`);\n };\n\n window.addEventListener('resize', handleResize);\n\n return () => {\n window.removeEventListener('resize', handleResize);\n };\n }, []);\n\n useEffect(() => {\n if (!(search.requestImage && searchQuery)) {\n dispatch(clearPostFilter());\n }\n }, [search.requestImage, searchQuery, dispatch, search.regions]);\n\n useEffect(() => {\n dispatch(clearPostFilter());\n }, [dispatch, search.selectedRegion]);\n\n return (\n <div style={{ position: 'relative' }}>\n {loadingSearchAlgolia && (\n <Box className=\"box-wrap-loading\" style={{ zIndex: 99999999 }}>\n <Loading />\n </Box>\n )}\n <InstantSearchProvider>\n {isMobile && showApp && <AppMobile>{children}</AppMobile>}\n {!isMobile && showApp && (\n <div className={`layout-main-${classNameBoxVersion}`}>\n <div\n className={\n !isMobile\n ? `box-header-${classNameBoxVersion}-main`\n : isShowHeaderMobile\n ? `box-header-${classNameBoxVersion}-main`\n : ''\n }\n style={{\n ...(classNameBoxVersion === 'newVersion'\n ? { background: settings.theme?.headerColor }\n : {}),\n }}\n >\n <HeaderApp\n onToggleFilterMobile={(show: boolean) => {\n setOpenFilter(isUndefined(show) ? !isOpenFilter : show);\n }}\n />\n </div>\n\n <div className={`box-body-${classNameBoxVersion}-wrap-main`}>\n {children}\n </div>\n {isMobile && (\n <div className=\"footer-wrap-main\">\n <FooterApp />\n </div>\n )}\n {showPoweredByNyris && <PoweredByNyris />}\n </div>\n )}\n {!showApp && <> {children}</>}\n </InstantSearchProvider>\n </div>\n );\n}\n\nexport default memo(Layout);\n","export const translations = {\n en: {\n translation: {\n Search: 'Search',\n 'Drag and drop': 'Drag and drop',\n 'an image here': 'an image here',\n 'Manufacturer Number': 'Manufacturer No.',\n 'Mfr. No.': 'Mfr. No.',\n 'Close group': 'Close group',\n 'Show group': 'Show group',\n 'Adjust the search frame around your object for improved results':\n 'Adjust the search frame around your object for improved results',\n 'Crop the image for better results': 'Crop the image for better results',\n 'Items per page': 'Items per page',\n 'Search with an image': 'Search with an image',\n 'Clear text search': 'Clear text search',\n 'View details': 'View details',\n 'Clear image search': 'Clear image search ',\n 'Add or change pre-filter': 'Add or change pre-filter',\n 'Expand all': 'Expand all',\n 'Collapse all': 'Collapse all',\n Brand: 'Brand',\n loading: 'loading',\n 'No products were found matching your search criteria.':\n 'No products were found matching your search criteria.',\n 'Please upload an image or enter a keyword to search.':\n 'Please upload an image or enter a keyword to search.',\n 'No matches found': 'No matches found',\n 'No matches found for your request': 'No matches found for your request',\n 'Clear all': 'Clear all',\n Cancel: 'Cancel',\n Apply: 'Apply',\n },\n },\n de: {\n translation: {\n Search: 'Suche',\n 'Drag and drop': 'Bild hierher ziehen',\n 'an image here': '',\n 'Mfr. No.': 'Herst. Teile-Nr.',\n 'Manufacturer Number': 'Herstellerteilenummer',\n 'Close group': 'Schließe Gruppe',\n 'Show group': 'Zeige Gruppe',\n 'Adjust the search frame around your object for improved results':\n 'Anpassen des Rahmens für bessere Ergebnisse',\n 'Crop the image for better results': 'Zuschneiden für bessere Ergebnisse',\n 'Items per page': 'Artikel pro Seite',\n 'Search with an image': 'Bildsuche',\n 'Clear text search': 'Suchtext löschen',\n 'View details': 'Details anzeigen',\n 'Clear image search': 'Bildsuche zurück setzen',\n 'Add or change pre-filter': 'Vorfilter hinzufügen oder ändern',\n 'Expand all': 'Alles anzeigen',\n 'Collapse all': 'Alles einklappen',\n Brand: 'Marke',\n loading: 'Lädt',\n 'No products were found matching your search criteria.':\n 'Keine Produkte entsprechen Ihren Suchkriterien.',\n 'Please upload an image or enter a keyword to search.':\n 'Für die Suche bitte Bild hochladen oder Stichwort eingeben.',\n 'No matches found': 'Keine Treffer für Ihre Anfrage gefunden',\n 'No matches found for your request':\n 'Keine Treffer für Ihre Anfrage gefunden',\n 'Clear all': 'Alles löschen',\n Cancel: 'Abbrechen',\n Apply: 'Anwenden',\n },\n },\n pt: {\n translation: {\n Search: 'Busca',\n 'Drag and drop': 'Escolha uma imagem',\n 'an image here': '',\n 'Manufacturer Number': 'Número do fabricante',\n 'Mfr. No.': 'Nr. do Fab',\n 'Close group': 'Fechar grupo',\n 'Show group': 'Mostrar grupo',\n 'Adjust the search frame around your object for improved results':\n 'Ajuste a caixa de busca para melhores resultados',\n 'Crop the image for better results':\n 'Ajuste o campo de imagem para melhores resultados',\n 'Items per page': 'Itens por página',\n 'Search with an image': 'Busque com uma imagem',\n 'Clear text search': 'Limpar busca',\n 'View details': 'Ver detalhes',\n 'Clear image search': 'Limpar imagem',\n 'Add or change pre-filter': 'Adicionar ou selecionar pre-filtro',\n 'Expand all': 'Expandir',\n 'Collapse all': 'esconder tudo',\n Brand: 'Marca',\n loading: 'Carregando',\n 'No products were found matching your search criteria.':\n 'Nenhum produto foi encontrado com estes critérios ',\n 'Please upload an image or enter a keyword to search.':\n 'Faça o upload de uma imagem ou busque via texto',\n 'No matches found': 'No matches found',\n 'No matches found for your request': 'No matches found for your request',\n 'Clear all': 'Clear all',\n Cancel: 'Cancel',\n Apply: 'Apply',\n },\n },\n};\n","var _path;\nvar _excluded = [\"svgRef\", \"title\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport React from \"react\";\nvar SvgIconUploadDownward = function SvgIconUploadDownward(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 48,\n height: 48,\n viewBox: \"0 0 48 48\",\n fill: \"none\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M22.7016 39.816L22.6416 39.7584H22.6392L11.1192 28.2384C10.3704 27.4896 10.3704 26.2728 11.1192 25.524C11.4816 25.1616 11.964 24.9624 12.4776 24.9624C12.9912 24.9624 13.4736 25.1616 13.836 25.524L22.0776 33.7656V1.92C22.0776 0.8616 22.9392 0 23.9976 0C25.056 0 25.9176 0.8616 25.9176 1.92V33.7656L34.1592 25.524C34.5216 25.1616 35.004 24.9624 35.5176 24.9624C36.0312 24.9624 36.5136 25.1616 36.876 25.524C37.6248 26.2728 37.6248 27.4896 36.876 28.2384L25.356 39.7584C25.2672 39.8472 25.1688 39.9288 25.0632 39.9984C25.0176 40.0296 24.9648 40.0584 24.912 40.0848L24.9081 40.0869C24.8472 40.1197 24.7907 40.1501 24.732 40.1736C24.672 40.1976 24.6072 40.2192 24.5448 40.236C24.4872 40.2552 24.432 40.2696 24.3744 40.2816C24.2496 40.308 24.1224 40.32 23.9976 40.32C23.8728 40.32 23.7456 40.3056 23.6208 40.2816C23.5632 40.2696 23.508 40.2552 23.4528 40.236C23.388 40.2192 23.3256 40.2 23.2632 40.1736C23.2032 40.1496 23.148 40.1208 23.0928 40.0896C23.0328 40.0608 22.9824 40.032 22.932 39.9984C22.8504 39.9432 22.7736 39.8808 22.7016 39.816ZM44.16 34.56C44.16 33.5016 45.0216 32.64 46.08 32.64C47.1384 32.64 48 33.5016 48 34.56V46.08C48 47.1384 47.1384 48 46.08 48H1.92C0.8616 48 0 47.1384 0 46.08V34.56C0 33.5016 0.8616 32.64 1.92 32.64C2.9784 32.64 3.84 33.5016 3.84 34.56V44.16H44.16V34.56Z\",\n fill: \"currentColor\"\n })));\n};\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgIconUploadDownward, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/IconUploadDownward.6b47ab39.svg\";\nexport { ForwardRef as ReactComponent };","import { Box } from '@material-ui/core';\nimport React, { memo } from 'react';\nimport { useDropzone } from 'react-dropzone';\nimport { useAppDispatch, useAppSelector } from 'Store/Store';\nimport { createImage, find, findRegions } from 'services/image';\nimport {\n setSearchResults,\n setRequestImage,\n setImageSearchInput,\n updateStatusLoading,\n loadingActionResults,\n setRegions,\n setSelectedRegion,\n} from 'Store/search/Search';\nimport { useHistory } from 'react-router-dom';\nimport { ReactComponent as IconDownload } from 'common/assets/icons/IconUploadDownward.svg';\n\nimport { RectCoords } from '@nyris/nyris-api';\nimport { useTranslation } from 'react-i18next';\nimport { isEmpty } from 'lodash';\nimport Loading from './Loading';\n\ninterface Props {\n acceptTypes: any;\n onChangeLoading?: any;\n isLoading?: boolean;\n}\n\nfunction DragDropFile(props: Props) {\n const history = useHistory();\n const dispatch = useAppDispatch();\n const { onChangeLoading, isLoading } = props;\n const searchState = useAppSelector(state => state);\n const {\n settings,\n search: { preFilter },\n } = searchState;\n const { t } = useTranslation();\n const { getRootProps, getInputProps, isDragActive } = useDropzone({\n onDrop: async (fs: File[]) => {\n history.push('/result');\n dispatch(updateStatusLoading(true));\n dispatch(loadingActionResults());\n onChangeLoading(true);\n let payload: any;\n let filters: any[] = [];\n console.log('fs', fs);\n dispatch(setImageSearchInput(URL.createObjectURL(fs[0])));\n let image = await createImage(fs[0]);\n dispatch(setRequestImage(image));\n const preFilterValues = [\n {\n key: settings.visualSearchFilterKey,\n values: Object.keys(preFilter) as string[],\n },\n ];\n let region: RectCoords | undefined;\n if (settings.regions) {\n let res = await findRegions(image, settings);\n dispatch(setRegions(res.regions));\n region = res.selectedRegion;\n dispatch(setSelectedRegion(region));\n }\n\n return find({\n image,\n settings,\n region,\n filters: !isEmpty(preFilter) ? preFilterValues : undefined,\n }).then((res: any) => {\n res?.results.map((item: any) => {\n filters.push({\n sku: item.sku,\n score: item.score,\n });\n });\n payload = {\n ...res,\n filters,\n };\n dispatch(setSearchResults(payload));\n onChangeLoading(false);\n dispatch(updateStatusLoading(false));\n return;\n });\n },\n });\n\n return (\n <Box\n className={`box-content-main`}\n style={{ marginTop: 32, paddingTop: 0 }}\n >\n {isLoading && <Loading />}\n\n <div\n className={`box-border-none`}\n style={{ position: 'relative' }}\n {...getRootProps({\n onClick: e => {\n e.stopPropagation();\n },\n })}\n >\n <>\n <Box\n className={`box-content-drop ${isDragActive ? 'drag-active' : ''}`}\n {...getRootProps({\n onClick: e => {\n e.stopPropagation();\n },\n })}\n >\n <Box style={{ marginBottom: 16 }}>\n <IconDownload width={48} height={48} />\n </Box>\n <label htmlFor=\"select_file\" className=\"\" style={{ fontSize: 14 }}>\n <span className=\"fw-700 text-f14\" style={{ paddingRight: '4px' }}>\n {t('Drag and drop')}\n </span>\n {t('an image here')}\n </label>\n <input\n {...getInputProps()}\n type=\"file\"\n name=\"file\"\n id=\"select_file\"\n className=\"inputFile\"\n placeholder=\"Choose photo\"\n style={{ display: 'block', cursor: 'pointer' }}\n />\n </Box>\n </>\n </div>\n </Box>\n );\n}\n\nexport default memo(DragDropFile);\n","import { Box, Button, Tooltip } from '@material-ui/core';\nimport IconButton from '@material-ui/core/IconButton';\nimport ClearOutlinedIcon from '@material-ui/icons/ClearOutlined';\nimport CloseIcon from '@material-ui/icons/Close';\nimport IconCamera from 'common/assets/icons/camera.svg';\nimport { useQuery } from 'hooks/useQuery';\nimport { debounce, isEmpty } from 'lodash';\nimport React, { memo, useCallback, useEffect, useRef, useState } from 'react';\nimport { useDropzone } from 'react-dropzone';\nimport { connectSearchBox } from 'react-instantsearch-dom';\nimport { useMediaQuery } from 'react-responsive';\nimport { useHistory } from 'react-router-dom';\nimport { createImage, find, findRegions } from 'services/image';\nimport { ReactComponent as IconFilter } from 'common/assets/icons/filter_settings.svg';\nimport { ReactComponent as IconSearch } from 'common/assets/icons/icon_search.svg';\n\nimport {\n reset,\n setImageSearchInput,\n setRequestImage,\n setSearchResults,\n updateStatusLoading,\n loadingActionResults,\n setRegions,\n setSelectedRegion,\n updateQueryText,\n} from 'Store/search/Search';\nimport { useAppDispatch, useAppSelector } from 'Store/Store';\nimport DefaultModal from 'components/modal/DefaultModal';\nimport PreFilterComponent from 'components/pre-filter';\nimport { RectCoords } from '@nyris/nyris-api';\nimport { useTranslation } from 'react-i18next';\n\nconst SearchBox = (props: any) => {\n const { refine, onToggleFilterMobile }: any = props;\n // const containerRefInputMobile = useRef<HTMLDivElement>(null);\n const stateGlobal = useAppSelector(state => state);\n const { search, settings } = stateGlobal;\n const { imageThumbSearchInput, preFilter, requestImage, selectedRegion } =\n search;\n const focusInp: any = useRef<HTMLDivElement | null>(null);\n const history = useHistory();\n const [valueInput, setValueInput] = useState<string>('');\n const dispatch = useAppDispatch();\n const isMobile = useMediaQuery({ query: '(max-width: 776px)' });\n const query = useQuery();\n const [isOpenModalFilterDesktop, setToggleModalFilterDesktop] =\n useState<boolean>(false);\n const { t } = useTranslation();\n const isAlgoliaEnabled = settings.algolia?.enabled;\n\n useEffect(() => {\n if (focusInp?.current) {\n focusInp?.current.focus();\n }\n }, [focusInp]);\n\n useEffect(() => {\n const searchQuery = query.get('query') || '';\n if (!isEmpty(searchQuery)) {\n setValueInput(searchQuery);\n dispatch(updateQueryText(searchQuery));\n\n if (isAlgoliaEnabled) {\n refine(searchQuery);\n // not an ideal solution: fixes text search not working from landing page\n setTimeout(() => {\n refine(searchQuery);\n }, 100);\n }\n }\n }, [query, refine, dispatch, isAlgoliaEnabled]);\n\n useEffect(() => {\n if (imageThumbSearchInput) {\n setValueInput('');\n if (isAlgoliaEnabled) {\n refine('');\n }\n history.push('/result');\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [imageThumbSearchInput, isAlgoliaEnabled]);\n\n const searchOrRedirect = useCallback(\n debounce((value: any, withImage = true) => {\n if (!isAlgoliaEnabled) {\n dispatch(updateQueryText(value));\n let payload: any;\n let filters: any[] = [];\n const preFilterValues = [\n {\n key: settings.visualSearchFilterKey,\n values: Object.keys(preFilter) as string[],\n },\n ];\n if (value || requestImage) {\n dispatch(updateStatusLoading(true));\n find({\n image: withImage\n ? (requestImage?.canvas as HTMLCanvasElement)\n : undefined,\n settings,\n filters: !isEmpty(preFilter) ? preFilterValues : undefined,\n region: withImage ? selectedRegion : undefined,\n text: value,\n })\n .then((res: any) => {\n res?.results.map((item: any) => {\n filters.push({\n sku: item.sku,\n score: item.score,\n });\n });\n payload = {\n ...res,\n filters,\n };\n\n dispatch(setSearchResults(payload));\n dispatch(updateStatusLoading(false));\n })\n .catch((e: any) => {\n console.log('error input search', e);\n dispatch(updateStatusLoading(false));\n });\n } else {\n dispatch(setSearchResults([]));\n }\n }\n\n if (value) {\n history.push({\n pathname: '/result',\n search: `?query=${value}`,\n });\n } else {\n history.push('/result');\n }\n }, 500),\n [requestImage, preFilter, selectedRegion, isAlgoliaEnabled],\n );\n\n const { getInputProps } = useDropzone({\n onDrop: async (fs: File[]) => {\n if (!fs[0]) return;\n dispatch(updateStatusLoading(true));\n dispatch(loadingActionResults());\n if (history.location.pathname !== '/result') {\n history.push('/result');\n }\n let payload: any;\n let filters: any[] = [];\n let region: RectCoords | undefined;\n\n dispatch(setImageSearchInput(URL.createObjectURL(fs[0])));\n let image = await createImage(fs[0]);\n dispatch(setRequestImage(image));\n const preFilterValues = [\n {\n key: settings.visualSearchFilterKey,\n values: Object.keys(preFilter) as string[],\n },\n ];\n\n if (settings.regions) {\n let res = await findRegions(image, settings);\n dispatch(setRegions(res.regions));\n region = res.selectedRegion;\n dispatch(setSelectedRegion(region));\n }\n\n return find({\n image,\n settings,\n filters: !isEmpty(preFilter) ? preFilterValues : undefined,\n region,\n })\n .then((res: any) => {\n res?.results.map((item: any) => {\n filters.push({\n sku: item.sku,\n score: item.score,\n });\n });\n payload = {\n ...res,\n filters,\n };\n dispatch(setSearchResults(payload));\n dispatch(updateStatusLoading(false));\n })\n .catch((e: any) => {\n console.log('error input search', e);\n dispatch(updateStatusLoading(false));\n });\n },\n });\n\n const onChangeText = (event: any) => {\n setValueInput(event.currentTarget.value);\n\n searchOrRedirect(event.currentTarget.value);\n if (event.currentTarget.value === '') {\n setValueInput('');\n if (isAlgoliaEnabled) {\n refine('');\n }\n }\n };\n\n return (\n <div className=\"wrap-input-search-field\">\n <div className=\"box-input-search d-flex\">\n <div className=\"input-wrapper\">\n <Box className=\"box-inp\">\n <Tooltip\n title={\n !isEmpty(preFilter)\n ? Object.keys(preFilter).join(', ')\n : t('Add or change pre-filter')\n }\n placement=\"top\"\n arrow={true}\n disableHoverListener={!settings.preFilterOption}\n >\n <Box\n className=\"pre-filter-icon\"\n style={{\n cursor: settings.preFilterOption ? 'pointer' : 'default',\n }}\n onClick={() =>\n settings.preFilterOption\n ? setToggleModalFilterDesktop(true)\n : false\n }\n >\n {settings.preFilterOption && (\n <div\n className=\"icon-hover\"\n style={{\n ...(!isEmpty(preFilter)\n ? {\n backgroundColor: `${settings.theme?.primaryColor}`,\n }\n : {\n backgroundColor: '#2B2C46',\n }),\n }}\n >\n <IconFilter color=\"white\" />\n </div>\n )}\n {!settings.preFilterOption && (\n <IconSearch width={16} height={16} />\n )}\n {!isEmpty(preFilter) && (\n <div\n style={{\n position: 'absolute',\n top: '5px',\n left: '35px',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n background: 'white',\n width: '12px',\n height: '12px',\n borderRadius: '100%',\n }}\n >\n <div\n style={{\n width: '8px',\n height: '8px',\n background: settings.theme?.primaryColor,\n borderRadius: '100%',\n strokeWidth: '2px',\n }}\n ></div>\n </div>\n )}\n </Box>\n </Tooltip>\n <Box\n style={{\n height: '75%',\n order: 1,\n }}\n >\n {imageThumbSearchInput && (\n <Box\n style={{\n border: `2px solid ${settings.theme?.primaryColor}`,\n backgroundColor: `${settings.theme?.primaryColor}26`,\n marginRight: '5px',\n }}\n className=\"box-image-search-thumb\"\n display={'flex'}\n >\n <img\n src={imageThumbSearchInput}\n style={{ objectFit: 'contain' }}\n alt=\"img_search\"\n />\n <Tooltip\n title={t('Clear image search')}\n placement=\"top\"\n arrow={true}\n >\n <button\n type=\"button\"\n onClick={() => {\n if (!valueInput) {\n dispatch(reset(''));\n history.push('/');\n }\n dispatch(reset(''));\n if (isAlgoliaEnabled) {\n refine(valueInput);\n } else {\n searchOrRedirect(valueInput, false);\n }\n }}\n >\n <CloseIcon\n style={{\n fontSize: 20,\n color: settings.theme?.primaryColor,\n }}\n />\n </button>\n </Tooltip>\n </Box>\n )}\n </Box>\n\n <input\n style={{\n border: '0px',\n width: '100%',\n fontSize: 14,\n color: '#2B2C46',\n }}\n className=\"input-search\"\n placeholder={t('Search')}\n value={valueInput}\n onChange={onChangeText}\n ref={focusInp}\n />\n </Box>\n\n {history.location.pathname === '/result' && valueInput && (\n <Button\n className=\"btn-clear-text\"\n onClick={() => {\n if (imageThumbSearchInput) {\n if (!isAlgoliaEnabled) {\n searchOrRedirect('');\n }\n setValueInput('');\n if (isAlgoliaEnabled) {\n refine('');\n }\n return;\n }\n setValueInput('');\n if (isAlgoliaEnabled) {\n refine('');\n }\n dispatch(reset(''));\n history.push('/');\n }}\n >\n <Tooltip\n title={t('Clear text search')}\n placement=\"top\"\n arrow={true}\n >\n <ClearOutlinedIcon style={{ fontSize: 16, color: '#2B2C46' }} />\n </Tooltip>\n </Button>\n )}\n {!isMobile ? (\n <div className=\"wrap-box-input-mobile d-flex\">\n <input\n accept=\"image/*\"\n id=\"icon-button-file\"\n type=\"file\"\n style={{ display: 'none' }}\n {...getInputProps({\n onClick: e => {\n e.stopPropagation();\n },\n })}\n />\n <Tooltip\n title={t('Search with an image')}\n placement=\"top\"\n arrow={true}\n >\n <label htmlFor=\"icon-button-file\">\n <IconButton\n color=\"primary\"\n aria-label=\"upload picture\"\n component=\"span\"\n style={{\n width: 32,\n height: 32,\n borderRadius: '100%',\n padding: 7,\n }}\n >\n <img src={IconCamera} alt=\"\" width={18} height={18} />\n </IconButton>\n </label>\n </Tooltip>\n </div>\n ) : (\n <Box>\n <Button\n className=\"btn-mobile-filter\"\n onClick={onToggleFilterMobile}\n >\n <IconFilter width={18} height={18} />\n </Button>\n </Box>\n )}\n </div>\n </div>\n {settings.preFilterOption && (\n <DefaultModal\n openModal={isOpenModalFilterDesktop}\n handleClose={() => setToggleModalFilterDesktop(false)}\n classNameModal=\"wrap-filter-desktop\"\n classNameComponentChild=\"bg-white box-filter-desktop\"\n >\n <PreFilterComponent\n handleClose={() => setToggleModalFilterDesktop(false)}\n />\n </DefaultModal>\n )}\n </div>\n );\n};\n\nconst CustomSearchBox = connectSearchBox<any>(memo(SearchBox));\nexport default CustomSearchBox;\n","import { Box } from '@material-ui/core';\nimport React, { useState } from 'react';\nimport './common.scss';\nimport algoliasearch from 'algoliasearch/lite';\nimport DragDropFile from 'components/DragDropFile';\nimport CustomSearchBox from 'components/input/inputSearch';\nimport { connectInfiniteHits } from 'react-instantsearch-dom';\nimport { useAppSelector } from 'Store/Store';\nimport { AlgoliaSettings } from '../../types';\n\nfunction AppMD() {\n const { settings } = useAppSelector(state => state);\n const [isLoading, setLoading] = useState<boolean>(false);\n const { apiKey, appId, indexName } = settings.algolia as AlgoliaSettings;\n const searchClient = algoliasearch(appId, apiKey);\n searchClient.initIndex(indexName);\n\n const acceptTypes = ['image/*'];\n const InfiniteHits = ({ hits }: any) => {\n return <div></div>;\n };\n\n const onChangeLoading = (value: boolean) => {\n setLoading(value);\n };\n\n const CustomInfiniteHits = connectInfiniteHits(InfiniteHits);\n\n return (\n <Box className={`box-content-main ${isLoading ? 'loading' : ''}`}>\n <Box className=\"box-content_top\" style={{ position: 'relative' }}>\n {settings.headerText && (\n <Box\n className=\"fw-700 text-f32 text-dark2\"\n style={{ position: 'absolute', bottom: '49px' }}\n >\n <h1>{settings.headerText}</h1>\n </Box>\n )}\n <div className=\"wrap-input-search\">\n <div style={{ display: 'none' }}>\n <CustomInfiniteHits />\n </div>\n <CustomSearchBox />\n </div>\n </Box>\n <Box className=\"box-content_bottom\">\n <DragDropFile\n acceptTypes={acceptTypes}\n isLoading={isLoading}\n onChangeLoading={onChangeLoading}\n />\n </Box>\n </Box>\n );\n}\n\nexport default AppMD;\n","var _path;\nvar _excluded = [\"svgRef\", \"title\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport React from \"react\";\nvar SvgTakePhoto = function SvgTakePhoto(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 121,\n height: 96,\n viewBox: \"0 0 121 96\",\n fill: \"currentColor\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, /*#__PURE__*/React.createElement(\"g\", {\n style: {\n mixBlendMode: \"multiply\"\n }\n }, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M81.7314 54.5169C81.7314 66.4489 71.985 76.1561 60.0049 76.1561C48.0248 76.1561 38.2785 66.4489 38.2785 54.5169C38.2785 42.5849 48.0248 32.8777 60.0049 32.8777C71.985 32.8777 81.7314 42.5849 81.7314 54.5169ZM120.005 24.1972V84.8366C120.005 90.4872 115.363 95.1111 109.689 95.1111H10.3215C4.64805 95.1111 0.00549316 90.4878 0.00549316 84.8366V24.1972C0.00549316 18.5466 4.64748 13.9227 10.3215 13.9227H34.2641L37.8838 5.57484C39.3502 2.1909 42.6961 0 46.3964 0H73.6134C77.3137 0 80.6602 2.1909 82.1272 5.57484L85.7469 13.9227H109.69C115.363 13.9227 120.005 18.546 120.005 24.1972H120.005ZM21.6286 26.4758C21.6286 25.1029 20.5011 23.98 19.1227 23.98H12.2151C10.8366 23.98 9.7092 25.1029 9.7092 26.4758V29.8484C9.7092 31.2214 10.8366 32.3443 12.2151 32.3443H19.1227C20.5011 32.3443 21.6286 31.2214 21.6286 29.8484V26.4758ZM92.258 54.5169C92.258 50.1826 91.4044 45.975 89.7215 42.0118C88.0965 38.1861 85.7719 34.7512 82.8116 31.8029C79.8514 28.8545 76.4027 26.5392 72.5615 24.9207C68.5818 23.2441 64.3578 22.3944 60.0061 22.3944C55.6543 22.3944 51.4298 23.2446 47.4506 24.9207C43.6094 26.5392 40.1607 28.8545 37.2005 31.8029C34.2403 34.7512 31.9156 38.1861 30.2906 42.0118C28.6072 45.9756 27.7541 50.1826 27.7541 54.5169C27.7541 58.8512 28.6077 63.0588 30.2906 67.022C31.9156 70.8477 34.2403 74.2825 37.2005 77.2309C40.1607 80.1793 43.6094 82.4946 47.4506 84.113C51.4303 85.7897 55.6543 86.6394 60.0061 86.6394C64.3578 86.6394 68.5824 85.7892 72.5615 84.113C76.4027 82.4946 79.8514 80.1793 82.8116 77.2309C85.7719 74.2825 88.0965 70.8477 89.7215 67.022C91.405 63.0582 92.258 58.8512 92.258 54.5169Z\",\n fill: \"currentColor\"\n }))));\n};\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgTakePhoto, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/take_photo.76423216.svg\";\nexport { ForwardRef as ReactComponent };","import { Box } from '@material-ui/core';\nimport CameraCustom from 'components/drawer/cameraCustom';\nimport React, { useEffect, useState } from 'react';\nimport { reset } from 'Store/search/Search';\nimport { useAppDispatch } from 'Store/Store';\nimport { ReactComponent as CameraIcon } from 'common/assets/icons/take_photo.svg';\n\nfunction AppMobile(): JSX.Element {\n const dispatch = useAppDispatch();\n const [isOpenModalCamera, setOpenModalCamera] = useState<boolean>(false);\n\n useEffect(() => {\n dispatch(reset(''));\n }, [dispatch]);\n\n return (\n <div\n style={{\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'center',\n alignItems: 'center',\n width: '100%',\n height: '100%',\n }}\n >\n <div className=\"take-photo\">\n <div\n className=\"take-photo-wrapper\"\n style={{\n background: 'linear-gradient(90deg, #55566B 0%, #2B2C46 100%)',\n }}\n >\n <div\n className=\"outer\"\n onClick={() => {\n setOpenModalCamera(!isOpenModalCamera);\n }}\n >\n <div className=\"inner\">\n <CameraIcon color={'#2B2C46'} />\n </div>\n </div>\n </div>\n </div>\n <Box className=\"box-screenshot-camera\">\n <CameraCustom\n isToggle={isOpenModalCamera}\n onToggleModal={() => {\n setOpenModalCamera(!isOpenModalCamera);\n }}\n />\n </Box>\n </div>\n );\n}\n\nexport default AppMobile;\n","import 'react-app-polyfill/ie11';\nimport 'react-app-polyfill/stable';\nimport React from 'react';\nimport 'typeface-roboto';\nimport 'index.css';\n\nimport { useMediaQuery } from 'react-responsive';\nimport AppMD from 'page/landingPage/AppMD';\nimport AppMobile from 'page/landingPage/AppMobile';\n\nfunction App(): JSX.Element {\n const isMobile = useMediaQuery({ query: '(max-width: 776px)' });\n let SelectedApp: any = isMobile ? AppMobile : AppMD;\n\n return <SelectedApp />;\n}\n\nexport default App;\n","import React from 'react';\nimport { Button } from '@material-ui/core';\nimport { memo, useCallback } from 'react';\nimport isEqual from 'react-fast-compare';\nimport type { CurrentRefinementsProvided } from 'react-instantsearch-core';\nimport { connectCurrentRefinements } from 'react-instantsearch-dom';\nimport { useAppSelector } from 'Store/Store';\nimport { AppState } from 'types';\n\nexport type ClearRefinementsProps = CurrentRefinementsProvided & {\n children: React.ReactNode;\n type?: any;\n className?: string;\n};\n\nfunction ClearRefinementsComponent({\n children,\n type = 'native',\n className,\n items,\n refine,\n}: ClearRefinementsProps) {\n const handleButtonClick = useCallback(() => refine(items), [refine, items]);\n const { settings } = useAppSelector<AppState>((state: any) => state);\n\n return (\n <Button\n type={type}\n disabled={!items.length}\n className={className}\n onClick={handleButtonClick}\n style={{\n color: settings.theme.secondaryColor,\n fontWeight: 'bold',\n textTransform: 'capitalize',\n padding: 0,\n }}\n >\n {children}\n </Button>\n );\n}\n\nexport const ClearRefinements = connectCurrentRefinements<any>(\n memo(ClearRefinementsComponent, isEqual),\n);\n","import React from 'react';\nimport { Button } from '@material-ui/core';\nimport CloseOutlinedIcon from '@material-ui/icons/CloseOutlined';\n\nexport default function ChipComponent({\n children,\n className,\n selected,\n closeIcon = false,\n ...props\n}: any) {\n return (\n <Button type=\"native\" className={className} {...props}>\n {children}\n {closeIcon && (\n <CloseOutlinedIcon style={{ fontSize: '16px', fontWeight: 'bold' }} />\n )}\n </Button>\n );\n}\n","import React, { useEffect, useState } from 'react';\nimport classNames from 'classnames';\nimport { m } from 'framer-motion';\nimport { atom } from 'jotai';\nimport { useMemo } from 'react';\nimport type {\n CurrentRefinementsProvided,\n RefinementValue,\n} from 'react-instantsearch-core';\nimport { connectCurrentRefinements } from 'react-instantsearch-dom';\nimport { getCurrentRefinement } from './getCurrentRefinement';\nimport { ClearRefinements } from 'components/clear-refinements/clear-refinements';\nimport ChipComponent from 'components/chip/chip';\nimport { useAppSelector } from 'Store/Store';\n\nexport type CurrentRefinementsProps = CurrentRefinementsProvided & {\n header?: string;\n className?: string;\n statusSwitchButton?: boolean;\n};\n\nexport type CurrentRefinement = {\n category?: string;\n label: string;\n value: RefinementValue;\n};\n\nexport const refinementCountAtom = atom(0);\n\nfunction CurrentRefinementsComponent({\n items,\n refine,\n className,\n statusSwitchButton,\n}: CurrentRefinementsProps) {\n const stateGlobal = useAppSelector(state => state);\n const { settings } = stateGlobal;\n const [newItems, setListItems] = useState<any[]>([]);\n\n useEffect(() => {\n if (!statusSwitchButton) return;\n setListItems(items);\n }, [items, statusSwitchButton]);\n\n const refinements = useMemo(\n () =>\n newItems.reduce((acc: CurrentRefinement[], current) => {\n return [\n ...acc,\n ...getCurrentRefinement(current, settings?.refinements),\n ];\n }, []),\n [settings, newItems],\n );\n\n if (!refinements.length) {\n return null;\n }\n\n return (\n <div\n className={className}\n style={{\n marginBottom: refinements.length > 0 ? '10px' : '0px',\n marginTop: refinements.length > 0 ? '16px' : '0px',\n }}\n >\n <ul className=\"flex flex-wrap gap-3\">\n {refinements.map(refinement => {\n return (\n <m.li key={[refinement.category, refinement.label].join(':')}>\n <ChipComponent\n closeIcon={true}\n onClick={() => refine(refinement.value)}\n >\n {refinement.category && (\n <div className=\"text-f12\">{refinement.category}:</div>\n )}\n <div\n className=\"capitalize fw-700\"\n style={{\n marginLeft: 5,\n textTransform: 'capitalize',\n marginRight: 10,\n }}\n >\n {refinement.label}\n </div>\n </ChipComponent>\n </m.li>\n );\n })}\n <li\n key=\"clear\"\n className={classNames('flex items-center', {\n hidden: refinements.length < 2,\n })}\n >\n <ClearRefinements className=\"text-f12 fw-600\">\n Clear all\n </ClearRefinements>\n </li>\n </ul>\n </div>\n );\n}\n\nexport const CurrentRefinements = connectCurrentRefinements<any>(\n CurrentRefinementsComponent,\n);\n","import type { CurrentRefinement } from './current-refinements';\n\nfunction getRefinementConfig(r: any, refinement: any) {\n const refinementOptions = r.attribute;\n\n return refinementOptions?.attributes\n ? refinementOptions?.attributes[0] === refinement.attribute\n : refinementOptions === refinement.attribute;\n}\n\nexport function getCurrentRefinement(\n refinement: any,\n config: any,\n): CurrentRefinement[] {\n let refinementConfig: any;\n config.forEach((r: any) => {\n if (getRefinementConfig(r, refinement)) {\n refinementConfig = r;\n }\n });\n\n return (\n refinement?.items?.map((item: any) => ({\n category: refinementConfig?.header,\n label: item.label,\n value: item.value,\n })) || []\n );\n}\n","import { Grid } from '@material-ui/core';\nimport React from 'react';\nimport { connectPagination } from 'react-instantsearch-dom';\n\nfunction Pagination({ children }: any) {\n return (\n <Grid\n container\n justifyContent=\"space-between\"\n alignItems=\"center\"\n style={{ height: '100%' }}\n >\n {children}\n\n {/* <Grid item className=\"item-notify\">\n <Typography className=\"text-f12 text-center\">\n <span className=\"fw-600\" style={{ color: '#2B2C46' }}>\n Didn’t find what you were looking for?\n </span>\n <span style={{ color: '#2B2C46' }}>Share your search with our</span>\n <Link\n to={'/support'}\n style={{ color: settings.theme?.secondaryColor }}\n >\n product experts\n </Link>\n </Typography>\n </Grid> */}\n <Grid item className=\"item-notify-right\" style={{ minWidth: 32 }}></Grid>\n </Grid>\n );\n}\nconst FooterResult = connectPagination(Pagination);\n\nexport default FooterResult;\n","var _path;\nvar _excluded = [\"svgRef\", \"title\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport React from \"react\";\nvar SvgFill = function SvgFill(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 10,\n height: 11,\n viewBox: \"0 0 10 11\",\n fill: \"currentColor\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M6.56905 7.91401C6.92789 7.46225 7.47234 7.19773 8.04926 7.19483C9.10003 7.19483 9.95185 8.04665 9.95185 9.09742C9.95185 10.1482 9.10003 11 8.04926 11C6.99849 11 6.14667 10.1482 6.14667 9.09742C6.14847 8.92726 6.17408 8.75819 6.22277 8.59513L3.44118 6.85616C2.93785 7.48979 2.0888 7.73571 1.32474 7.46917C0.560687 7.20264 0.0488281 6.48196 0.0488281 5.67275C0.0488281 4.86354 0.560687 4.14287 1.32474 3.87633C2.0888 3.60979 2.93785 3.85571 3.44118 4.48934L6.22277 2.75037C6.17408 2.58732 6.14847 2.41825 6.14667 2.24809C6.14083 1.32028 6.80508 0.523574 7.7188 0.36244C8.63252 0.201306 9.52922 0.722744 9.84111 1.59657C10.153 2.4704 9.78909 3.44177 8.97983 3.89559C8.17057 4.34941 7.15198 4.15332 6.56905 3.4315L3.78746 5.17047C3.88883 5.49765 3.88883 5.84785 3.78746 6.17504L6.56905 7.91401ZM9.19066 2.24808C9.19066 1.61762 8.67957 1.10653 8.04911 1.10653C7.41864 1.10653 6.90755 1.61762 6.90755 2.24808C6.90755 2.87855 7.41864 3.38964 8.04911 3.38964C8.67957 3.38964 9.19066 2.87855 9.19066 2.24808ZM1.96089 6.81431C1.33043 6.81431 0.819336 6.30322 0.819336 5.67275C0.819336 5.04229 1.33043 4.5312 1.96089 4.5312C2.59136 4.5312 3.10245 5.04229 3.10245 5.67275C3.10245 6.30322 2.59136 6.81431 1.96089 6.81431ZM6.90755 9.09742C6.90755 9.72788 7.41864 10.239 8.04911 10.239C8.67957 10.239 9.19066 9.72788 9.19066 9.09742C9.19066 8.46695 8.67957 7.95586 8.04911 7.95586C7.41864 7.95586 6.90755 8.46695 6.90755 9.09742Z\",\n fill: \"currentColor\"\n })));\n};\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgFill, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/Fill.619a9d98.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nvar _excluded = [\"svgRef\", \"title\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport React from \"react\";\nvar SvgIconDislike = function SvgIconDislike(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 11,\n height: 11,\n viewBox: \"0 0 11 11\",\n fill: \"currentColor\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M1.53059 7.14308H3.81466V9.11675C3.7348 9.90592 4.28699 10.6128 5.04806 10.6957C5.14416 10.7075 5.24128 10.7075 5.33738 10.6957H5.93504C6.19675 10.6882 6.42056 10.4984 6.47941 10.2338V10.1865L6.86009 7.68387L8.20769 5.56415H10.6669V0.0378923H3.43399C0.601741 0.0378923 0.00788307 1.75498 0.00788307 3.19576V5.56415C-0.0719852 6.35332 0.480213 7.06022 1.24128 7.14308C1.33738 7.15493 1.43449 7.15493 1.53059 7.14308ZM8.38276 0.827361H9.90548V4.77469H8.38276V0.827361ZM3.43384 0.827355C1.6142 0.827355 0.769092 1.5813 0.769092 3.19575V5.56415C0.769092 6.13256 0.982271 6.35361 1.53045 6.35361H4.57587V9.11674C4.57587 9.68516 4.78905 9.90621 5.33723 9.90621H5.76739L5.82069 9.51148L6.09858 7.39176L7.6213 5.051V0.827355H3.43384Z\",\n fill: \"currentColor\"\n })));\n};\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgIconDislike, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/icon_dislike.0533c64a.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nvar _excluded = [\"svgRef\", \"title\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport React from \"react\";\nvar SvgIconLike = function SvgIconLike(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 12,\n height: 11,\n viewBox: \"0 0 12 11\",\n fill: \"currentColor\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M9.80278 3.59938H7.51871V1.62572C7.59858 0.836545 7.04638 0.129649 6.28531 0.0467847C6.18921 0.0349422 6.0921 0.0349422 5.996 0.0467847H5.39833C5.13662 0.0542197 4.91282 0.244093 4.85396 0.508622V0.55599L4.47329 3.0586L3.12568 5.17831H0.666504V10.7046H7.89939C10.7316 10.7046 11.3255 8.98748 11.3255 7.54671V5.17831C11.4054 4.38914 10.8532 3.68224 10.0921 3.59938C9.99599 3.58754 9.89888 3.58754 9.80278 3.59938ZM2.95061 9.9151H1.4279V5.96777H2.95061V9.9151ZM7.89954 9.9151C9.71918 9.9151 10.5643 9.16116 10.5643 7.5467V5.1783C10.5643 4.60989 10.3511 4.38884 9.80293 4.38884H6.7575V1.62571C6.7575 1.05729 6.54432 0.836243 5.99615 0.836243H5.56598L5.51268 1.23098L5.23479 3.35069L3.71208 5.69146V9.9151H7.89954Z\",\n fill: \"currentColor\"\n })));\n};\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgIconLike, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/icon_like.80c66e3a.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nvar _excluded = [\"svgRef\", \"title\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport React from \"react\";\nvar SvgIconSearchImage2 = function SvgIconSearchImage2(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 16,\n height: 16,\n viewBox: \"0 0 16 16\",\n fill: \"none\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M1.42028 4.82804C1.42028 5.22014 1.10221 5.53825 0.710142 5.53825C0.318078 5.53825 0 5.22014 0 4.82804V2.69216C0 1.20767 1.20757 0 2.69193 0H4.87323C5.26529 0 5.58337 0.318104 5.58337 0.710201C5.58337 1.1023 5.26529 1.4204 4.87323 1.4204H2.69193C1.99071 1.4204 1.42028 1.99087 1.42028 2.69216V4.82804ZM13.3081 0H11.1268C10.7347 0 10.4167 0.318104 10.4167 0.710201C10.4167 1.1023 10.7347 1.4204 11.1268 1.4204H13.3081C14.0093 1.4204 14.5798 1.99087 14.5798 2.69216V4.82804C14.5798 5.22014 14.8978 5.53825 15.2899 5.53825C15.682 5.53825 16 5.22014 16 4.82804V2.69216C16 1.20767 14.7925 0 13.3081 0ZM15.2899 10.4614C14.8978 10.4614 14.5798 10.7795 14.5798 11.1716V13.3078C14.5798 14.0091 14.0093 14.5796 13.3081 14.5796H11.1268C10.7347 14.5796 10.4167 14.8977 10.4167 15.2898C10.4167 15.6819 10.7347 16 11.1268 16H13.3081C14.7925 16 16 14.7923 16 13.3078V11.1716C16 10.7795 15.682 10.4614 15.2899 10.4614ZM4.87323 14.5796H2.69193C1.99071 14.5796 1.42028 14.0091 1.42028 13.3078V11.1716C1.42028 10.7795 1.10221 10.4614 0.710142 10.4614C0.318078 10.4614 0 10.7792 0 11.1716V13.3078C0 14.7923 1.20757 16 2.69193 16H4.87323C5.26529 16 5.58337 15.6819 5.58337 15.2898C5.58337 14.8977 5.26529 14.5796 4.87323 14.5796ZM12.6019 12.6029C12.4476 12.7572 12.2425 12.8421 12.0242 12.8421L12.0245 12.8418C11.8062 12.8418 11.6011 12.7569 11.4468 12.6026L10.2604 11.4161C9.59218 11.8613 8.81663 12.0952 8.00047 12.0952C6.90685 12.0952 5.87863 11.6694 5.1054 10.8961C4.33217 10.1228 3.90641 9.09453 3.90641 8.00082C3.90641 6.90711 4.33217 5.87881 5.1054 5.10552C5.87863 4.33222 6.90685 3.90643 8.00047 3.90643C9.09408 3.90643 10.1223 4.33222 10.8955 5.10552C11.6688 5.87881 12.0945 6.90711 12.0945 8.00082C12.0945 8.81706 11.8607 9.59266 11.4154 10.2612L12.6019 11.4478C12.9203 11.7662 12.9203 12.2845 12.6019 12.6029ZM9.73685 9.73702C9.75171 9.72248 9.76723 9.70795 9.78342 9.69407C10.2201 9.23426 10.4605 8.63373 10.4605 8.00082C10.4605 6.64418 9.35667 5.54023 8.00014 5.54023C6.6436 5.54023 5.53974 6.64418 5.53974 8.00082C5.53974 9.35747 6.64327 10.4614 8.00014 10.4614C8.63299 10.4614 9.23347 10.2213 9.69325 9.78425C9.70745 9.76774 9.72198 9.75188 9.73685 9.73702Z\",\n fill: \"#2B2C46\"\n })));\n};\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgIconSearchImage2, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/icon_search_image2.4c4af888.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nvar _excluded = [\"svgRef\", \"title\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport React from \"react\";\nvar Svg3D = function Svg3D(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 16,\n height: 17,\n viewBox: \"0 0 16 17\",\n fill: \"none\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M14.643 4.65152L8.343 1.24366C8.12642 1.12191 7.85958 1.12191 7.643 1.24366L1.34303 4.65152C1.12828 4.77548 0.997588 5.00142 1.00003 5.24448V12.0602C1.00047 12.3061 1.13689 12.5327 1.35703 12.6532L7.657 16.061C7.87358 16.1828 8.14042 16.1828 8.357 16.061L14.657 12.6532C14.8717 12.5292 15.0024 12.3033 15 12.0602V5.24448C14.9995 4.9986 14.8631 4.772 14.643 4.65152ZM7.99982 2.61361L12.8578 5.24447L7.99982 7.87534L3.14185 5.24447L7.99982 2.61361ZM2.40015 6.40315L7.30012 9.05447V14.3094L2.40015 11.6581V6.40315ZM8.69983 14.3094V9.05447L13.5998 6.40315V11.6581L8.69983 14.3094Z\",\n fill: \"#2B2C46\"\n })));\n};\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(Svg3D, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/3d.24adb2c2.svg\";\nexport { ForwardRef as ReactComponent };","import { Box, Button, IconButton, Paper, Typography } from '@material-ui/core';\nimport CloseOutlinedIcon from '@material-ui/icons/CloseOutlined';\nimport FileCopyOutlinedIcon from '@material-ui/icons/FileCopyOutlined';\nimport IconEmail from '../common/assets/icons/email_share.svg';\nimport DefaultModal from './modal/DefaultModal';\nimport React, { Dispatch } from 'react';\n\ntype PropsType = {\n dataItem: any;\n isOpen: boolean;\n setModalState: Dispatch<React.SetStateAction<boolean>>;\n};\n\nexport const ShareModal = (props: PropsType) => {\n const { dataItem, isOpen, setModalState } = props;\n const main_image_link =\n dataItem['image(main_similarity)'] || dataItem['main_image_link'];\n return (\n <DefaultModal openModal={isOpen} handleClose={() => setModalState(false)}>\n <Box\n className=\"box-modal-default box-modal-share\"\n style={{ padding: '4px' }}\n >\n <Box\n className=\"ml-auto\"\n style={{ width: 'fit-content', marginRight: 5 }}\n >\n <Button style={{ padding: 0 }} onClick={() => setModalState(false)}>\n <CloseOutlinedIcon style={{ fontSize: 16, color: '#55566B' }} />\n </Button>\n </Box>\n <Box className=\"box-content-box-share\">\n <Typography\n className=\"text-f12 text-gray text-bold\"\n style={{ marginBottom: '5px' }}\n >\n Share\n </Typography>\n {main_image_link && (\n <Paper component=\"form\" className=\"box-input\">\n <Box\n className=\"text-f9 text-gray\"\n style={{\n width: '100%',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n paddingRight: '10px',\n }}\n >\n {main_image_link}\n </Box>\n <IconButton\n color=\"secondary\"\n aria-label=\"directions\"\n style={{ padding: '4px' }}\n onClick={() => {\n navigator.clipboard.writeText(main_image_link);\n }}\n >\n <FileCopyOutlinedIcon style={{ fontSize: 14 }} />\n </IconButton>\n </Paper>\n )}\n\n <Paper\n component=\"form\"\n className=\"box-input\"\n style={{ marginTop: '12px', marginBottom: '8px' }}\n >\n <Box\n className=\"text-f9 text-gray\"\n style={{\n width: '100%',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n paddingRight: '10px',\n display: 'flex',\n alignItems: 'center',\n }}\n >\n <span style={{ fontWeight: 'bold', paddingRight: '4px' }}>\n SKU:\n </span>{' '}\n {dataItem.sku}\n </Box>\n <IconButton\n color=\"secondary\"\n aria-label=\"directions\"\n style={{ padding: '4px' }}\n onClick={() => {\n navigator.clipboard.writeText(dataItem.sku);\n }}\n >\n <FileCopyOutlinedIcon style={{ fontSize: 14 }} />\n </IconButton>\n </Paper>\n <Box\n className=\"box-media-share\"\n display={'flex'}\n style={{ marginTop: '18px' }}\n >\n <a\n style={{ padding: 0 }}\n href={`mailto:support@nyris.io?subject=GF-Sparepart-Search&body= ${encodeURIComponent(\n 'SKU: ' +\n dataItem.sku +\n '\\r\\n' +\n (main_image_link ? `Image Link: ${main_image_link}` : ''),\n )} `}\n >\n <Box display={'flex'} alignItems={'center'}>\n <img width={40} height={40} src={IconEmail} alt=\"icon_email\" />\n </Box>\n </a>\n {/* <Button style={{ padding: 0, margin: '0 20px' }}>\n <Box display={'flex'} alignItems={'center'}>\n <img\n src={IconWeChat}\n width={40}\n height={40}\n alt=\"icon_email\"\n />\n </Box>\n </Button>\n <Button style={{ padding: 0 }}>\n <Box display={'flex'} alignItems={'center'}>\n <img\n src={IconWhatsApp}\n width={40}\n height={40}\n alt=\"icon_email\"\n />\n </Box>\n </Button> */}\n </Box>\n </Box>\n </Box>\n </DefaultModal>\n );\n};\n","import NyrisAPI, {\n FeedbackEventPayload,\n NyrisAPISettings,\n RectCoords,\n} from '@nyris/nyris-api';\nimport { RootState } from '../Store/Store';\n\nexport const feedbackSuccessEpic = async (\n state: RootState,\n success: boolean,\n) => {\n const { search, settings } = state;\n const sessionId = search.sessionId;\n const requestId = search.requestId || search.sessionId;\n\n return await sendFeedbackByApi(settings, sessionId, requestId, {\n event: 'feedback',\n data: { success },\n });\n};\n\nexport const feedbackClickEpic = async (\n state: RootState,\n position: number,\n id?: string,\n) => {\n const { search, settings } = state;\n return await sendFeedbackByApi(settings, search.sessionId, search.requestId, {\n event: 'click',\n data: { positions: [position], ...(id ? { product_ids: [id] } : {}) },\n });\n};\n\nexport const feedbackConversionEpic = async (\n state: RootState,\n position: number,\n id?: string,\n) => {\n const { search, settings } = state;\n return await sendFeedbackByApi(settings, search.sessionId, search.requestId, {\n event: 'conversion',\n data: { positions: [position], ...(id ? { product_ids: [id] } : {}) },\n });\n};\n\nexport const feedbackRegionEpic = async (\n state: RootState,\n region: RectCoords,\n) => {\n const { settings, search } = state;\n const { sessionId, requestId } = search;\n const { x1, x2, y1, y2 } = region;\n const payload: FeedbackEventPayload = {\n event: 'region',\n data: { rect: { x: x1, y: y1, w: x2 - x1, h: y2 - y1 } },\n };\n return await sendFeedbackByApi(settings, sessionId, requestId, payload);\n};\n\nexport const sendFeedbackByApi = async (\n settings: NyrisAPISettings,\n sessionId: string | undefined,\n requestId: string | undefined,\n payload: FeedbackEventPayload,\n) => {\n const api = new NyrisAPI(settings);\n if (sessionId && requestId) {\n try {\n await api.sendFeedback(sessionId, requestId, payload).then(res => {});\n } catch (error) {\n console.log('error sendFeedbackByApi', error);\n }\n }\n};\n","import { Options, Splide, SplideSlide } from '@splidejs/react-splide';\nimport React, { useMemo, useRef } from 'react';\nimport '@splidejs/react-splide/dist/css/splide-core.min.css';\nimport '@splidejs/react-splide/dist/css/splide.min.css';\nimport './ImagePreviewCarousel.scss';\nimport { useMediaQuery } from 'react-responsive';\n\ninterface Props {\n imgItem: any[];\n onSearchImage?: any;\n handlerCloseModal?: any;\n setSelectedImage: (url: string) => void;\n}\n\nexport const ImagePreviewCarousel = (props: Props) => {\n let { imgItem, setSelectedImage } = props;\n const isMobile = useMediaQuery({ query: '(max-width: 776px)' });\n const mainRef: any = useRef(null);\n const thumbsRef: any = useRef(null);\n\n const maxWidth = useMemo(() => {\n const contentWidth = 75 + 58 * imgItem.length;\n const modalWidth = isMobile ? 240 : 460;\n return contentWidth < modalWidth ? contentWidth : modalWidth;\n }, [imgItem.length, isMobile]);\n\n const mainOptions: Options = useMemo(\n () => ({\n type: 'slide',\n perPage: 1,\n perMove: 1,\n gap: '1rem',\n pagination: false,\n arrows: false,\n // width: isMobile ? 340 : 370,\n }),\n [],\n );\n\n const thumbsOptions: Options = useMemo(\n () => ({\n type: 'slide',\n rewind: true,\n gap: '1rem',\n pagination: false,\n fixedWidth: 40,\n fixedHeight: 40,\n cover: true,\n focus: 'center',\n isNavigation: true,\n arrows: imgItem.length > 1,\n width: maxWidth,\n }),\n [imgItem.length, maxWidth],\n );\n\n const renderSlides = (thumbs = false) => {\n return imgItem.map(slide => (\n <SplideSlide key={slide.url} className={thumbs ? '' : 'img-container'}>\n <img\n style={{ objectFit: 'contain', height: '100%' }}\n alt=\"preview\"\n src={slide.url}\n />\n </SplideSlide>\n ));\n };\n\n React.useEffect(() => {\n if (mainRef.current && thumbsRef.current && thumbsRef.current?.splide) {\n mainRef.current.sync(thumbsRef.current.splide);\n }\n }, []);\n\n return (\n <>\n <Splide\n onActive={(e: any) => {\n setSelectedImage(e?.root?.querySelector('li.is-active')?.querySelector('img')?.src)\n }}\n options={mainOptions}\n ref={mainRef}\n style={{ maxWidth: '100%', height: isMobile ? '80%' : '' }}\n >\n {renderSlides()}\n </Splide>\n\n <div className={`thumbs-list`}>\n <Splide options={thumbsOptions} ref={thumbsRef}>\n {renderSlides(true)}\n </Splide>\n </div>\n </>\n );\n};\n","import { Box, Typography } from '@material-ui/core';\nimport React from 'react';\n\ninterface Props {\n title: any;\n value: any;\n padding?: string;\n width?: any;\n}\n\nfunction ProductAttribute(props: Props) {\n const {\n title,\n value,\n padding = props.padding || '4px 16px',\n width = props.width || 'fit-content',\n } = props;\n\n return (\n <>\n {title && (\n <Box\n display=\"flex\"\n flexDirection={'column'}\n borderRadius={2}\n width={width}\n style={{\n backgroundColor: '#E0E0E0',\n padding: padding,\n flexGrow: 1,\n }}\n >\n <Typography\n style={{\n color: '#2B2C46',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n }}\n className=\"text-f12 fw-700\"\n >\n {title}\n </Typography>\n <Typography\n style={{\n color: '#2B2C46',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n }}\n className=\"text-f12 fw-400\"\n >\n {value}\n </Typography>\n </Box>\n )}\n </>\n );\n}\n\nexport default ProductAttribute;\n","var _path;\nvar _excluded = [\"svgRef\", \"title\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport React from \"react\";\nvar SvgDownload = function SvgDownload(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 16,\n height: 16,\n viewBox: \"0 0 16 16\",\n fill: \"none\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M12.5055 6.45389C12.7282 6.23157 13.0888 6.23169 13.3113 6.45415C13.5338 6.67672 13.5338 7.03757 13.3113 7.26013L8.70707 11.8643C8.31655 12.2548 7.68338 12.2548 7.29286 11.8643L2.68867 7.26013C2.4661 7.03757 2.4661 6.67672 2.68867 6.45415C2.91113 6.23169 3.27178 6.23157 3.49438 6.45389L5.7219 8.67847C6.35205 9.30779 7.42854 8.86148 7.42854 7.97089V0.571428C7.42854 0.255837 7.68437 0 7.99996 0C8.31556 0 8.57139 0.255838 8.57139 0.571429V7.97089C8.57139 8.86148 9.64788 9.30779 10.278 8.67847L12.5055 6.45389ZM12.7143 14.8571C13.2665 14.8571 13.7143 14.4094 13.7143 13.8571V13.1429C13.7143 12.8273 13.9701 12.5714 14.2857 12.5714C14.6013 12.5714 14.8571 12.8273 14.8571 13.1429V14.8571C14.8571 15.4883 14.3454 16 13.7143 16H2.28568C1.6545 16 1.14282 15.4883 1.14282 14.8571V13.1429C1.14282 12.8273 1.39866 12.5714 1.71425 12.5714C2.02984 12.5714 2.28568 12.8273 2.28568 13.1429V13.8571C2.28568 14.4094 2.7334 14.8571 3.28568 14.8571H12.7143Z\",\n fill: \"#2B2C46\"\n })));\n};\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgDownload, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/download.d6432d26.svg\";\nexport { ForwardRef as ReactComponent };","import React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useMediaQuery } from 'react-responsive';\n\nconst LoadingSpinner = () => (\n <svg\n width={150}\n height={150}\n viewBox=\"0 0 150 150\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"loading-spinner\"\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M75 150C116.421 150 150 116.421 150 75C150 33.5787 116.421 1.31134e-05 75 1.31134e-05C33.5787 1.31134e-05 1.31134e-05 33.5787 1.31134e-05 75C1.31134e-05 116.421 33.5787 150 75 150ZM75 145C113.66 145 145 113.66 145 75C145 36.3401 113.66 5.00001 75 5.00001C36.3401 5.00001 5.00001 36.3401 5.00001 75C5.00001 113.66 36.3401 145 75 145Z\"\n fill=\"url(#paint0_linear_3392_14489)\"\n />\n <defs>\n <linearGradient\n id=\"paint0_linear_3392_14489\"\n x1={75}\n y1={0}\n x2={75}\n y2={150}\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"#D3D1FF\" />\n <stop offset={1} stopColor=\"white\" />\n </linearGradient>\n </defs>\n </svg>\n);\n\nfunction CadenasLoading() {\n const isMobile = useMediaQuery({ query: '(max-width: 776px)' });\n const { t } = useTranslation();\n return (\n <div\n style={{\n borderRadius: '2px',\n background: 'linear-gradient(180deg, #FAFAFA 0%, #E4E3FF 100%)',\n width: '100%',\n height: isMobile ? '368px' : '456px',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n position: 'relative',\n }}\n >\n <p\n style={{\n position: 'absolute',\n top: '50%',\n left: '50%',\n transform: 'translate(-50%, -50%)',\n }}\n >\n {t('loading')}\n </p>\n <LoadingSpinner />\n </div>\n );\n}\n\nexport default CadenasLoading;\n","import { Box } from '@material-ui/core';\nimport React, { useEffect, useState } from 'react';\nimport { useMediaQuery } from 'react-responsive';\nimport { ReactComponent as DownloadIcon } from 'common/assets/icons/download.svg';\nimport CadenasLoading from './CadenasLoading';\nimport { useAppSelector } from '../Store/Store';\n\ndeclare const psol: any;\n\nconst favoriteActions3d = [\n 'actMeasureGrid',\n 'actCut',\n 'actAnimate',\n 'actIsometric',\n 'actExternalAR',\n];\n\nfunction CadenasWebViewer({\n is3dView,\n sku,\n setStatus3dView,\n status3dView,\n}: {\n status3dView: string | undefined;\n sku: string;\n is3dView: boolean;\n setStatus3dView: any;\n}) {\n const [mident, setMident] = useState('');\n const isMobile = useMediaQuery({ query: '(max-width: 776px)' });\n const { settings } = useAppSelector(state => state);\n\n useEffect(() => {\n // prepare 3d viewer settings.\n let webViewer3DSettings = {\n $container: $('#cnsWebViewer3d'),\n viewerBackendType: psol.components.WebViewer3D.ViewerBackends.WebGL,\n devicePixelRatio: window.devicePixelRatio,\n radialMenuActions: [],\n favoriteActions: favoriteActions3d,\n showProgressDialog: false,\n webglViewerSettings: {\n ColorTL: '#fff',\n ColorTR: '#fff',\n ColorML: '#fff',\n ColorMR: '#fff',\n ColorBL: '#fff',\n ColorBR: '#fff',\n showLogo: false,\n logoTexture: './img/logo.png',\n logoScaleFactor: 1.0,\n logoMixFactor: 0.5,\n material: {\n preset: 'pcloud',\n edit: false,\n },\n measureGrid: {\n colors: {\n dimensions: '#000000',\n outline: '#0000ff',\n grid: '#757575',\n unit: 'mm',\n },\n },\n helperOptions: {\n gridOn: false,\n axisOn: false,\n },\n shadeMode: psol.components.WebViewer3D.ShadeModes.ShadeAndLines,\n enableEditableDimensions: true,\n showPartNameTooltip: false,\n },\n };\n\n // initialize 3d viewer\n let webviewer3d = new psol.components.WebViewer3D(webViewer3DSettings);\n psol.core.setApiKey(settings.cadenas?.cadenasAPIKey);\n setStatus3dView('loading');\n // run search and display result in 3D viewer.\n psol.core\n .ajaxGetOrPost({\n url: psol.core.getServiceBaseUrl() + '/service/reversemap',\n data: {\n catalog: settings.cadenas?.catalog,\n part: sku,\n exact: '0',\n },\n })\n .then(function (reverseMapResult: { mident: string }) {\n let mident = reverseMapResult.mident || '';\n setMident(mident);\n // load geometry in 3d viewer.\n webviewer3d.show().then(function () {\n webviewer3d\n .loadByVarset(null, null, mident)\n .then(() => {\n setStatus3dView('loaded');\n })\n .catch((err: any) => {\n setStatus3dView('not-found');\n });\n });\n });\n }, [sku, setStatus3dView, settings]);\n\n const showWebViewer = !is3dView || status3dView !== 'loaded';\n\n return (\n <>\n {status3dView !== 'not-found' && (\n <div\n id=\"cnsWebViewer3d\"\n style={{\n height: showWebViewer ? '0px' : isMobile ? '368px' : '456px',\n width: '100%',\n opacity: showWebViewer ? 0 : 1,\n transition:\n is3dView && status3dView !== 'loaded' ? 'opacity 2s ease' : '',\n }}\n ></div>\n )}\n\n <div\n style={{\n position: 'absolute',\n bottom: '19px',\n right: '26px',\n }}\n >\n {is3dView && status3dView === 'loaded' && (\n <Box\n style={{\n background: '#E9E9EC',\n width: '32px',\n height: '32px',\n borderRadius: '100%',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n cursor: 'pointer',\n }}\n onClick={() => {\n new psol.components.DownloadDialog({\n mident: mident,\n }).show();\n }}\n >\n <DownloadIcon width={14} height={14} color={'#FFF'} />\n </Box>\n )}\n </div>\n\n {status3dView === 'loading' && is3dView && <CadenasLoading />}\n\n {status3dView === 'not-found' && is3dView && (\n <div\n style={{\n height: isMobile ? '368px' : '456px',\n width: '100%',\n color: '#AAABB5',\n background: 'linear-gradient(180deg, #fff 0%, #E9E9EC 100%)',\n fontSize: '16px',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n }}\n >\n No 3D View available for this item\n </div>\n )}\n </>\n );\n}\n\nexport default CadenasWebViewer;\n","import React, { useEffect, useMemo, useState } from 'react';\nimport { Box, Button, Collapse, Grid, Typography } from '@material-ui/core';\nimport CloseOutlinedIcon from '@material-ui/icons/CloseOutlined';\nimport IconOpenLink from 'common/assets/icons/Union.svg';\nimport KeyboardArrowDownIcon from '@material-ui/icons/KeyboardArrowDown';\nimport { useMediaQuery } from 'react-responsive';\nimport { ImagePreviewCarousel } from './carousel/ImagePreviewCarousel';\nimport { ReactComponent as IconSearchImage } from 'common/assets/icons/icon_search_image2.svg';\nimport { ReactComponent as IconShare } from 'common/assets/icons/Fill.svg';\nimport { ReactComponent as IconDisLike } from 'common/assets/icons/icon_dislike.svg';\nimport { ReactComponent as IconLike } from 'common/assets/icons/icon_like.svg';\nimport { AppState } from 'types';\nimport { useAppSelector } from 'Store/Store';\nimport { prepareImageList } from '../helpers/CommonHelper';\nimport KeyboardArrowUpIcon from '@material-ui/icons/KeyboardArrowUp';\nimport NoImage from '../common/assets/images/no-image.svg';\nimport { ReactComponent as Box3dIcon } from 'common/assets/icons/3d.svg';\nimport { ReactComponent as CloseIcon } from 'common/assets/icons/close.svg';\nimport { useTranslation } from 'react-i18next';\nimport ProductAttribute from './ProductAttribute';\nimport CadenasWebViewer from './CadenasWebViewer';\nimport { makeStyles } from '@material-ui/core/styles';\nimport { get, isUndefined } from 'lodash';\n\nconst useStyles = makeStyles(theme => ({\n buttonStyle3D: {\n bottom: is3dView => (is3dView ? '20px' : '68px'), // assuming 8px is one spacing,\n [theme.breakpoints.up('md')]: {\n bottom: is3dView => (is3dView ? '20px' : '10px'), // assuming 68px is 8.5 spacing\n },\n },\n buttonStyleImageSearch: {\n bottom: is3dView => (is3dView ? '20px' : '78px'),\n [theme.breakpoints.up('md')]: {\n bottom: is3dView => (is3dView ? '20px' : '4px'), // assuming 68px is 8.5 spacing\n },\n },\n}));\n\ninterface Props {\n dataItem?: any;\n handleClose?: any;\n handlerFeedback?: any;\n onHandlerModalShare?: any;\n show3dView?: boolean;\n onSearchImage?: any;\n}\n\nfunction ProductDetailView(props: Props) {\n const {\n dataItem,\n handleClose,\n handlerFeedback,\n onHandlerModalShare,\n show3dView = false,\n onSearchImage,\n } = props;\n const { sku, title } = dataItem;\n const isMobile = useMediaQuery({ query: '(max-width: 776px)' });\n const { settings } = useAppSelector<AppState>((state: any) => state);\n const brand = dataItem[settings.field.productTag];\n\n const [collapDescription, setCollapDescription] = useState(false);\n const [feedback, setFeedback] = useState('none');\n const [is3dView, setIs3dView] = useState(show3dView);\n const [dataImageCarousel, setDataImageCarouSel] = useState<any[]>([]);\n const [urlImage, setUrlImage] = useState<string>('');\n const [status3dView, setStatus3dView] = useState<\n 'loading' | 'loaded' | 'not-found' | undefined\n >();\n const { t } = useTranslation();\n const classes = useStyles(props?.show3dView);\n\n const ctaLink = get(\n dataItem,\n settings.field?.ctaLinkField ? settings.field?.ctaLinkField : 'links.main',\n );\n\n useEffect(() => {\n if (dataItem) {\n checkDataItemResult(dataItem);\n handlerCheckUrlImage(\n dataItem['image(main_similarity)'] || dataItem['main_image_link'],\n );\n }\n }, [dataItem]);\n\n const handlerCheckUrlImage = (url: any, timeout?: number) => {\n timeout = timeout || 5000;\n let timedOut = false,\n timer: any;\n let img = new Image();\n img.onerror = img.onabort = function () {\n if (!timedOut) {\n clearTimeout(timer);\n setUrlImage('');\n }\n };\n img.onload = function () {\n if (!timedOut) {\n clearTimeout(timer);\n setUrlImage(url);\n return;\n }\n };\n img.src = url;\n };\n\n const checkDataItemResult = (dataItem: any) => {\n const valueKey = prepareImageList(dataItem);\n\n setDataImageCarouSel(valueKey);\n };\n const productDetails = useMemo(() => {\n const details = get(dataItem, settings.field.productDetails);\n try {\n return details.join(', ');\n } catch (e) {\n return details;\n }\n }, [dataItem, settings.field.productDetails]);\n const manufacturerNumber = get(dataItem, settings.field.manufacturerNumber);\n return (\n <Box\n className=\"box-modal-default\"\n borderRadius={12}\n style={{\n margin: isMobile ? 0 : '',\n width: '600px',\n backgroundColor: '#fff',\n }}\n >\n <Box\n className=\"ml-auto\"\n style={{\n width: 'fit-content',\n marginRight: 4,\n position: 'absolute',\n top: '28px',\n right: '28px',\n zIndex: 100,\n }}\n >\n <Button style={{ padding: 0 }} onClick={() => handleClose?.()}>\n <CloseOutlinedIcon style={{ fontSize: 24, color: '#55566B' }} />\n </Button>\n </Box>\n\n <div\n style={{\n position: 'relative',\n }}\n >\n {settings.cadenas?.cadenas3dWebView && (\n <CadenasWebViewer\n is3dView={is3dView}\n sku={sku}\n status3dView={status3dView}\n setStatus3dView={setStatus3dView}\n />\n )}\n <Box\n className=\"box-carosel\"\n style={{\n ...(dataImageCarousel.length === 0\n ? { display: 'flex', justifyContent: 'center' }\n : {}),\n width: is3dView ? '0px' : '100%',\n height: is3dView ? '0px' : !isMobile ? '60%' : '368px',\n opacity: is3dView ? 0 : 1,\n transition: !is3dView ? 'opacity 3s ease' : '',\n paddingTop: !is3dView ? '16px' : '0px',\n }}\n >\n {dataImageCarousel.length > 0 && (\n <ImagePreviewCarousel\n imgItem={dataImageCarousel}\n setSelectedImage={url => {\n setUrlImage(url ? url : urlImage);\n }}\n />\n )}\n {dataImageCarousel.length > 0 && (\n <Button\n className={classes.buttonStyleImageSearch}\n style={{\n position: 'absolute',\n right: '16px',\n background: '#E9E9EC',\n width: '32px',\n height: '32px',\n borderRadius: '100%',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n cursor: 'pointer',\n bottom: isMobile ? '25px' : '4px',\n }}\n onClick={() => {\n if (urlImage.length > 1) {\n onSearchImage(urlImage);\n handleClose?.();\n return;\n }\n }}\n >\n <IconSearchImage color={'#AAABB5'} />\n </Button>\n )}\n {dataImageCarousel.length === 0 && (\n <div\n style={{\n width: '400px',\n height: '400px',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n }}\n >\n <img\n src={NoImage}\n alt=\"image_item\"\n className=\"img-style\"\n style={{ width: '150px', height: '150px', padding: '8px' }}\n />\n </div>\n )}\n </Box>\n\n <div\n className={classes.buttonStyle3D}\n style={{\n position: 'absolute',\n left: '16px',\n bottom: isMobile ? '25px' : '10px',\n }}\n >\n {!is3dView &&\n status3dView !== 'not-found' &&\n settings.cadenas?.cadenas3dWebView && (\n <Box\n style={{\n background: '#E9E9EC',\n width: '32px',\n height: '32px',\n borderRadius: '100%',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n cursor: 'pointer',\n }}\n onClick={() => {\n setIs3dView(true);\n }}\n >\n <Box3dIcon width={16} height={16} color={'#AAABB5'} />\n </Box>\n )}\n {is3dView && (\n <Box\n style={{\n background: '#2B2C46',\n width: '32px',\n height: '32px',\n borderRadius: '100%',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n cursor: 'pointer',\n }}\n onClick={() => {\n setIs3dView(false);\n }}\n >\n <CloseIcon width={16} height={16} color={'#FFF'} />\n </Box>\n )}\n </div>\n </div>\n\n <Box\n style={{\n overflowY: 'auto',\n maxHeight: '90svh',\n paddingLeft: '16px',\n paddingRight: '16px',\n paddingBottom: '16px',\n backgroundColor: '#F3F3F5',\n marginTop: '6px',\n }}\n >\n <Box\n className=\"box-content\"\n display={'flex'}\n style={{\n marginTop: '16px',\n flexDirection: 'column',\n backgroundColor: '#F3F3F5',\n }}\n >\n <Box className=\"box-top\">\n {settings.warehouseVariant && (\n <Box\n display=\"flex\"\n justifyContent={'space-between'}\n flexDirection={'row'}\n style={{\n color: '#2B2C46',\n marginBottom: 10,\n paddingLeft: 16,\n paddingRight: 16,\n }}\n gridGap={8}\n >\n <Typography\n className=\"text-f12 max-line-1 fw-400\"\n style={{\n color: '#2B2C46',\n }}\n >\n {sku}\n </Typography>\n\n {settings.warehouseVariant &&\n !isUndefined(\n get(dataItem, settings.field.warehouseStockValue),\n ) && (\n <Typography\n className=\"text-f12 max-line-1 fw-400\"\n style={{\n color: '#2B2C46',\n }}\n >\n <span\n style={{\n color: get(\n dataItem,\n settings.field.warehouseStockValue,\n )\n ? '#00C070'\n : '#c54545',\n fontWeight: 600,\n }}\n >\n {get(dataItem, settings.field.warehouseStockValue) || 0}\n </span>\n </Typography>\n )}\n </Box>\n )}\n\n <Grid\n container\n justifyContent=\"space-between\"\n style={{ backgroundColor: '#F3F3F5' }}\n >\n <Box\n display=\"flex\"\n flexDirection=\"row\"\n flexWrap=\"wrap\"\n style={{ gap: 6 }}\n width={'100%'}\n >\n {!settings.warehouseVariant && settings.CTAButtonText && (\n <ProductAttribute\n title={'Produktname'}\n value={title}\n width={\n settings.warehouseVariant\n ? { xs: '49%', md: 'fit-content' }\n : { xs: '100%', md: 'fit-content' }\n }\n />\n )}\n {!settings.warehouseVariant && (\n <ProductAttribute\n title={settings.itemIdLabel || 'SKU'}\n value={sku}\n width={\n settings.warehouseVariant\n ? { xs: '49%', md: 'fit-content' }\n : { xs: '100%', md: 'fit-content' }\n }\n />\n )}\n {(brand || settings.brandName) && (\n <ProductAttribute\n title={t('Brand')}\n value={brand || settings.brandName}\n width={\n manufacturerNumber\n ? { xs: '49%', md: 'fit-content' }\n : { xs: '100%', md: 'fit-content' }\n }\n />\n )}\n {manufacturerNumber && (\n <ProductAttribute\n title={t('Manufacturer Number')}\n value={manufacturerNumber}\n width={\n brand || settings.brandName\n ? { xs: '49%', md: 'fit-content' }\n : { xs: '100%', md: 'fit-content' }\n }\n />\n )}\n {settings.warehouseVariant && (\n <>\n {settings.field.warehouseNumber && (\n <ProductAttribute\n title={\n get(dataItem, settings.field.warehouseNumber) ||\n settings.field.warehouseNumber\n }\n value={\n get(dataItem, settings.field.warehouseNumberValue) ||\n 'N/A'\n }\n width={{ xs: '49%', md: 'fit-content' }}\n />\n )}\n {settings.field.warehouseShelfNumber && (\n <ProductAttribute\n title={\n get(dataItem, settings.field.warehouseShelfNumber) ||\n settings.field.warehouseShelfNumber\n }\n value={\n get(\n dataItem,\n settings.field.warehouseShelfNumberValue,\n ) || 'N/A'\n }\n width={{ xs: '49%', md: 'fit-content' }}\n />\n )}\n </>\n )}\n </Box>\n\n <Grid\n item\n xs={12}\n style={{\n backgroundColor: '#F3F3F5',\n }}\n >\n <Box\n style={{\n background: settings.theme?.primaryColor,\n boxShadow: '0px 4px 4px rgba(0, 0, 0, 0.25)',\n borderRadius: 4,\n marginTop: 8,\n }}\n display={'flex'}\n justifyContent={'space-between'}\n alignItems={'center'}\n className=\"btn-detail-item\"\n >\n <Box\n style={{\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n width: '100%',\n padding: '0px 12px',\n minHeight: 64,\n cursor: ctaLink ? 'pointer' : 'normal',\n }}\n onClick={() => {\n if (ctaLink) {\n window.open(`${ctaLink}`, '_blank');\n }\n }}\n >\n <Typography\n className=\"text-f18 fw-700 text-white max-line-2\"\n align=\"left\"\n style={{\n letterSpacing: '0.55px',\n maxWidth: '500px',\n paddingRight: '4px',\n }}\n >\n {settings.CTAButtonText\n ? settings.CTAButtonText\n : dataItem[settings.field.productName]}\n </Typography>\n {ctaLink && (\n <img\n src={IconOpenLink}\n alt=\"\"\n style={{ minWidth: 16, marginLeft: 5 }}\n />\n )}\n </Box>\n </Box>\n {productDetails && (\n <Box className=\"w-100\">\n <Button\n className=\"w-100 button-hover\"\n style={{\n backgroundColor: '#F3F3F5',\n color: '#2b2c46',\n display: 'flex',\n fontSize: 14,\n justifyContent: 'space-between',\n marginTop: 12,\n paddingLeft: '15px',\n paddingRight: '15px',\n textTransform: 'initial',\n }}\n onClick={() => setCollapDescription(e => !e)}\n >\n {t('View details')}\n {collapDescription ? (\n <KeyboardArrowUpIcon\n htmlColor={settings.theme?.secondaryColor}\n />\n ) : (\n <KeyboardArrowDownIcon\n htmlColor={settings.theme?.secondaryColor}\n />\n )}\n </Button>\n <Collapse in={collapDescription}>\n <Typography\n style={{\n fontSize: 14,\n padding: 5,\n paddingLeft: 15,\n paddingRight: 15,\n color: '#2b2c46',\n }}\n >\n {productDetails}\n </Typography>\n </Collapse>\n </Box>\n )}\n </Grid>\n </Grid>\n </Box>\n\n {settings.showFeedbackAndShare && (\n <Box\n className=\"box-bottom\"\n style={{\n height: '48px',\n padding: '0px 16px 0px 16px',\n marginBottom: 10,\n marginTop: 10,\n }}\n display={'flex'}\n justifyContent={'center'}\n >\n <Grid\n container\n justifyContent={\n settings.shareOption ? 'space-between' : 'space-around'\n }\n alignItems=\"center\"\n >\n <Grid item>\n <Box display={'flex'} alignItems={'center'}>\n <Button\n className=\"btn-item\"\n onClick={() => {\n handlerFeedback('like');\n setFeedback('like');\n }}\n >\n <IconLike\n width={24}\n height={24}\n color={feedback === 'like' ? '#3E36DC' : '#000000'}\n />\n </Button>\n </Box>\n </Grid>\n <Grid item>\n <Box display={'flex'} alignItems={'center'}>\n <Button\n className=\"btn-item\"\n onClick={() => {\n handlerFeedback('dislike');\n setFeedback('dislike');\n }}\n >\n <IconDisLike\n width={24}\n height={24}\n color={feedback === 'dislike' ? '#CC1854' : '#000000'}\n />\n </Button>\n </Box>\n </Grid>\n {settings.shareOption && (\n <Grid item>\n <Box display={'flex'} alignItems={'center'}>\n <Button\n className=\"btn-item\"\n onClick={() => onHandlerModalShare()}\n >\n <IconShare width={24} height={24} color=\"#000000\" />\n </Button>\n </Box>\n </Grid>\n )}\n {/* <Grid item>\n <Box display={'flex'} alignItems={'center'}>\n <Button className=\"btn-item\">\n <Box\n className=\"\"\n display={'flex'}\n justifyContent={'center'}\n alignItems={'center'}\n >\n <img\n src={IconSupport}\n alt=\"image_item\"\n className=\"icon_support\"\n style={{ width: '30px' }}\n />\n </Box>\n </Button>\n </Box>\n </Grid> */}\n </Grid>\n </Box>\n )}\n </Box>\n </Box>\n </Box>\n );\n}\n\nexport default ProductDetailView;\n","import { isEmpty } from 'lodash';\n\nexport const prepareImageList = (dataItem: any) => {\n let valueKey = [];\n const newObject = dataItem;\n\n if (!dataItem) {\n return [];\n }\n\n for (let key in newObject) {\n if (\n key?.includes('image(recognition)') ||\n key?.includes('additional_image_link')\n ) {\n if (!isEmpty(newObject[key])) {\n if (newObject[key]) {\n valueKey.push({\n url: newObject[key],\n });\n }\n }\n } else {\n if (key === 'image(main_similarity)' || key === 'main_image_link') {\n if (newObject[key]) {\n valueKey.push({\n url: newObject[key],\n });\n }\n }\n }\n }\n return valueKey;\n};\n","import { Box, Button, Grid, Tooltip, Typography } from '@material-ui/core';\nimport ChevronRightOutlinedIcon from '@material-ui/icons/ChevronRightOutlined';\nimport IconOpenLink from 'common/assets/icons/Union.svg';\nimport { ReactComponent as IconShare } from 'common/assets/icons/Fill.svg';\nimport { ReactComponent as IconDisLike } from 'common/assets/icons/icon_dislike.svg';\nimport { ReactComponent as IconLike } from 'common/assets/icons/icon_like.svg';\nimport { ReactComponent as IconSearchImage } from 'common/assets/icons/icon_search_image2.svg';\nimport { ReactComponent as Box3dIcon } from 'common/assets/icons/3d.svg';\n\nimport React, { memo, useEffect, useState } from 'react';\nimport NoImage from 'common/assets/images/no-image.svg';\nimport { RootState, useAppDispatch, useAppSelector } from 'Store/Store';\nimport DefaultModal from 'components/modal/DefaultModal';\nimport {\n onToggleModalItemDetail,\n updateStatusLoading,\n} from 'Store/search/Search';\nimport { ShareModal } from '../ShareModal';\nimport { truncateString } from 'helpers/truncateString';\nimport { useTranslation } from 'react-i18next';\nimport { useMediaQuery } from 'react-responsive';\nimport { feedbackClickEpic, feedbackConversionEpic } from 'services/Feedback';\nimport ProductDetailView from 'components/ProductDetailView';\nimport ProductAttribute from '../ProductAttribute';\nimport { get, isUndefined } from 'lodash';\n\ninterface Props {\n dataItem: any;\n handlerToggleModal?: any;\n handleClose?: () => void;\n isHover?: boolean;\n indexItem: number;\n onSearchImage?: any;\n handlerFeedback?: any;\n handlerGroupItem?: any;\n isGroupItem?: boolean;\n handlerCloseGroup?: any;\n main_image_link?: any;\n}\n\nfunction ItemResult(props: Props) {\n const {\n dataItem,\n isHover = false,\n onSearchImage,\n handlerGroupItem,\n handlerFeedback,\n isGroupItem,\n handlerCloseGroup,\n main_image_link,\n indexItem,\n } = props;\n const dispatch = useAppDispatch();\n const [urlImage, setUrlImage] = useState<string>('');\n const state = useAppSelector<RootState>((state: any) => state);\n const { settings } = state;\n\n const [openDetailedView, setOpenDetailedView] = useState<\n '3d' | 'image' | undefined\n >();\n\n const [isOpenModalShare, setOpenModalShare] = useState<boolean>(false);\n const [feedback, setFeedback] = useState('none');\n const { t } = useTranslation();\n const { sku, collap } = dataItem;\n const brand = dataItem[settings.field.productTag];\n const isMobile = useMediaQuery({ query: '(max-width: 776px)' });\n\n useEffect(() => {\n if (main_image_link) {\n handlerCheckUrlImage(main_image_link);\n }\n }, [main_image_link]);\n\n const handlerShowGroup = () => {\n handlerGroupItem(dataItem, indexItem);\n };\n\n const handlerHideGroup = () => {\n handlerCloseGroup(dataItem, indexItem);\n };\n\n const handlerCheckUrlImage = (url: any, timeout?: number) => {\n timeout = timeout || 5000;\n var timedOut = false,\n timer: any;\n var img = new Image();\n img.onerror = img.onabort = function () {\n if (!timedOut) {\n clearTimeout(timer);\n setUrlImage('');\n }\n };\n img.onload = function () {\n if (!timedOut) {\n clearTimeout(timer);\n setUrlImage(url);\n return;\n }\n };\n img.src = url;\n };\n\n const handlerToggleModal = (item: any) => {\n feedbackClickEpic(state, indexItem, item.sku);\n setOpenDetailedView('image');\n\n dispatch(onToggleModalItemDetail(true));\n dispatch(updateStatusLoading(true));\n setTimeout(() => {\n dispatch(updateStatusLoading(false));\n }, 400);\n };\n const ctaLink = get(\n dataItem,\n settings.field?.ctaLinkField ? settings.field?.ctaLinkField : 'links.main',\n );\n const manufacturerNumber = get(dataItem, settings.field.manufacturerNumber);\n return (\n <Box className=\"wrap-main-item-result\">\n <DefaultModal\n openModal={openDetailedView === '3d' || openDetailedView === 'image'}\n handleClose={(e: any) => {\n setOpenDetailedView(undefined);\n }}\n >\n <ProductDetailView\n dataItem={dataItem}\n handleClose={() => {\n setOpenDetailedView(undefined);\n }}\n handlerFeedback={handlerFeedback}\n show3dView={openDetailedView === '3d'}\n onHandlerModalShare={() => setOpenModalShare(true)}\n onSearchImage={(url: string) => {\n dispatch(updateStatusLoading(true));\n onSearchImage(url);\n }}\n />\n </DefaultModal>\n\n <ShareModal\n setModalState={setOpenModalShare}\n dataItem={dataItem}\n isOpen={isOpenModalShare}\n />\n <Box className=\"box-top\">\n {isGroupItem && collap && (\n <Box className=\"btn-show-result\">\n <Button onClick={handlerShowGroup}>\n {t('Show group')}\n <ChevronRightOutlinedIcon style={{ fontSize: '10px' }} />\n </Button>\n </Box>\n )}\n {isGroupItem && !collap && (\n <Box className=\"btn-show-result\">\n <Button onClick={handlerHideGroup}>\n {t('Close group')}\n <ChevronRightOutlinedIcon style={{ fontSize: '10px' }} />\n </Button>\n </Box>\n )}\n {!isHover && main_image_link && (\n <Box\n className=\"box-icon-modal\"\n onClick={() => {\n if (urlImage.length > 1) {\n onSearchImage(main_image_link);\n }\n }}\n >\n <IconSearchImage width={16} height={16} color={'#AAABB5'} />\n </Box>\n )}\n {settings.cadenas?.cadenas3dWebView && (\n <Box\n className=\"box-icon-modal-3d\"\n onClick={() => {\n setOpenDetailedView('3d');\n }}\n >\n <Box3dIcon width={16} height={16} color={'#AAABB5'} />\n </Box>\n )}\n\n <Box className=\"box-image\">\n <Box\n style={{\n width: '100%',\n height: '100%',\n cursor: 'pointer',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n }}\n onClick={(e: any) => {\n e.preventDefault();\n handlerToggleModal(dataItem);\n }}\n >\n {main_image_link ? (\n <img\n src={main_image_link}\n key={main_image_link}\n alt=\"image_item\"\n className=\"img-style product-image\"\n style={{ width: '100%', height: '100%', objectFit: 'contain' }}\n />\n ) : (\n <img\n src={NoImage}\n alt=\"image_item\"\n style={{ width: '70%', height: '50%' }}\n />\n )}\n </Box>\n </Box>\n </Box>\n\n <Box\n className=\"box-content\"\n display={'flex'}\n style={{\n flexDirection: 'column',\n backgroundColor: '#F3F3F5',\n flexGrow: 1,\n zIndex: 100,\n }}\n >\n <Box className=\"box-top\" style={{ color: '#FFFFFF' }}>\n <Box\n display=\"flex\"\n justifyContent={'space-between'}\n flexDirection={'column'}\n style={{ color: '#2B2C46' }}\n gridGap={8}\n >\n {settings.CTAButtonText && (\n <Typography\n className=\"text-f12 max-line-1 fw-700\"\n style={{\n color: '#2B2C46',\n marginTop: 8,\n }}\n >\n {truncateString(dataItem[settings.field.productName], 45)}\n </Typography>\n )}\n <Box\n display=\"flex\"\n justifyContent={'space-between'}\n flexDirection={'row'}\n style={{ color: '#2B2C46', marginTop: 8 }}\n gridGap={8}\n >\n <Tooltip\n title={sku}\n placement=\"top\"\n arrow={true}\n disableHoverListener={sku?.length < 19 || !sku}\n >\n <Typography\n className=\"text-f12 max-line-1 fw-400\"\n style={{\n color: '#2B2C46',\n }}\n >\n {truncateString(\n sku,\n !settings.warehouseVariant ? 29 : isMobile ? 17 : 20,\n )}\n </Typography>\n </Tooltip>\n\n {settings.warehouseVariant &&\n !isUndefined(\n get(dataItem, settings.field.warehouseStockValue),\n ) && (\n <Typography\n className=\"text-f12 max-line-1 fw-400\"\n style={{\n color: '#2B2C46',\n }}\n >\n <span\n style={{\n color: get(dataItem, settings.field.warehouseStockValue)\n ? '#00C070'\n : '#c54545',\n fontWeight: 600,\n }}\n >\n {get(dataItem, settings.field.warehouseStockValue) || 0}\n </span>\n </Typography>\n )}\n </Box>\n <Box\n display=\"flex\"\n justifyContent={'space-between'}\n flexDirection={'row'}\n style={{ color: '#2B2C46' }}\n gridGap={8}\n >\n {(brand || settings.brandName) && (\n <ProductAttribute\n title={t('Brand')}\n value={brand || settings.brandName}\n padding=\"4px 8px\"\n width={{ xs: '49%' }}\n />\n )}\n\n {manufacturerNumber && (\n <ProductAttribute\n title={t('Mfr. No.')}\n value={manufacturerNumber}\n padding=\"4px 8px\"\n width={{ xs: '49%' }}\n />\n )}\n </Box>\n </Box>\n </Box>\n {settings.warehouseVariant && (\n <Box\n display=\"flex\"\n justifyContent={'space-between'}\n style={{ color: '#2B2C46', marginTop: '8px' }}\n gridGap={10}\n >\n {settings.field.warehouseNumber && (\n <ProductAttribute\n title={\n get(dataItem, settings.field.warehouseNumber) ||\n settings.field.warehouseNumber\n }\n value={\n get(dataItem, settings.field.warehouseNumberValue) || 'N/A'\n }\n padding=\"4px 8px\"\n width={{ xs: '49%' }}\n />\n )}\n\n {settings.field.warehouseShelfNumber && (\n <ProductAttribute\n title={\n get(dataItem, settings.field.warehouseShelfNumber) ||\n settings.field.warehouseShelfNumber\n }\n value={\n get(dataItem, settings.field.warehouseShelfNumberValue) ||\n 'N/A'\n }\n padding=\"4px 8px\"\n width={{ xs: '49%' }}\n />\n )}\n </Box>\n )}\n <div>\n {!settings.CTAButtonText ? (\n <Tooltip\n title={dataItem[settings.field.productName]}\n placement=\"top\"\n arrow={true}\n disableHoverListener={\n dataItem[settings.field.productName]?.length < 45\n }\n >\n <Box\n style={{\n boxShadow: '-2px 2px 4px rgba(170, 171, 181, 0.5)',\n // marginBottom: 22,\n height: 40,\n background: settings.theme?.primaryColor,\n borderRadius: 4,\n padding: '0px 8px',\n marginTop: '8px',\n }}\n display={'flex'}\n justifyItems={'center'}\n alignItems={'center'}\n justifyContent={'space-between'}\n >\n <Box\n style={{\n display: 'flex',\n justifyContent: 'space-between',\n width: '100%',\n padding: 0,\n cursor: ctaLink ? 'pointer' : 'normal',\n }}\n onClick={() => {\n if (ctaLink) {\n feedbackConversionEpic(state, indexItem, dataItem.sku);\n window.open(`${ctaLink}`, '_blank');\n }\n }}\n >\n <Typography\n className=\"text-white max-line-2\"\n style={{\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n fontWeight: 500,\n fontSize: '12px',\n letterSpacing: '0.27px',\n wordBreak: 'break-all',\n maxWidth: !isMobile && ctaLink ? '136px' : '164x',\n paddingRight: '8px',\n }}\n align=\"left\"\n >\n {truncateString(dataItem[settings.field.productName], 45)}\n </Typography>\n {!isMobile && ctaLink && (\n <img src={IconOpenLink} alt=\"more-info\" width={16} />\n )}\n </Box>\n </Box>\n </Tooltip>\n ) : (\n <Box\n style={{\n boxShadow: '-2px 2px 4px rgba(170, 171, 181, 0.5)',\n // marginBottom: 22,\n height: 40,\n background: settings.theme?.primaryColor,\n borderRadius: 4,\n padding: '0px 8px',\n marginTop: '8px',\n }}\n display={'flex'}\n justifyItems={'center'}\n alignItems={'center'}\n justifyContent={'space-between'}\n >\n <Box\n style={{\n display: 'flex',\n justifyContent: 'space-between',\n width: '100%',\n padding: 0,\n cursor: ctaLink ? 'pointer' : 'normal',\n }}\n onClick={() => {\n if (ctaLink) {\n feedbackConversionEpic(state, indexItem, dataItem.sku);\n window.open(`${ctaLink}`, '_blank');\n }\n }}\n >\n <Typography\n className=\"text-white max-line-2\"\n style={{\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n fontWeight: 500,\n fontSize: '12px',\n letterSpacing: '0.27px',\n wordBreak: 'break-all',\n maxWidth: !isMobile && ctaLink ? '136px' : '164x',\n paddingRight: '8px',\n }}\n align=\"left\"\n >\n {settings.CTAButtonText}\n </Typography>\n {!isMobile && ctaLink && (\n <img src={IconOpenLink} alt=\"more-info\" width={16} />\n )}\n </Box>\n </Box>\n )}\n\n {settings.showFeedbackAndShare && (\n <Box\n className=\"box-bottom\"\n style={{ marginBottom: 6, marginTop: 12 }}\n >\n <Grid\n container\n justifyContent={\n settings.shareOption ? 'space-between' : 'space-around'\n }\n alignItems=\"center\"\n >\n <Grid item>\n <Box display={'flex'} alignItems={'center'}>\n <Button\n className=\"btn-item\"\n onClick={() => {\n handlerFeedback('like');\n setFeedback('like');\n }}\n >\n <IconLike\n width={16}\n height={16}\n color={feedback === 'like' ? '#3E36DC' : '#000000'}\n />\n </Button>\n </Box>\n </Grid>\n <Grid item>\n <Box display={'flex'} alignItems={'center'}>\n <Button\n className=\"btn-item\"\n onClick={() => {\n handlerFeedback('dislike');\n setFeedback('dislike');\n }}\n >\n <IconDisLike\n width={16}\n height={16}\n color={feedback === 'dislike' ? '#CC1854' : '#000000'}\n />\n </Button>\n </Box>\n </Grid>\n {settings.shareOption && (\n <Grid item>\n <Box display={'flex'} alignItems={'center'}>\n <Button\n className=\"btn-item\"\n onClick={() => setOpenModalShare(true)}\n >\n <IconShare width={16} height={16} color=\"#000000\" />\n </Button>\n </Box>\n </Grid>\n )}\n </Grid>\n </Box>\n )}\n </div>\n </Box>\n </Box>\n );\n}\n\nexport default memo(ItemResult);\n","import { useAppSelector } from 'Store/Store';\nimport { useMemo } from 'react';\n\nfunction filterResultsBasedOnPostFilter(results: any, postFilter: any): any[] {\n return results?.filter((result: { filters: { [x: string]: any } }) => {\n return Object.keys(postFilter).every(filterType => {\n const filter = postFilter[filterType];\n\n const filterValues = Object.keys(filter).filter(key => filter[key]);\n\n if (filterValues.length > 0) {\n const resultFilterValues = result.filters[filterType];\n if (resultFilterValues) {\n return filterValues?.some((value: any) =>\n resultFilterValues.includes(value),\n );\n }\n }\n return true;\n });\n });\n}\n\nexport const useFilteredResult = (data: any) => {\n const { postFilter } = useAppSelector(state => state.search);\n return useMemo(() => {\n return filterResultsBasedOnPostFilter(data, postFilter || {});\n }, [data, postFilter]);\n};\n","import { useAppSelector } from 'Store/Store';\nimport { useFilteredResult } from 'hooks/useFilteredResult';\nimport { groupBy, uniqueId } from 'lodash';\nimport { useEffect, useMemo, useState } from 'react';\n\nexport const useProductList = ({ allSearchResults, isSearchStalled }: any) => {\n const { search, settings } = useAppSelector(state => state);\n const { valueTextSearch, results } = search || {};\n const { showGroup, algolia } = settings || {};\n const [itemShowDefault, setItemShowDefault] = useState<any[]>([]);\n const [algoliaRequest, setAlgoliaRequest] = useState(false);\n const [hitGroups, setHitGroups] = useState<any>({});\n\n const setListHitDefault = (hits: any) => {\n let newArrayShowGroup: any = [];\n let newArrayShowItem: any = [];\n\n const groupHits = hits.map((hit: { group_id: string }) => {\n if (!hit.group_id) {\n return { ...hit, group_id: uniqueId('random-group-id') };\n }\n return hit;\n });\n\n const groups = groupBy(groupHits, 'group_id');\n setHitGroups(groups);\n newArrayShowGroup = Object.values(groups);\n if (newArrayShowGroup?.length === 0) {\n return hits;\n }\n newArrayShowGroup.forEach((item: any) => {\n let payload: any;\n if (item?.length >= 2) {\n payload = {\n ...item[0],\n isGroup: true,\n collap: true,\n };\n newArrayShowItem.push(payload);\n } else {\n payload = {\n ...item[0],\n isGroup: false,\n collap: null,\n };\n newArrayShowItem.push(payload);\n }\n });\n\n return newArrayShowItem;\n };\n\n const handlerGroupItem = (hit: any, index: number) => {\n const group_id = hit.group_id;\n let newItemList = [...itemShowDefault];\n const firstArr = newItemList.slice(0, index + 1);\n firstArr.filter(item => item.group_id === group_id)[0].collap = false;\n let secondArr = newItemList.slice(index + 1, newItemList.length);\n let otherItemsInGroup = [...hitGroups[group_id]];\n otherItemsInGroup.shift();\n secondArr = otherItemsInGroup.concat(secondArr);\n setItemShowDefault(firstArr.concat(secondArr));\n };\n const handlerCloseGroup = (hit: any, index: number) => {\n const group_id = hit.group_id;\n let newItemList = [...itemShowDefault];\n const firstArr = newItemList.slice(0, index + 1);\n firstArr.filter(item => item.group_id === group_id)[0].collap = true;\n let secondArr = newItemList.slice(index + 1, newItemList.length);\n secondArr = secondArr.filter(item => {\n return item.group_id !== group_id;\n });\n setItemShowDefault(firstArr.concat(secondArr));\n };\n\n useEffect(() => {\n if (!allSearchResults?.hits?.length) {\n setItemShowDefault([]);\n return;\n }\n setAlgoliaRequest(false);\n const listHistDefaultGroups = showGroup\n ? setListHitDefault(allSearchResults?.hits)\n : allSearchResults?.hits;\n setItemShowDefault(listHistDefaultGroups);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [allSearchResults?.hits, valueTextSearch]);\n\n useEffect(() => {\n if (isSearchStalled) {\n setAlgoliaRequest(true);\n }\n }, [isSearchStalled]);\n\n const filteredResult = useFilteredResult(results);\n\n const productList = useMemo(() => {\n return filteredResult?.map((item: any) => {\n return {\n ...item,\n main_image_link: item.image || (item.images ? item.images[0] : ''),\n };\n });\n }, [filteredResult]);\n\n return {\n productList: algolia?.enabled ? itemShowDefault : productList || [],\n handlerGroupItem,\n handlerCloseGroup,\n algoliaRequest,\n isLoading: false,\n hasError: false,\n errorMessage: '',\n loadProductList: () => {},\n reset: () => {},\n };\n};\n","import { Box } from '@material-ui/core';\nimport ItemResult from 'components/results/ItemResult';\nimport React, { memo, useMemo } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { connectStateResults } from 'react-instantsearch-dom';\nimport { useMediaQuery } from 'react-responsive';\nimport { useAppSelector } from 'Store/Store';\nimport { AppState } from 'types';\nimport { useProductList } from './useProductList';\n\ninterface Props {\n allSearchResults: any;\n getUrlToCanvasFile: any;\n setLoading?: any;\n sendFeedBackAction: any;\n requestImage?: any;\n searchQuery?: string;\n}\n\nfunction ProductListComponent({\n allSearchResults,\n getUrlToCanvasFile,\n sendFeedBackAction,\n searchQuery,\n requestImage,\n isSearchStalled,\n}: any): JSX.Element {\n const { search, settings } = useAppSelector<AppState>((state: any) => state);\n const { loadingSearchAlgolia } = search;\n const isMobile = useMediaQuery({ query: '(max-width: 776px)' });\n const { t } = useTranslation();\n const { productList, handlerCloseGroup, handlerGroupItem, algoliaRequest } =\n useProductList({\n allSearchResults,\n });\n\n const renderItem = useMemo(() => {\n if (\n !requestImage &&\n !search.valueTextSearch.query &&\n !searchQuery &&\n !isSearchStalled\n ) {\n return (\n <Box style={{ marginTop: '50px', width: '100%', textAlign: 'center' }}>\n {t('Please upload an image or enter a keyword to search.')}\n </Box>\n );\n } else if (\n productList.length === 0 &&\n !loadingSearchAlgolia &&\n !isSearchStalled\n ) {\n return (\n <Box style={{ marginTop: '50px', width: '100%', textAlign: 'center' }}>\n {t('No products were found matching your search criteria.')}\n </Box>\n );\n }\n return productList.map((hit: any, i: number) => {\n return (\n <Box key={i} style={{ height: 'fit-content' }}>\n <ItemResult\n dataItem={hit}\n indexItem={i}\n isHover={false}\n onSearchImage={(url: string) => {\n getUrlToCanvasFile(url);\n }}\n handlerFeedback={(value: string) => {\n sendFeedBackAction(value);\n }}\n handlerGroupItem={(hitItem: any, index: number) =>\n handlerGroupItem(hitItem, index)\n }\n handlerCloseGroup={(hitItem: any, index: number) =>\n handlerCloseGroup(hitItem, index)\n }\n isGroupItem={settings.showGroup ? hit?.isGroup : false}\n main_image_link={\n hit['image(main_similarity)'] || hit['main_image_link']\n }\n />\n </Box>\n );\n });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n productList,\n searchQuery,\n requestImage,\n search.valueTextSearch,\n isSearchStalled,\n algoliaRequest,\n loadingSearchAlgolia,\n isMobile,\n ]);\n\n return <>{renderItem}</>;\n}\n\nconst ProductList = connectStateResults<Props>(memo(ProductListComponent));\nexport default ProductList;\n","var _path;\nvar _excluded = [\"svgRef\", \"title\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport React from \"react\";\nvar SvgError = function SvgError(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 20,\n height: 20,\n viewBox: \"0 0 20 20\",\n fill: \"none\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M10 0.000191037C8.68453 -0.0079651 7.38053 0.245119 6.16361 0.744768C4.94669 1.24442 3.84108 1.98069 2.91088 2.91088C1.98069 3.84108 1.24442 4.94669 0.744768 6.16361C0.245119 7.38053 -0.0079651 8.68453 0.000191037 10C-0.0079651 11.3155 0.245119 12.6195 0.744768 13.8364C1.24442 15.0533 1.98069 16.1589 2.91088 17.0891C3.84108 18.0193 4.94669 18.7556 6.16361 19.2552C7.38053 19.7549 8.68453 20.008 10 19.9998C11.3155 20.008 12.6195 19.7549 13.8364 19.2552C15.0533 18.7556 16.1589 18.0193 17.0891 17.0891C18.0193 16.1589 18.7556 15.0533 19.2552 13.8364C19.7549 12.6195 20.008 11.3155 19.9998 10C20.008 8.68453 19.7549 7.38053 19.2552 6.16361C18.7556 4.94669 18.0193 3.84108 17.0891 2.91088C16.1589 1.98069 15.0533 1.24442 13.8364 0.744768C12.6195 0.245119 11.3155 -0.0079651 10 0.000191037ZM13.8891 14.9999L5.0001 6.11129L6.11129 5.0001L14.9999 13.8891L13.8891 14.9999Z\",\n fill: \"#E31B5D\"\n })));\n};\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgError, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/error.48b946a9.svg\";\nexport { ForwardRef as ReactComponent };","import {\n RectCoords,\n getElementSize,\n getRectAspectRatio,\n getThumbSizeArea,\n elementToCanvas,\n} from '@nyris/nyris-api';\n\nexport const getCroppedCanvas = (\n canvas: HTMLCanvasElement | HTMLImageElement | HTMLVideoElement,\n cropRect?: RectCoords,\n) => {\n let crop = cropRect || {\n x1: 0,\n x2: 1,\n y1: 0,\n y2: 1,\n };\n if (!canvas) return null;\n\n const originalSize = getElementSize(canvas);\n const aspectRatio = getRectAspectRatio(crop, originalSize);\n let scaledSize = getThumbSizeArea(600, 600, aspectRatio);\n let resizedCroppedCanvas = elementToCanvas(canvas, scaledSize, crop);\n return resizedCroppedCanvas;\n};\n","import toast from 'react-hot-toast';\n\nexport class ToastHelper {\n static success(msg: string) {\n toast.success(msg, {\n duration: 3000,\n style: {\n background: '#1E1F31',\n color: '#fff',\n },\n });\n }\n\n static error(msg: string) {\n toast.error(msg, {\n duration: 3000,\n style: {\n background: '#1E1F31',\n color: '#fff',\n },\n });\n }\n}\n","import DefaultModal from 'components/modal/DefaultModal';\nimport React, { useEffect, useState } from 'react';\nimport CloseIcon from '@material-ui/icons/Close';\nimport { getCroppedCanvas } from 'helpers/getCroppedCanvas';\nimport emailjs from '@emailjs/browser';\nimport { ToastHelper } from 'helpers/ToastHelper';\nimport { isUndefined } from 'lodash';\nimport { TextareaAutosize } from '@material-ui/core';\nimport toast from 'react-hot-toast';\nimport { ReactComponent as ErrorIcon } from 'common/assets/icons/error.svg';\nimport { useMediaQuery } from 'react-responsive';\nimport { useAppSelector } from '../../Store/Store';\ninterface Props {\n requestImage: any;\n selectedRegion: any;\n setIsRfqModalOpen: any;\n isRfqModalOpen?: any;\n setRfqStatus: any;\n}\n// eslint-disable-next-line\nconst emailRegex = /.+\\@.+\\..+$/;\n\nconst getErrorMessage = (error: any) => {\n switch (error.status) {\n case 400:\n return 'Your email could not be sent, please try again or send an email to support@nyris.io';\n case 421:\n case 450:\n case 451:\n case 452:\n return \"Email delivery failed. Rest assured, we're continuously attempting to send it for you. Alternatively, you can forward the email to support@nyris.io\";\n default:\n return 'Your email could not be sent, please try again or send an email to support@nyris.io';\n }\n};\n\nexport default function RfqModal({\n requestImage,\n selectedRegion,\n setIsRfqModalOpen,\n isRfqModalOpen,\n setRfqStatus,\n}: Props) {\n const [email, setEmail] = useState('');\n const [emailValid, setEmailValid] = useState<boolean | undefined>(undefined);\n const isMobile = useMediaQuery({ query: '(max-width: 776px)' });\n const { settings } = useAppSelector(state => state);\n\n const [information, setInformation] = useState('');\n const setFormattedContent = React.useCallback(\n text => {\n setInformation(text.slice(0, 150));\n },\n [setInformation],\n );\n useEffect(() => emailjs.init('SMGihPnuEGcYLm0V4'), []);\n useEffect(() => {\n if (email)\n emailRegex.test(email) ? setEmailValid(true) : setEmailValid(false);\n }, [email]);\n\n const handleRfq = async (e: { preventDefault: () => void }) => {\n e.preventDefault();\n const { canvas }: any = requestImage;\n const croppedImage = getCroppedCanvas(canvas, selectedRegion);\n const serviceId = 'service_zfsxshi';\n setIsRfqModalOpen(false);\n const templateId = settings.rfq?.emailTemplateId;\n\n if (templateId) {\n try {\n setRfqStatus('loading');\n await emailjs.send(serviceId, templateId, {\n email_id: email.trim(),\n information_text: information,\n request_image: croppedImage?.toDataURL(),\n });\n setRfqStatus('sent');\n ToastHelper.success('Request sent successfully');\n } catch (error) {\n setRfqStatus('inactive');\n\n toast(\n t => {\n return (\n <div\n style={{\n display: 'flex',\n flexDirection: 'column',\n fontSize: '14px',\n width: '294px',\n }}\n >\n <span style={{ fontWeight: 'bold' }}>Email not sent</span>\n <span>{getErrorMessage(error)}</span>\n <a\n href={`mailto:support@nyris.io?subject=Request for quotation&body=${information}`}\n style={{\n padding: '8px 16px 8px 16px',\n border: '1px solid #000',\n marginTop: '16px',\n backgroundColor: 'transparent',\n color: '#000',\n cursor: 'pointer',\n width: 'fit-content',\n }}\n >\n support@nyris.io\n </a>\n </div>\n );\n },\n {\n duration: 5000,\n style: {\n background: '#FFE5EF',\n color: '#000000',\n maxWidth: '400px',\n },\n icon: (\n <div style={{ minWidth: '20px', minHeight: '20px' }}>\n <ErrorIcon />\n </div>\n ),\n },\n );\n }\n setIsRfqModalOpen(false);\n }\n };\n\n return (\n <DefaultModal\n openModal={isRfqModalOpen}\n handleClose={(e: any) => {\n setIsRfqModalOpen(false);\n }}\n >\n <div\n style={{\n display: 'flex',\n width: !isMobile ? '378px' : '360px',\n flexDirection: 'column',\n backgroundColor: '#fff',\n }}\n >\n <div\n style={{\n padding: '16px',\n display: 'flex',\n flexDirection: 'column',\n }}\n >\n <CloseIcon\n style={{\n fontSize: 16,\n color: 'black',\n alignSelf: 'flex-end',\n cursor: 'pointer',\n }}\n onClick={() => setIsRfqModalOpen(false)}\n />\n <p\n style={{\n color: '#2B2C46',\n fontSize: '20px',\n fontWeight: 'bold',\n }}\n >\n Submit your image for quotation\n </p>\n </div>\n <div\n style={{\n padding: '16px',\n backgroundColor: '#F3F3F5',\n display: 'flex',\n justifyContent: 'center',\n }}\n >\n <img\n src={getCroppedCanvas(\n requestImage?.canvas,\n selectedRegion,\n )?.toDataURL()}\n alt=\"request_image\"\n style={{ maxHeight: '200px' }}\n />\n </div>\n <div\n style={{\n padding: '0px 16px 16px 16px',\n backgroundColor: '#F3F3F5',\n display: 'flex',\n flexDirection: 'column',\n rowGap: '16px',\n }}\n >\n <div>\n <p\n style={{\n fontSize: '12px',\n color: '#2B2C46',\n marginBottom: '8px',\n }}\n >\n Your email (required)\n </p>\n <input\n value={email}\n onChange={e => setEmail(e.currentTarget.value.trim())}\n style={{\n width: '100%',\n border: 'none',\n height: '32px',\n padding: '8px 16px 8px 16px',\n }}\n />\n {!emailValid && !isUndefined(emailValid) && (\n <p style={{ color: 'red', fontSize: '12px', paddingTop: '8px' }}>\n Please enter a valid email.\n </p>\n )}\n </div>\n <div>\n <div\n style={{\n marginBottom: '8px',\n display: 'flex',\n justifyContent: 'space-between',\n fontSize: '12px',\n color: '#2B2C46',\n }}\n >\n <p>Additional information</p>\n <p>{`${information.length}/150`}</p>\n </div>\n <TextareaAutosize\n value={information}\n onChange={e => setFormattedContent(e.currentTarget.value)}\n style={{\n width: '100%',\n border: 'none',\n maxWidth: '346px',\n padding: '8px 16px 8px 16px',\n }}\n />\n </div>\n </div>\n <div style={{ display: 'flex' }}>\n <button\n style={{\n height: '66px',\n display: 'flex',\n alignItems: 'center',\n width: '50%',\n backgroundColor: '#4B4B4A',\n color: 'white',\n fontSize: '14px',\n paddingLeft: '16px',\n border: 'none',\n cursor: 'pointer',\n }}\n onClick={() => setIsRfqModalOpen(false)}\n >\n Cancel\n </button>\n <button\n style={{\n height: '66px',\n display: 'flex',\n alignItems: 'center',\n width: '50%',\n backgroundColor: emailValid ? '#4DBE51' : '#E9E9EC',\n color: emailValid ? '#fff' : '#AAABB5',\n fontSize: '14px',\n paddingLeft: '16px',\n border: 'none',\n cursor: emailValid ? 'pointer' : 'normal',\n }}\n disabled={!emailValid}\n onClick={handleRfq}\n >\n Send\n </button>\n </div>\n </div>\n </DefaultModal>\n );\n}\n","var _path;\nvar _excluded = [\"svgRef\", \"title\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport React from \"react\";\nvar SvgArrowRight = function SvgArrowRight(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 16,\n height: 16,\n viewBox: \"0 0 16 16\",\n fill: \"none\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M9.92155 9.15944C10.2525 8.78211 10.2525 8.21789 9.92155 7.84056L6.46105 3.8956C6.27719 3.68599 5.95088 3.68599 5.76702 3.8956C5.61423 4.06978 5.61423 4.33022 5.76702 4.5044L8.69348 7.84056C9.02446 8.21789 9.02446 8.78211 8.69348 9.15944L5.76702 12.4956C5.61423 12.6698 5.61423 12.9302 5.76702 13.1044C5.95088 13.314 6.27719 13.314 6.46105 13.1044L9.92155 9.15944Z\",\n fill: \"#2B2C46\"\n })));\n};\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgArrowRight, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/arrow_right.c6fdab0b.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nvar _excluded = [\"svgRef\", \"title\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport React from \"react\";\nvar SvgArrowLeft = function SvgArrowLeft(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 16,\n height: 16,\n viewBox: \"0 0 16 16\",\n fill: \"none\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M6.07845 9.15944C5.74747 8.78211 5.74747 8.21789 6.07845 7.84056L9.53895 3.8956C9.72281 3.68599 10.0491 3.68599 10.233 3.8956C10.3858 4.06978 10.3858 4.33022 10.233 4.5044L7.30652 7.84056C6.97554 8.21789 6.97554 8.78211 7.30652 9.15944L10.233 12.4956C10.3858 12.6698 10.3858 12.9302 10.233 13.1044C10.0491 13.314 9.72281 13.314 9.53895 13.1044L6.07845 9.15944Z\",\n fill: \"#2B2C46\"\n })));\n};\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgArrowLeft, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/arrow_left.fd9d4390.svg\";\nexport { ForwardRef as ReactComponent };","import { Box, Button, Typography } from '@material-ui/core';\nimport { RectCoords } from '@nyris/nyris-api';\nimport { Preview } from '@nyris/nyris-react-components';\nimport React, { useState } from 'react';\nimport PostFilterPanel from './PanelResult/PostFilter';\nimport PostFilterPanelAlgolia from './PanelResult/PostFilterAlgolia';\n\nimport { useTranslation } from 'react-i18next';\nimport { useAppSelector } from 'Store/Store';\nimport { ReactComponent as KeyboardArrowRightOutlinedIcon } from 'common/assets/icons/arrow_right.svg';\nimport { ReactComponent as KeyboardArrowLeftOutlinedIcon } from 'common/assets/icons/arrow_left.svg';\n\nimport { DEFAULT_REGION } from '../constants';\nimport { ReactComponent as IconInfo } from 'common/assets/icons/info-tooltip.svg';\n\nfunction SidePanel({\n setImageSelection,\n imageSelection,\n debouncedOnImageSelectionChange,\n filteredRegions,\n showAdjustInfoBasedOnConfidence,\n showAdjustInfo,\n showPostFilter,\n disjunctiveFacets,\n}: {\n setImageSelection: any;\n imageSelection: any;\n debouncedOnImageSelectionChange: any;\n filteredRegions: any;\n showAdjustInfoBasedOnConfidence: any;\n showAdjustInfo: any;\n showPostFilter: any;\n allSearchResults: any;\n disjunctiveFacets: any;\n}) {\n const { t } = useTranslation();\n const [toggleColLeft, setToggleColLeft] = useState<boolean>(false);\n const stateGlobal = useAppSelector(state => state);\n const { search, settings } = stateGlobal;\n\n const { requestImage } = search;\n\n return (\n <Box\n className={`wrap-main-col-left ${toggleColLeft ? 'toggle' : ''}`}\n style={{\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'space-between',\n }}\n >\n <Box\n className=\"box-toggle-coloumn\"\n style={{\n right: '0px',\n }}\n >\n <Button\n style={{\n color: '#55566b',\n height: '32px',\n }}\n onClick={() => {\n setToggleColLeft(!toggleColLeft);\n }}\n >\n {toggleColLeft ? (\n <KeyboardArrowRightOutlinedIcon />\n ) : (\n <KeyboardArrowLeftOutlinedIcon />\n )}\n </Button>\n </Box>\n <Box>\n {settings.preview && requestImage && (\n <Box className=\"col-left\">\n <Box className=\"box-preview\">\n <Box\n className=\"preview-item\"\n style={{\n backgroundColor: 'white',\n paddingTop: '32px',\n width: '100%',\n }}\n >\n <div\n style={{\n display: 'flex',\n justifyContent: 'center',\n backgroundColor: '#F3F3F5',\n width: '100%',\n paddingTop: '16px',\n paddingBottom: '16px',\n }}\n >\n <div\n style={{\n width: '288px',\n height: 'fit-content',\n }}\n >\n <Preview\n key={requestImage?.id}\n onSelectionChange={(r: RectCoords) => {\n setImageSelection(r);\n debouncedOnImageSelectionChange(r);\n }}\n image={requestImage?.canvas}\n selection={imageSelection || DEFAULT_REGION}\n regions={filteredRegions}\n dotColor={'#FBD914'}\n minCropWidth={60}\n minCropHeight={60}\n rounded={true}\n />\n </div>\n </div>\n </Box>\n </Box>\n {(showAdjustInfoBasedOnConfidence || showAdjustInfo) && (\n <Box\n className=\"box-title_col-left\"\n alignItems=\"center\"\n style={{\n backgroundColor: '#3E36DC',\n display: 'flex',\n columnGap: '6px',\n padding: '5px',\n }}\n >\n <IconInfo color=\"white\" />\n <Typography\n style={{\n fontSize: 10,\n color: '#fff',\n }}\n >\n {showAdjustInfo\n ? t('Crop the image for better results')\n : 'Crop the image for better results'}\n </Typography>\n </Box>\n )}\n </Box>\n )}\n\n {showPostFilter && (\n <Box\n className=\"col-left__bottom\"\n style={{\n marginTop: requestImage ? '16px' : '48px',\n }}\n >\n {settings.algolia.enabled && (\n <PostFilterPanelAlgolia disjunctiveFacets={disjunctiveFacets} />\n )}\n {!settings.algolia.enabled && <PostFilterPanel />}\n </Box>\n )}\n </Box>\n </Box>\n );\n}\n\nexport default SidePanel;\n","var _path;\nvar _excluded = [\"svgRef\", \"title\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport React from \"react\";\nvar SvgArrowUp = function SvgArrowUp(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 16,\n height: 16,\n viewBox: \"0 0 16 16\",\n fill: \"none\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M8.65944 6.57845C8.28211 6.24747 7.71789 6.24747 7.34056 6.57845L3.3956 10.0389C3.18599 10.2228 3.18599 10.5491 3.3956 10.733C3.56978 10.8858 3.83022 10.8858 4.0044 10.733L7.34056 7.80652C7.71789 7.47554 8.28211 7.47554 8.65944 7.80652L11.9956 10.733C12.1698 10.8858 12.4302 10.8858 12.6044 10.733C12.814 10.5491 12.814 10.2228 12.6044 10.0389L8.65944 6.57845Z\",\n fill: \"currentColor\"\n })));\n};\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgArrowUp, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/arrow_up.fcd6b144.svg\";\nexport { ForwardRef as ReactComponent };","import { useMemo } from 'react';\n\nconst useFilteredRegions = (regions: any, imageSelection: any) => {\n const filteredRegions = useMemo(\n () =>\n regions.map(\n (region: {\n normalizedRect: { x1: any; x2: any; y1: any; y2: any };\n }) => {\n if (\n region.normalizedRect?.x1 === imageSelection?.x1 &&\n region.normalizedRect?.x2 === imageSelection?.x2 &&\n region.normalizedRect?.y1 === imageSelection?.y1 &&\n region.normalizedRect?.y2 === imageSelection?.y2\n ) {\n return { ...region, show: false };\n }\n if (\n imageSelection?.x1 === 0 &&\n imageSelection?.x2 === 1 &&\n imageSelection?.y1 === 0 &&\n imageSelection?.y2 === 1\n ) {\n return { ...region, show: false };\n }\n\n return { ...region, show: true };\n },\n ),\n\n [regions, imageSelection],\n );\n\n return filteredRegions;\n};\n\nexport default useFilteredRegions;\n","var _path;\nvar _excluded = [\"svgRef\", \"title\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport React from \"react\";\nvar SvgArrowDown = function SvgArrowDown(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 16,\n height: 16,\n viewBox: \"0 0 16 16\",\n fill: \"none\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M8.65944 10.4215C8.28211 10.7525 7.71789 10.7525 7.34056 10.4215L3.3956 6.96105C3.18599 6.77719 3.18599 6.45088 3.3956 6.26702C3.56978 6.11423 3.83022 6.11423 4.0044 6.26702L7.34056 9.19348C7.71789 9.52446 8.28211 9.52446 8.65944 9.19348L11.9956 6.26702C12.1698 6.11423 12.4302 6.11423 12.6044 6.26702C12.814 6.45088 12.814 6.77719 12.6044 6.96105L8.65944 10.4215Z\",\n fill: \"#currentColor\"\n })));\n};\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgArrowDown, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/arrow_down.c1b611db.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nvar _excluded = [\"svgRef\", \"title\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport React from \"react\";\nvar SvgTrash = function SvgTrash(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 14,\n height: 14,\n viewBox: \"0 0 14 14\",\n fill: \"none\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M9 0.5C9 0.223858 8.77614 0 8.5 0H5.5C5.22386 0 5 0.223858 5 0.5C5 0.776142 5.22386 1 5.5 1H8.5C8.77614 1 9 0.776142 9 0.5ZM1.5 3C1.22386 3 1 2.77614 1 2.5C1 2.22386 1.22386 2 1.5 2H12.5C12.7761 2 13 2.22386 13 2.5C13 2.77614 12.7761 3 12.5 3C12.2239 3 12 3.22386 12 3.5V13C12 13.5523 11.5523 14 11 14H3C2.44772 14 2 13.5523 2 13V3.5C2 3.22386 1.77614 3 1.5 3ZM4 3C3.44772 3 3 3.44772 3 4V12C3 12.5523 3.44772 13 4 13H10C10.5523 13 11 12.5523 11 12V4C11 3.44772 10.5523 3 10 3H4ZM6 5.5C6 5.22386 5.77614 5 5.5 5C5.22386 5 5 5.22386 5 5.5V10.5C5 10.7761 5.22386 11 5.5 11C5.77614 11 6 10.7761 6 10.5V5.5ZM9 5.5C9 5.22386 8.77614 5 8.5 5C8.22386 5 8 5.22386 8 5.5V10.5C8 10.7761 8.22386 11 8.5 11C8.77614 11 9 10.7761 9 10.5V5.5Z\",\n fill: \"currentColor\"\n })));\n};\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgTrash, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/trash.1624780d.svg\";\nexport { ForwardRef as ReactComponent };","import React, { memo, useState } from 'react';\nimport { Box, Typography, Hidden } from '@material-ui/core';\nimport { RectCoords } from '@nyris/nyris-api';\nimport { Preview } from '@nyris/nyris-react-components';\nimport { DEFAULT_REGION } from '../constants';\nimport { ReactComponent as IconInfo } from 'common/assets/icons/info-tooltip.svg';\nimport { useTranslation } from 'react-i18next';\nimport { useAppDispatch, useAppSelector } from 'Store/Store';\nimport { ReactComponent as ArrowUp } from 'common/assets/icons/arrow_up.svg';\nimport { ReactComponent as ArrowDown } from 'common/assets/icons/arrow_down.svg';\nimport { ReactComponent as Trash } from 'common/assets/icons/trash.svg';\nimport { useQuery } from 'hooks/useQuery';\nimport {\n reset,\n setSearchResults,\n updateStatusLoading,\n} from 'Store/search/Search';\nimport { useHistory } from 'react-router-dom';\nimport { connectSearchBox } from 'react-instantsearch-dom';\nimport { find } from 'services/image';\nimport { isEmpty } from 'lodash';\n\nfunction ImagePreviewMobileComponent({\n requestImage,\n imageSelection,\n setImageSelection,\n debouncedOnImageSelectionChange,\n filteredRegions,\n showAdjustInfo,\n showAdjustInfoBasedOnConfidence,\n ...rest\n}: {\n requestImage: any;\n imageSelection: any;\n setImageSelection: any;\n debouncedOnImageSelectionChange: any;\n filteredRegions: any;\n showAdjustInfoBasedOnConfidence: any;\n showAdjustInfo: any;\n}) {\n const { t } = useTranslation();\n const { refine }: any = rest;\n const [editActive, setEditActive] = useState(false);\n const settings = useAppSelector(state => state.settings);\n const { preFilter } = useAppSelector(state => state.search);\n const isAlgoliaEnabled = settings.algolia?.enabled;\n const query = useQuery();\n const dispatch = useAppDispatch();\n const history = useHistory();\n\n const handleArrowClick = () => {\n setEditActive(s => !s);\n };\n\n const searchQuery = query.get('query') || '';\n\n const onImageRemove = () => {\n if (!searchQuery) {\n dispatch(reset(''));\n history.push('/');\n }\n dispatch(reset(''));\n if (isAlgoliaEnabled) {\n // not an ideal solution: fixes text search not working after removing image\n setTimeout(() => {\n refine(searchQuery);\n }, 100);\n }\n if (!isAlgoliaEnabled) {\n let payload: any;\n let filters: any[] = [];\n const preFilterValues = [\n {\n key: settings.visualSearchFilterKey,\n values: Object.keys(preFilter) as string[],\n },\n ];\n if (searchQuery || requestImage) {\n dispatch(updateStatusLoading(true));\n find({\n settings,\n filters: !isEmpty(preFilter) ? preFilterValues : undefined,\n text: searchQuery,\n })\n .then((res: any) => {\n res?.results.map((item: any) => {\n filters.push({\n sku: item.sku,\n score: item.score,\n });\n });\n payload = {\n ...res,\n filters,\n };\n\n dispatch(setSearchResults(payload));\n dispatch(updateStatusLoading(false));\n })\n .catch((e: any) => {\n console.log('error input search', e);\n dispatch(updateStatusLoading(false));\n });\n } else {\n dispatch(setSearchResults([]));\n }\n }\n };\n\n return (\n <Box\n className=\"col-left\"\n style={{\n backgroundColor: '#5D5D63',\n marginBottom: '15px',\n }}\n >\n <div>\n <Box className=\"box-preview\">\n <Box>\n <div\n className=\"preview-item\"\n style={{\n backgroundColor: 'transparent',\n }}\n >\n <Preview\n key={requestImage?.id}\n onSelectionChange={(r: RectCoords) => {\n setImageSelection(r);\n debouncedOnImageSelectionChange(r);\n }}\n image={requestImage?.canvas}\n selection={imageSelection || DEFAULT_REGION}\n regions={filteredRegions}\n minWidth={80}\n minHeight={80}\n maxWidth={255}\n maxHeight={255}\n dotColor={editActive ? '#FBD914' : ''}\n minCropWidth={editActive ? 60 : 5}\n minCropHeight={editActive ? 60 : 5}\n rounded={false}\n expandAnimation={editActive}\n shrinkAnimation={!editActive}\n onExpand={() => {\n setEditActive(true);\n }}\n showGrip={editActive}\n draggable={editActive ? true : false}\n />\n </div>\n </Box>\n {(showAdjustInfoBasedOnConfidence || showAdjustInfo) && (\n <Box\n className=\"box-title_col-left\"\n alignItems=\"center\"\n style={{\n backgroundColor: '#3E36DC',\n display: 'flex',\n columnGap: '6px',\n padding: '5px',\n width: 'fit-content',\n minWidth: '180px',\n }}\n >\n <IconInfo color=\"white\" />\n <Typography\n style={{\n fontSize: 10,\n color: '#fff',\n }}\n >\n {showAdjustInfo\n ? t('Crop the image for better results')\n : 'Crop the image for better results'}\n </Typography>\n </Box>\n )}\n </Box>\n <>\n <Hidden>\n <Box\n sx={{\n position: 'absolute',\n left: '15px',\n top: '25px',\n padding: '4px',\n }}\n onClick={onImageRemove}\n >\n <Box\n sx={{\n width: '24px',\n height: '24px',\n justifyContent: 'center',\n alignItems: 'center',\n display: 'flex',\n borderRadius: '100%',\n }}\n >\n <Trash color=\"white\" fill=\"white\" />\n </Box>\n </Box>\n </Hidden>\n\n <Hidden mdUp>\n <Box\n className=\"slideDown\"\n sx={{\n position: 'absolute',\n bottom: '25px',\n right: '20px',\n }}\n onClick={handleArrowClick}\n >\n <Box\n bgcolor={'white'}\n sx={{\n width: '24px',\n height: '24px',\n justifyContent: 'center',\n alignItems: 'center',\n display: 'flex',\n borderRadius: '100%',\n }}\n >\n {editActive && <ArrowUp color=\"black\" />}\n {!editActive && <ArrowDown color=\"black\" fill=\"black\" />}\n </Box>\n </Box>\n </Hidden>\n </>\n </div>\n </Box>\n );\n}\nconst ImagePreviewMobile = connectSearchBox<any>(\n memo(ImagePreviewMobileComponent),\n);\nexport default ImagePreviewMobile;\n","import { Box } from '@material-ui/core';\nimport { getCroppedCanvas } from 'helpers/getCroppedCanvas';\nimport React from 'react';\nimport { useMediaQuery } from 'react-responsive';\n\nfunction RfqBanner({\n requestImage,\n rfqRef,\n rfqStatus,\n selectedRegion,\n setIsRfqModalOpen,\n}: {\n rfqRef?: any;\n rfqStatus: any;\n setIsRfqModalOpen: any;\n requestImage: any;\n selectedRegion: any;\n}) {\n const isMobile = useMediaQuery({ query: '(max-width: 776px)' });\n\n return (\n <Box\n style={{\n padding: '0px 16px 0px 16px',\n backgroundColor: '#F6F3F1',\n width: '100%',\n marginBottom: !isMobile ? '32px' : '0px',\n alignSelf: 'end',\n height: '248px',\n display: 'flex',\n alignItems: 'center',\n }}\n className=\"rfq-box\"\n >\n <Box\n style={{\n width: '100%',\n display: 'flex',\n columnGap: '16px',\n alignItems: 'center',\n justifyContent: 'space-around',\n }}\n >\n <div>\n <img\n src={getCroppedCanvas(\n requestImage?.canvas,\n selectedRegion,\n )?.toDataURL()}\n alt=\"request_image\"\n style={{\n mixBlendMode: rfqStatus !== 'inactive' ? 'overlay' : 'unset',\n maxHeight: '181px',\n maxWidth: '181px',\n borderRadius: '2px',\n }}\n />\n </div>\n <Box>\n <Box\n style={{\n paddingBottom: '12px',\n }}\n >\n <Box\n style={{\n fontSize: '14px',\n color: rfqStatus === 'inactive' ? '#4B4B4A' : '#CACAD1',\n fontWeight: 'bold',\n }}\n >\n {isMobile\n ? 'No matches found?'\n : 'No matches found for your request?'}\n </Box>\n <Box\n style={{\n fontSize: '12px',\n maxWidth: '320x',\n lineHeight: '14.1px',\n color: rfqStatus === 'inactive' ? '#4B4B4A' : '#CACAD1',\n fontWeight: 'normal',\n }}\n >\n Get personalised help from our team of product experts.\n </Box>\n </Box>\n <button\n style={{\n maxWidth: '200px',\n background: rfqStatus === 'inactive' ? '#4B4B4A' : '#E9E9EC',\n boxShadow:\n rfqStatus === 'inactive'\n ? '0px 0px 4px 0px rgba(0, 0, 0, 0.25)'\n : '',\n borderRadius: '2px',\n padding: '16px 16px 16px 16px',\n display: 'flex',\n alignItems: 'center',\n color: rfqStatus === 'inactive' ? '#fff' : '#CACAD1',\n fontSize: '14px',\n height: '48px',\n cursor: rfqStatus === 'inactive' ? 'pointer' : 'default',\n border: 'none',\n }}\n disabled={rfqStatus !== 'inactive'}\n onClick={() => {\n setIsRfqModalOpen(true);\n }}\n >\n Request a Quote\n </button>\n </Box>\n </Box>\n </Box>\n );\n}\n\nexport default RfqBanner;\n","import DefaultModal from 'components/modal/DefaultModal';\nimport React, { useEffect, useState } from 'react';\nimport CloseIcon from '@material-ui/icons/Close';\nimport { getCroppedCanvas } from 'helpers/getCroppedCanvas';\nimport emailjs from '@emailjs/browser';\nimport { ToastHelper } from 'helpers/ToastHelper';\nimport { isUndefined } from 'lodash';\nimport { TextareaAutosize, Tooltip } from '@material-ui/core';\nimport toast from 'react-hot-toast';\nimport { ReactComponent as ErrorIcon } from 'common/assets/icons/error.svg';\nimport { ReactComponent as InfoTooltip } from 'common/assets/icons/info-tooltip.svg';\n\nimport { useAppSelector } from 'Store/Store';\nimport { useMediaQuery } from 'react-responsive';\ninterface Props {\n requestImage: any;\n selectedRegion: any;\n setIsInquiryModalOpen: any;\n isInquiryModalOpen?: any;\n}\n// eslint-disable-next-line\nconst emailRegex = /.+\\@.+\\..+$/;\n\nconst getErrorMessage = (error: any) => {\n switch (error.status) {\n case 400:\n return 'Your email could not be sent, please try again or send an email to:';\n case 421:\n case 450:\n case 451:\n case 452:\n return \"Email delivery failed. Rest assured, we're continuously attempting to send it for you. Alternatively, you can forward the email to:\";\n default:\n return 'Your email could not be sent, please try again or send an email to:';\n }\n};\n\nexport default function InquiryModal({\n requestImage,\n selectedRegion,\n setIsInquiryModalOpen,\n isInquiryModalOpen,\n}: Props) {\n const stateGlobal = useAppSelector(state => state);\n const {\n search: { preFilter },\n settings,\n } = stateGlobal;\n\n const preFilterValues = Object.keys(preFilter) as string[];\n\n const [email, setEmail] = useState('');\n const [emailValid, setEmailValid] = useState<boolean | undefined>(undefined);\n const isMobile = useMediaQuery({ query: '(max-width: 776px)' });\n\n const [information, setInformation] = useState('');\n\n const setFormattedContent = React.useCallback(\n text => {\n setInformation(text.slice(0, 150));\n },\n [setInformation],\n );\n\n useEffect(() => emailjs.init('SMGihPnuEGcYLm0V4'), []);\n useEffect(() => {\n if (email)\n emailRegex.test(email) ? setEmailValid(true) : setEmailValid(false);\n }, [email]);\n\n const handleInquiry = async (e: { preventDefault: () => void }) => {\n e.preventDefault();\n const { canvas }: any = requestImage || {};\n const croppedImage = canvas\n ? getCroppedCanvas(canvas, selectedRegion)\n : null;\n const serviceId = 'service_zfsxshi';\n setIsInquiryModalOpen(false);\n const templateId = settings.support?.emailTemplateId;\n if (templateId) {\n try {\n await emailjs.send(serviceId, templateId, {\n email_id: email.trim(),\n information_text: information ? information : '<not specified>',\n request_image: croppedImage?.toDataURL(),\n prefilter_values: preFilterValues?.length\n ? preFilterValues.join(', ')\n : '<not specified>',\n });\n ToastHelper.success('Request sent successfully');\n } catch (error) {\n toast(\n t => {\n return (\n <div\n style={{\n display: 'flex',\n flexDirection: 'column',\n fontSize: '14px',\n width: '294px',\n }}\n >\n <span style={{ fontWeight: 'bold' }}>Email not sent</span>\n <span>{getErrorMessage(error)}</span>\n <a\n href={`mailto:support@nyris.io?subject=Request for quotation&body=${encodeURIComponent(`Hello,\n I filled out the support form on the Search Suite, but it failed. I inquired the following:\n email:\n Pre-filter:\n Additional Text: `)}`}\n style={{\n padding: '8px 16px 8px 16px',\n border: '1px solid #000',\n marginTop: '16px',\n backgroundColor: 'transparent',\n color: '#000',\n cursor: 'pointer',\n width: 'fit-content',\n }}\n >\n support@nyris.io\n </a>\n </div>\n );\n },\n {\n duration: 5000,\n style: {\n background: '#FFE5EF',\n color: '#000000',\n maxWidth: '400px',\n },\n icon: (\n <div style={{ minWidth: '20px', minHeight: '20px' }}>\n <ErrorIcon />\n </div>\n ),\n },\n );\n }\n setIsInquiryModalOpen(false);\n }\n };\n\n return (\n <DefaultModal\n openModal={isInquiryModalOpen}\n rounded={false}\n handleClose={(e: any) => {\n setIsInquiryModalOpen(false);\n }}\n >\n <div\n style={{\n display: 'flex',\n width: !isMobile ? '378px' : '360px',\n flexDirection: 'column',\n backgroundColor: '#F3F3F5',\n }}\n >\n <div\n style={{\n padding: '16px',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n }}\n >\n <p\n style={{\n color: '#2B2C46',\n fontSize: !isMobile ? '20px' : '18px',\n fontWeight: 'bold',\n }}\n >\n {requestImage\n ? 'Submit your image for inquiry'\n : 'Submit your inquiry'}\n </p>\n <div\n onClick={() => setIsInquiryModalOpen(false)}\n style={{ display: 'flex', padding: '1px' }}\n >\n <CloseIcon\n style={{\n fontSize: 16,\n color: 'black',\n cursor: 'pointer',\n }}\n />\n </div>\n </div>\n {requestImage && (\n <div\n style={{\n padding: '16px',\n backgroundColor: '#F3F3F5',\n display: 'flex',\n justifyContent: 'center',\n }}\n >\n <img\n src={getCroppedCanvas(\n requestImage?.canvas,\n selectedRegion,\n )?.toDataURL()}\n alt=\"request_image\"\n style={{ maxHeight: '200px' }}\n />\n </div>\n )}\n\n <div\n style={{\n padding: '16px 16px 16px 16px',\n backgroundColor: '#F3F3F5',\n display: 'flex',\n flexDirection: 'column',\n rowGap: '16px',\n }}\n >\n <div>\n <p\n style={{\n fontSize: '12px',\n color: '#2B2C46',\n marginBottom: '8px',\n }}\n >\n Your email (required)\n </p>\n <input\n value={email}\n onChange={e => setEmail(e.currentTarget.value.trim())}\n style={{\n width: '100%',\n border: 'none',\n height: '32px',\n padding: '8px 16px 8px 16px',\n fontSize: '13px',\n color: ' #2B2C46',\n }}\n />\n {!emailValid && !isUndefined(emailValid) && (\n <p style={{ color: 'red', fontSize: '12px', paddingTop: '8px' }}>\n Please enter a valid email.\n </p>\n )}\n </div>\n {settings.preFilterOption && (\n <div>\n <div\n style={{\n display: 'flex',\n columnGap: '4px',\n alignItems: 'center',\n marginBottom: '8px',\n }}\n >\n <p\n style={{\n fontSize: '12px',\n color: '#2B2C46',\n }}\n >\n Machine\n </p>\n <Tooltip\n title={\n 'Please select a pre-filter before search request to refine and yield accurate results.'\n }\n placement=\"top\"\n arrow={true}\n >\n <InfoTooltip style={{ cursor: 'pointer' }} />\n </Tooltip>\n </div>\n\n <div\n style={{\n width: '100%',\n border: 'none',\n padding: '8px 16px 8px 16px',\n fontSize: '13px',\n color: '#2B2C46',\n minHeight: '32px',\n backgroundColor: '#fff',\n }}\n >\n {preFilterValues.join(', ') || 'Pre-filter is not selected'}\n </div>\n </div>\n )}\n\n <div>\n <div\n style={{\n marginBottom: '8px',\n display: 'flex',\n justifyContent: 'space-between',\n fontSize: '12px',\n color: '#2B2C46',\n }}\n >\n <p>Additional information</p>\n <p>{`${information.length}/150`}</p>\n </div>\n <TextareaAutosize\n value={information}\n onChange={e => setFormattedContent(e.currentTarget.value)}\n style={{\n width: '100%',\n border: 'none',\n maxWidth: '346px',\n minHeight: '40px',\n padding: '8px 16px 8px 16px',\n fontSize: '13px',\n color: ' #2B2C46',\n }}\n />\n </div>\n </div>\n <div style={{ display: 'flex' }}>\n <button\n style={{\n height: '66px',\n display: 'flex',\n alignItems: 'center',\n width: '50%',\n backgroundColor: '#2B2C46',\n color: 'white',\n fontSize: '14px',\n paddingLeft: '16px',\n border: 'none',\n cursor: 'pointer',\n }}\n onClick={() => setIsInquiryModalOpen(false)}\n >\n Cancel\n </button>\n <button\n style={{\n height: '66px',\n display: 'flex',\n alignItems: 'center',\n width: '50%',\n backgroundColor: emailValid\n ? settings.theme?.primaryColor\n : '#E9E9EC',\n color: emailValid ? '#fff' : '#AAABB5',\n fontSize: '14px',\n paddingLeft: '16px',\n border: 'none',\n cursor: emailValid ? 'pointer' : 'normal',\n }}\n disabled={!emailValid}\n onClick={handleInquiry}\n >\n Send\n </button>\n </div>\n </div>\n </DefaultModal>\n );\n}\n","var _path;\nvar _excluded = [\"svgRef\", \"title\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport React from \"react\";\nvar SvgIconEmail = function SvgIconEmail(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 17,\n height: 12,\n viewBox: \"0 0 17 12\",\n fill: \"none\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M15.6888 0C16.0047 0 16.2931 0.192151 16.4241 0.489651C16.4738 0.593965 16.5 0.711618 16.5 0.830018V11.1561C16.5 11.2133 16.494 11.2703 16.4821 11.3256C16.4737 11.3686 16.462 11.4111 16.4474 11.4521C16.3285 11.7849 16.0308 12 15.6888 12H1.30961C0.967644 12 0.669889 11.7849 0.551024 11.4521C0.511476 11.3414 0.494785 11.2261 0.501415 11.1094V0.890625C0.494785 0.773926 0.511476 0.658628 0.551024 0.547891C0.669878 0.215062 0.967644 0 1.30961 0H15.6888ZM8.49921 6.90797L15.0048 1.10306H1.99367L8.49921 6.90797ZM5.8515 6L1.56406 9.8257V2.1743L5.8515 6ZM6.66657 6.72729L7.97182 7.89199C8.11913 8.02342 8.30643 8.0958 8.49921 8.0958C8.692 8.0958 8.87929 8.02342 9.02659 7.89199L10.3319 6.7273L15.0048 10.8969H1.99367L6.66657 6.72729ZM15.4374 9.82838L11.1469 6L15.4374 2.17162V9.82838Z\",\n fill: \"currentColor\"\n })));\n};\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgIconEmail, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/icon_email.71b21005.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nvar _excluded = [\"svgRef\", \"title\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport React from \"react\";\nvar SvgCall = function SvgCall(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 14,\n height: 14,\n viewBox: \"0 0 14 14\",\n fill: \"none\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12.3849 14H12.2933C1.71255 13.3915 0.210246 4.46385 0.000245939 1.73923C-0.0166751 1.52739 0.00837059 1.31429 0.0739478 1.11214C0.139525 0.909999 0.244345 0.722779 0.382401 0.561213C0.520458 0.399646 0.689038 0.266909 0.878482 0.170606C1.06793 0.0743029 1.27451 0.0163271 1.4864 5.04857e-07H4.45332C4.66901 -0.000208291 4.87979 0.0643519 5.05836 0.185318C5.23693 0.306285 5.37506 0.478084 5.45486 0.678462L6.27332 2.69231C6.35213 2.88806 6.37168 3.10266 6.32956 3.30943C6.28744 3.51621 6.1855 3.70605 6.0364 3.85539L4.88948 5.01308C5.06863 6.03117 5.55619 6.96967 6.28619 7.70159C7.01619 8.43352 7.9534 8.92355 8.97101 9.10538L10.1395 7.94769C10.2911 7.80024 10.4827 7.70067 10.6905 7.66141C10.8983 7.62215 11.113 7.64494 11.3079 7.72692L13.3379 8.54C13.5353 8.62232 13.7037 8.76153 13.8216 8.9399C13.9396 9.11827 14.0018 9.32771 14.0002 9.54154V12.3846C14.0002 12.813 13.8301 13.2239 13.5271 13.5269C13.2242 13.8298 12.8133 14 12.3849 14ZM1.61563 1.07692C1.47282 1.07692 1.33586 1.13365 1.23488 1.23464C1.1339 1.33562 1.07717 1.47258 1.07717 1.61539V1.65846C1.32486 4.84615 2.91332 12.3846 12.3526 12.9231C12.4233 12.9275 12.4942 12.9178 12.5612 12.8947C12.6282 12.8716 12.69 12.8355 12.743 12.7885C12.7961 12.7415 12.8393 12.6845 12.8702 12.6207C12.9012 12.5569 12.9192 12.4877 12.9233 12.4169V9.54154L10.8933 8.72846L9.34794 10.2631L9.08948 10.2308C4.40486 9.64385 3.76948 4.95923 3.76948 4.91077L3.73717 4.65231L5.2664 3.10692L4.45871 1.07692H1.61563Z\",\n fill: \"currentColor\"\n })));\n};\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgCall, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/call.c3c23966.svg\";\nexport { ForwardRef as ReactComponent };","import { Box } from '@material-ui/core';\nimport { getCroppedCanvas } from 'helpers/getCroppedCanvas';\nimport React, { useEffect, useState } from 'react';\nimport { useMediaQuery } from 'react-responsive';\nimport InquiryModal from './InquiryModal';\nimport { useAppSelector } from 'Store/Store';\nimport { ReactComponent as EmailIcon } from 'common/assets/icons/icon_email.svg';\nimport { ReactComponent as CallIcon } from 'common/assets/icons/call.svg';\nimport { useTranslation } from 'react-i18next';\n\nfunction InquiryBanner({\n requestImage,\n selectedRegion,\n query,\n}: {\n requestImage: any;\n selectedRegion: any;\n query: any;\n}) {\n const isMobile = useMediaQuery({ query: '(max-width: 776px)' });\n const [isInquiryModalOpen, setIsInquiryModalOpen] = useState(false);\n const [inquiryStatus, setInquiryStatus] = useState<\n 'inactive' | 'loading' | 'sent'\n >('inactive');\n\n useEffect(() => {\n setInquiryStatus('inactive');\n }, [selectedRegion, query]);\n\n const { description, emailInquiry, supportNumber } =\n useAppSelector(state => state.settings.support) || {};\n const { secondaryColor } =\n useAppSelector(state => state.settings.theme) || {};\n\n const { t } = useTranslation();\n\n return (\n <>\n {isInquiryModalOpen && (\n <InquiryModal\n requestImage={requestImage}\n selectedRegion={selectedRegion}\n setIsInquiryModalOpen={setIsInquiryModalOpen}\n isInquiryModalOpen={isInquiryModalOpen}\n />\n )}\n <Box\n style={{\n backgroundColor: '#F3F3F5',\n width: '100%',\n marginBottom: '32px',\n alignSelf: 'end',\n display: 'flex',\n alignItems: 'center',\n // marginRight: '12px',\n }}\n className=\"rfq-box\"\n >\n <Box\n style={{\n width: '100%',\n display: 'flex',\n columnGap: !isMobile ? '26px' : '16px',\n alignItems: 'center',\n }}\n >\n {requestImage && (\n <div>\n <img\n src={getCroppedCanvas(\n requestImage?.canvas,\n selectedRegion,\n )?.toDataURL()}\n alt=\"request_image\"\n style={{\n mixBlendMode: 'unset',\n maxHeight: !isMobile ? '181px' : '120px',\n maxWidth: !isMobile ? '181px' : '120px',\n borderRadius: '2px',\n }}\n />\n </div>\n )}\n\n <Box style={{ width: '100%' }}>\n <Box\n style={{\n paddingBottom: '8px',\n paddingLeft: '16px',\n }}\n >\n <Box\n style={{\n fontSize: '14px',\n color: inquiryStatus === 'inactive' ? '#4B4B4A' : '#2B2C46',\n fontWeight: 'bold',\n }}\n >\n {isMobile\n ? `${t('No matches found')}?`\n : `${t('No matches found for your request')}?`}\n </Box>\n <Box\n style={{\n fontSize: '14px',\n maxWidth: '320x',\n lineHeight: '16px',\n color: inquiryStatus === 'inactive' ? '#4B4B4A' : '#2B2C46',\n fontWeight: 'normal',\n }}\n >\n {description}\n </Box>\n </Box>\n <div\n style={{\n display: 'flex',\n gap: isMobile ? '8px' : '16px',\n width: isMobile ? '100%' : '100%',\n maxWidth: '400px',\n }}\n className=\"support-button-wrapper\"\n >\n {emailInquiry && (\n <div\n style={{\n width: emailInquiry && supportNumber ? '50%' : '100%',\n maxWidth: '170px',\n minWidth: '86px',\n background:\n inquiryStatus === 'inactive' ? secondaryColor : '#E9E9EC',\n boxShadow:\n inquiryStatus === 'inactive'\n ? '0px 0px 4px 0px rgba(0, 0, 0, 0.25)'\n : '',\n borderRadius: '2px',\n padding: !isMobile\n ? '8px 16px 8px 16px'\n : '8px 8px 8px 8px',\n display: 'flex',\n alignItems: 'center',\n color: inquiryStatus === 'inactive' ? '#fff' : '#CACAD1',\n fontSize: '13px',\n cursor:\n inquiryStatus === 'inactive' ? 'pointer' : 'default',\n border: 'none',\n }}\n onClick={() => {\n setIsInquiryModalOpen(true);\n }}\n >\n <div\n style={{\n width: '100%',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n }}\n >\n <p>Inquiry</p>\n <EmailIcon color=\"#fff\" width={16} height={16} />\n </div>\n </div>\n )}\n {supportNumber && (\n <a\n style={{\n width: emailInquiry && supportNumber ? '50%' : '100%',\n maxWidth: '170px',\n minWidth: '86px',\n background: secondaryColor,\n boxShadow: '0px 0px 4px 0px rgba(0, 0, 0, 0.25)',\n borderRadius: '2px',\n padding: !isMobile\n ? '8px 16px 8px 16px'\n : '8px 8px 8px 8px',\n display: 'flex',\n alignItems: 'center',\n color: '#fff',\n fontSize: '13px',\n cursor: 'pointer',\n border: 'none',\n fontWeight: 500,\n }}\n href={`tel:${supportNumber}`}\n >\n <div\n style={{\n width: '100%',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n }}\n >\n <p> Call us</p>\n <CallIcon color=\"#fff\" width={16} height={16} />\n </div>\n </a>\n )}\n </div>\n </Box>\n </Box>\n </Box>\n </>\n );\n}\n\nexport default InquiryBanner;\n","import React from 'react';\nimport { ReactComponent as IconLike } from 'common/assets/icons/icon_like.svg';\nimport { ReactComponent as IconDislike } from 'common/assets/icons/icon_dislike.svg';\nimport { ReactComponent as IconClose } from 'common/assets/icons/close.svg';\n\nfunction Feedback({\n submitFeedback,\n onFeedbackClose,\n}: {\n submitFeedback: any;\n onFeedbackClose: any;\n}) {\n return (\n <div className=\"feedback-wrapper\">\n <p>Are these results useful?</p>\n <div\n className=\"feedback-icon-wrapper\"\n onClick={() => submitFeedback(false)}\n >\n <IconDislike />\n </div>\n <div\n className=\"feedback-icon-wrapper\"\n onClick={() => submitFeedback(true)}\n >\n <IconLike />\n </div>\n\n <div className=\"feedback-icon-wrapper\" onClick={() => onFeedbackClose()}>\n <IconClose />\n </div>\n </div>\n );\n}\n\nexport default Feedback;\n","import React from 'react';\nimport classNames from 'classnames';\nimport { ReactComponent as IconClose } from 'common/assets/icons/close.svg';\nimport { atom } from 'jotai';\nimport { useMemo } from 'react';\nimport { useAppDispatch, useAppSelector } from 'Store/Store';\nimport { useFilter } from 'hooks/useFilter';\nimport { get } from 'lodash';\nimport { clearPostFilter, setPostFilter } from 'Store/search/Search';\nimport { Box } from '@material-ui/core';\n\nexport type CurrentRefinementsProps = {\n className?: string;\n};\n\nexport type CurrentRefinement = {\n category?: string;\n label: string;\n};\n\nexport const refinementCountAtom = atom(0);\n\nexport function SelectedPostFilter({ className }: CurrentRefinementsProps) {\n const stateGlobal = useAppSelector(state => state);\n const dispatch = useAppDispatch();\n const {\n search: { postFilter, results },\n } = stateGlobal;\n const filter = useFilter(results);\n\n const selectedFilters = useMemo(() => {\n const selectedFilters: any[] = [];\n Object.keys(filter).forEach(key => {\n const values = filter[key];\n values.forEach((data: { value: string }) => {\n if (get(postFilter, `${key}.${data.value}`)) {\n selectedFilters.push({ key, ...data });\n }\n });\n });\n return selectedFilters;\n }, [filter, postFilter]);\n\n if (!selectedFilters.length) {\n return null;\n }\n\n return (\n <Box className=\"wrap-box-refinements\">\n <div style={{ display: 'flex', flexFlow: 'wrap', columnGap: '8px' }}>\n {selectedFilters.map(filter => {\n return (\n <div\n key={filter.value}\n style={{\n display: 'flex',\n alignItems: 'center',\n columnGap: '12px',\n fontSize: '12px',\n padding: '4px 8px 4px 8px',\n backgroundColor: '#E9E9EC',\n borderRadius: '18px',\n width: 'fit-content',\n }}\n >\n <p>\n {filter.value} ({filter.count})\n </p>\n <div\n style={{\n padding: '2px',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n cursor: 'pointer',\n }}\n onClick={() => {\n dispatch(\n setPostFilter({\n [filter.key]: filter.value,\n }),\n );\n }}\n >\n <IconClose width={12} height={12} />\n </div>\n </div>\n );\n })}\n <div\n key=\"clear\"\n className={classNames('flex items-center')}\n style={{ padding: '4px', cursor: 'pointer' }}\n onClick={() => dispatch(clearPostFilter())}\n >\n <div className=\"text-f12\" style={{ color: '#E31B5D' }}>\n Clear all\n </div>\n </div>\n </div>\n </Box>\n );\n}\n","import React, {\n memo,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { Box } from '@material-ui/core';\nimport ArrowLeftIcon from '@material-ui/icons/ArrowLeft';\nimport ArrowRightIcon from '@material-ui/icons/ArrowRight';\n\nimport { RectCoords } from '@nyris/nyris-api';\nimport { CurrentRefinements } from 'components/current-refinements/current-refinements';\nimport FooterResult from 'components/FooterResult';\nimport CustomSearchBox from 'components/input/inputSearch';\nimport ProductList from 'components/ProductList';\nimport { debounce, isEmpty } from 'lodash';\nimport {\n Configure,\n connectStateResults,\n HitsPerPage,\n Pagination,\n} from 'react-instantsearch-dom';\nimport { useMediaQuery } from 'react-responsive';\nimport { feedbackRegionEpic, feedbackSuccessEpic } from 'services/Feedback';\nimport { createImage, find, findRegions } from 'services/image';\nimport {\n loadingActionResults,\n onToggleModalItemDetail,\n selectionChanged,\n setImageSearchInput,\n setRegions,\n setRequestImage,\n setSearchResults,\n setSelectedRegion,\n updateResultChangePosition,\n updateStatusLoading,\n} from 'Store/search/Search';\nimport { useAppDispatch, useAppSelector } from 'Store/Store';\nimport { showHits } from '../../constants';\nimport { DEFAULT_REGION } from '../../constants';\nimport { useTranslation } from 'react-i18next';\nimport RfqModal from 'components/rfq/RfqModal';\nimport SidePanel from 'components/SidePanel';\nimport useFilteredRegions from 'hooks/useFilteredRegions';\nimport ImagePreviewMobile from 'components/ImagePreviewMobile';\nimport RfqBanner from 'components/rfq/RfqBanner';\nimport InquiryBanner from 'components/Inquiry/InquiryBanner';\nimport { useQuery } from 'hooks/useQuery';\nimport { ReactComponent as PoweredByNyrisImage } from 'common/assets/images/powered_by_nyris.svg';\nimport Feedback from 'components/Feedback';\nimport { SelectedPostFilter } from 'components/SelectedPostFilter';\n\ninterface Props {\n allSearchResults: any;\n isSearchStalled?: boolean;\n}\n\nfunction ResultComponent(props: Props) {\n const dispatch = useAppDispatch();\n const refBoxResult: any = useRef(null);\n const stateGlobal = useAppSelector(state => state);\n const { search, settings } = stateGlobal;\n const { allSearchResults } = props;\n const {\n requestImage,\n regions,\n selectedRegion,\n preFilter,\n loadingSearchAlgolia,\n imageThumbSearchInput,\n results,\n } = search;\n\n const isMobile = useMediaQuery({ query: '(max-width: 776px)' });\n const [imageSelection, setImageSelection] = useState<any>(null);\n const executeScroll = () => refBoxResult.current.scrollIntoView('-100px');\n const [filterString, setFilterString] = useState<string>();\n const { t } = useTranslation();\n const [showAdjustInfo, setAdjustInfo] = useState(false);\n const [showAdjustInfoBasedOnConfidence, setShowAdjustInfoBasedOnConfidence] =\n useState(false);\n const [rfqStatus, setRfqStatus] = useState<'inactive' | 'loading' | 'sent'>(\n 'inactive',\n );\n const [isRfqModalOpen, setIsRfqModalOpen] = useState(false);\n const imageUploadRef = useRef(null);\n const rfqRef = useRef<any>(null);\n const [isScrolled, setIsScrolled] = useState<\n 'not-scrolled' | 'scrolled' | 'user-scrolled'\n >('not-scrolled');\n\n const [showFeedback, setShowFeedback] = useState<\n 'not-scrolled' | 'scrolled' | 'user-scrolled'\n >('not-scrolled');\n\n const [showFeedbackSuccess, setShowFeedbackSuccess] = useState(false);\n const query = useQuery();\n const searchQuery = query.get('query') || search.valueTextSearch.query;\n const isAlgoliaEnabled = settings.algolia?.enabled;\n const isPostFilterEnabled = settings.postFilterOption;\n\n useEffect(() => {\n if (\n !loadingSearchAlgolia &&\n (imageThumbSearchInput.includes('blob:') ||\n imageThumbSearchInput.includes('data:')) &&\n imageUploadRef.current !== imageThumbSearchInput\n ) {\n setAdjustInfo(true);\n const timeout = setTimeout(() => {\n setAdjustInfo(false);\n }, 2000);\n imageUploadRef.current = imageThumbSearchInput;\n return () => {\n clearTimeout(timeout);\n setAdjustInfo(false);\n };\n }\n }, [imageThumbSearchInput, loadingSearchAlgolia]);\n\n useEffect(() => {\n if (selectedRegion) {\n setImageSelection(selectedRegion);\n setRfqStatus('inactive');\n setIsScrolled('not-scrolled');\n setShowFeedback('not-scrolled');\n }\n }, [selectedRegion]);\n\n useEffect(() => {\n if (requestImage) {\n setIsScrolled('not-scrolled');\n setShowFeedback('not-scrolled');\n executeScroll();\n setImageSelection(DEFAULT_REGION);\n }\n }, [requestImage]);\n\n const findImageByApiNyris = useCallback(\n async (canvas: any, r?: RectCoords) => {\n const preFilterValues = [\n {\n key: settings.visualSearchFilterKey,\n values: Object.keys(preFilter) as string[],\n },\n ];\n dispatch(loadingActionResults());\n\n return find({\n image: canvas,\n settings,\n region: r,\n filters: !isEmpty(preFilter) ? preFilterValues : undefined,\n })\n .then((res: any) => {\n dispatch(updateStatusLoading(false));\n return {\n ...res,\n };\n })\n .catch((e: any) => {\n dispatch(updateStatusLoading(false));\n console.log('error call api change selection find image', e);\n });\n },\n [settings, dispatch, preFilter],\n );\n\n // TODO: Search offers for image:\n const findItemsInSelection = useCallback(\n debounce(async (r: RectCoords) => {\n if (!requestImage) {\n return;\n }\n dispatch(updateStatusLoading(true));\n const { canvas }: any = requestImage;\n findImageByApiNyris(canvas, r).then((res: any) => {\n dispatch(updateResultChangePosition(res));\n const highConfidence = res.results.find(\n (data: { score: number }) => data.score >= 0.65,\n );\n if (!highConfidence) {\n setShowAdjustInfoBasedOnConfidence(true);\n }\n setTimeout(() => {\n setShowAdjustInfoBasedOnConfidence(false);\n }, 2000);\n });\n return;\n }, 250),\n [requestImage, findImageByApiNyris],\n );\n\n // TODO: Handler like dislike\n const sendFeedBackAction = async (type: string) => {\n feedbackSuccessEpic(stateGlobal, type === 'like');\n };\n\n // TODO: Search image with url or file\n const getUrlToCanvasFile = async (url: string) => {\n dispatch(updateStatusLoading(true));\n if (isMobile) {\n executeScroll();\n // setOpenModalImage(false);\n dispatch(onToggleModalItemDetail(false));\n }\n dispatch(loadingActionResults());\n dispatch(setImageSearchInput(url));\n let image = await createImage(url);\n dispatch(setRequestImage(image));\n\n let searchRegion: RectCoords | undefined = undefined;\n\n if (settings.regions) {\n let res = await findRegions(image, settings);\n searchRegion = res.selectedRegion;\n dispatch(setRegions(res.regions));\n dispatch(setSelectedRegion(searchRegion));\n }\n const preFilterValues = [\n {\n key: settings.visualSearchFilterKey,\n values: Object.keys(preFilter) as string[],\n },\n ];\n find({\n image,\n settings,\n region: searchRegion,\n filters: !isEmpty(preFilter) ? preFilterValues : undefined,\n }).then((res: any) => {\n dispatch(setSearchResults(res));\n dispatch(updateStatusLoading(false));\n return;\n });\n };\n const nonEmptyFilter: any[] = !requestImage\n ? []\n : ['sku:DOES_NOT_EXIST<score=1> '];\n const filterSkus: any = search?.results\n ? search?.results\n .slice()\n .reverse()\n .map((f: any, i: number) => `sku:'${f.sku}'<score=${i}> `)\n : '';\n const filterSkusString = [...nonEmptyFilter, ...filterSkus].join('OR ');\n\n useEffect(() => {\n document.title = 'Search results';\n\n if (requestImage || isEmpty(searchQuery)) return;\n const preFilterValues = Object.keys(preFilter) as string[];\n const filter =\n preFilterValues.length > 0\n ? preFilterValues\n .map(item => `${settings.alogoliaFilterField}:'${item}'`)\n .join(' OR ')\n : '';\n\n setFilterString(filter);\n }, [preFilter, requestImage, searchQuery, settings.alogoliaFilterField]);\n\n useEffect(() => {\n if (!requestImage || !isAlgoliaEnabled) {\n return;\n }\n dispatch(updateStatusLoading(true));\n const { canvas }: any = requestImage;\n findImageByApiNyris(canvas).then((res: any) => {\n // setPreFilter(keyFilter);\n dispatch(updateResultChangePosition(res));\n });\n\n return () => {};\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [preFilter]);\n\n useEffect(() => {\n if (!requestImage) return;\n\n const preFilterValues = Object.keys(preFilter) as string[];\n const preFilterString =\n preFilterValues.length > 0\n ? preFilterValues\n .map(item => `${settings.alogoliaFilterField}:'${item}'`)\n .join(' OR ')\n : '';\n\n const filter =\n preFilterValues.length > 0\n ? filterSkusString\n ? `(${filterSkusString}) AND ${preFilterString}`\n : preFilterString\n : filterSkusString;\n setFilterString(filter);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [filterSkusString, settings.alogoliaFilterField]);\n\n const debouncedOnImageSelectionChange = useCallback(\n debounce((r: RectCoords) => {\n feedbackRegionEpic(stateGlobal, r);\n dispatch(selectionChanged(r));\n findItemsInSelection(r);\n }, 500),\n [findItemsInSelection, stateGlobal.search],\n );\n\n const filteredRegions = useFilteredRegions(regions, imageSelection);\n\n const showPostFilter = useMemo(() => {\n return (\n isPostFilterEnabled &&\n ((allSearchResults?.hits.length > 0 && isAlgoliaEnabled) ||\n results?.length > 0)\n );\n }, [isPostFilterEnabled, allSearchResults, isAlgoliaEnabled, results]);\n\n const showSidePanel = useMemo(() => {\n return requestImage || (isPostFilterEnabled && showPostFilter);\n }, [showPostFilter, isPostFilterEnabled, requestImage]);\n\n useEffect(() => {\n const handleScroll = () => {\n setTimeout(() => {\n setIsScrolled(s => (s === 'not-scrolled' ? 'scrolled' : s));\n setTimeout(() => {\n setIsScrolled(s => (s === 'scrolled' ? 'user-scrolled' : s));\n }, 5000);\n }, 1000);\n };\n if (requestImage)\n window.addEventListener('scroll', handleScroll, { capture: true });\n\n return () => {\n window.removeEventListener('scroll', handleScroll);\n };\n }, [requestImage]);\n\n useEffect(() => {\n if (!requestImage || !settings.showFeedback) return;\n\n setTimeout(() => {\n setShowFeedback(s => (s === 'not-scrolled' ? 'scrolled' : s));\n }, 5000);\n\n const handleScroll = () => {\n setTimeout(() => {\n setShowFeedback(s => (s === 'not-scrolled' ? 'scrolled' : s));\n }, 100);\n };\n\n window.addEventListener('scroll', handleScroll, { capture: true });\n\n return () => {\n window.removeEventListener('scroll', handleScroll);\n };\n }, [requestImage, selectedRegion, settings.showFeedback]);\n\n const submitFeedback = async (data: boolean) => {\n setShowFeedbackSuccess(true);\n setTimeout(() => {\n setShowFeedbackSuccess(false);\n }, 3000);\n setShowFeedback('user-scrolled');\n feedbackSuccessEpic(stateGlobal, data);\n };\n\n return (\n <>\n <div\n className={`wrap-main-result loading`}\n id=\"wrap-main-result\"\n ref={refBoxResult}\n >\n <>\n {isRfqModalOpen && (\n <RfqModal\n requestImage={requestImage}\n selectedRegion={selectedRegion}\n setIsRfqModalOpen={setIsRfqModalOpen}\n isRfqModalOpen={isRfqModalOpen}\n setRfqStatus={setRfqStatus}\n />\n )}\n\n {filterString && isAlgoliaEnabled && (\n <Configure query={searchQuery} filters={filterString}></Configure>\n )}\n <Box className=\"box-wrap-result-component\">\n {!isMobile && (\n <div className=\"box-search\">\n <CustomSearchBox />\n </div>\n )}\n <Box\n className=\"box-result\"\n style={{\n height: settings.showPoweredByNyris\n ? 'calc(100vh - 177px)'\n : 'calc(100vh - 148px)',\n }}\n >\n {!isMobile && showSidePanel && (\n <SidePanel\n setImageSelection={setImageSelection}\n allSearchResults={props.allSearchResults}\n debouncedOnImageSelectionChange={\n debouncedOnImageSelectionChange\n }\n filteredRegions={filteredRegions}\n imageSelection={imageSelection}\n showAdjustInfo={showAdjustInfo}\n showAdjustInfoBasedOnConfidence={\n showAdjustInfoBasedOnConfidence\n }\n showPostFilter={showPostFilter}\n disjunctiveFacets={props.allSearchResults.disjunctiveFacets}\n />\n )}\n\n <Box\n className={`col-right ${\n settings.preview && 'ml-auto mr-auto'\n } ${isMobile && 'col-right-result-mobile'}`}\n style={{\n paddingTop: isMobile ? '8px' : '40px',\n overflow: !isMobile ? 'auto' : '',\n display: 'flex',\n flexDirection: 'column',\n }}\n >\n {!isMobile && settings.algolia.enabled && (\n <Box className=\"wrap-box-refinements\">\n <CurrentRefinements statusSwitchButton={true} />\n </Box>\n )}\n\n {isMobile && settings.preview && requestImage && (\n <ImagePreviewMobile\n requestImage={requestImage}\n imageSelection={imageSelection}\n setImageSelection={setImageSelection}\n debouncedOnImageSelectionChange={\n debouncedOnImageSelectionChange\n }\n filteredRegions={filteredRegions}\n showAdjustInfoBasedOnConfidence={\n showAdjustInfoBasedOnConfidence\n }\n showAdjustInfo={showAdjustInfo}\n />\n )}\n\n <Box\n style={{\n display: 'flex',\n flexDirection: 'column',\n flexGrow: 1,\n backgroundColor: '#FAFAFA',\n }}\n >\n <Box\n className={'box-item-result ml-auto mr-auto'}\n style={{ height: '100%', paddingLeft: isMobile ? 0 : 16 }}\n >\n {showFeedbackSuccess && (\n <div className={'box-item-result feedback-floating'}>\n <div className=\"feedback-success\">\n Thanks for your feedback!\n </div>\n </div>\n )}\n {showFeedback === 'scrolled' && !showFeedbackSuccess && (\n <div className={'box-item-result feedback-floating'}>\n <Feedback\n submitFeedback={submitFeedback}\n onFeedbackClose={() => {\n setShowFeedback('user-scrolled');\n }}\n />\n </div>\n )}\n <div\n className=\"box-item-result ml-auto mr-auto\"\n style={{ height: 'fit-content' }}\n >\n {!isMobile && !settings.algolia.enabled && (\n <SelectedPostFilter />\n )}\n <ProductList\n getUrlToCanvasFile={getUrlToCanvasFile}\n setLoading={false}\n sendFeedBackAction={sendFeedBackAction}\n requestImage={requestImage}\n searchQuery={searchQuery}\n />\n </div>\n\n {props.allSearchResults?.hits.length > 0 &&\n (requestImage || searchQuery) && (\n <Box\n className=\"pagination-result\"\n style={{\n width: '100%',\n margin: !isMobile ? '20px auto' : '',\n marginBottom:\n isMobile && !requestImage ? '64px' : '20px',\n padding: '0 20%',\n alignSelf: 'end',\n }}\n >\n <Pagination\n showFirst={false}\n translations={{\n previous: (\n <ArrowLeftIcon style={{ color: '#161616' }} />\n ),\n next: (\n <ArrowRightIcon style={{ color: '#161616' }} />\n ),\n }}\n />\n </Box>\n )}\n\n {requestImage &&\n !loadingSearchAlgolia &&\n !props.isSearchStalled &&\n settings.rfq &&\n settings.rfq.enabled && (\n <RfqBanner\n rfqRef={rfqRef}\n rfqStatus={rfqStatus}\n setIsRfqModalOpen={setIsRfqModalOpen}\n requestImage={requestImage}\n selectedRegion={selectedRegion}\n />\n )}\n {!loadingSearchAlgolia &&\n !props.isSearchStalled &&\n settings.support &&\n settings.support.enabled &&\n (searchQuery || requestImage) && (\n <InquiryBanner\n requestImage={requestImage}\n selectedRegion={selectedRegion}\n query={searchQuery}\n />\n )}\n </Box>\n </Box>\n {!isMobile &&\n props.allSearchResults?.hits?.length > 0 &&\n isAlgoliaEnabled && (\n <Box>\n <Box className=\"box-notify\">\n <FooterResult search={search}>\n <Box\n display={'flex'}\n style={{ padding: '0 20px' }}\n className=\"box-change-hit-items\"\n >\n <span style={{ paddingRight: '10px' }}>\n {t('Items per page')}:\n </span>\n <HitsPerPage\n items={showHits}\n defaultRefinement={20}\n />\n </Box>\n </FooterResult>\n </Box>\n </Box>\n )}\n {isMobile && settings.showPoweredByNyris && (\n <div\n style={{\n backgroundColor: '#FAFAFA',\n display: 'flex',\n justifyContent: 'center',\n paddingBottom: '46px',\n }}\n >\n <PoweredByNyrisImage\n style={{ cursor: 'pointer' }}\n onClick={() => {\n window.open('https://www.nyris.io', '_blank');\n }}\n color=\"#AAABB5\"\n />\n </div>\n )}\n </Box>\n </Box>\n </Box>\n </>\n </div>\n {isScrolled === 'scrolled' &&\n requestImage &&\n isMobile &&\n props.allSearchResults.hits.length > 0 &&\n settings.rfq &&\n settings.rfq.enabled && (\n <div\n style={{\n fontSize: '14px',\n fontWeight: 'bold',\n letterSpacing: '1.16px',\n color: 'white',\n borderRadius: '16px',\n backgroundColor: '#4B4B4A',\n boxShadow: '0px 0px 16px 0px rgba(85, 86, 107, 0.70)',\n padding: '8px 16px',\n zIndex: 100,\n position: 'absolute',\n left: '50%',\n transform: 'translate(-50%, -50%)',\n width: '356px',\n bottom: '86px',\n }}\n >\n Scroll down for personalized support\n </div>\n )}\n </>\n );\n}\n\nexport default connectStateResults<Props>(memo(ResultComponent));\n","import { useAppSelector } from 'Store/Store';\nimport React from 'react';\n\nimport { useMediaQuery } from 'react-responsive';\n\nfunction NoAccess() {\n const isMobile = useMediaQuery({ query: '(max-width: 776px)' });\n const { supportEmail } = useAppSelector(state => state.settings.auth0);\n\n return (\n <div\n style={{\n backgroundColor: 'white',\n height: '100%',\n paddingLeft: isMobile ? '32px' : '64px',\n paddingTop: isMobile ? '24px' : '32px',\n display: 'flex',\n flexDirection: 'column',\n gap: '16px',\n }}\n >\n <div\n style={{\n fontSize: '20px',\n fontWeight: 'bold',\n color: '#2B2C46',\n }}\n >\n Email verification is required\n </div>\n\n <div\n style={{\n width: '200px',\n height: '4px',\n background: '#3E36DC',\n borderRadius: '4px',\n }}\n />\n\n <p style={{ color: '#2B2C46', fontSize: '13px' }}>\n Please verify your email for access to the Search Suite. If you haven't\n received your verification email yet, contact support.\n </p>\n <a\n className=\"contact-support\"\n style={{\n backgroundColor: '#2B2C46',\n padding: '8px 16px 8px 16px',\n color: '#fff',\n border: 'none',\n cursor: 'pointer',\n fontSize: '14px',\n width: 'fit-content',\n }}\n href={`mailto:${\n supportEmail || 'support@nyris.io'\n }?subject=Resend Email Verification&body=`}\n >\n Contact Support\n </a>\n </div>\n );\n}\n\nexport default NoAccess;\n","import React, { useEffect } from 'react';\nimport { useAuth0 } from '@auth0/auth0-react';\nimport { Route } from 'react-router-dom';\nimport { useAppSelector } from 'Store/Store';\nimport NoAccess from './NoAccess';\n\nconst AuthenticatedRoute = ({ component, ...rest }: any) => {\n const { auth0 } = useAppSelector(state => state.settings);\n\n const { user, isAuthenticated, isLoading, loginWithRedirect } = useAuth0();\n\n useEffect(() => {\n if (!isLoading && !user && !isAuthenticated && auth0.enabled) {\n loginWithRedirect();\n }\n }, [loginWithRedirect, isLoading, user, isAuthenticated, auth0]);\n\n const Component = component;\n\n return (\n <Route\n {...rest}\n render={props => {\n if (!auth0.enabled) {\n return <Component {...props} />;\n } else if (isAuthenticated && !user?.email_verified) {\n return <NoAccess />;\n } else if (isAuthenticated && user?.email_verified) {\n return <Component {...props} />;\n } else {\n return <div></div>;\n }\n }}\n />\n );\n};\n\nexport default AuthenticatedRoute;\n","import React, { useEffect } from 'react';\nimport { useAuth0 } from '@auth0/auth0-react';\nimport { useAppSelector } from 'Store/Store';\n\nconst Login = () => {\n const { user, isAuthenticated, isLoading, loginWithRedirect } = useAuth0();\n const { auth0 } = useAppSelector(state => state.settings);\n\n useEffect(() => {\n if (!isLoading && !user && !isAuthenticated && auth0.enabled) {\n loginWithRedirect();\n }\n if (isAuthenticated || !auth0.enabled) {\n window.location.href = '/';\n }\n }, [loginWithRedirect, isLoading, user, isAuthenticated, auth0]);\n\n return <div></div>;\n};\n\nexport default Login;\n","import React, { useEffect } from 'react';\nimport { useAuth0 } from '@auth0/auth0-react';\nimport { useAppSelector } from 'Store/Store';\n\nconst Logout = () => {\n const { user, isAuthenticated, isLoading, loginWithRedirect, logout } =\n useAuth0();\n const { auth0 } = useAppSelector(state => state.settings);\n\n useEffect(() => {\n if (!isLoading && !user && !isAuthenticated && auth0.enabled) {\n loginWithRedirect();\n } else if (isAuthenticated) {\n logout({ logoutParams: { returnTo: window.location.origin } });\n } else if (!auth0.enabled) {\n window.location.href = '/';\n }\n }, [loginWithRedirect, isAuthenticated, isLoading, user, logout, auth0]);\n\n return <div></div>;\n};\n\nexport default Logout;\n","import React, { memo } from 'react';\nimport { Route, Switch } from 'react-router-dom';\nimport Layout from 'components/Layout';\nimport App from 'App';\nimport ResultComponent from 'page/result';\nimport AuthenticatedRoute from 'components/AuthenticatedRoute';\nimport Login from 'page/Login';\nimport Logout from 'page/Logout';\n\nfunction Router(): JSX.Element {\n return (\n <Switch>\n <Switch>\n <Route path={'/login'} exact component={Login} />\n <Route path={'/logout'} exact component={Logout} />\n\n <Layout>\n <AuthenticatedRoute exact strict path=\"/\" component={App} />\n <AuthenticatedRoute\n exact\n strict\n path=\"/result\"\n component={ResultComponent}\n />\n </Layout>\n </Switch>\n </Switch>\n );\n}\n\nexport default memo(Router);\n","import React from 'react';\nimport toast, {\n resolveValue,\n ToastBar,\n Toaster as ReactHotToaster,\n} from 'react-hot-toast';\nimport CloseOutlinedIcon from '@material-ui/icons/CloseOutlined';\nimport { useMediaQuery } from 'react-responsive';\n\nexport const Toaster = () => {\n const isMobile = useMediaQuery({ query: '(max-width: 776px)' });\n\n return (\n <ReactHotToaster\n containerStyle={!isMobile ? { top: 60 } : { bottom: 80 }}\n position={isMobile ? 'bottom-center' : 'top-right'}\n >\n {t => (\n <ToastBar toast={t} style={{ padding: 0, borderRadius: 0 }}>\n {({ icon }) => (\n <>\n <span\n style={{\n width: 5,\n height: '100%',\n background: t.type === 'success' ? '#61d345' : 'transparent',\n marginRight: 7,\n }}\n />\n <span style={{ padding: 15, display: 'inline-flex' }}>\n {icon}\n <span\n style={{\n fontSize: 15,\n fontWeight: 300,\n margin: '0 10px',\n }}\n >\n {' '}\n {resolveValue(t.message, t)}\n </span>\n {t.type !== 'loading' && (\n <span style={{ display: 'flex', alignItems: 'center' }}>\n <CloseOutlinedIcon\n fontSize=\"small\"\n style={{ cursor: 'pointer', marginLeft: 10 }}\n onClick={() => toast.dismiss(t.id)}\n />\n </span>\n )}\n </span>\n </>\n )}\n </ToastBar>\n )}\n </ReactHotToaster>\n );\n};\n","import React from 'react';\nimport { Auth0Provider } from '@auth0/auth0-react';\nimport { useAppSelector } from 'Store/Store';\n\nconst AuthProvider = ({ children }: any) => {\n const settings = useAppSelector(state => state.settings);\n\n if (!settings.auth0.enabled) {\n return <>{children}</>;\n }\n\n return (\n <Auth0Provider\n domain={settings.auth0.domain || ''}\n clientId={settings.auth0.clientId || ''}\n authorizationParams={{\n redirect_uri: window.location.origin,\n }}\n >\n {children}\n </Auth0Provider>\n );\n};\n\nexport default AuthProvider;\n","// Some people are still using internet explorer\nimport 'react-app-polyfill/ie11';\nimport 'react-app-polyfill/stable';\nimport React, { Fragment } from 'react';\nimport ReactDOM from 'react-dom';\nimport * as serviceWorker from './serviceWorker';\nimport { Provider } from 'react-redux';\nimport { MuiThemeProvider } from '@material-ui/core';\nimport 'typeface-roboto';\nimport { BrowserRouter } from 'react-router-dom';\nimport Router from 'Router';\nimport { store } from 'Store/Store';\nimport 'react-responsive-carousel/lib/styles/carousel.min.css';\nimport { createTheme } from '@material-ui/core/styles';\nimport { Toaster } from 'components/Toaster';\nimport AuthProvider from 'components/Provider/AuthProvider';\n\ndocument.title = window.location.host;\n\nlet theme = createTheme({\n overrides: {\n MuiTooltip: {\n arrow: {\n color: 'black',\n },\n tooltip: {\n backgroundColor: 'black',\n },\n },\n },\n});\n\nReactDOM.render(\n <Fragment>\n <Toaster />\n <Provider store={store}>\n <AuthProvider>\n <MuiThemeProvider theme={theme}>\n <BrowserRouter>\n <Router />\n </BrowserRouter>\n </MuiThemeProvider>\n </AuthProvider>\n </Provider>\n </Fragment>,\n document.getElementById('root'),\n);\n\n// If you want your app to work offline and load faster, you can change\n// unregister() to register() below. Note this comes with some pitfalls.\n// Learn more about service workers: https://bit.ly/CRA-PWA\nserviceWorker.unregister();\n"],"sourceRoot":""}