{"version":3,"sources":["models/appSettings.ts","helpers/dataSending.ts","helpers/dynamicFilterSQ.ts","components/sendInquiry.ts","helpers/constants.ts","helpers/shared.ts","helpers/scrollToRef.ts","modules/Compare/index.tsx","components/Tooltip/index.tsx","components/checkboxFilter.tsx","components/sliderfilter.tsx","modules/filters.tsx","components/ctaButtons.tsx","components/ProductItem/VariantFinishingGuide.tsx","components/ProductItem/VariantCoreSelection.tsx","components/ProductItem/index.tsx","modules/resultProducts.tsx","components/Loading/index.tsx","components/Checkbox/index.tsx","modules/MainFilters/Item.tsx","modules/MainFilters/index.tsx","components/Error/index.tsx","modules/App/App.tsx","index.tsx"],"names":["APP_VARIANTS_ENUM","ABORTER","postData","url","data","method","name","abort","AbortController","fetchConfig","signal","headers","body","JSON","stringify","fetch","then","r","json","exportFilterStateToSQ","actualDataObj","marketString","productString","dynamicFilters","Dynamic","reduce","curr","Key","FromValue","ToValue","Checked","length","join","topFilters","TopSelected","Market","ProductGroup","fullSearchString","window","history","pushState","newurl","location","protocol","host","pathname","path","sendInquiryDataInRedirect","props","dataForInquiry","partialQueryString","newUrl","inquiryUrl","assign","BASE","CLASS_HOLDER_CORE_SELECTION","CLASS_ITEM_CORE_SELECTION","toogleCheckboxCheckClassName","variantId","includes","toString","toggleVisibility","ev","selector","target","closest","classList","toggle","parentNode","classNamesBasedOnAppVariant","appVariant","CORE_SELECTION","CLASS_HOLDER","CLASS_ITEM","FINISHING_GUIDE","scrollToRef","ref","current","scrollTo","offsetTop","CompareProducts","STATIC_SETTINGS_APP","useContext","StaticSettingsAppContext","useState","inquiryData","setInquiryData","scrollToTopApp","APP_REF","HeaderRow","propertyGroup","APP_VARIANT","GroupName","CompareElements","compareResults","results","map","compareElement","index","Fragment","className","VariantName","PropertiesData","PropertiesGroups","indexGroup","Properties","property","DisplayName","Unit","result","foundValue","find","prop","Value","NameId","InquiryCheckboxes","Id","onClick","indexOfSelected","findIndex","val","_inquiryData","slice","splice","push","selectForInquiry","dictionary","InquiryText","setCompareResults","view","BackToResultsText","MakeInquiryText","Tooltip","htmlString","placement","children","tooltipProps","tooltipContent","dangerouslySetInnerHTML","__html","Whisper","trigger","speaker","CheckboxFilter","currVisibleValues","currentElementIndex","dataState","x","id","values","classForEl","selectCheckboxes","Text","isForProducts","actualDataInArrIndex","productType","actualArrElIndex","y","setDataState","containerClass","tooltip","sliderDataToSend","SliderFilter","initialValue","Min","Max","sliderState","setSliderState","input","setInput","useEffect","indexInDataState","newDataState","setValueOnSliderAndInState","value","clearTimeout","setTimeout","type","onChange","inputValue","test","onBlur","_val","parseFloat","RangeSlider","min","max","step","Step","handleClassName","Filters","filters","filterData","filter","Type","Name","Values","filterState","setFilterState","IsTooltipVisible","TooltipContent","filterHeader","CTAButtons","disabledButtonCompare","setDisabledButtonCompare","disabledButton","compareProductsLength","dataForCompare","dataForComparison","IdList","api","compareUrl","catch","err","console","log","finally","disabled","compareText","makeInquiryText","VariantFinishingGuide","ProductTableData","propertiesGroupData","ProductVariantRow","variantData","VariantUrl","href","propertiesGroup","every","key","CompareText","compareProductsSelected","selectForComparison","productData","Variants","variant","VariantCoreSelection","FirstColumnText","propertiesData","ProductVariantColumnsHeader","firstItem","ProductItem","_dataForInquiry","setDataForInquiry","_compareProductsSelected","setCompareProductsSelected","PropertiesIcons","icons","TaxonomyIcons","iconClass","ImageBox","ImageText","ImageSrc","src","process","alt","TextBox","ProductUrl","title","Description","ExtraInfoBox","ContactUsText","ContactUsUrl","ApplicationAreasUrl","ApplicationAreasText","KnowHowUrl","KnowHowText","CasesUrl","CasesText","ProductVariantsView","CLASSES_NAMES","ResultProducts","resultsLength","productResults","ProductItems","singleProduct","dictionaryElements","GradeColumnText","toggleMobileFilters","ShowFiltersText","ResultsText","ResultsQuantityText","CompareProductsText","Loading","Checkbox","active","groupId","label","Item","ImageUrl","IconUrl","MainFilters","toggleFilter","activate","radio","filterStateAfterChanges","filtersState","groupIndex","filterIndex","updateFilters","toggleSingleChoiceFilter","checkActive","group","isIconInside","some","f","Error","message","React","createContext","App","settings","STATIC_SETTINGS_APP_CONTEXT","useRef","applicationRoot","setDictionaryElements","loading","error","working","appState","setAppState","main","dynamic","filtersData","setFiltersData","setProductResults","filtersForResults","setFiltersForResults","showFilters","setShowFilters","filtersRef","e","state","filterDataUrl","productResultsUrl","response","Translations","availableFilters","LeftFilters","LeftFilterItems","TopFilters","TopFilterItems","newFilteringObject","updatedFilteringObject","search","substr","split","Boolean","queryEl","checkedInGroup","createFiltersFromSQ","forEach","singleFilter","foundIndex","el","itemsToMoveFromChecked","parseInt","dataToSend","Object","errMessage","Provider","inquiryApiUrl","PropertyColumnText","UnitColumnText","style","left","offsetWidth","LeftFiltersTopText","CancelText","compareApiUrl","applicationsRoot","document","querySelectorAll","getAttribute","ReactDOM","render","StrictMode"],"mappings":"6OAAYA,E,kEAAAA,K,gCAAAA,E,mCAAAA,M,KCWZ,IAAMC,EAAuB,GAEtB,SAASC,EACdC,EACAC,EACAC,EACAC,GAGIL,EAAQK,IAAOL,EAAQK,GAAMC,QAEjCN,EAAQK,GAAQ,IAAIE,gBACpB,IAEMC,EAA2B,CAC/BJ,SACAK,OAJiBT,EAAQK,GAAnBI,OAKNC,QAAS,CACP,eAAgB,qBAMpB,OAHIP,IACFK,EAAYG,KAAOC,KAAKC,UAAUV,IAGlCW,MAAMZ,EAAKM,GAERO,MAAK,SAACC,GAEL,OADAhB,EAAQK,GAAQ,KACTW,EAAEC,UCtCV,IAAMC,EAAwB,SAACC,GACpC,IAAIC,EAAe,GACfC,EAAgB,GAEdC,EAAiBH,EAAcI,QAAQC,QAAO,SAACtB,EAAKuB,GACxD,MAAI,cAAeA,EACTvB,EAAG,UAAOuB,EAAKC,IAAZ,YAAmBD,EAAKE,UAAxB,YAAqCF,EAAKG,QAA1C,KACFH,EAAKI,QAAQC,OACd5B,EAAG,UAAOuB,EAAKC,IAAZ,YAAmBD,EAAKI,QAAQE,OAAhC,KAEJ7B,IAER,IAEG8B,EAAab,EAAcc,YAAYT,QAAO,SAACtB,EAAKuB,GACxD,OAAIA,EAAKI,QAAQC,OACP5B,EAAG,UAAOuB,EAAKC,IAAZ,YAAmBD,EAAKI,QAAQE,OAAhC,KAEJ7B,IAER,IAECiB,EAAce,QAAUf,EAAce,OAAOJ,SAC/CV,EAAY,iBAAaD,EAAce,OAAOH,OAAlC,MAEVZ,EAAcgB,cAAgBhB,EAAcgB,aAAaL,SAC3DT,EAAa,kBAAcF,EAAcgB,aAAaJ,OAAzC,MAGf,IAAMK,EAAgB,WAAOhB,GAAP,OAAsBC,GAAtB,OAAsCC,GAAtC,OAAuDU,GAC7E,GAAIK,OAAOC,SAAWD,OAAOC,QAAQC,UAAW,CAC9C,IACMC,EADO,UAAMH,OAAOI,SAASC,SAAtB,aAAmCL,OAAOI,SAASE,MAAnD,OAA0DN,OAAOI,SAASG,UAC9DR,EACzBC,OAAOC,QAAQC,UAAU,CAAEM,KAAML,GAAU,GAAIA,KC9B5C,SAASM,EAA0BC,GACxC,GAAIA,EAAMC,eAAelB,OAAS,EAAG,CACnC,IAAImB,EAAqB,IACzBA,GAAsBF,EAAMC,eAAejB,KAAK,KAChD,IAAMmB,EAASH,EAAMI,WAAaF,EAClCZ,OAAOI,SAASW,OAAOF,ICVpB,IAAMG,EACE,SAGFC,EACX,4CAGWC,EAA4B,OCClC,SAASC,EACdrD,EACAsD,GAEA,OAAOtD,EAAKuD,SAASD,EAAUE,YAC3B,sBACA,gBAGC,SAASC,EAAiBC,GAAoB,IAAhBC,EAAe,uDAAJ,GACtCC,EAAWF,EAAXE,OACJD,EACFC,EAAOC,QAAQF,GAAUG,UAAUC,OAAOb,GAE1CU,EAAOI,WAAWF,UAAUC,OAAOb,GAIhC,SAASe,EAA4BC,GAC1C,OAAIA,IAAetE,EAAkBuE,eAC5B,CACLC,aAAcjB,EACdkB,WAAYjB,GAELc,IAAetE,EAAkB0E,gBACnC,CACLF,aD7BsC,oCC8BtCC,WD3BoC,uBCwBjC,EC/BF,IAAME,EAAc,SAACC,GAC1B,OAAO,WACDA,GAAOA,EAAIC,SACbvC,OAAOwC,SAAS,EAAGF,EAAIC,QAAQE,a,gBCgBxBC,EAAkB,SAAChC,GAC9B,IAAMiC,EAAsBC,qBAAWC,GACvC,EAAsCC,mBAAS,IAA/C,mBAAOC,EAAP,KAAoBC,EAApB,KAEMC,EAAiBZ,EAAYM,EAAoBO,SAoBjDC,EAAY,SAACC,GAAD,OAChBT,EAAoBU,cAAgB3F,EAAkB0E,iBACpD,8BAAIgB,EAAcE,UAAlB,SAGEC,EAAkB7C,EAAM8C,eAAeC,QAAQC,KACnD,SAACC,EAAgBC,GAAjB,OACE,eAAC,IAAMC,SAAP,WACE,qBAAKC,UAAU,YACf,qBAAKA,UAAU,MAAf,SAAsBH,EAAeI,gBAFvC,UAAwBH,EAAxB,YAOEI,EAAiBtD,EAAM8C,eAAeC,QAAQ,GAAGQ,iBAAiBP,KACtE,SAACN,EAAec,GAAhB,OACEd,EAAce,WAAWT,KAAI,SAACU,GAAD,OAC3B,sBAAKN,UAAU,MAAf,UACE,sBAAKA,UAAU,MAAf,UACE,cAACX,EAAD,eAAeC,IACdgB,EAASC,eAEZ,qBAAKP,UAAU,MAAf,SAAsBM,EAASE,OAC/B,qBAAKR,UAAU,YACdpD,EAAM8C,eAAeC,QAAQC,KAAI,SAACa,GAEjC,IAAMC,EAAaD,EAAON,iBACxBC,GACAC,WAAWM,MACX,SAACC,GAAD,OAAUA,EAAKL,cAAgBD,EAASC,eAE1C,OACE,eAAC,IAAMR,SAAP,WACE,qBAAKC,UAAU,MAAf,SAAsBU,EAAWG,QACjC,qBAAKb,UAAU,oBAjBvB,cAAiCI,EAAjC,YAA+CE,EAASQ,eAyBxDC,EAAoBnE,EAAM8C,eAAeC,QAAQC,KACrD,SAACC,GAAD,OACE,eAAC,IAAME,SAAP,WACE,qBAAKC,UAAU,YACf,qBAAKA,UAAU,uBAAf,SACE,mBACEA,UAAW3C,EACT4B,EACAY,EAAemB,IAEjB,iBAAgBnB,EAAemB,GAC/BC,QAAS,YAnEM,SAAC3D,GACC,kBAAdA,IACTA,EAAYA,EAAUE,YAExB,IAAM0D,EAAkBjC,EAAYkC,WAAU,SAACC,GAAD,OAASA,IAAQ9D,KACzD+D,EAAepC,EAAYqC,QAC7BJ,GAAmB,EACrBG,EAAaE,OAAOL,EAAiB,GAErCG,EAAaG,KAAKlE,GAEpB4B,EAAemC,GAyDLI,CAAiB5B,EAAemB,WAVxC,UAAwBnB,EAAemB,GAAvC,gBAkBJ,OACE,qBAAKhB,UAAW7C,EAAhB,SACE,qBAAK6C,UAAU,wBAAf,SACE,sBAAKA,UAAU,iBAAf,UACE,qBAAKA,UAAU,QAAf,SACE,qBAAKA,UAAW5C,EAAhB,SACE,sBAAK4C,UAAU,mBAAf,UACE,sBAAKA,UAAU,aAAf,UACE,qBAAKA,UAAU,QACf,qBAAKA,UAAU,QACdP,EACD,qBAAKO,UAAU,eAGhBE,EAED,sBAAKF,UAAU,MAAf,UACE,qBAAKA,UAAU,MAAf,SACE,4BAAIpD,EAAM8E,WAAWC,gBAEvB,qBAAK3B,UAAU,QACde,EACD,qBAAKf,UAAU,eAEjB,qBAAKA,UAAU,eAIrB,sBAAKA,UAAU,aAAf,UACE,wBAAQA,UAAU,YAAYiB,QA7Gd,WACxBrE,EAAMgF,kBAAkB,CAAEC,MAAM,EAAOlC,QAAS,KAChDR,KA2GQ,SACGvC,EAAM8E,WAAWI,oBAEpB,wBACE9B,UAAU,SACViB,QAAS,WACPtE,EAA0B,CACxBE,eAAgBoC,EAChBjC,WAAYJ,EAAMI,cALxB,SASGJ,EAAM8E,WAAWK,6B,4ECzInBC,EAAkC,SAACpF,GAC9C,IAAQqF,EAA6DrF,EAA7DqF,WAAR,EAAqErF,EAAjDsF,iBAApB,MAAgC,MAAhC,EAAuCC,EAA8BvF,EAA9BuF,SAAaC,EAApD,YAAqExF,EAArE,GAEMyF,EACJ,eAAC,IAAD,2BAAmBD,GAAnB,cACE,qBAAKE,wBAAyB,CAAEC,OAAQN,KACvCE,MAGL,OACE,cAACK,EAAA,EAAD,CACEN,UAAWA,EACXO,QAAS,CAAC,QAAS,SACnBC,QAASL,EAHX,SAKE,wBAAQrC,UAAU,eAAlB,SACE,mBAAGA,UAAU,4BCTR2C,EAAiB,SAAC/F,GAC7B,IAAIgG,EAAoB,GAClBC,EAAsBjG,EAAMkG,UAAU1H,QAAQ+F,WAClD,SAAC4B,GAAD,OAAOA,EAAExH,MAAQqB,EAAMoG,MAErBH,GAAuB,IACzBD,EAAoBhG,EAAMkG,UAAU1H,QAAQyH,GAAqBnH,SAEnE,IAAMuH,EAASrG,EAAMqG,OAAOrD,KAAI,SAACwB,GAC/B,IAAM8B,EACJN,EAAkBrF,SAAS6D,EAAIJ,KAC/BpE,EAAMkG,UAAU/G,OAAOwB,SAAS6D,EAAIJ,KACpCpE,EAAMkG,UAAU9G,aAAauB,SAAS6D,EAAIJ,IACtC9D,EACA,GACN,OACE,oBAEE8C,UAAWkD,EACXjC,QAAS,SAACvD,GAAD,OAAQyF,EAAiBzF,EAAI0D,EAAIJ,KAH5C,SAKGI,EAAIgC,MAJAhC,EAAIJ,OAQTmC,EAAmB,SAACzF,EAAIsF,GAC5B,IAAMhI,EAAa,eAAQ4B,EAAMkG,WACjC,GAAKlG,EAAMyG,cAeJ,CACL,IAAMC,EAAuBtI,EAAc4B,EAAM2G,aAAapC,WAC5D,SAAC4B,GAAD,OAAOA,IAAMC,KAEXM,GAAwB,EAC1BtI,EAAc4B,EAAM2G,aAAahC,OAAO+B,EAAsB,GAE9DtI,EAAc4B,EAAM2G,aAAa/B,KAAKwB,OAtBhB,CACxB,IAAMQ,EAAmBxI,EAAcI,QAAQ+F,WAC7C,SAAC4B,GAAD,OAAOA,EAAExH,MAAQqB,EAAMoG,MAEnBM,EAAuBtI,EAAcI,QACzCoI,GACA9H,QAAQyF,WAAU,SAACsC,GAAD,OAAOA,IAAMT,KAC7BM,GAAwB,EAC1BtI,EAAcI,QAAQoI,GAAkB9H,QAAQ6F,OAC9C+B,EACA,GAGFtI,EAAcI,QAAQoI,GAAkB9H,QAAQ8F,KAAKwB,GAazDtF,EAAGE,OAAOE,UAAUC,OAAOb,GAC3BnC,EAAsBC,GACtB4B,EAAM8G,aAAa1I,IAGf2I,EAAiB/G,EAAM2G,YAAc,iBAAmB,eAM9D,OACE,sBAAKvD,UAAW2D,EAAhB,UACE,sBAAK3D,UAAU,SAAf,UACE,qBAAIiB,QAPK,SAACvD,GACdD,EAAiBC,EAAD,WAASiG,KAMrB,UACG/G,EAAM1C,KAEN0C,EAAMgH,UAAYhH,EAAMyG,eACvB,cAAC,EAAD,CAASpB,WAAYrF,EAAMgH,aAI9BhH,EAAMgH,SAAWhH,EAAMyG,eACtB,cAAC,EAAD,CAASpB,WAAYrF,EAAMgH,aAG/B,6BAAKX,Q,SC9EPY,EAAmB,EAGVC,EAAe,SAAClH,GAC3B,IAAMmH,EAA4B,CAACnH,EAAMqG,OAAO,GAAGe,IAAKpH,EAAMqG,OAAO,GAAGgB,KACxE,EAAsCjF,mBAAsB+E,GAA5D,mBAAOG,EAAP,KAAoBC,EAApB,KACA,EAA0BnF,mBAAS,CACjC+E,EAAa,GAAGvG,WAChBuG,EAAa,GAAGvG,aAFlB,mBAAO4G,EAAP,KAAcC,EAAd,KAKAC,qBAAU,WACR,IAAMC,EAAmB3H,EAAMkG,UAAU1H,QAAQ+F,WAC/C,SAAC4B,GAAD,OAAOA,EAAExH,MAAQqB,EAAMoG,MAEzB,GAAIuB,GAAoB,EAAG,CACzB,IAAMC,EAA4B,CAChC5H,EAAMkG,UAAU1H,QAAQmJ,GAAkB/I,UAC1CoB,EAAMkG,UAAU1H,QAAQmJ,GAAkB9I,SAE5C0I,EAAeK,MAEhB,CAAC5H,EAAMkG,UAAWlG,EAAMoG,KAE3B,IAAMyB,EAA6B,SAACC,GAClCP,EAAeO,GACfL,EAAS,CAACK,EAAM,GAAGlH,WAAYkH,EAAM,GAAGlH,aACxC,IAAMxC,EAAa,eAAQ4B,EAAMkG,WAC3BU,EAAmBxI,EAAcI,QAAQ+F,WAC7C,SAAC4B,GAAD,OAAOA,EAAExH,MAAQqB,EAAMoG,MAEzBhI,EAAcI,QAAQoI,GAAoB,CACxCjI,IAAKqB,EAAMoG,GACXxH,UAAWkJ,EAAM,GACjBjJ,QAASiJ,EAAM,IAEjBxI,OAAOyI,aAAad,GACpBA,EAAmB3H,OAAO0I,YAAW,WACnC7J,EAAsBC,GACtB4B,EAAM8G,aAAa1I,KAtCH,MA0GpB,OACE,sBAAKgF,UAAU,eAAf,UACE,qBAAIiB,QAASxD,EAAb,UACGb,EAAM1C,KACN0C,EAAMgH,SAAW,cAAC,EAAD,CAAS3B,WAAYrF,EAAMgH,aAE/C,sBAAK5D,UAAU,SAAf,UACE,sBAAKA,UAAU,UAAf,UACG+D,EAAa,GACbnH,EAAMqG,OAAO,GAAGG,KAFnB,WAE4BW,EAAa,GACtCnH,EAAMqG,OAAO,GAAGG,QAEnB,sBAAKpD,UAAU,SAAf,UACE,uBACE6E,KAAK,OACLH,MAAON,EAAM,GACbU,SA/EW,SAACpH,GACpB,IAAMqH,EAAarH,EAAGE,OAAO8G,OACb,mBACJM,KAAKD,IAAgBA,GAC/BV,EAAS,CAACU,EAAYX,EAAM,MA4EtBa,OAxES,SAACvH,GAClB,IAAMqH,EAAarH,EAAGE,OAAO8G,MAE7B,GAAKK,GAGE,GAJS,mBAIGC,KAAKD,GAAa,CACnC,IAAIG,EAAOC,WAAWJ,GAElBG,EAAOnB,EAAa,KACtBmB,EAAOnB,EAAa,IAElBmB,EAAOnB,EAAa,KACtBmB,EAAOnB,EAAa,IAGtBU,EAA2B,CACzBS,EACAA,EAAOhB,EAAY,GAAKgB,EAAOhB,EAAY,WAb7CO,EAA2B,CAACV,EAAa,GAAIG,EAAY,QAqErD,uBACEW,KAAK,OACLH,MAAON,EAAM,GACbU,SArDS,SAACpH,GAClB,IAAMqH,EAAarH,EAAGE,OAAO8G,OACb,mBACJM,KAAKD,IAAgBA,GAC/BV,EAAS,CAACD,EAAM,GAAIW,KAkDdE,OA9CO,SAACvH,GAChB,IAAMqH,EAAarH,EAAGE,OAAO8G,MAE7B,GAAKK,GAGE,GAJS,mBAIGC,KAAKD,GAAa,CACnC,IAAIG,EAAOC,WAAWJ,GAElBG,EAAOnB,EAAa,KACtBmB,EAAOnB,EAAa,IAElBmB,EAAOnB,EAAa,KACtBmB,EAAOnB,EAAa,IAGtBU,EAA2B,CACzBS,EAAOhB,EAAY,GAAKgB,EAAOhB,EAAY,GAC3CgB,UAbFT,EAA2B,CAACP,EAAY,GAAIH,EAAa,WA4CvD,qBAAK/D,UAAU,UAAf,SACE,cAACoF,EAAA,EAAD,CACEC,IAAKtB,EAAa,GAClBuB,IAAKvB,EAAa,GAClBwB,KAAM3I,EAAMqG,OAAO,GAAGuC,KACtBd,MAAO,CAACR,EAAY,GAAIA,EAAY,IACpCuB,gBAAgB,WAChB7B,SAAS,EACTkB,SAAUL,aCpJTiB,EAAU,SAAC9I,GACtB,IAAM+I,EAAU/I,EAAMgJ,WAAWhG,KAAI,SAACiG,GACpC,MAAoB,eAAhBA,EAAOC,KAEP,cAAC,EAAD,CACE5L,KAAM2L,EAAOE,KACb9C,OAAQ4C,EAAOG,OACfhD,GAAI6C,EAAOtK,IAEXuH,UAAWlG,EAAMqJ,YACjBvC,aAAc9G,EAAMsJ,eACpBtC,QAASiC,EAAOM,kBAAoBN,EAAOO,gBAHtCP,EAAO7E,IAMS,WAAhB6E,EAAOC,KAEd,cAAC,EAAD,CACE5L,KAAM2L,EAAOE,KACb9C,OAAQ4C,EAAOG,OACfhD,GAAI6C,EAAOtK,IAEXuH,UAAWlG,EAAMqJ,YACjBvC,aAAc9G,EAAMsJ,eACpBtC,QAASiC,EAAOM,kBAAoBN,EAAOO,gBAHtCP,EAAO7E,IAQT,QAIX,OACE,sBAAKhB,UAAU,gBAAf,UACE,6BAAKpD,EAAMyJ,eACVV,MCxBMW,EAAa,SAAC1J,GACzB,IAAMiC,EAAsBC,qBAAWC,GACvC,EAA0DC,oBAAS,GAAnE,mBAAOuH,EAAP,KAA8BC,EAA9B,KACMrH,EAAiBZ,EAAYM,EAAoBO,SA0BvD,OAxBAkF,qBAAU,WACR,IAAMmC,IAAmB7J,EAAM5C,KAAK0M,sBAAwB,GAC5DF,EAAyBC,KACxB,CAAC7J,EAAM5C,KAAK0M,wBAsBb,sBAAK1G,UAAU,aAAf,UACE,wBACEA,UAAU,YACViB,QAtBN,WACE,GAAIrE,EAAM5C,KAAK2M,eAAehL,OAAS,EAAG,CACxC,IAAMiL,EAAoB,CACxBC,OAAQjK,EAAM5C,KAAK2M,gBAErB7M,EAAS8C,EAAMkK,IAAIC,WAAYH,EAAmB,OAAQ,eACvDhM,MAAK,SAAC6F,GACL7D,EAAMgF,kBAAkB,CAAEC,MAAM,EAAMlC,QAASc,OAEhDuG,OAAM,SAACC,GACNC,QAAQC,IAAIF,MAEbG,SAAQ,WACPjI,SAUFkI,SAAUd,EAHZ,SAKG3J,EAAM8E,WAAW4F,cAEpB,wBACEtH,UAAU,SACViB,QAAS,WACPtE,EAA0B,CACxBE,eAAgBD,EAAM5C,KAAK6C,eAC3BG,WAAYJ,EAAMkK,IAAI9J,cAL5B,SASGJ,EAAM8E,WAAW6F,sBCjEbC,EAET,SAAC5K,GACH,IAAM6K,EAAmB,SAACC,GACxB,OACE,eAAC,IAAM3H,SAAP,WACE,qBAAKC,UAAU,SAAf,SAAyB0H,EAAoBlI,YAC7C,qBAAKQ,UAAU,aAAf,SACG0H,EAAoBrH,YACnBqH,EAAoBrH,WAAWT,KAAI,SAACU,EAAUR,GAC5C,OACEQ,EAASO,OACP,sBACEb,UAAU,OADZ,UAIE,+BAAOM,EAASC,cACfD,EAASO,MALZ,IAKoBP,EAASE,OAL7B,2BAE2BF,EAASU,GAFpC,qBAEmDlB,aAa7D6H,EAAoB,SAACC,GACzB,OACE,sBAAK5H,UAAU,MAAf,UACG4H,EAAYC,WACX,qBAAK7H,UAAU,OAAf,SAAsB,mBAAG8H,KAAMF,EAAYC,WAArB,SAAkCD,EAAY3H,gBACjE,qBAAKD,UAAU,OAAf,SAAuB4H,EAAY3H,cACxC,qBAAKD,UAAU,iBAAf,SACE,qBAAKA,UAAU,UAAf,SACG4H,EAAYzH,kBACXyH,EAAYzH,iBAAiBP,KAAI,SAACmI,EAAiBjI,GAMjD,QAJEiI,EAAgB1H,YAChB0H,EAAgB1H,WAAW2H,OACzB,SAAC1H,GAAD,OAAeA,EAASO,WAIxB,wBAAC4G,EAAD,2BACMM,GADN,IAEEE,IAAG,4BAAuBL,EAAY5G,GAAnC,4BAAyDlB,aAO1E,sBAAKE,UAAU,aAAf,UACE,sBAAKA,UAAU,uBAAf,UACE,+BAAOpD,EAAM8E,WAAWC,cACxB,mBACE3B,UAAW3C,EACTT,EAAMC,eACN+K,EAAY5G,IAEdC,QAAS,WACPrE,EAAM6E,iBAAiBmG,EAAY5G,UAIzC,sBAAKhB,UAAU,uBAAf,UACE,+BAAOpD,EAAM8E,WAAWwG,cACxB,mBACElI,UAAW3C,EACTT,EAAMuL,wBACNP,EAAY5G,IAEdC,QAAS,WACPrE,EAAMwL,oBAAoBR,EAAY5G,iBASpD,OACE,eAAC,IAAMjB,SAAP,WACE,qBAAKC,UAAU,kBAAf,SACE,sBAAKA,UAAU,aAAf,UACE,qBAAKA,UAAU,uBAAf,SACE,+BAAOpD,EAAM8E,WAAWC,gBAE1B,qBAAK3B,UAAU,uBAAf,SACE,+BAAOpD,EAAM8E,WAAWwG,qBAI9B,qBAAKlI,UAAU,6BAAf,SACGpD,EAAMyL,YAAYC,UACjB1L,EAAMyL,YAAYC,SAAS1I,KAAI,SAAC2I,EAASzI,GACvC,OACE,wBAAC6H,EAAD,2BACMY,GADN,IAEEN,IAAG,4BAAuBM,EAAQvH,GAA/B,oBAA6ClB,eCpGnD0I,EAET,SAAC5L,GACH,IAAM+K,EAAoB,SAACC,GAEzB,OACE,sBAAK5H,UAAU,cAAf,UACE,sBAAKA,UAAU,MAAf,UACE,iCACGpD,EAAM8E,WAAW+G,gBACjB,SAEFb,EAAY3H,eAGd2H,EAAYzH,iBAAiBxE,OAAS,GACrCiM,EAAYzH,iBAAiB,GAAGE,YAChCuH,EAAYzH,iBAAiB,GAAGE,WAAWT,KACzC,SAAC8I,EAAgB5I,GAAjB,OACEA,EVdwB,GUetB,sBACEE,UAAU,MADZ,UAIE,iCACG0I,EAAenI,YAAa,IAC5BmI,EAAelI,MACd,qCAAQkI,EAAelI,KAAvB,OAED,SAEFkI,EAAe7H,QAXlB,iCAEiC+G,EAAY5G,GAF7C,YAEmD0H,EAAe5H,OAFlE,YAE4EhB,OAcpF,qBAAKE,UAAU,YACf,sBAAKA,UAAU,uBAAf,UACE,+BAAOpD,EAAM8E,WAAWC,cACxB,mBACE3B,UAAW3C,EACTT,EAAMC,eACN+K,EAAY5G,IAEdC,QAAS,WACPrE,EAAM6E,iBAAiBmG,EAAY5G,UAIzC,sBAAKhB,UAAU,uBAAf,UACE,+BAAOpD,EAAM8E,WAAWwG,cACxB,mBACElI,UAAW3C,EACTT,EAAMuL,wBACNP,EAAY5G,IAEdC,QAAS,WACPrE,EAAMwL,oBAAoBR,EAAY5G,cAQ5C2H,EAA8B,WAClC,IAAMC,EAAYhM,EAAMyL,YAAYC,SAAS,GAE7C,OACE,cAAC,IAAMvI,SAAP,UACG6I,EAAUzI,iBAAiBxE,OAAS,GACnCiN,EAAUzI,iBAAiB,GAAGE,WAAW1E,OAAS,GAClDiN,EAAUzI,iBAAiB,GAAGE,WAAWT,KACvC,SAAC8I,EAAgB5I,GACf,OAAIA,EVrEoB,GUuEpB,sBACEE,UAAU,MADZ,UAIG0I,EAAenI,YAAa,IAC5BmI,EAAelI,MACd,qCAAQkI,EAAelI,KAAvB,SANJ,iCAEiC5D,EAAMyL,YAAYrH,GAFnD,YAEyD0H,EAAe5H,OAFxE,YAEkFhB,UAiBlG,OACE,qBAAKE,UAAU,mBAAf,SACGpD,EAAMyL,YAAYC,UACjB,eAAC,IAAMvI,SAAP,WACE,sBAAKC,UAAU,aAAf,UACE,qBAAKA,UAAU,MAAf,SAAsBpD,EAAM8E,WAAW+G,kBACvC,cAACE,EAAD,IACA,qBAAK3I,UAAU,YACf,qBAAKA,UAAU,cAAf,SAA8BpD,EAAM8E,WAAWC,cAC/C,qBAAK3B,UAAU,cAAf,SAA8BpD,EAAM8E,WAAWwG,iBAEhDtL,EAAMyL,YAAYC,SAAS1I,KAAI,SAACgI,GAC/B,OACE,wBAACD,EAAD,2BACMC,GADN,IAEEK,IAAG,8BAAyBL,EAAY5G,UAI9C,qBAAKhB,UAAU,cC7GZ6I,EAAc,SAACjM,GAC1B,IAAMiC,EAAsBC,qBAAWC,GAEjC0C,EAAmB,SAACnE,GACC,kBAAdA,IACTA,EAAYA,EAAUE,YAExB,IAAM0D,EAAkBtE,EAAMC,eAAesE,WAC3C,SAACC,GAAD,OAASA,IAAQ9D,KAEbwL,EAAkBlM,EAAMC,eAAeyE,QAEzCJ,GAAmB,EACrB4H,EAAgBvH,OAAOL,EAAiB,GAExC4H,EAAgBtH,KAAKlE,GAGvBV,EAAMmM,kBAAkBD,IAEpBV,EAAsB,SAAC9K,GACF,kBAAdA,IACTA,EAAYA,EAAUE,YAExB,IAAM0D,EAAkBtE,EAAMuL,wBAAwBhH,WACpD,SAACC,GAAD,OAASA,IAAQ9D,KAEb0L,EAA2BpM,EAAMuL,wBAAwB7G,QAC3DJ,GAAmB,EACrB8H,EAAyBzH,OAAOL,EAAiB,GAEjD8H,EAAyBxH,KAAKlE,GAGhCV,EAAMqM,2BAA2BD,IAI7BE,EAAkB,WACtB,IAAMC,EAAQvM,EAAMyL,YAAYe,cAAcxJ,KAC5C,SAACyJ,EAAmBvJ,GAApB,OACE,mBACEE,UAAS,cAASqJ,IADpB,UAEUzM,EAAMyL,YAAYrH,GAF5B,YAEkClB,OAKtC,OACE,qBAAKE,UAAU,aAAf,SACGpD,EAAMyL,YAAYe,cAAczN,OAAS,GACxC,eAAC,IAAMoE,SAAP,WACE,8CACCoJ,QAOLG,EAAW,kBACf,qBAAKtJ,UAAU,QAAf,SACE,eAAC,IAAMD,SAAP,WACGnD,EAAMyL,YAAYkB,WACjB,+BAAO3M,EAAMyL,YAAYkB,YAE1B3M,EAAMyL,YAAYmB,UACjB,qBACEC,IACEC,GACA9M,EAAMyL,YAAYmB,SAEpBG,IAAK/M,EAAMyL,YAAYkB,kBAO3BK,EAAU,kBACd,sBAAK5J,UAAU,OAAf,UACGpD,EAAMyL,YAAYwB,YAAcjN,EAAMyL,YAAY7I,YACjDX,EAAoBU,aAAe3F,EAAkB0E,gBACrD,6BAAK1B,EAAMyL,YAAY7I,YAEvB,mBACEsI,KAAMlL,EAAMyL,YAAYwB,WACxBC,MAAOlN,EAAMyL,YAAY7I,UAF3B,SAIE,6BAAK5C,EAAMyL,YAAY7I,eAG1B5C,EAAMyL,YAAY0B,aAAe,4BAAInN,EAAMyL,YAAY0B,cAExD,cAACb,EAAD,QAIEc,EAAe,kBACnB,sBAAKhK,UAAU,oBAAf,UACGpD,EAAM8E,WAAWuI,eAChB,mBACEnC,KAAMlL,EAAM8E,WAAWwI,aAAe,IAAMtN,EAAMyL,YAAYrH,GAC9D8I,MAAOlN,EAAM8E,WAAWuI,cACxBjK,UAAU,iBAHZ,SAKGpD,EAAM8E,WAAWuI,gBAIrBrN,EAAMyL,YAAY8B,qBACjBvN,EAAMyL,YAAY+B,sBAChB,mBACEtC,KAAMlL,EAAMyL,YAAY8B,oBACxBL,MAAOlN,EAAMyL,YAAY+B,qBACzBpK,UAAU,SAHZ,SAKGpD,EAAMyL,YAAY+B,uBAIxBxN,EAAMyL,YAAYgC,YAAczN,EAAMyL,YAAYiC,aACjD,mBACExC,KAAMlL,EAAMyL,YAAYgC,WACxBP,MAAOlN,EAAMyL,YAAYiC,YACzBtK,UAAU,SAHZ,SAKGpD,EAAMyL,YAAYiC,cAItB1N,EAAMyL,YAAYkC,UAAY3N,EAAMyL,YAAYmC,WAC/C,mBACE1C,KAAMlL,EAAMyL,YAAYkC,SACxBT,MAAOlN,EAAMyL,YAAYmC,UACzBxK,UAAU,SAHZ,SAKGpD,EAAMyL,YAAYmC,gBAMrBC,EAAsB,SAAC,GAC3B,OADiE,EAApClC,SAE3B,KAAK3O,EAAkB0E,gBACrB,OACE,cAAC,EAAD,aACEmD,iBAAkBA,EAClB2G,oBAAqBA,GACjBxL,IAGV,KAAKhD,EAAkBuE,eACrB,OACE,cAAC,EAAD,aACEsD,iBAAkBA,EAClB2G,oBAAqBA,GACjBxL,IAGV,QACE,OAAO,OAIb,OACE,sBACEoD,UAAWnB,EAAoB6L,cAAcrM,WAD/C,UAIE,sBAAK2B,UAAU,WAAf,UACE,cAACsJ,EAAD,IACA,cAACM,EAAD,IACA,cAACI,EAAD,OAEF,cAACS,EAAD,CAAqBlC,QAAS1J,EAAoBU,gBAP7C3C,EAAMyL,YAAYrH,KCrKhB2J,EAAiB,SAAC/N,GAC7B,IAAMgO,EAAgBhO,EAAMiO,eAAelP,OACrCkD,EAAsBC,qBAAWC,GACvC,EAA8DC,mBAAS,IAAvE,mBAAOmJ,EAAP,KAAgCc,EAAhC,KACA,EAA4CjK,mBAAS,IAArD,mBAAOnC,EAAP,KAAuBkM,EAAvB,KAEM+B,EAAelO,EAAMiO,eAAejL,KAAI,SAACmL,GAAD,OAC5C,cAAC,EAAD,CACErJ,WAAY,CACVwG,YAAatL,EAAMoO,mBAAmB9C,YACtCvG,YAAa/E,EAAMoO,mBAAmBrJ,YACtCsJ,gBAAiBrO,EAAMoO,mBAAmBC,gBAC1ChB,cAAerN,EAAMoO,mBAAmBf,cACxCxB,gBAAiB7L,EAAMoO,mBAAmBvC,gBAC1CyB,aAActN,EAAMoO,mBAAmBd,cAEzC7B,YAAa0C,EACblO,eAAgBA,EAChBkM,kBAAmBA,EACnBZ,wBAAyBA,EACzBc,2BAA4BA,GACvB8B,EAAc/J,OAGvB,OACE,sBAAKhB,UAAU,iBAAf,UACE,qBAAKA,UAAU,uBAAf,SACE,wBACEgD,GAAI,gBAAkBnE,EAAoBU,YAC1CS,UAAU,SACViB,QAASrE,EAAMsO,oBAHjB,SAKGtO,EAAMoO,mBAAmBG,oBAG9B,sBAAKnL,UAAU,aAAf,UACE,qBAAKA,UAAU,SAAf,SAAyBpD,EAAMoO,mBAAmBI,cAClD,qBAAKpL,UAAU,UAAf,mBACM4K,EADN,YACuBhO,EAAMoO,mBAAmBK,0BAGlD,qBAAKrL,UAAU,QAAf,SAAwB8K,IACvBF,EAAgB,GACf,cAAC,EAAD,CACE9D,IAAK,CAAE9J,WAAYJ,EAAMI,WAAY+J,WAAYnK,EAAMmK,YACvDrF,WAAY,CACV6F,gBAAiB3K,EAAMoO,mBAAmBjJ,gBAC1CuF,YAAa1K,EAAMoO,mBAAmBM,qBAExCtR,KAAM,CACJ6C,eAAgBA,EAChB8J,eAAgBwB,EAChBzB,sBAAuByB,EAAwBxM,QAEjDiG,kBAAmBhF,EAAMgF,wBCnEtB2J,G,OAAU,WACrB,OACE,qBAAKvL,UAAU,UAAf,SACE,8BACE,qBAAKA,UAAU,uBCEVwL,EAAoC,SAAC5O,GAChD,IAAMoD,EAAS,cAAUpD,EAAM6O,OAAS,UAAY,IAOpD,OACE,oBAAIzL,UAAWA,EAAWiB,QANb,WAEbrE,EAAMmB,OAAOnB,EAAM8O,QAAS9O,EAAMoG,IAAKpG,EAAM6O,SAI7C,SACG7O,EAAM+O,SCVAC,EAA4B,SAAChP,GACxC,IAAMoD,EAAS,cAAUpD,EAAM6O,OAAS,UAAY,IAOpD,OACE,sBAAKzL,UAAWA,EAAWiB,QANd,WAEbrE,EAAMmB,OAAOnB,EAAM8O,QAAS9O,EAAMoE,IAAKpE,EAAM6O,SAI7C,UACG7O,EAAMiP,UACL,qBACE7L,UAAU,UACVyJ,IAAKC,GAAyC9M,EAAMiP,SACpDlC,IAAK/M,EAAMwG,OAGdxG,EAAMkP,SACL,qBACE9L,UAAU,OACVyJ,IAAKC,GAAyC9M,EAAMkP,QACpDnC,IAAK/M,EAAMwG,OAGdxG,EAAMwG,SClBA2I,EAA0C,SAACnP,GAEtD,IAAMoP,EAAe,SACnBN,EACA1I,EACAiJ,GAEI,IADJC,EACG,wDAEGC,EAAuB,eAAQvP,EAAMwP,cAErCC,EAAaF,EAAwBrQ,YAAYqF,WACrD,SAAC4B,GAAD,OAAOA,EAAExH,MAAQmQ,KAGbY,EACJD,GAAc,EACVF,EAAwBrQ,YAAYuQ,GAAY3Q,QAAQyF,WACtD,SAACuD,GAAD,OAAWA,IAAU1B,MAEtB,EAGHqJ,GAAc,EAEZJ,EAEEK,EAAc,IACZJ,IACFC,EAAwBrQ,YAAYuQ,GAAY3Q,QAAU,IAE5DyQ,EAAwBrQ,YAAYuQ,GAAY3Q,QAAQ8F,KAAKwB,IAG3DsJ,GAAe,IAEjBH,EAAwBrQ,YAAYuQ,GAAY3Q,QAAQ6F,OACtD+K,EACA,GAGGH,EAAwBrQ,YAAYuQ,GAAY3Q,QAAQC,QAC3DwQ,EAAwBrQ,YAAYyF,OAAO8K,EAAY,IAMzDJ,GACFE,EAAwBrQ,YAAY0F,KAAK,CACvCjG,IAAKmQ,EACLhQ,QAAS,CAACsH,KAKhBjI,EAAsBoR,GACtBvP,EAAM2P,cAAcJ,IAIhBK,EAA2B,SAC/Bd,EACA1I,EACAiJ,GAEAD,EAAaN,EAAS1I,EAAIiJ,GAAU,IAIhCQ,EAAc,SAACf,EAAiB1I,GAEpC,IAAMH,EAAsBjG,EAAMwP,aAAatQ,YAAYqF,WACzD,SAAC4B,GAAD,OAAOA,EAAExH,MAAQmQ,KAEnB,OAAI7I,GAAuB,GAGvBjG,EAAMwP,aAAatQ,YAAY+G,GAAqBnH,QAE7B6B,SAASyF,IAyEtC,MAAsB,YAAfpG,EAAMiI,KACX,qBAAK7E,UAAU,wBAAf,SACE,qBAAKA,UAAU,eAAf,SAA+BpD,EAAM+I,QAAQ/F,KApEvB,SAAC8M,EAAwB5M,GACjD,IAAM6M,EAAeD,EAAM1G,OAAO4G,MAAK,SAACC,GAAD,OAAOA,EAAEf,WAE5C9L,EACQ,IAAVF,EAAc,UAAsB,IAAVA,EAAc,SAAW,eAMrD,OAJc,IAAVA,GAAgB6M,IAClB3M,GAAa,cAIb,qBAAKA,UAAWA,EAAhB,SAQG0M,EAAM1G,OAAOpG,KAAI,SAACiN,GAAD,OAChB,cAAC,EAAD,2BAEMA,GAFN,IAGEpB,OAAQgB,EAAYC,EAAM1L,GAAI6L,EAAE7L,IAChC0K,QAASgB,EAAM1L,GACfjD,OACiB,iBAAf2O,EAAM5G,KACF0G,EACAR,IAPDa,EAAE7L,QAVmB0L,EAAM1L,WA4DxC,qBAAKhB,UAAU,kBAAf,SACGpD,EAAM+I,QAAQ/F,KAnCa,SAAC8M,EAAwB5M,GACvD,OACE,sBAAKE,UAAU,iBAAf,UACE,sBAAKA,UAAU,SAAf,UACE,6BAAK0M,EAAM3G,OACV2G,EAAMvG,kBAAoBuG,EAAMtG,gBAC/B,cAAC,EAAD,CAASnE,WAAYyK,EAAMtG,oBAG/B,6BACGsG,EAAM1G,OAAOpG,KAAI,SAACiN,GAAD,OAChB,cAAC,EAAD,CAEElB,MAAOkB,EAAEzJ,KACTJ,GAAI6J,EAAE7L,GACNyK,OAAQgB,EAAYC,EAAM1L,GAAI6L,EAAE7L,IAChC0K,QAASgB,EAAM1L,GACfjD,OACiB,iBAAf2O,EAAM5G,KACF0G,EACAR,GARDa,EAAE7L,WAVsB0L,EAAM1L,UCzIpC8L,EAA8B,SAAClQ,GAC1C,OAAO,4BAAIA,EAAMmQ,WCmBNhO,G,OAA2BiO,IAAMC,cAAc,CAC1D1N,YAAa3F,EAAkBuE,eAC/BuM,cAAezM,EAA4BrE,EAAkBuE,gBAC7DiB,QAAS,QAGE8N,EAAiC,SAACC,GAC7C,IAAMzC,EAAgBzM,EAA4BkP,EAASjP,YACrDkP,EAA8B,CAClC1C,gBACAnL,YAAa4N,EAASjP,WACtBkB,QAASiO,iBAAOF,EAASG,kBAI3B,EAAoDtO,mBAAS,MAA7D,mBAAOgM,EAAP,KAA2BuC,EAA3B,KAGA,EAAgCvO,mBAAS,CACvCwO,SAAS,EACTC,OAAO,EACPC,SAAS,IAHX,mBAAOC,EAAP,KAAiBC,EAAjB,KAOA,EAA4C5O,mBAA0B,CACpE6C,MAAM,EACNlC,QAAS,KAFX,mBAAOD,EAAP,KAAuBkC,EAAvB,KAMA,EAAsC5C,mBAA0B,CAC9D6O,KAAM,GACNC,QAAS,KAFX,mBAAOC,EAAP,KAAoBC,EAApB,KAMA,EAA4ChP,mBAAS,MAArD,mBAAO6L,EAAP,KAAuBoD,EAAvB,KAGA,EACEjP,mBAA2B,MAD7B,mBAAOkP,EAAP,KAA0BC,EAA1B,KAIA,EAAsCnP,oBAAS,GAA/C,mBAAOoP,EAAP,KAAoBC,EAApB,KACMC,EAAajB,iBAAO,MAEpBnC,EAAsB,SAACqD,GAC3BF,GAAe,SAACG,GAAD,OAAYA,MAyF7B,OAtFAlK,qBAAU,WAEJ6I,EAASsB,eAAiBtB,EAASuB,kBACrC5U,EACEqT,EAASsB,cACT,KACA,MACA,cAAgBtB,EAASjP,YAExBtD,MAAK,SAAC+T,GACLpB,EAAsBoB,EAASC,cAE/B,IAAMC,EAAoC,CACxCf,QAASa,EAASG,YAAYC,gBAC9BlB,KAAMc,EAASK,WAAWC,gBAItBC,EpBrDmB,SAACL,GAClC,IAAMM,EAA2C,CAC/C/T,QAAS,GACTW,OAAQ,GACRC,aAAc,GACdF,YAAa,IAqCf,OAlCoBI,OAAOI,SAAS8S,OAAOC,OAAO,GAIrBC,MAAM,KAAKzJ,OAAO0J,SAEtC3P,KAAI,SAAC4P,GACZ,IAAM9C,EAAQ8C,EAAQF,MAAM,KACtB5D,EAAUgB,EAAM,GAChB+C,EAAiB/C,EAAMpL,MAAM,GAEnB,WAAZoK,EACFyD,EAAuBpT,OAAS0T,EACX,YAAZ/D,EACTyD,EAAuBnT,aAAeyT,EAGvBZ,EAAiBhB,KAAKlN,MAAK,SAACkM,GAAD,OAAOA,EAAE7L,KAAO0K,KAIxDyD,EAAuBrT,YAAY0F,KAAK,CACtCjG,IAAKmQ,EACLhQ,QAAS+T,IAGXN,EAAuB/T,QAAQoG,KAAK,CAClCjG,IAAKmQ,EACLhQ,QAAS+T,OAMVN,EoBW4BO,CAAoBb,GAG/Cb,EAAea,GAGfF,EAASG,YAAYC,gBAAgBY,SAAQ,SAACC,GAC5C,IAAMC,EAAaX,EAAmB9T,QAAQ+F,WAC5C,SAAC2O,GAAD,OAAQA,EAAGvU,MAAQqU,EAAarU,OAElC,GAA0B,eAAtBqU,EAAa9J,MACK,IAAhB+J,GACFX,EAAmB9T,QAAQoG,KAAK,CAC9BjG,IAAKqU,EAAarU,IAClBG,QAAS,UAIb,IAAoB,IAAhBmU,EACFX,EAAmB9T,QAAQoG,KAAK,CAC9BjG,IAAKqU,EAAarU,IAClBC,UAAWoU,EAAa5J,OAAO,GAAGhC,IAClCvI,QAASmU,EAAa5J,OAAO,GAAG/B,UAE7B,CACL,IAAM8L,EACJb,EAAmB9T,QAAQyU,GAAYnU,QACzCwT,EAAmB9T,QAAQyU,GAAc,CACvCtU,IAAKqU,EAAarU,IAClBC,UAAWwU,SAASD,EAAuB,IAC3CtU,QAASuU,SAASD,EAAuB,SAOjD5B,EAAqBe,MAEtBlI,OAAM,SAACC,GACN2G,EAAY,CAAEJ,SAAS,EAAOC,OAAO,EAAMC,SAAS,QAGxDE,EAAY,CAAEJ,SAAS,EAAOC,OAAO,EAAMC,SAAS,IACpDxG,QAAQuG,MAAM,yDAEf,CAACN,EAASsB,cAAetB,EAASuB,kBAAmBvB,EAASjP,aAEjEoG,qBAAU,WACR,GAAI4J,EAAmB,CAErB,IAAM+B,EAAaC,OAAOjT,OAAO,GAAIiR,GACrCpU,EACEqT,EAASuB,kBACTuB,EACA,OACA,mBAAqB9C,EAASjP,YAE7BtD,MAAK,SAAC+T,GACLV,EAAkBU,GAClBf,EAAY,CAAEJ,SAAS,EAAOC,OAAO,EAAOC,SAAS,OAEtD1G,OAAM,SAACC,GACN2G,EAAY,CAAEJ,SAAS,EAAOC,OAAO,EAAMC,SAAS,UAGzD,CAACQ,EAAmBf,EAASuB,kBAAmBvB,EAASjP,aAExDyP,EAASH,QACJ,cAAC,EAAD,IAILG,EAASF,OAASN,EAASgD,WACtB,cAAC,EAAD,CAAOpD,QAASI,EAASgD,aAG3BzQ,EAAemC,MAAQnC,EAAeC,QAAQhE,OAAS,EAC5D,cAACoD,EAAyBqR,SAA1B,CAAmC1L,MAAO0I,EAA1C,SACE,cAAC,EAAD,CACE1N,eAAgBA,EAChBkC,kBAAmBA,EACnB5E,WAAYmQ,EAASkD,cACrB3O,WAAY,CACVC,YAAaqJ,EAAmBrJ,YAChCI,gBAAiBiJ,EAAmBjJ,gBACpCD,kBAAmBkJ,EAAmBlJ,kBACtCwO,mBAAoBtF,EAAmBsF,mBACvCC,eAAgBvF,EAAmBuF,oBAKzC,eAACxR,EAAyBqR,SAA1B,CAAmC1L,MAAO0I,EAA1C,UAEGW,EAAYF,KAAKlS,OAAS,GACzB,cAAC,EAAD,CACEkJ,KAAK,UACLc,QAASoI,EAAYF,KACrBzB,aAAc8B,EACd3B,cAAe4B,IAGnB,sBAAKnO,UAAW0K,EAActM,aAA9B,UACE,sBACEI,IAAK8P,EACLtO,UAAS,wBAAmBoO,EAAc,UAAY,IAFxD,UAIGA,GACC,sBACEpO,UACE,sBAAwBoN,EAA4B7N,YAEtD0B,QAASiK,EACTsF,MAAO,CAAEC,KAAMnC,EAAW7P,QAAQiS,eAGrC3C,EAAYF,KAAKlS,OAAS,GACzB,cAAC,EAAD,CACEkJ,KAAK,SACLc,QAASoI,EAAYF,KACrBzB,aAAc8B,EACd3B,cAAe4B,IAGlBJ,EAAYD,QAAQnS,OAAS,GAC5B,cAAC,EAAD,CACEiK,WAAYmI,EAAYD,QACxBzH,aAAc2E,EAAmB2F,mBACjC1K,YAAaiI,EACbhI,eAAgBiI,IAGpB,qBAAKnO,UAAU,gBAAf,SACE,wBAAQA,UAAU,SAASiB,QAASiK,EAApC,SACGF,EAAmB4F,kBAI1B,qBAAK5Q,UAAU,SAAf,SACG6K,GAAkBG,GACjB,cAAC,EAAD,CACEtL,eAAgBA,EAChBmL,eAAgBA,EAChBG,mBAAoBA,EACpBjE,WAAYoG,EAAS0D,cACrBjP,kBAAmBA,EACnB5E,WAAYmQ,EAASkD,cACrBnF,oBAAqBA,aC1O7B4F,EAAmBC,SAASC,iBAAiB,sBAEnDF,EAAiBnV,OAAS,GACxBmV,EAAiBnB,SAAQ,SAACrC,GACxB,GAAIA,EAAiB,CACnB,IAAMH,EAA4B,CAChCG,gBAAiBA,EACjBpP,WAAYoP,EAAgB2D,aAC1B,oBAEFxC,cAAenB,EAAgB2D,aAAa,qBAAuB,GACnEvC,kBACEpB,EAAgB2D,aAAa,sBAAwB,GACvDJ,cAAevD,EAAgB2D,aAAa,qBAAuB,GACnEZ,cAAe/C,EAAgB2D,aAAa,qBAAuB,GACnEd,WAAY7C,EAAgB2D,aAAa,uBAAyB,IAGpEC,IAASC,OACP,cAAC,IAAMC,WAAP,UACE,cAAC,EAAD,eAASjE,MAEXG,S","file":"static/js/main.620ad208.chunk.js","sourcesContent":["export enum APP_VARIANTS_ENUM {\r\n CORE_SELECTION = \"core-selection\",\r\n FINISHING_GUIDE = \"finishing-guide\",\r\n}\r\n\r\nexport type AppVariantType = \"core-selection\" | \"finishing-guide\";\r\nexport interface AppSettingsType {\r\n applicationRoot: Element;\r\n appVariant: AppVariantType;\r\n filterDataUrl: string;\r\n productResultsUrl: string;\r\n compareApiUrl: string;\r\n inquiryApiUrl: string;\r\n errMessage: string;\r\n}\r\n","interface FetchConfig {\r\n method: \"GET\" | \"POST\";\r\n signal: AbortSignal;\r\n headers: any;\r\n body?: any;\r\n}\r\n\r\ninterface AborterType {\r\n [key: string]: AbortController | null;\r\n}\r\n\r\nconst ABORTER: AborterType = {}; // make the aborter accessible\r\n\r\nexport function postData(\r\n url: string,\r\n data: any,\r\n method: \"GET\" | \"POST\",\r\n name: keyof AborterType\r\n) {\r\n // cancel pending request if any\r\n if (ABORTER[name]) ABORTER[name].abort();\r\n // make our request cancellable\r\n ABORTER[name] = new AbortController();\r\n const { signal } = ABORTER[name];\r\n\r\n const fetchConfig: FetchConfig = {\r\n method,\r\n signal,\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n },\r\n };\r\n if (data) {\r\n fetchConfig.body = JSON.stringify(data);\r\n }\r\n return (\r\n fetch(url, fetchConfig)\r\n // clean up\r\n .then((r) => {\r\n ABORTER[name] = null;\r\n return r.json();\r\n })\r\n );\r\n}\r\n","import { FiltersDataType, FiltersStateType } from \"../models/filters\";\r\n\r\nexport const exportFilterStateToSQ = (actualDataObj: FiltersStateType) => {\r\n let marketString = \"\";\r\n let productString = \"\";\r\n\r\n const dynamicFilters = actualDataObj.Dynamic.reduce((url, curr) => {\r\n if (\"FromValue\" in curr) {\r\n return (url += `${curr.Key},${curr.FromValue},${curr.ToValue};`);\r\n } else if (curr.Checked.length) {\r\n return (url += `${curr.Key},${curr.Checked.join()};`);\r\n } else {\r\n return url;\r\n }\r\n }, \"\");\r\n\r\n const topFilters = actualDataObj.TopSelected.reduce((url, curr) => {\r\n if (curr.Checked.length) {\r\n return (url += `${curr.Key},${curr.Checked.join()};`);\r\n } else {\r\n return url;\r\n }\r\n }, \"\");\r\n\r\n if (actualDataObj.Market && actualDataObj.Market.length) {\r\n marketString = `market,${actualDataObj.Market.join()};`;\r\n }\r\n if (actualDataObj.ProductGroup && actualDataObj.ProductGroup.length) {\r\n productString = `product,${actualDataObj.ProductGroup.join()};`;\r\n }\r\n\r\n const fullSearchString = `?${marketString}${productString}${dynamicFilters}${topFilters}`;\r\n if (window.history && window.history.pushState) {\r\n const oldPath = `${window.location.protocol}//${window.location.host}${window.location.pathname}`;\r\n const newurl = oldPath + fullSearchString;\r\n window.history.pushState({ path: newurl }, \"\", newurl);\r\n }\r\n};\r\n\r\nexport const createFiltersFromSQ = (availableFilters: FiltersDataType) => {\r\n const updatedFilteringObject: FiltersStateType = {\r\n Dynamic: [],\r\n Market: [],\r\n ProductGroup: [],\r\n TopSelected: [],\r\n };\r\n\r\n const queryLoaded = window.location.search.substr(1);\r\n // ?market,1653;product,1455,1456;2577,0,13;2578,0,8;2573,2530,2527,2528;2574,2532;\r\n // slider: 2578,0,8\r\n // checkboxes: 2573,2530,2527,2528\r\n const queryArr = queryLoaded.split(\";\").filter(Boolean);\r\n /* eslint-disable-next-line array-callback-return */\r\n queryArr.map((queryEl) => {\r\n const group = queryEl.split(\",\");\r\n const groupId = group[0];\r\n const checkedInGroup = group.slice(1);\r\n\r\n if (groupId === \"market\") {\r\n updatedFilteringObject.Market = checkedInGroup;\r\n } else if (groupId === \"product\") {\r\n updatedFilteringObject.ProductGroup = checkedInGroup;\r\n } else {\r\n // Detect main vs dynamic\r\n const isMain = availableFilters.main.find((f) => f.Id === groupId);\r\n // const isDynamic = allFilters.dynamic.find(f => f.Id === groupId);\r\n // TODO parse checked Values against checkedInGroup to eliminate not available values\r\n if (isMain) {\r\n updatedFilteringObject.TopSelected.push({\r\n Key: groupId,\r\n Checked: checkedInGroup,\r\n });\r\n } else {\r\n updatedFilteringObject.Dynamic.push({\r\n Key: groupId,\r\n Checked: checkedInGroup,\r\n });\r\n }\r\n }\r\n });\r\n\r\n return updatedFilteringObject;\r\n};\r\n","interface InquiryData {\r\n dataForInquiry: string[];\r\n inquiryUrl: string;\r\n}\r\n\r\nexport function sendInquiryDataInRedirect(props: InquiryData) {\r\n if (props.dataForInquiry.length > 0) {\r\n let partialQueryString = \"?\";\r\n partialQueryString += props.dataForInquiry.join(\",\");\r\n const newUrl = props.inquiryUrl + partialQueryString;\r\n window.location.assign(newUrl);\r\n }\r\n}\r\n","export const BASE = {\r\n activeClass: \"active\",\r\n};\r\n\r\nexport const CLASS_HOLDER_CORE_SELECTION =\r\n \"holder-of-core-selection-guide-columns-v2\";\r\nexport const CLASS_HOLDER_FINISHING_GUIDE = \"holder-of-finishing-guide-columns\";\r\n\r\nexport const CLASS_ITEM_CORE_SELECTION = \"item\";\r\nexport const CLASS_ITEM_FINISHING_GUIDE = \"finishing-item\";\r\n\r\nexport const MAX_COLUMNS_OF_VARIANT = 6;\r\n","import {\r\n BASE,\r\n CLASS_HOLDER_CORE_SELECTION,\r\n CLASS_HOLDER_FINISHING_GUIDE,\r\n CLASS_ITEM_CORE_SELECTION,\r\n CLASS_ITEM_FINISHING_GUIDE,\r\n} from \"./constants\";\r\nimport { AppVariantType, APP_VARIANTS_ENUM } from \"../models/appSettings\";\r\n\r\nexport function toogleCheckboxCheckClassName(\r\n data: string[],\r\n variantId: number\r\n) {\r\n return data.includes(variantId.toString())\r\n ? \"fas fa-check-square\"\r\n : \"far fa-square\";\r\n}\r\n\r\nexport function toggleVisibility(ev, selector = \"\") {\r\n const { target } = ev;\r\n if (selector) {\r\n target.closest(selector).classList.toggle(BASE.activeClass);\r\n } else {\r\n target.parentNode.classList.toggle(BASE.activeClass);\r\n }\r\n}\r\n\r\nexport function classNamesBasedOnAppVariant(appVariant: AppVariantType) {\r\n if (appVariant === APP_VARIANTS_ENUM.CORE_SELECTION) {\r\n return {\r\n CLASS_HOLDER: CLASS_HOLDER_CORE_SELECTION,\r\n CLASS_ITEM: CLASS_ITEM_CORE_SELECTION,\r\n };\r\n } else if (appVariant === APP_VARIANTS_ENUM.FINISHING_GUIDE) {\r\n return {\r\n CLASS_HOLDER: CLASS_HOLDER_FINISHING_GUIDE,\r\n CLASS_ITEM: CLASS_ITEM_FINISHING_GUIDE,\r\n };\r\n }\r\n}\r\n","import { MutableRefObject } from \"react\";\r\n\r\nexport const scrollToRef = (ref: MutableRefObject) => {\r\n return () => {\r\n if (ref && ref.current) {\r\n window.scrollTo(0, ref.current.offsetTop);\r\n }\r\n };\r\n};\r\n","import React, { useContext, useState } from \"react\";\r\nimport { sendInquiryDataInRedirect } from \"../../components/sendInquiry\";\r\nimport {\r\n CLASS_HOLDER_CORE_SELECTION,\r\n CLASS_ITEM_CORE_SELECTION,\r\n} from \"../../helpers/constants\";\r\nimport { toogleCheckboxCheckClassName } from \"../../helpers/shared\";\r\nimport { APP_VARIANTS_ENUM } from \"../../models/appSettings\";\r\nimport { PropertiesGroup as PropertiesGroupType } from \"../../models/API\";\r\nimport { CompareProductProps as CompareProductPropsBase } from \"../../models/comapreResults\";\r\nimport { StaticSettingsAppContext } from \"../App/App\";\r\nimport { scrollToRef } from \"../../helpers/scrollToRef\";\r\nimport { DictionaryType } from \"../../models/shared\";\r\n\r\nimport \"./index.css\";\r\n\r\ninterface CompareProductProps extends CompareProductPropsBase {\r\n dictionary: DictionaryType;\r\n inquiryUrl: string;\r\n}\r\n\r\nexport const CompareProducts = (props: CompareProductProps) => {\r\n const STATIC_SETTINGS_APP = useContext(StaticSettingsAppContext);\r\n const [inquiryData, setInquiryData] = useState([]);\r\n\r\n const scrollToTopApp = scrollToRef(STATIC_SETTINGS_APP.APP_REF);\r\n\r\n const setCompareVisible = () => {\r\n props.setCompareResults({ view: false, results: [] });\r\n scrollToTopApp();\r\n };\r\n const selectForInquiry = (variantId) => {\r\n if (typeof variantId === \"number\") {\r\n variantId = variantId.toString();\r\n }\r\n const indexOfSelected = inquiryData.findIndex((val) => val === variantId);\r\n const _inquiryData = inquiryData.slice();\r\n if (indexOfSelected >= 0) {\r\n _inquiryData.splice(indexOfSelected, 1);\r\n } else {\r\n _inquiryData.push(variantId);\r\n }\r\n setInquiryData(_inquiryData);\r\n };\r\n\r\n const HeaderRow = (propertyGroup: PropertiesGroupType) =>\r\n STATIC_SETTINGS_APP.APP_VARIANT === APP_VARIANTS_ENUM.FINISHING_GUIDE && (\r\n {propertyGroup.GroupName}: \r\n );\r\n\r\n const CompareElements = props.compareResults.results.map(\r\n (compareElement, index) => (\r\n \r\n
\r\n
{compareElement.VariantName}
\r\n \r\n )\r\n );\r\n\r\n const PropertiesData = props.compareResults.results[0].PropertiesGroups.map(\r\n (propertyGroup, indexGroup) =>\r\n propertyGroup.Properties.map((property) => (\r\n
\r\n
\r\n \r\n {property.DisplayName}\r\n
\r\n
{property.Unit}
\r\n
\r\n {props.compareResults.results.map((result) => {\r\n // match single property based on header row\r\n const foundValue = result.PropertiesGroups[\r\n indexGroup\r\n ].Properties.find(\r\n (prop) => prop.DisplayName === property.DisplayName\r\n );\r\n return (\r\n \r\n
{foundValue.Value}
\r\n
\r\n \r\n );\r\n })}\r\n
\r\n ))\r\n );\r\n\r\n const InquiryCheckboxes = props.compareResults.results.map(\r\n (compareElement) => (\r\n \r\n
\r\n
\r\n {\r\n selectForInquiry(compareElement.Id);\r\n }}\r\n />\r\n
\r\n \r\n )\r\n );\r\n\r\n return (\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n {CompareElements}\r\n
\r\n
\r\n\r\n {PropertiesData}\r\n\r\n
\r\n
\r\n {props.dictionary.InquiryText}\r\n
\r\n
\r\n {InquiryCheckboxes}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n {\r\n sendInquiryDataInRedirect({\r\n dataForInquiry: inquiryData,\r\n inquiryUrl: props.inquiryUrl,\r\n });\r\n }}\r\n >\r\n {props.dictionary.MakeInquiryText}\r\n \r\n
\r\n
\r\n
\r\n
\r\n );\r\n};\r\n","import {\r\n Tooltip as TooltipRsuite,\r\n TooltipProps as TooltipPropsRsuite,\r\n Whisper as WhisperRsuite,\r\n} from \"rsuite\";\r\nimport \"./index.css\";\r\n\r\ninterface TooltipProps extends TooltipPropsRsuite {\r\n htmlString: string;\r\n}\r\n\r\nexport const Tooltip: React.FC = (props) => {\r\n const { htmlString, placement = \"top\", children, ...tooltipProps } = props;\r\n\r\n const tooltipContent = (\r\n \r\n
\r\n {children}\r\n
\r\n );\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n","import { FilterValue } from \"../models/API\";\r\nimport { BASE } from \"../helpers/constants\";\r\nimport { exportFilterStateToSQ } from \"../helpers/dynamicFilterSQ\";\r\nimport { FiltersStateType } from \"../models/filters\";\r\nimport { Tooltip } from \"./Tooltip\";\r\nimport { toggleVisibility } from \"../helpers/shared\";\r\n\r\ninterface CheckboxFilterProps {\r\n name: string;\r\n id: string;\r\n values: FilterValue[];\r\n dataState: FiltersStateType;\r\n setDataState: React.Dispatch>;\r\n isForProducts?: boolean;\r\n productType?: \"Market\" | \"ProductGroup\";\r\n tooltip: string;\r\n}\r\n\r\nexport const CheckboxFilter = (props: CheckboxFilterProps) => {\r\n let currVisibleValues = [];\r\n const currentElementIndex = props.dataState.Dynamic.findIndex(\r\n (x) => x.Key === props.id\r\n );\r\n if (currentElementIndex >= 0) {\r\n currVisibleValues = props.dataState.Dynamic[currentElementIndex].Checked;\r\n }\r\n const values = props.values.map((val) => {\r\n const classForEl =\r\n currVisibleValues.includes(val.Id) ||\r\n props.dataState.Market.includes(val.Id) ||\r\n props.dataState.ProductGroup.includes(val.Id)\r\n ? BASE.activeClass\r\n : \"\";\r\n return (\r\n selectCheckboxes(ev, val.Id)}\r\n >\r\n {val.Text}\r\n \r\n );\r\n });\r\n const selectCheckboxes = (ev, id) => {\r\n const actualDataObj = { ...props.dataState };\r\n if (!props.isForProducts) {\r\n const actualArrElIndex = actualDataObj.Dynamic.findIndex(\r\n (x) => x.Key === props.id\r\n );\r\n const actualDataInArrIndex = actualDataObj.Dynamic[\r\n actualArrElIndex\r\n ].Checked.findIndex((y) => y === id);\r\n if (actualDataInArrIndex >= 0) {\r\n actualDataObj.Dynamic[actualArrElIndex].Checked.splice(\r\n actualDataInArrIndex,\r\n 1\r\n );\r\n } else {\r\n actualDataObj.Dynamic[actualArrElIndex].Checked.push(id);\r\n }\r\n } else {\r\n const actualDataInArrIndex = actualDataObj[props.productType].findIndex(\r\n (x) => x === id\r\n );\r\n if (actualDataInArrIndex >= 0) {\r\n actualDataObj[props.productType].splice(actualDataInArrIndex, 1);\r\n } else {\r\n actualDataObj[props.productType].push(id);\r\n }\r\n }\r\n\r\n ev.target.classList.toggle(BASE.activeClass);\r\n exportFilterStateToSQ(actualDataObj);\r\n props.setDataState(actualDataObj);\r\n };\r\n\r\n const containerClass = props.productType ? \"products-group\" : \"filter-group\";\r\n\r\n const toggle = (ev) => {\r\n toggleVisibility(ev, `.${containerClass}`);\r\n };\r\n\r\n return (\r\n
\r\n
\r\n

\r\n {props.name}\r\n\r\n {props.tooltip && !props.isForProducts && (\r\n \r\n )}\r\n

\r\n\r\n {props.tooltip && props.isForProducts && (\r\n \r\n )}\r\n
\r\n
    {values}
\r\n
\r\n );\r\n};\r\n","import React, { useState, useEffect } from \"react\";\r\nimport { RangeSlider } from \"rsuite\";\r\nimport { Values } from \"../models/API\";\r\nimport { exportFilterStateToSQ } from \"../helpers/dynamicFilterSQ\";\r\nimport { toggleVisibility } from \"../helpers/shared\";\r\nimport { Tooltip } from \"./Tooltip\";\r\n\r\ninterface SliderFilterProps {\r\n name: string;\r\n id: string;\r\n values: Values[];\r\n key: string;\r\n dataState: any;\r\n setDataState: any;\r\n tooltip: string;\r\n}\r\n\r\ntype SliderValue = [number, number];\r\n\r\nlet sliderDataToSend = 0;\r\nconst sliderTimeout = 1000;\r\n\r\nexport const SliderFilter = (props: SliderFilterProps) => {\r\n const initialValue: SliderValue = [props.values[0].Min, props.values[0].Max];\r\n const [sliderState, setSliderState] = useState(initialValue);\r\n const [input, setInput] = useState([\r\n initialValue[0].toString(),\r\n initialValue[1].toString(),\r\n ]);\r\n\r\n useEffect(() => {\r\n const indexInDataState = props.dataState.Dynamic.findIndex(\r\n (x) => x.Key === props.id\r\n );\r\n if (indexInDataState >= 0) {\r\n const newDataState: SliderValue = [\r\n props.dataState.Dynamic[indexInDataState].FromValue,\r\n props.dataState.Dynamic[indexInDataState].ToValue,\r\n ];\r\n setSliderState(newDataState);\r\n }\r\n }, [props.dataState, props.id]);\r\n\r\n const setValueOnSliderAndInState = (value: SliderValue) => {\r\n setSliderState(value);\r\n setInput([value[0].toString(), value[1].toString()]);\r\n const actualDataObj = { ...props.dataState };\r\n const actualArrElIndex = actualDataObj.Dynamic.findIndex(\r\n (x) => x.Key === props.id\r\n );\r\n actualDataObj.Dynamic[actualArrElIndex] = {\r\n Key: props.id,\r\n FromValue: value[0],\r\n ToValue: value[1],\r\n };\r\n window.clearTimeout(sliderDataToSend);\r\n sliderDataToSend = window.setTimeout(() => {\r\n exportFilterStateToSQ(actualDataObj);\r\n props.setDataState(actualDataObj);\r\n }, sliderTimeout);\r\n };\r\n\r\n // Just update input value\r\n const onChangeFrom = (ev: React.ChangeEvent) => {\r\n const inputValue = ev.target.value;\r\n const _regexp = /^[\\d]+\\.?[\\d]*$/g;\r\n if (_regexp.test(inputValue) || !inputValue) {\r\n setInput([inputValue, input[1]]);\r\n }\r\n };\r\n // Perform some checks against mx/min\r\n const onBlurFrom = (ev: React.FocusEvent) => {\r\n const inputValue = ev.target.value;\r\n const _regexp = /^[\\d]+\\.?[\\d]*$/g;\r\n if (!inputValue) {\r\n // Empty so update with initial min\r\n setValueOnSliderAndInState([initialValue[0], sliderState[1]]);\r\n } else if (_regexp.test(inputValue)) {\r\n let _val = parseFloat(inputValue);\r\n // Must be in range\r\n if (_val < initialValue[0]) {\r\n _val = initialValue[0];\r\n }\r\n if (_val > initialValue[1]) {\r\n _val = initialValue[1];\r\n }\r\n // Modify TO value if FROM value is larger\r\n setValueOnSliderAndInState([\r\n _val,\r\n _val > sliderState[1] ? _val : sliderState[1],\r\n ]);\r\n }\r\n };\r\n\r\n // Just update input value\r\n const onChangeTo = (ev: React.ChangeEvent) => {\r\n const inputValue = ev.target.value;\r\n const _regexp = /^[\\d]+\\.?[\\d]*$/g;\r\n if (_regexp.test(inputValue) || !inputValue) {\r\n setInput([input[0], inputValue]);\r\n }\r\n };\r\n // Perform some checks against mx/min\r\n const onBlurTo = (ev: React.FocusEvent) => {\r\n const inputValue = ev.target.value;\r\n const _regexp = /^[\\d]+\\.?[\\d]*$/g;\r\n if (!inputValue) {\r\n // Empty so update with initial max\r\n setValueOnSliderAndInState([sliderState[0], initialValue[1]]);\r\n } else if (_regexp.test(inputValue)) {\r\n let _val = parseFloat(inputValue);\r\n // Must be in range\r\n if (_val < initialValue[0]) {\r\n _val = initialValue[0];\r\n }\r\n if (_val > initialValue[1]) {\r\n _val = initialValue[1];\r\n }\r\n // Modify FROM value if TO value is smaller\r\n setValueOnSliderAndInState([\r\n _val < sliderState[0] ? _val : sliderState[0],\r\n _val,\r\n ]);\r\n }\r\n };\r\n\r\n return (\r\n
\r\n

\r\n {props.name}\r\n {props.tooltip && }\r\n

\r\n
\r\n
\r\n {initialValue[0]}\r\n {props.values[0].Text} — {initialValue[1]}\r\n {props.values[0].Text}\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n );\r\n};\r\n","import React from \"react\";\r\nimport { CheckboxFilter } from \"../components/checkboxFilter\";\r\nimport { SliderFilter } from \"../components/sliderfilter\";\r\nimport { LeftFilterItems } from \"../models/API\";\r\nimport { FiltersStateType } from \"../models/filters\";\r\n\r\ninterface FilterDataProps {\r\n filterData: LeftFilterItems[];\r\n filterHeader: string;\r\n filterState: FiltersStateType;\r\n setFilterState: React.Dispatch>;\r\n}\r\nexport const Filters = (props: FilterDataProps) => {\r\n const filters = props.filterData.map((filter) => {\r\n if (filter.Type === \"checkboxes\") {\r\n return (\r\n \r\n );\r\n } else if (filter.Type === \"slider\") {\r\n return (\r\n \r\n );\r\n } else {\r\n // TODO radio (singleChoice) if needed\r\n return null;\r\n }\r\n });\r\n\r\n return (\r\n
\r\n

{props.filterHeader}

\r\n {filters}\r\n
\r\n );\r\n};\r\n","import { useContext, useEffect, useState } from \"react\";\r\nimport { postData } from \"../helpers/dataSending\";\r\nimport { sendInquiryDataInRedirect } from \"../components/sendInquiry\";\r\nimport { CompareProductMethodsProps } from \"../models/comapreResults\";\r\nimport { scrollToRef } from \"../helpers/scrollToRef\";\r\nimport { StaticSettingsAppContext } from \"../modules/App/App\";\r\n\r\ninterface CTAButtonsProps extends CompareProductMethodsProps {\r\n api: {\r\n compareUrl: string;\r\n inquiryUrl: string;\r\n };\r\n dictionary: {\r\n makeInquiryText: string;\r\n compareText: string;\r\n };\r\n data: {\r\n dataForCompare: string[];\r\n dataForInquiry: string[];\r\n compareProductsLength: number;\r\n };\r\n}\r\n\r\nexport const CTAButtons = (props: CTAButtonsProps) => {\r\n const STATIC_SETTINGS_APP = useContext(StaticSettingsAppContext);\r\n const [disabledButtonCompare, setDisabledButtonCompare] = useState(true);\r\n const scrollToTopApp = scrollToRef(STATIC_SETTINGS_APP.APP_REF);\r\n\r\n useEffect(() => {\r\n const disabledButton = !(props.data.compareProductsLength > 1);\r\n setDisabledButtonCompare(disabledButton);\r\n }, [props.data.compareProductsLength]);\r\n\r\n // Function for sending data to compare\r\n function sendComparisonData() {\r\n if (props.data.dataForCompare.length > 0) {\r\n const dataForComparison = {\r\n IdList: props.data.dataForCompare,\r\n };\r\n postData(props.api.compareUrl, dataForComparison, \"POST\", \"compareData\")\r\n .then((result) => {\r\n props.setCompareResults({ view: true, results: result });\r\n })\r\n .catch((err) => {\r\n console.log(err);\r\n })\r\n .finally(() => {\r\n scrollToTopApp();\r\n });\r\n }\r\n }\r\n\r\n return (\r\n
\r\n \r\n {props.dictionary.compareText}\r\n \r\n {\r\n sendInquiryDataInRedirect({\r\n dataForInquiry: props.data.dataForInquiry,\r\n inquiryUrl: props.api.inquiryUrl,\r\n });\r\n }}\r\n >\r\n {props.dictionary.makeInquiryText}\r\n \r\n
\r\n );\r\n};\r\n","import React from \"react\";\r\nimport { toogleCheckboxCheckClassName } from \"../../helpers/shared\";\r\nimport { ProductVariants, PropertiesGroup } from \"../../models/API\";\r\nimport { ProductItemProps, VariantProductItemProps } from \"./model\";\r\n\r\nexport const VariantFinishingGuide: React.FC<\r\n VariantProductItemProps & ProductItemProps\r\n> = (props) => {\r\n const ProductTableData = (propertiesGroupData: PropertiesGroup) => {\r\n return (\r\n \r\n
{propertiesGroupData.GroupName}
\r\n
\r\n {propertiesGroupData.Properties &&\r\n propertiesGroupData.Properties.map((property, index) => {\r\n return (\r\n property.Value && (\r\n \r\n {property.DisplayName}\r\n {property.Value} {property.Unit}\r\n
\r\n )\r\n );\r\n })}\r\n
\r\n \r\n );\r\n };\r\n\r\n const ProductVariantRow = (variantData: ProductVariants) => {\r\n return (\r\n
\r\n {variantData.VariantUrl ? (\r\n \r\n ) : (
{variantData.VariantName}
)}\r\n
\r\n
\r\n {variantData.PropertiesGroups &&\r\n variantData.PropertiesGroups.map((propertiesGroup, index) => {\r\n const hideProductTableDataIsEveryValuesIsEmpty =\r\n propertiesGroup.Properties &&\r\n propertiesGroup.Properties.every(\r\n (property) => !property.Value\r\n );\r\n return (\r\n !hideProductTableDataIsEveryValuesIsEmpty && (\r\n \r\n )\r\n );\r\n })}\r\n
\r\n
\r\n
\r\n
\r\n {props.dictionary.InquiryText}\r\n {\r\n props.selectForInquiry(variantData.Id);\r\n }}\r\n >\r\n
\r\n
\r\n {props.dictionary.CompareText}\r\n {\r\n props.selectForComparison(variantData.Id);\r\n }}\r\n >\r\n
\r\n
\r\n
\r\n );\r\n };\r\n\r\n return (\r\n \r\n
\r\n
\r\n
\r\n {props.dictionary.InquiryText}\r\n
\r\n
\r\n {props.dictionary.CompareText}\r\n
\r\n
\r\n
\r\n
\r\n {props.productData.Variants &&\r\n props.productData.Variants.map((variant, index) => {\r\n return (\r\n \r\n );\r\n })}\r\n
\r\n
\r\n );\r\n};\r\n","import React from \"react\";\r\nimport { MAX_COLUMNS_OF_VARIANT } from \"../../helpers/constants\";\r\nimport { toogleCheckboxCheckClassName } from \"../../helpers/shared\";\r\nimport { ProductVariants } from \"../../models/API\";\r\nimport { ProductItemProps, VariantProductItemProps } from \"./model\";\r\n\r\nexport const VariantCoreSelection: React.FC<\r\n VariantProductItemProps & ProductItemProps\r\n> = (props) => {\r\n const ProductVariantRow = (variantData: ProductVariants) => {\r\n // variantData.PropertiesGroups[0] - always first, because data for all items in this array are always the same for all items\r\n return (\r\n
\r\n
\r\n \r\n {props.dictionary.FirstColumnText}\r\n {\" - \"}\r\n \r\n {variantData.VariantName}\r\n
\r\n\r\n {variantData.PropertiesGroups.length > 0 &&\r\n variantData.PropertiesGroups[0].Properties &&\r\n variantData.PropertiesGroups[0].Properties.map(\r\n (propertiesData, index) =>\r\n index < MAX_COLUMNS_OF_VARIANT && (\r\n \r\n \r\n {propertiesData.DisplayName}{\" \"}\r\n {propertiesData.Unit && (\r\n ({propertiesData.Unit})\r\n )}\r\n {\" - \"}\r\n \r\n {propertiesData.Value}\r\n
\r\n )\r\n )}\r\n\r\n
\r\n
\r\n {props.dictionary.InquiryText}\r\n {\r\n props.selectForInquiry(variantData.Id);\r\n }}\r\n >\r\n
\r\n
\r\n {props.dictionary.CompareText}\r\n {\r\n props.selectForComparison(variantData.Id);\r\n }}\r\n >\r\n
\r\n
\r\n );\r\n };\r\n\r\n const ProductVariantColumnsHeader = () => {\r\n const firstItem = props.productData.Variants[0]; // always first, becasue in variant \"core-selection\" array has only one item\r\n // firstItem.PropertiesGroups[0] - always first, because data for all items in this array are always the same for all items\r\n return (\r\n \r\n {firstItem.PropertiesGroups.length > 0 &&\r\n firstItem.PropertiesGroups[0].Properties.length > 0 &&\r\n firstItem.PropertiesGroups[0].Properties.map(\r\n (propertiesData, index) => {\r\n if (index < MAX_COLUMNS_OF_VARIANT) {\r\n return (\r\n \r\n {propertiesData.DisplayName}{\" \"}\r\n {propertiesData.Unit && (\r\n ({propertiesData.Unit})\r\n )}\r\n
\r\n );\r\n } else {\r\n return false;\r\n }\r\n }\r\n )}\r\n \r\n );\r\n };\r\n\r\n return (\r\n
\r\n {props.productData.Variants && (\r\n \r\n
\r\n
{props.dictionary.FirstColumnText}
\r\n \r\n
\r\n
{props.dictionary.InquiryText}
\r\n
{props.dictionary.CompareText}
\r\n
\r\n {props.productData.Variants.map((variantData) => {\r\n return (\r\n \r\n );\r\n })}\r\n
\r\n \r\n )}\r\n
\r\n );\r\n};\r\n","import React, { useContext } from \"react\";\r\nimport { StaticSettingsAppContext } from \"../../modules/App/App\";\r\nimport { AppVariantType, APP_VARIANTS_ENUM } from \"../../models/appSettings\";\r\nimport { VariantFinishingGuide } from \"./VariantFinishingGuide\";\r\nimport { VariantCoreSelection } from \"./VariantCoreSelection\";\r\nimport { ProductItemProps } from \"./model\";\r\n\r\ninterface IProductVariantsView {\r\n variant: AppVariantType;\r\n}\r\n\r\nexport const ProductItem = (props: ProductItemProps) => {\r\n const STATIC_SETTINGS_APP = useContext(StaticSettingsAppContext);\r\n\r\n const selectForInquiry = (variantId) => {\r\n if (typeof variantId === \"number\") {\r\n variantId = variantId.toString();\r\n }\r\n const indexOfSelected = props.dataForInquiry.findIndex(\r\n (val) => val === variantId\r\n );\r\n const _dataForInquiry = props.dataForInquiry.slice();\r\n\r\n if (indexOfSelected >= 0) {\r\n _dataForInquiry.splice(indexOfSelected, 1);\r\n } else {\r\n _dataForInquiry.push(variantId);\r\n }\r\n\r\n props.setDataForInquiry(_dataForInquiry);\r\n };\r\n const selectForComparison = (variantId) => {\r\n if (typeof variantId === \"number\") {\r\n variantId = variantId.toString();\r\n }\r\n const indexOfSelected = props.compareProductsSelected.findIndex(\r\n (val) => val === variantId\r\n );\r\n const _compareProductsSelected = props.compareProductsSelected.slice();\r\n if (indexOfSelected >= 0) {\r\n _compareProductsSelected.splice(indexOfSelected, 1);\r\n } else {\r\n _compareProductsSelected.push(variantId);\r\n }\r\n\r\n props.setCompareProductsSelected(_compareProductsSelected);\r\n };\r\n\r\n // Partials components of ProductItem\r\n const PropertiesIcons = () => {\r\n const icons = props.productData.TaxonomyIcons.map(\r\n (iconClass: string, index: number) => (\r\n \r\n )\r\n );\r\n\r\n return (\r\n
\r\n {props.productData.TaxonomyIcons.length > 0 && (\r\n \r\n Properties\r\n {icons}\r\n \r\n )}\r\n
\r\n );\r\n };\r\n\r\n const ImageBox = () => (\r\n
\r\n \r\n {props.productData.ImageText && (\r\n {props.productData.ImageText}\r\n )}\r\n {props.productData.ImageSrc && (\r\n \r\n )}\r\n \r\n
\r\n );\r\n\r\n const TextBox = () => (\r\n
\r\n {props.productData.ProductUrl && props.productData.GroupName && (\r\n STATIC_SETTINGS_APP.APP_VARIANT == APP_VARIANTS_ENUM.FINISHING_GUIDE ?\r\n

{props.productData.GroupName}

\r\n :\r\n \r\n

{props.productData.GroupName}

\r\n \r\n )}\r\n {props.productData.Description &&

{props.productData.Description}

}\r\n\r\n \r\n
\r\n );\r\n\r\n const ExtraInfoBox = () => (\r\n
\r\n {props.dictionary.ContactUsText && (\r\n \r\n {props.dictionary.ContactUsText}\r\n \r\n )}\r\n\r\n {props.productData.ApplicationAreasUrl &&\r\n props.productData.ApplicationAreasText && (\r\n \r\n {props.productData.ApplicationAreasText}\r\n \r\n )}\r\n\r\n {props.productData.KnowHowUrl && props.productData.KnowHowText && (\r\n \r\n {props.productData.KnowHowText}\r\n \r\n )}\r\n\r\n {props.productData.CasesUrl && props.productData.CasesText && (\r\n \r\n {props.productData.CasesText}\r\n \r\n )}\r\n
\r\n );\r\n\r\n const ProductVariantsView = ({ variant }: IProductVariantsView) => {\r\n switch (variant) {\r\n case APP_VARIANTS_ENUM.FINISHING_GUIDE:\r\n return (\r\n \r\n );\r\n case APP_VARIANTS_ENUM.CORE_SELECTION:\r\n return (\r\n \r\n );\r\n default:\r\n return null;\r\n }\r\n };\r\n\r\n return (\r\n \r\n
\r\n \r\n \r\n \r\n
\r\n \r\n
\r\n );\r\n};\r\n","import React, { useContext, useState } from \"react\";\r\nimport { CTAButtons } from \"../components/ctaButtons\";\r\nimport { ProductItem } from \"../components/ProductItem\";\r\nimport { ProductsList, Translations } from \"../models/API\";\r\nimport { CompareProductProps } from \"../models/comapreResults\";\r\nimport { StaticSettingsAppContext } from \"./App/App\";\r\n\r\ninterface ProductResultsProps extends CompareProductProps {\r\n productResults: ProductsList[];\r\n dictionaryElements: Translations;\r\n compareUrl: string;\r\n inquiryUrl: string;\r\n toggleMobileFilters: (ev: React.PointerEvent) => void;\r\n}\r\n\r\nexport const ResultProducts = (props: ProductResultsProps) => {\r\n const resultsLength = props.productResults.length;\r\n const STATIC_SETTINGS_APP = useContext(StaticSettingsAppContext);\r\n const [compareProductsSelected, setCompareProductsSelected] = useState([]);\r\n const [dataForInquiry, setDataForInquiry] = useState([]);\r\n\r\n const ProductItems = props.productResults.map((singleProduct) => (\r\n \r\n ));\r\n return (\r\n
\r\n
\r\n \r\n {props.dictionaryElements.ShowFiltersText}\r\n \r\n
\r\n
\r\n
{props.dictionaryElements.ResultsText}
\r\n
\r\n {`${resultsLength} ${props.dictionaryElements.ResultsQuantityText}`}\r\n
\r\n
\r\n
{ProductItems}
\r\n {resultsLength > 0 && (\r\n \r\n )}\r\n
\r\n );\r\n};\r\n","import \"./index.css\";\r\n\r\nexport const Loading = () => {\r\n return (\r\n
\r\n
\r\n
\r\n
\r\n
\r\n );\r\n};\r\n","interface CheckboxProps {\r\n active: boolean;\r\n id: string;\r\n label: string;\r\n groupId: string;\r\n toggle: (groupId: string, id: string, activate: boolean) => void;\r\n}\r\n\r\nexport const Checkbox: React.FC = (props) => {\r\n const className = `item${props.active ? \" active\" : \"\"}`;\r\n\r\n const toggle = () => {\r\n // If its active we want deactivate\r\n props.toggle(props.groupId, props.id, !props.active);\r\n };\r\n\r\n return (\r\n
  • \r\n {props.label}\r\n
  • \r\n );\r\n};\r\n","import { MainFiltersValues } from \"../../models/API\";\r\n\r\ninterface ItemProps extends MainFiltersValues {\r\n active: boolean;\r\n groupId: string;\r\n toggle: (groupId: string, id: string, activate: boolean) => void;\r\n}\r\n\r\nexport const Item: React.FC = (props) => {\r\n const className = `item${props.active ? \" active\" : \"\"}`;\r\n\r\n const toggle = () => {\r\n // If its active we want deactivate\r\n props.toggle(props.groupId, props.Id, !props.active);\r\n };\r\n\r\n return (\r\n
    \r\n {props.ImageUrl && (\r\n \r\n )}\r\n {props.IconUrl && (\r\n \r\n )}\r\n {props.Text}\r\n
    \r\n );\r\n};\r\n","import { Checkbox } from \"../../components/Checkbox\";\r\nimport { Tooltip } from \"../../components/Tooltip\";\r\nimport { exportFilterStateToSQ } from \"../../helpers/dynamicFilterSQ\";\r\nimport { MainFiltersItem } from \"../../models/API\";\r\nimport { FiltersStateType } from \"../../models/filters\";\r\nimport { Item } from \"./Item\";\r\n\r\ninterface MainFiltersProps {\r\n type: \"mobile\" | \"desktop\";\r\n filters: MainFiltersItem[];\r\n filtersState: FiltersStateType;\r\n updateFilters: React.Dispatch>;\r\n}\r\n\r\nexport const MainFilters: React.FC = (props) => {\r\n //\r\n const toggleFilter = (\r\n groupId: string,\r\n id: string,\r\n activate: boolean,\r\n radio: boolean = false\r\n ) => {\r\n // Prepare new state\r\n const filterStateAfterChanges = { ...props.filtersState };\r\n // Check if group is there\r\n const groupIndex = filterStateAfterChanges.TopSelected.findIndex(\r\n (x) => x.Key === groupId\r\n );\r\n // Check if filter is in group (if group was found)\r\n const filterIndex =\r\n groupIndex > -1\r\n ? filterStateAfterChanges.TopSelected[groupIndex].Checked.findIndex(\r\n (value) => value === id\r\n )\r\n : -1;\r\n\r\n // Manage filter state\r\n if (groupIndex > -1) {\r\n // Group is there so take action according to activate\r\n if (activate) {\r\n // Add only if its not there\r\n if (filterIndex < 0) {\r\n if (radio) {\r\n filterStateAfterChanges.TopSelected[groupIndex].Checked = [];\r\n }\r\n filterStateAfterChanges.TopSelected[groupIndex].Checked.push(id);\r\n }\r\n } else {\r\n if (filterIndex > -1) {\r\n // Remove filter\r\n filterStateAfterChanges.TopSelected[groupIndex].Checked.splice(\r\n filterIndex,\r\n 1\r\n );\r\n // Remove group if it's empty\r\n if (!filterStateAfterChanges.TopSelected[groupIndex].Checked.length) {\r\n filterStateAfterChanges.TopSelected.splice(groupIndex, 1);\r\n }\r\n }\r\n }\r\n } else {\r\n // If group wasn't there we only need add it in case activating filter\r\n if (activate) {\r\n filterStateAfterChanges.TopSelected.push({\r\n Key: groupId,\r\n Checked: [id],\r\n });\r\n }\r\n }\r\n\r\n exportFilterStateToSQ(filterStateAfterChanges);\r\n props.updateFilters(filterStateAfterChanges);\r\n };\r\n\r\n // Just wrapper for radio type filters\r\n const toggleSingleChoiceFilter = (\r\n groupId: string,\r\n id: string,\r\n activate: boolean\r\n ) => {\r\n toggleFilter(groupId, id, activate, true);\r\n };\r\n\r\n // Returns boolean if element is found in TopSelected filters state\r\n const checkActive = (groupId: string, id: string) => {\r\n // Find group in current state\r\n const currentElementIndex = props.filtersState.TopSelected.findIndex(\r\n (x) => x.Key === groupId\r\n );\r\n if (currentElementIndex >= 0) {\r\n // Group found so return if value exists in that group\r\n const currVisibleValues =\r\n props.filtersState.TopSelected[currentElementIndex].Checked;\r\n\r\n return currVisibleValues.includes(id);\r\n }\r\n\r\n return false;\r\n };\r\n\r\n // Desktop filters view\r\n const renderFilterGroup = (group: MainFiltersItem, index: number) => {\r\n const isIconInside = group.Values.some((f) => f.IconUrl);\r\n\r\n let className =\r\n index === 0 ? \"markets\" : index === 1 ? \"groups\" : \"extra-groups\";\r\n\r\n if (index === 0 && !isIconInside) {\r\n className += \" only-text\";\r\n }\r\n\r\n return (\r\n
    \r\n {/*
    \r\n

    {group.Name}

    \r\n {group.IsTooltipVisible && group.TooltipContent && (\r\n \r\n )}\r\n
    */}\r\n\r\n {group.Values.map((f) => (\r\n \r\n ))}\r\n
    \r\n );\r\n };\r\n\r\n // Mobile filters view\r\n const renderMobileFilterGroup = (group: MainFiltersItem, index: number) => {\r\n return (\r\n
    \r\n
    \r\n

    {group.Name}

    \r\n {group.IsTooltipVisible && group.TooltipContent && (\r\n \r\n )}\r\n
    \r\n
      \r\n {group.Values.map((f) => (\r\n \r\n ))}\r\n
    \r\n
    \r\n );\r\n };\r\n\r\n return props.type === \"desktop\" ? (\r\n
    \r\n
    {props.filters.map(renderFilterGroup)}
    \r\n
    \r\n ) : (\r\n
    \r\n {props.filters.map(renderMobileFilterGroup)}\r\n
    \r\n );\r\n};\r\n","interface ErrorProps {\r\n message: string;\r\n}\r\nexport const Error: React.FC = (props) => {\r\n return

    {props.message}

    ;\r\n};\r\n","import React, { MutableRefObject, useEffect, useRef, useState } from \"react\";\r\nimport {\r\n AppSettingsType,\r\n AppVariantType,\r\n APP_VARIANTS_ENUM,\r\n} from \"../../models/appSettings\";\r\nimport { FilterDataResponse, ProductListResponse } from \"../../models/API\";\r\nimport { postData } from \"../../helpers/dataSending\";\r\nimport { createFiltersFromSQ } from \"../../helpers/dynamicFilterSQ\";\r\nimport { CompareProducts } from \"../Compare/index\";\r\nimport { Filters } from \"../filters\";\r\nimport { ResultProducts } from \"../resultProducts\";\r\nimport { Loading } from \"../../components/Loading\";\r\nimport { MainFilters } from \"../MainFilters/index\";\r\nimport { FiltersDataType, FiltersStateType } from \"../../models/filters\";\r\nimport { Error } from \"../../components/Error\";\r\n// import { Spinner } from \"../../components/Spinner\"; //TODO: it needs styles\r\nimport { classNamesBasedOnAppVariant } from \"../../helpers/shared\";\r\nimport { CompareDataType } from \"../../models/comapreResults\";\r\n\r\nimport \"./App.css\";\r\n\r\n// Default variant of app\r\nexport const StaticSettingsAppContext = React.createContext({\r\n APP_VARIANT: APP_VARIANTS_ENUM.CORE_SELECTION as AppVariantType,\r\n CLASSES_NAMES: classNamesBasedOnAppVariant(APP_VARIANTS_ENUM.CORE_SELECTION),\r\n APP_REF: null as MutableRefObject,\r\n});\r\n\r\nexport const App: React.FC = (settings) => {\r\n const CLASSES_NAMES = classNamesBasedOnAppVariant(settings.appVariant);\r\n const STATIC_SETTINGS_APP_CONTEXT = {\r\n CLASSES_NAMES,\r\n APP_VARIANT: settings.appVariant,\r\n APP_REF: useRef(settings.applicationRoot),\r\n };\r\n\r\n // Elements used as dictionary\r\n const [dictionaryElements, setDictionaryElements] = useState(null);\r\n\r\n // State flags, loading is for startup only, working can be used as loader\r\n const [appState, setAppState] = useState({\r\n loading: true,\r\n error: false,\r\n working: false,\r\n });\r\n\r\n // Element assigned to decide what do we show - Compare or Core Selection and data for compare view\r\n const [compareResults, setCompareResults] = useState({\r\n view: false,\r\n results: [],\r\n });\r\n\r\n // Elements used for rendering filters\r\n const [filtersData, setFiltersData] = useState({\r\n main: [],\r\n dynamic: [],\r\n });\r\n\r\n // Elements used for rendering ProductResults\r\n const [productResults, setProductResults] = useState(null);\r\n\r\n // Elements used to call for results\r\n const [filtersForResults, setFiltersForResults] =\r\n useState(null);\r\n\r\n // Toggle filters visibility on mobile, null at startup is required (update useEffect in case changes)\r\n const [showFilters, setShowFilters] = useState(false);\r\n const filtersRef = useRef(null);\r\n\r\n const toggleMobileFilters = (e: React.PointerEvent) => {\r\n setShowFilters((state) => !state);\r\n };\r\n\r\n useEffect(() => {\r\n // This should fire only once at the beggining\r\n if (settings.filterDataUrl && settings.productResultsUrl) {\r\n postData(\r\n settings.filterDataUrl,\r\n null,\r\n \"GET\",\r\n \"filterData-\" + settings.appVariant\r\n )\r\n .then((response: FilterDataResponse) => {\r\n setDictionaryElements(response.Translations);\r\n\r\n const availableFilters: FiltersDataType = {\r\n dynamic: response.LeftFilters.LeftFilterItems,\r\n main: response.TopFilters.TopFilterItems,\r\n };\r\n\r\n // Create filter set from url\r\n const newFilteringObject = createFiltersFromSQ(availableFilters);\r\n\r\n // Set all filters data\r\n setFiltersData(availableFilters);\r\n\r\n // Set filters from url\r\n response.LeftFilters.LeftFilterItems.forEach((singleFilter) => {\r\n const foundIndex = newFilteringObject.Dynamic.findIndex(\r\n (el) => el.Key === singleFilter.Key\r\n );\r\n if (singleFilter.Type === \"checkboxes\") {\r\n if (foundIndex === -1) {\r\n newFilteringObject.Dynamic.push({\r\n Key: singleFilter.Key,\r\n Checked: [],\r\n });\r\n }\r\n } else {\r\n if (foundIndex === -1) {\r\n newFilteringObject.Dynamic.push({\r\n Key: singleFilter.Key,\r\n FromValue: singleFilter.Values[0].Min,\r\n ToValue: singleFilter.Values[0].Max,\r\n });\r\n } else {\r\n const itemsToMoveFromChecked =\r\n newFilteringObject.Dynamic[foundIndex].Checked;\r\n newFilteringObject.Dynamic[foundIndex] = {\r\n Key: singleFilter.Key,\r\n FromValue: parseInt(itemsToMoveFromChecked[0]),\r\n ToValue: parseInt(itemsToMoveFromChecked[1]),\r\n };\r\n }\r\n }\r\n });\r\n\r\n // Set filter state\r\n setFiltersForResults(newFilteringObject);\r\n })\r\n .catch((err) => {\r\n setAppState({ loading: false, error: true, working: false });\r\n });\r\n } else {\r\n setAppState({ loading: false, error: true, working: false });\r\n console.error(\"No API urls. Check attributes in app root element.\");\r\n }\r\n }, [settings.filterDataUrl, settings.productResultsUrl, settings.appVariant]);\r\n\r\n useEffect(() => {\r\n if (filtersForResults) {\r\n // setAppState({ loading: false, error: false, working: true });\r\n const dataToSend = Object.assign({}, filtersForResults);\r\n postData(\r\n settings.productResultsUrl,\r\n dataToSend,\r\n \"POST\",\r\n \"productListData-\" + settings.appVariant\r\n )\r\n .then((response: ProductListResponse) => {\r\n setProductResults(response);\r\n setAppState({ loading: false, error: false, working: false });\r\n })\r\n .catch((err) => {\r\n setAppState({ loading: false, error: true, working: false });\r\n });\r\n }\r\n }, [filtersForResults, settings.productResultsUrl, settings.appVariant]);\r\n\r\n if (appState.loading) {\r\n return ;\r\n }\r\n\r\n // Error message\r\n if (appState.error && settings.errMessage) {\r\n return ;\r\n }\r\n\r\n return compareResults.view && compareResults.results.length > 1 ? (\r\n \r\n \r\n \r\n ) : (\r\n \r\n {/*appState.working && */}\r\n {filtersData.main.length > 0 && (\r\n \r\n )}\r\n
    \r\n \r\n {showFilters && (\r\n \r\n )}\r\n {filtersData.main.length > 0 && (\r\n \r\n )}\r\n {filtersData.dynamic.length > 0 && (\r\n \r\n )}\r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n {productResults && dictionaryElements && (\r\n \r\n )}\r\n
    \r\n
    \r\n \r\n );\r\n};\r\n","import React from \"react\";\r\nimport ReactDOM from \"react-dom\";\r\nimport \"./index.css\";\r\nimport { App } from \"./modules/App/App\";\r\nimport { AppSettingsType, AppVariantType } from \"./models/appSettings\";\r\n\r\nconst applicationsRoot = document.querySelectorAll(\"[data-app-variant]\");\r\n\r\napplicationsRoot.length > 0 &&\r\n applicationsRoot.forEach((applicationRoot) => {\r\n if (applicationRoot) {\r\n const settings: AppSettingsType = {\r\n applicationRoot: applicationRoot,\r\n appVariant: applicationRoot.getAttribute(\r\n \"data-app-variant\"\r\n ) as AppVariantType,\r\n filterDataUrl: applicationRoot.getAttribute(\"data-filters-api\") || \"\",\r\n productResultsUrl:\r\n applicationRoot.getAttribute(\"data-products-api\") || \"\",\r\n compareApiUrl: applicationRoot.getAttribute(\"data-compare-api\") || \"\",\r\n inquiryApiUrl: applicationRoot.getAttribute(\"data-inquiry-api\") || \"\",\r\n errMessage: applicationRoot.getAttribute(\"data-error-message\") || \"\",\r\n };\r\n\r\n ReactDOM.render(\r\n \r\n \r\n ,\r\n applicationRoot\r\n );\r\n }\r\n });\r\n"],"sourceRoot":""}