{"version":3,"file":"dist/build-client/static/js/Pages-ExplodedViewsPage-ExplodedViewsPage.f957401c.chunk.js","mappings":"8HAoCA,IAAe,IAA0B,yD,yHCjCnCA,EAAiB,0BAEVC,EAAiB,CAC5BC,SAAU,CACRC,MAAO,CACLC,SAAQ,QACNC,gBAAiB,iBACjBF,MAAO,kBACNH,EAAiB,CAChBK,gBAAiB,oBAGrBC,UAAS,QACPD,gBAAiB,kBACjBF,MAAO,gBACNH,EAAiB,CAChBK,gBAAiB,oBAGrBE,WAAU,QACRF,gBAAiB,mBACjBF,MAAO,kBACNH,EAAiB,CAChBK,gBAAiB,mBAGrBG,eAAc,QACZH,gBAAiB,uBACjBF,MAAO,gBACNH,EAAiB,CAChBK,gBAAiB,cAGrBI,UAAS,QACPJ,gBAAiB,cACjBF,MAAO,eAEPO,UAAW,mCACVV,EAAiB,CAChBU,UAAW,oCAGfC,YAAW,QACTN,gBAAiB,YACjBF,MAAO,gBACNH,EAAiB,CAChBK,gBAAiB,cAGrBO,UAAS,QACPP,gBAAiB,cACjBQ,OAAQ,yBACPb,EAAiB,CAChBK,gBAAiB,eAIvBS,KAAM,CACJC,EAAG,CACDC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,EAAG,GACHC,WAAY,UAEdC,EAAG,CACDL,GAAI,IACJC,GAAI,EACJC,GAAI,EACJC,EAAG,GACHC,WAAY,WAGhBE,UAAW,CACTC,KAAM,CACJC,MAAO,SAGXC,QAAS,CACPF,KAAM,CACJG,QAAS,GACTR,GAAI,KAIVS,gBAAiB,CACfxB,MAAO,UACPW,KAAM,MAIGc,EAAa,CACxBC,YAAa,cACbC,OAAQ,UACRC,QAAS,OACTC,WAAY,SACZC,eAAgB,SAChBC,YAAa,4BACbC,WAAY,SACZC,WAAY,iBACZC,GAAI,OACJC,GAAI,IACJC,WAAW,OAAD,OAASC,EAAAA,EAAAA,SAAT,YAA6BC,EAAAA,EAAAA,UACvCC,UAAW,SACXC,cAAe,YACf,WAAY,CACVC,aAAc,GAEhB,UAAW,GACX,aAAc,CACZd,OAAQ,cACRJ,QAAS,KAIPmB,GAAmBC,EAAAA,EAAAA,IAAO,UAAD,QAAC,UAC3BlB,GACA3B,IAGL,Q,mFCxEA,IAAM8C,GAAgBD,EAAAA,EAAAA,IAAO,MAAO,CAClCE,SAAU,WACVC,KAAM,KAGFC,GAAsBJ,EAAAA,EAAAA,IAAO,MAAO,CACxCE,SAAU,aAGNG,GAAmBL,EAAAA,EAAAA,IAAO,MAAO,CACrCf,QAAS,OACTqB,cAAe,MACfpB,WAAY,SACZC,eAAgB,SAChB/B,SAAU,CACRmD,UAAW,CACT9B,KAAM,CACJG,QAAS,GAEX4B,MAAO,CACL5B,QAAS,OAMX6B,GAAeT,EAAAA,EAAAA,IAAOD,EAAAA,GAAkB,CAC5CG,SAAU,WACVQ,SAAU,WAGZ,IA5EA,YAUoB,IATlBC,EASiB,EATjBA,QACAC,EAQiB,EARjBA,SACAC,EAOiB,EAPjBA,KACAC,EAMiB,EANjBA,SACAC,EAKiB,EALjBA,KACA/C,EAIiB,EAJjBA,KACAgD,EAGiB,EAHjBA,IACAT,EAEiB,EAFjBA,UACA/B,EACiB,EADjBA,UAEMyC,EAAOJ,IAAQb,EAAAA,EAAAA,KAAOkB,EAAAA,EAAAA,GAAcL,EAAKE,OAC/C,OACE,UAACN,GAAD,gBACE,cAAoB,OAARG,QAAQ,IAARA,OAAA,EAAAA,EAAUO,aAAc,GACpCnD,KAAMA,EACNgD,IAAKA,EACL3D,MAAO0D,IACDD,GAAYH,GAAW,CAAEA,QAAAA,IALjC,IAMEG,WAAUP,GAAmBO,EAC7BtC,UAAWA,EAPb,WASE,UAAC6B,EAAD,CAAkBE,UAAWA,EAA7B,UACGU,IACC,UAAChB,EAAD,YACE,SAACgB,EAAD,CAAM5D,MAAOwD,EAAKxD,MAAOW,KAAM6C,EAAK7C,OAAS,OAGhD4C,KAGFL,IACC,SAACH,EAAD,WACE,SAAC,IAAD,CACEpC,KAAK,IACLX,MAAO,UACP+D,cAAc,EACdb,UAAWA,Y,2CCRvB,IAAMc,GAAmBrB,EAAAA,EAAAA,IAAO,MAAO,CACrCsB,OAAQ,oBACRZ,SAAU,UACVtD,SAAU,CACRmD,UAAW,CACT9B,KAAM,CACJQ,QAAS,WAEXuB,MAAO,CACLvB,QAAS,SAGbjB,KAAM,CACJC,EAAG,CACDsD,EAAG,EACHlD,EAAG,GAELE,EAAG,CACDF,EAAG,GACHkD,EAAG,IAELC,GAAI,CACFnD,EAAG,GACHkD,EAAG,MAIT1C,gBAAiB,CACfb,KAAM,OAIJyD,GAAsBzB,EAAAA,EAAAA,IAAO,SAAU,CAC3CsB,OAAQ,yBAGV,IA/DA,YAAgE,IAAvCtD,EAAsC,EAAtCA,KAAMuC,EAAgC,EAAhCA,UAC7B,OACE,SAACc,EAAD,CACErD,KAAMA,EACN0D,QAAQ,YACRC,MAAM,6BACNpB,UAAWA,EAJb,UAME,cAAGqB,KAAK,OAAOC,SAAS,UAAxB,UACE,eAAGC,UAAU,iBAAiBC,YAAY,IAA1C,WACE,SAACN,EAAD,CAAqBO,cAAc,IAAIC,GAAG,KAAKC,GAAG,KAAKC,EAAE,QACzD,iBAAMC,EAAE,8BAAR,UACE,6BACEC,cAAc,YACdtB,KAAK,SACLuB,KAAK,UACLC,GAAG,YACHC,IAAI,KACJC,YAAY,0B,yECgC1B,IAAMC,EAAoB,CACxBnF,gBAAiB,4BACjBF,MAAO,cACPiB,WAAY,SACZW,QAAS,OACTC,WAAY,SACZC,eAAgB,SAChBpB,OAAQ,wBACRX,SAAU,CACR0D,SAAU,CACRrC,KAAM,CACJkE,cAAe,SAGnB3E,KAAM,CACJ4E,GAAI,CACFC,KAAM,EACNxE,EAAG,GAELJ,EAAG,CACD4E,KAAM,EACNxE,EAAG,IAELE,EAAG,CACDsE,KAAM,GACNxE,EAAG,MAITQ,gBAAiB,CACfb,KAAM,OAIJ8E,GAAkB9C,EAAAA,EAAAA,IAAO,MAAO,CACpCf,QAAS,SAGL8D,GAAyB/C,EAAAA,EAAAA,IAAO,OAAD,QAAC,UACjC0C,GADgC,IAEnC1D,OAAQ,UACRgE,GAAI,MAGAC,GAAcjD,EAAAA,EAAAA,IAAO,UAAD,QAAC,UACtB0C,GADqB,IAExBjD,WAAW,OAAD,OAASC,EAAAA,EAAAA,SAAT,YAA6BC,EAAAA,EAAAA,UACvCX,OAAQ,UACR,UAAW,CACTzB,gBAAiB,+BAIrB,IA/FA,YAUe,IATb2F,EASY,EATZA,KACAC,EAQY,EARZA,YACAC,EAOY,EAPZA,YACAC,EAMY,EANZA,gBACArF,EAKY,EALZA,KACA8C,EAIY,EAJZA,SACAwC,EAGY,EAHZA,YACAC,EAEY,EAFZA,gBACAC,EACY,EADZA,gBAEMC,EAAwBJ,IAAoBF,EAC5CO,EAAwBL,IAAoBD,EAE5CO,GAAezC,EAAAA,EAAAA,GAAc,YAC7B0C,GAAU1C,EAAAA,EAAAA,GAAc,OAE9B,OACE,UAAC4B,EAAD,YACE,SAACG,EAAD,CACE,aAAY,kBACZtC,QAAS,kBAAM6C,EAAgBN,IAC/BpC,SAAU4C,GAAyB5C,GAAYwC,EAC/CtF,KAAMA,EAJR,UAME,SAAC2F,EAAD,CAActG,MAAO,iBAEvB,SAAC0F,EAAD,CAAwB/E,KAAMA,EAA9B,SACGqF,KAEH,SAACJ,EAAD,CACE,aAAY,mBACZtC,QAAS,kBAAM4C,EAAgBL,IAC/BpC,SAAU2C,GAAyB3C,EACnC9C,KAAMA,EAJR,UAME,SAAC4F,EAAD,CAASvG,MAAO,qB,qDCNxB,IAhCA,YAQc,IAPZwG,EAOW,EAPXA,UACAC,EAMW,EANXA,SACAC,EAKW,EALXA,MACAC,EAIW,EAJXA,KACAhD,EAGW,EAHXA,IACAiD,EAEW,EAFXA,YAEW,IADXC,qBAAAA,OACW,MADY,WACZ,EACX,OACE,SAACC,EAAD,CAAoBnD,IAAKA,EAAzB,UACE,UAACoD,EAAD,YACE,SAACC,EAAD,CACEtD,KAAK,QACLuD,GAAE,OAAEP,QAAF,IAAEA,OAAF,EAAEA,EAAO5C,WACX4C,MAAOA,EACPQ,QAASV,EACTC,SAAUA,EACVU,UAAW,KAEb,SAACC,EAAD,CACEZ,UAAWA,EACXK,qBAAsBA,IAEvBF,IACC,SAACU,EAAD,CAAiBT,YAAaA,EAA9B,SAA4CD,UAStD,IAAMG,GAAqBnE,EAAAA,EAAAA,IAAO,MAAO,IAEnCqE,GAAQrE,EAAAA,EAAAA,IAAO,QAAS,CAC5BpB,QAAS,EACT+F,GAAI,IAGAP,GAAQpE,EAAAA,EAAAA,IAAO,QAAS,CAC5Bf,QAAS,OACTD,OAAQ,UACR3B,MAAO,kBACP6B,WAAY,SACZd,GAAI,IAGAsG,GAAkB1E,EAAAA,EAAAA,IAAO,OAAQ,CACrCE,SAAU,WACV0E,GAAI,IACJxH,SAAU,CACR6G,YAAa,CACXxF,KAAM,CACJyB,SAAU,WACV0E,GAAI,OAMNH,GAAQzE,EAAAA,EAAAA,IAAO,MAAO,CAC1BhB,OAAQ,UAER6F,KAAM,EACNtH,gBAAiB,kBACjBoH,GAAI,EACJG,GAAI,GACJ5E,SAAU,WACV,WAAY,CACVA,SAAU,WACV6E,QAAS,KACTJ,GAAI,EACJpG,EAAG,GACHyG,EAAG,GACHzH,gBAAiB,mBACjBuH,GAAI,MACJrF,WAAW,oBAAD,OAAsBC,EAAAA,EAAAA,YAAtB,iBAGZtC,SAAU,CACRyG,UAAW,CACTpF,KAAM,CACJ,WAAY,CACVlB,gBAAiB,kBACjBiC,GAAI,GACJT,YAAa,mBACb4F,GAAI,EACJpG,EAAG,GACHyG,EAAG,GACHF,GAAI,SAIVZ,qBAAsB,CACpBe,SAAU,CACRpB,UAAW,CACTrD,MAAO,CACL,WAAY,CACVjD,gBAAiB,uBAKzB2H,SAAU,CACRrB,UAAW,CACTrD,MAAO,CACL,WAAY,CACVjD,gBAAiB,qB,oDC/GzB4H,GAAoBnF,EAAAA,EAAAA,IAAO,OAAQ,CACvC3C,MAAO,cACPwC,cAAe,YACfzB,GAAI,EACJE,WAAY,QACZiB,GAAI,OACJD,WAAY,kBACZF,YAAa,4BACbH,QAAS,UAGX,IAfmB,SAAC,GAAD,IAAG2B,EAAH,EAAGA,SAAH,IAAawE,aAAAA,OAAb,MAA4B,EAA5B,SACjB,SAACD,EAAD,CAAmBnE,IAAK,CAAEqE,GAAID,GAA9B,SAA+CxE,M,qBCT1C,IAAK0E,E,gCAAZ,SAAYA,GAAAA,EAAAA,YAAAA,cAAAA,EAAAA,YAAAA,cAAAA,EAAAA,SAAAA,WAAAA,EAAAA,WAAAA,aAAAA,EAAAA,iBAAAA,mBAAZ,CAAYA,IAAAA,EAAAA,M,gECsCZ,IAAMC,GAAuBvF,EAAAA,EAAAA,IAAO,KAAM,CACxCwF,UAAW,UACXnI,MAAO,eACP4B,QAAS,OACTwG,cAAe,OACfC,IAAK,QAGDC,GAAgB3F,EAAAA,EAAAA,IAAO,MAAO,CAClCf,QAAS,OACTC,WAAY,SACZwG,IAAK,QAGDE,GAAM5F,EAAAA,EAAAA,IAAO,OAAQ,CACzBE,SAAU,WACV,iBAAkB,CAChB2F,IAAK,YAIT,IA5CA,YAA0E,IAApDC,EAAmD,EAAnDA,cAAmD,IAApCV,aAAAA,OAAoC,MAArB,EAAqB,EAAlBpE,EAAkB,EAAlBA,IAC/C+E,GAAeC,EAAAA,EAAAA,UAAQ,WAC3B,OAAOF,EAAcG,QAAO,SAACC,GAAD,OAAeA,EAAUnC,WACpD,CAAC+B,IAEJ,OACE,SAACP,EAAD,CAAsBvE,IAAKA,EAA3B,SACG+E,EAAaI,KAAI,SAACD,EAAWE,GAC5B,OACE,UAACT,EAAD,YACE,SAAC,IAAD,CAAYP,aAAcA,EAA1B,SACGc,EAAUnC,QAEZgC,EAAaM,SAAWD,EAAQ,IAC/B,SAACR,EAAD,CAAK5E,IAAK,CAAEqE,GAAID,GAAhB,sBALgBgB,U,6KCrBxBE,GAAoBtG,EAAAA,EAAAA,IAAO,MAAO,CACtCuB,EAAG,cACHrB,SAAU,WACV7B,EAAG,OACHY,QAAS,QACTW,UAAW,OACXxC,SAAU,CACRoB,UAAW,CACTC,KAAM,CACJC,MAAO,YAMT6H,GAAiBvG,EAAAA,EAAAA,IAAO,SAAU,CACtCf,QAAS,OACTiB,SAAU,WACVf,eAAgB,gBAChBjB,GAAI,EACJC,GAAI,EACJe,WAAY,SACZF,OAAQ,UACRzB,gBAAiB,4BACjBkC,WAAW,oBAAD,OAAsBC,EAAAA,EAAAA,YAAtB,YAA6CC,EAAAA,EAAAA,UACvDjB,MAAO,UACPtB,SAAU,CACRoJ,OAAQ,CACN/H,KAAM,CACJlB,gBAAiB,iBAMnBkJ,GAAmBzG,EAAAA,EAAAA,IAAO,KAAM,CACpC1B,WAAY,SACZoI,EAAG,EACHrI,EAAG,OACHsI,UAAW,IACXjI,MAAO,UACPkI,SAAU,OACV3H,QAAS,OACTqB,cAAe,SACfvC,OAAQ,4BACRR,gBAAiB,8BACjBqB,QAAS,EACTa,WAAW,OAAD,OAASC,EAAAA,EAAAA,YAAT,YAAgCC,EAAAA,EAAAA,UAC1Ce,SAAU,OACVR,SAAU,WACV2F,IAAK,GACL1F,KAAM,EACN0G,OAAQ,YACRC,WAAY,SACZ1J,SAAU,CACRoJ,OAAQ,CACN/H,KAAM,CACJG,QAAS,EACTkI,WAAY,eAMdC,GAAe/G,EAAAA,EAAAA,IAAO,KAAM,CAChChB,OAAQ,UACRuC,EAAG,yBACHlD,EAAG,OACHuB,UAAW,OACXvC,MAAO,gBACPe,GAAI,EACJ,qBAAsB,CACpB4I,GAAI,GAEN/H,QAAS,OACTE,eAAgB,gBAChBD,WAAY,SACZ,gBAAiB,CACf+H,eAAgB,eAIdC,GAAelH,EAAAA,EAAAA,IAAO,OAAQ,CAClC3C,MAAO,gBACPiC,WAAY,kBACZ6H,aAAc,4BACd7I,WAAY,SACZiB,GAAI,QACJnB,GAAI,EACJ,kBAAmB,CACjBA,GAAI,GAENgJ,GAAI,EACJ/H,WAAY,SACZqB,SAAU,SACV2G,aAAc,c,uHCLhB,IA/DO,YAOQ,IAAD,EANZC,EAMY,EANZA,OACAC,EAKY,EALZA,aACAC,EAIY,EAJZA,aACAC,EAGY,EAHZA,UACAC,EAEY,EAFZA,YACAlJ,EACY,EADZA,UAEA,GAA4BmJ,EAAAA,EAAAA,WAAS,GAArC,eAAOnB,EAAP,KAAeoB,EAAf,KACMC,GAAMC,EAAAA,EAAAA,QAAuB,MAQnC,OANAC,EAAAA,EAAAA,GAAgBF,GAAK,kBAAMD,GAAU,OAOnC,UAAC,KAAD,CAAmBC,IAAKA,EAAKrJ,UAAWA,EAAxC,WACE,UAAC,KAAD,CAAgBmC,QANpB,WACEiH,GAAWpB,IAK6BA,OAAQA,EAAQxF,IAAKyG,EAA3D,WACE,SAAC,KAAD,UAAeF,KACf,SAAC,KAAD,CACEvJ,KAAK,IACLgD,IAAK,CACHgH,EAAG,EACHlG,UAAW0E,EAAS,iBAAmB,kBAEzCnJ,MAAM,kBAIV,SAAC,KAAD,CACEmJ,OAAQA,EACRxF,KAAG,kBAAO0G,GAAP,IAAoB7B,IAAG,UAAEgC,EAAII,eAAN,aAAE,EAAaC,eACzC1D,UAAW,EAHb,WAKI2D,EAAAA,EAAAA,IAAQb,KAAT,OACCA,QADD,IACCA,OADD,EACCA,EAAQnB,KAAI,SAACiC,EAAahC,GAAd,OACV,SAAC,KAAD,CAEEzF,QAAS,SAAC0H,GACRA,EAAEC,iBAEFd,EAAaY,EAAKG,IAAKH,EAAKrE,OAC5B6D,GAAU,IAEZpD,SAAU,EARZ,UAUE,SAACgE,EAAD,WACE,SAAC,IAAD,CACE3E,UAAWuE,EAAKrE,QAAUwD,EAC1BvD,KAAMoE,EAAKrE,MACXA,MAAOqE,EAAKG,IACZzE,SAAU,kBAfhB,UACUsE,EAAKG,KADf,OACqBnC,cA0BjC,IAAMoC,GAAoBxI,EAAAA,EAAAA,IAAO,MAAO,CACtCf,QAAS,U,sGC/CX,IAAMwJ,GAAiBzI,EAAAA,EAAAA,IAAO,MAAO,CACnCE,SAAU,WACVjB,QAAS,OACTyJ,iBAAkB,YAClBC,eAAgB,QAChBtL,MAAO,mBACPgB,EAAG,GACH,iBAAkB,CAChBA,EAAG,IAELjB,SAAU,CACRwL,QAAS,CACPnK,KAAM,CACJ,WAAY,CACVyB,SAAU,WACV6E,QAAS,KACTc,IAAK,EACLgD,MAAO,EACPC,OAAQ,EACR3I,KAAM,EACN5C,gBAAiB,4BACjBqB,QAAS,SAObmK,GAAc/I,EAAAA,EAAAA,IAAO,MAAO,CAChCf,QAAS,OACT+J,OAAQ,OACR9J,WAAY,aAGR+J,GAAgBjJ,EAAAA,EAAAA,IAAO,MAAO,CAClCE,SAAU,WACVjB,QAAS,OACTqB,cAAe,SACfiB,EAAG,OACHpC,eAAgB,MAChB+J,GAAI,GACJ7D,GAAI,EACJ8D,KAAM,kBACN,iBAAkB,CAChBnG,GAAI,EACJmG,KAAM,IACN9D,GAAI,MAIR,IApFA,YAKoB,IAJlB+D,EAIiB,EAJjBA,OACAC,EAGiB,EAHjBA,WACAC,EAEiB,EAFjBA,MAEiB,IADjBV,QAAAA,OACiB,SACXW,GAAWC,EAAAA,EAAAA,GAASC,EAAAA,EAAAA,gBAE1B,OACE,SAAChB,EAAD,CACEzH,IAAK,CACH0I,gBAAyB,cAARH,EACND,EAAMK,UACNL,EAAMM,IAFQ,MAI3BhB,QAASA,EANX,UAQE,SAAC,IAAD,CAAkBlK,MAAM,UAAxB,UACE,SAACqK,EAAD,WACE,SAACE,EAAD,WACE,SAAC,EAAAY,IAAD,mBACMC,EAAAA,EAAAA,IAAkBT,EAAa,aAAe,KADpD,IAEEhM,MAAO,WACP2D,IAAK,CAAEgH,EAAG,GAHZ,SAKGoB,e,wPCpBFW,EAAsBC,EAAAA,cAAoB,CACrDC,KAAM,EACNC,QAAS,SAACD,KACVE,cAAe,GACfC,cAAe,CACb9F,GAAI,EACJ+F,KAAM,IAERC,iBAAkB,SAACC,KACnBC,aAAc,CACZlG,GAAI,EACJ+F,KAAM,GACNI,aAAa,GAEfC,gBAAiB,SAACC,KAClBC,iBAAkB,CAChBC,SAAU,EACVC,WAAY,GAEdC,oBAAqB,SAACC,KACtBC,cAAe,SAACC,OAGLC,EAAsB,WACjC,OAAOnB,EAAAA,WAAiBD,IAObqB,EAAuB,SAAC,GAAyB,IAAvBxK,EAAsB,EAAtBA,SACrC,GAAwB+G,EAAAA,EAAAA,UAAiB0D,UAASC,EAAAA,EAAAA,IAAgB,UAAlE,eAAOrB,EAAP,KAAaC,EAAb,KAEA,GAAwCvC,EAAAA,EAAAA,UAAuB,CAC7DrD,GAAI+G,UAASC,EAAAA,EAAAA,IAAgB,iBAC7BjB,MAAMiB,EAAAA,EAAAA,IAAgB,oBACtBb,aAAa,IAHf,eAAOD,EAAP,KAAqBE,EAArB,KAMA,GAA0C/C,EAAAA,EAAAA,UAAwB,CAChErD,GAAI+G,UAASC,EAAAA,EAAAA,IAAgB,kBAC7BjB,MAAMiB,EAAAA,EAAAA,IAAgB,uBAFxB,eAAOlB,EAAP,KAAsBE,EAAtB,KAKA,GAAgD3C,EAAAA,EAAAA,UAA2B,CACzEkD,SAAUQ,UAASC,EAAAA,EAAAA,IAAgB,6BACnCR,WAAYO,UAASC,EAAAA,EAAAA,IAAgB,yBAFvC,eAAOV,EAAP,KAAyBG,EAAzB,KAKQZ,GAAkBoB,EAAAA,EAAAA,KAAlBpB,cAGR,GAAoCxC,EAAAA,EAAAA,UAAiB,IAArD,eAAO6D,EAAP,KAAmBP,EAAnB,KAiBA,OAfAQ,EAAAA,EAAAA,YAAU,WACR,IAAMC,EAAmB,WACvBT,EAAcU,OAAOC,SAASV,OAIhC,OADAS,OAAOE,iBAAiB,WAAYH,GAC7B,WACLC,OAAOG,oBAAoB,WAAYJ,MAExC,KAEHD,EAAAA,EAAAA,YAAU,WACRvB,EAAQmB,UAASC,EAAAA,EAAAA,IAAgB,UAAY,KAC5C,CAACE,KAGF,SAACzB,EAAoBgC,SAArB,CACEhI,MAAO,CACLkG,KAAAA,EACAC,QAAAA,EACAC,cAAAA,EACAC,cAAAA,EACAE,iBAAAA,EACAE,aAAAA,EACAE,gBAAAA,EACAE,iBAAAA,EACAG,oBAAAA,EACAE,cAAAA,GAXJ,SAcGrK,KC2CP,IAAMoL,GAAYhM,EAAAA,EAAAA,IAAO,MAAO,CAC9BiM,SAAU,IACV1O,gBAAiB,YACjB2O,OAAQ,SACRxF,EAAG,EACHyF,GAAI,KAGAC,GAAYpM,EAAAA,EAAAA,IAAO,MAAO,CAC9BzC,gBAAiB,YACjBQ,OAAQ,8BACRW,MAAO,IACPsK,OAAQ,GACR/J,QAAS,OACTE,eAAgB,SAChBD,WAAY,SACZgK,GAAI,GACJ7D,GAAI,KAGAgH,GAAarM,EAAAA,EAAAA,IAAO,MAAO,CAC/BsM,UAAW,YAGPC,GAASvM,EAAAA,EAAAA,IAAO,MAAO,CAC3Bf,QAAS,OACTqB,cAAe,SACfoF,IAAK,GACLL,GAAI,IAGN,EAjKA,WACE,OACEmH,EAAAA,EAAAA,KADMC,EAAR,EAAQA,UAAWpD,EAAnB,EAAmBA,WAAYqD,EAA/B,EAA+BA,WAG/B,GAOIC,EAAAA,EAAAA,KAPJ,IACEC,4BAA+BC,EADjC,EACiCA,KAAMC,EADvC,EACuCA,MACrBC,EAFlB,EAEEC,aAAgBD,OAFlB,IAGEE,cACEC,EAJJ,EAIIA,iCACAC,EALJ,EAKIA,+BAIJ,EAQIhC,IAPFlB,EADF,EACEA,KACAC,EAFF,EAEEA,QACAE,EAHF,EAGEA,cACAE,EAJF,EAIEA,iBACAE,EALF,EAKEA,aACAE,EANF,EAMEA,gBACAO,EAPF,EAOEA,cAGMd,GAAkBoB,EAAAA,EAAAA,KAAlBpB,cAEMiD,GAAUC,EAAAA,EAAAA,IACtB,2BACAC,GACA,CACEC,mBAAmB,IAJfC,KAQMC,GAAWJ,EAAAA,EAAAA,IACvB7C,EAAaC,YAAb,6CAC0CN,EAD1C,qBACoEK,EAAalG,IAC7E,KACJgJ,GACA,CACEC,mBAAmB,IANfC,KAUFE,GAAgB1H,EAAAA,EAAAA,UACpB,yBACEoH,QADF,IACEA,OADF,EACEA,EAAOjH,KAAI,SAAC0G,GACV,MAAO,CACLtE,IAAKsE,EAAKvI,GACVP,MAAO8I,EAAKxC,WAGlB,CAAC+C,IAGGO,GAAiB3H,EAAAA,EAAAA,UACrB,yBACEyH,QADF,IACEA,OADF,EACEA,EAAQtH,KAAI,SAAC0G,GACX,MAAO,CACLtE,IAAKsE,EAAKvI,GACVP,MAAO8I,EAAKxC,WAGlB,CAACoD,IAGH,OACE,gCACGhB,IACC,SAACmB,EAAA,EAAD,CACExE,OAAQsD,EACRrD,WAAYA,EACZC,MAAOmD,EACP7D,SAAS,KAGb,UAACoD,EAAD,YACE,SAAC,EAAA6B,GAAD,UAAKX,KACL,SAACY,EAAA,EAAD,UAAYX,KACZ,SAACf,EAAD,WACE,SAACC,EAAD,CAAYzC,IAAKmE,EAAAA,EAAKC,IAAI,QAE5B,UAACzB,EAAD,YACE,SAAC0B,EAAA,EAAD,CACEzG,aAAc,SAACe,EAAKxE,GAClB2G,EAAgB,CACdpG,GAAIiE,EACJ8B,KAAMtG,EACN0G,aAAa,KAGjBnD,OAAQoG,EACRnG,aAAciD,EAAaH,MAAQwC,EACnCrO,WAAS,KAEX,SAACyP,EAAA,EAAD,CACEzG,aAAc,SAACe,EAAKxE,GAClBuG,EAAiB,CAAEhG,GAAIiE,EAAK8B,KAAMtG,KAEpCuD,OAAQqG,EACRpG,aAAc6C,EAAcC,MAAQyC,EACpCtO,WAAS,QAGb,SAAC0P,EAAA,EAAD,CACEnN,KAAK,UACLvC,WAAS,EACTmC,QAAS,WACP,IAAIwN,EAA6B,GAEjCA,EAAOC,KAAK,CAAC,QAASnE,EAAO,GAAG9I,aAChCgN,EAAOC,KAAK,CAAC,gBAAiBhE,EAAc9F,GAAGnD,aAC/CgN,EAAOC,KAAK,CAAC,oBAAqBhE,EAAcC,OAChD8D,EAAOC,KAAK,CAAC,eAAgB5D,EAAalG,GAAGnD,aAC7CgN,EAAOC,KAAK,CAAC,mBAAoB5D,EAAaH,KAAKlJ,cAEnDkN,EAAAA,EAAAA,IAA4BF,GAE5BlD,EAAcU,OAAOC,SAASV,MAE9BhB,EAAQD,EAAO,IAEjBnJ,SAAUwN,MAAMlE,EAAc9F,IAlBhC,SAoBGyI,W,6BCvHLwB,GAAmBvO,EAAAA,EAAAA,IAAO,MAAO,CACrCzC,gBAAiB,iBACjB2C,SAAU,SACV9B,GAAI,EACJE,WAAY,SACZjB,MAAO,YACPa,GAAI,IAGAsQ,GAAiBxO,EAAAA,EAAAA,IAAO,MAAO,CACnCf,QAAS,OACTE,eAAgB,kBAGZsP,GAAczO,EAAAA,EAAAA,IAAO,OAAQ,IAEnC,EA9BsB,SAAC,GAA0C,IAAxC0O,EAAuC,EAAvCA,SAAUC,EAA6B,EAA7BA,aACjC,OACE,SAACJ,EAAD,WACE,SAACK,EAAA,EAAD,WACE,SAACJ,EAAD,WACE,2BACGG,EADH,MACkB,UAACF,EAAD,kBAAkBC,e,8BCgExCG,EAAe,SAAC,GAAsC,IAApCzG,EAAmC,EAAnCA,KAAM0G,EAA6B,EAA7BA,aACpBxK,EAAiC8D,EAAjC9D,GAAI+F,EAA6BjC,EAA7BiC,KAAM0E,EAAuB3G,EAAvB2G,SAAUlE,EAAazC,EAAbyC,SAE5B,EACEM,IADMJ,EAAR,EAAQA,oBAAqBb,EAA7B,EAA6BA,QAASD,EAAtC,EAAsCA,KAAMgB,EAA5C,EAA4CA,cAG5C,GAA0CtD,EAAAA,EAAAA,WAAkB,GAA5D,eAAOqH,EAAP,KAAsBC,EAAtB,KAEA,SAASC,IACP,IAAKC,EAAAA,EAAAA,MAAL,CAEApE,EAAoB,CAClBF,SAAUA,EACVC,WAAYxG,IAGd4F,EAAQD,EAAO,GAEf,IAAIkE,EAA6B,GAEjCA,EAAOC,KAAK,CAAC,QAASnE,EAAO,GAAG9I,aAChCgN,EAAOC,KAAK,CAAC,qBAAsB9J,EAAGnD,aACtCgN,EAAOC,KAAK,CAAC,2BAA4BvD,EAAS1J,cAElDkN,EAAAA,EAAAA,IAA4BF,GAE5BlD,EAAcU,OAAOC,SAASV,OAGhC,OACE,UAACkE,EAAD,CACEC,YAAa,kBAAMJ,GAAiB,IACpCK,WAAY,kBAAML,GAAiB,IAFrC,WAIE,SAACM,EAAD,WACE,SAACC,EAAD,CAAM7O,QAASuO,EAAf,UACE,SAACO,EAAD,CAAc7F,IAAKmF,EAAUf,IAAK3D,KADH/F,MAKnC,UAACkL,EAAD,CAAM7O,QAASuO,EAAf,WACE,SAACQ,EAAA,EAAD,CACE5J,cAAe,CACb,CAAE/B,MAAO+K,EAAaa,cACtB,CAAE5L,MAAO6L,EAAAA,KAEX5O,IAAK,CAAEkI,GAAI,GACX9D,aAAc,KAEhB,SAACyK,EAAD,CAAgBb,cAAeA,EAA/B,SACG3E,EAAKyF,kBAVuBxL,OAiBjCyL,GAAe/P,EAAAA,EAAAA,IAAO,MAAO,CACjCf,QAAS,OACT+Q,oBAAqB,UACrBtK,IAAK,OACLuG,SAAU,OACV,2BAA4B,CAC1B+D,oBAAqB,cACrBtK,IAAK,QAEP,iBAAkB,CAChBsK,oBAAqB,kBACrBtK,IAAK,QAEPyG,GAAI,KAGAqD,GAAOxP,EAAAA,EAAAA,IAAO,MAAO,CACzBf,QAAS,QACToG,GAAI,EACJ4K,SAAU,OACV3Q,WAAY,oBACZF,YAAa,EACbd,WAAY,SACZiB,GAAI,OACJ2Q,WAAY,IACZC,QAAS,IACTtJ,OAAQ,qBAGJuI,GAAOpP,EAAAA,EAAAA,IAAO,MAAO,CACzBhB,OAAQ,UACRkB,SAAU,aAGNqP,GAAsBvP,EAAAA,EAAAA,IAAO,MAAO,CACxCE,SAAU,WACVQ,SAAU,SACVzB,QAAS,OACTmR,aAAc,cAGVX,GAAezP,EAAAA,EAAAA,IAAO,MAAO,CACjCG,KAAM,EACN6I,OAAQ,OACRvJ,WAAY,sBACZf,MAAO,OACP4N,UAAW,UACX/O,gBAAiB,aACjBmJ,EAAG,EACH9H,QAAS,EACTyR,YAAa,QACb,UAAW,CACTrR,OAAQ,UACR8C,UAAW,iBAIT+N,GAAiB7P,EAAAA,EAAAA,IAAO,KAAM,CAClCV,WAAY,oBACZO,cAAe,aACfzB,GAAI,EACJkS,WAAY,IACZhS,WAAY,OACZiS,cAAe,MACfvH,OAAQ,OACRtI,SAAU,SACV2G,aAAc,WACdpI,QAAS,cACTuR,gBAAiB,EACjBC,gBAAiB,WACjBvH,GAAI,EACJ7D,GAAI,EACJ4B,eAAgB,8BAChByJ,mBAAoBhR,EAAAA,EAAAA,SACpBiR,mBAAoB,MACpBC,oBAAqB,MACrBC,yBAA0B,cAC1B,iBAAkB,CAChBZ,SAAU,OACVK,WAAY,IACZhS,WAAY,OACZ0K,OAAQ,UAEV5L,SAAU,CACR4R,cAAe,CACbvQ,KAAM,CACJwI,eAAgB,uBAMxB,EAhNgB,WACd,OACEuF,EAAAA,EAAAA,KADMC,EAAR,EAAQA,UAAWpD,EAAnB,EAAmBA,WAAYqD,EAA/B,EAA+BA,WAG/B,EAAuDvB,IAA/ChB,EAAR,EAAQA,cAAeC,EAAvB,EAAuBA,cAAeI,EAAtC,EAAsCA,aAE9ByC,GAAkBN,EAAAA,EAAAA,KAAlBM,cAER,GAAqC6D,EAAAA,EAAAA,KAA5BC,GAAT,eAEA,GAA2C1D,EAAAA,EAAAA,IAAM,iDAGLlD,EAHK,qBAGqBC,EAAc9F,IAClFgJ,GACA,CACEC,mBAAmB,IANTyD,EAAd,EAAQxD,KAAkByD,EAA1B,EAA0BA,aAiB1B,OAPAxF,EAAAA,EAAAA,YAAU,WACRsF,EAAyB,CACvBhQ,KAAMkQ,EAAe,MAAQ,SAC7B3O,KAAM,8BAEP,CAAC2O,EAAcF,KAGhB,iCACE,SAAC,EAAD,CACEpC,aAAc1B,EAAciE,wBAC5BxC,SAAQ,UAAKtE,EAAcC,KAAnB,YAA2BG,EAAaH,QAEjDoC,IACC,SAACmB,EAAA,EAAD,CACExE,OAAQsD,EACRrD,WAAYA,EACZC,MAAOmD,EACP7D,SAAS,KAGb,SAACgG,EAAA,EAAD,WACE,SAACmB,EAAD,iBACGiB,QADH,IACGA,OADH,EACGA,EAAY7K,KAAI,SAACgL,GAChB,OACE,SAACtC,EAAD,CAAczG,KAAM+I,EAAcrC,aAAc7B,GAApBkE,EAAE7M,e,0DCgGtC8M,EAAW,SAAC,GAA6D,IAA3DhJ,EAA0D,EAA1DA,KAAM+B,EAAoD,EAApDA,cAAeZ,EAAqC,EAArCA,SAAU8H,EAA2B,EAA3BA,OACzCC,EAA6ClJ,EAA7CkJ,YAAaC,EAAgCnJ,EAAhCmJ,IAAKC,EAA2BpJ,EAA3BoJ,IAAKC,EAAsBrJ,EAAtBqJ,IAAKC,EAAiBtJ,EAAjBsJ,MAAOC,EAAUvJ,EAAVuJ,MAE3C,GAAgChK,EAAAA,EAAAA,UAAiB,GAAjD,eAAOiK,EAAP,KAAiBC,EAAjB,KACA,GAAwClK,EAAAA,EAAAA,WAAkB,GAA1D,eAAOmK,EAAP,KAAsBC,EAAtB,KAEA,OACE,UAACC,GAAD,CAAMxN,SAAU,EAAGqD,IAAKwJ,EAAxB,WACE,SAACY,GAAD,CACE/G,KAAMsG,EAENxQ,IAAK,CAAEhC,OAAQwS,EAAM,UAAY,WACjCU,YAAY,EAJd,UAME,UAAC,GAAD,YACE,UAACC,GAAD,WACGZ,EADH,MACS,SAACa,GAAD,CAAMC,WAAYb,EAAlB,SAAwBF,EAAYxB,oBAG7C,UAACwC,GAAD,eAAeb,SATZA,IAYP,UAACc,GAAD,WACmB,IAAhBb,EAAMA,QACL,+BACE,UAACc,GAAD,YACE,SAACC,GAAD,CAAWC,QAASf,EAAMgB,0BAC1B,UAACC,GAAD,eAAgBlB,EAAMmB,8BAI5B,iBAAKC,MAAO,CAAE7T,QAAS,OAAQC,WAAY,UAA3C,UACG4S,IAAkBvI,GACjB,SAACzG,GAAD,WACE,SAACiQ,EAAA,EAAD,CACE/U,KAAMuL,EAAW,IAAM,IACvBpG,YAAawO,EAAMqB,cACnB5P,YAAa,EACbF,KAAMuO,EACNlO,gBAAiB,kBAAMsO,EAAYD,EAAW,IAC9CpO,gBAAiB,kBAAMqO,EAAYD,EAAW,IAC9CvO,gBAAiBuO,EACjB9Q,UAAW6Q,EAAMgB,4BAIrB,SAACM,GAAD,CACEtS,QAAS,WACFgR,EAAMgB,wBAEXZ,GAAe,IAJnB,SAOGH,KAIL,SAAC1D,EAAA,EAAD,CACEvN,QAAS,kBAAMuS,EAAAA,EAAAA,IAAYzB,EAAKG,EAAUzH,IAC1CpJ,KAAK,UACLC,IAAKmS,GACLrS,UAAW6Q,EAAMgB,uBACjB3U,KAAMuL,EAAW,IAAM,IALzB,SAOGoI,EAAMgB,wBACL,SAAC,KAAD,CAAU3U,KAAK,IAAIX,MAAM,mBAEzB,SAAC,KAAD,CACEW,KAAK,IACLX,MAAM,gBACN2D,IAAK,CAAEhC,OAAQ,cAAeJ,QAAS,kBASvD,EArNkB,WAChB,IAAM2K,GAAWC,EAAAA,EAAAA,GAASC,EAAAA,EAAAA,gBAE1B,EACE0B,IADMhB,EAAR,EAAQA,cAAeC,EAAvB,EAAuBA,cAAeQ,EAAtC,EAAsCA,iBAG9BqC,GAAkBN,EAAAA,EAAAA,KAAlBM,cAER,GAAqC6D,EAAAA,EAAAA,KAA5BC,GAAT,eAEA,GAA2C1D,EAAAA,EAAAA,IAAM,mDAGHlD,EAHG,qBAI7CS,EAAiBC,SAJ4B,uBAKhCD,EAAiBE,WALe,sBAM7CvB,EAnBoB,EACC,GAoBvB+D,GACA,CACEC,mBAAmB,IAVTyD,EAAd,EAAQxD,KAAkByD,EAA1B,EAA0BA,cAc1BxF,EAAAA,EAAAA,YAAU,WACRsF,EAAyB,CACvBhQ,KAAMkQ,EAAe,MAAQ,SAC7B3O,KAAM,gCAEP,CAAC2O,EAAcF,IAElB,IAAMqC,GAAWtL,EAAAA,EAAAA,QAAO,IAAIuL,KAWtBC,GAAkBtN,EAAAA,EAAAA,UAAQ,WAC9B,OAAIuD,EACF,OAAOyH,QAAP,IAAOA,OAAP,EAAOA,EAAYjC,SAASwE,QAArB,eA/Ca,GAiDlB,UAGF,OAAOvC,QAAP,IAAOA,OAAP,EAAOA,EAAYjC,SAASwE,QAArB,eAnDc,GAqDnB,YAGH,QAACvC,QAAD,IAACA,OAAD,EAACA,EAAYjC,SAAUxF,IAE1B,OAAKyH,GAGH,iCACE,SAAC,EAAD,CACErC,aAAc1B,EAAciE,wBAC5BxC,SAAUtE,EAAcC,OAAQiB,EAAAA,EAAAA,IAAgB,wBAElD,UAACsD,EAAA,EAAD,YACE,SAAC,EAAD,WACE,SAAC,EAAA4E,GAAD,UAAKxC,EAAW3G,UAElB,SAACoJ,GAAD,WACE,UAACC,EAAD,CAAWxI,KAAMoI,EAAiBhU,WAAW,aAA7C,WACE,0BAAO2N,EAAc0G,yBACrB,SAAC,KAAD,CACE3V,KAAM,IACNX,MAAO,UACPuW,YAAU,EACV5S,IAAK,CAAE/B,QAAS,eAAgB4U,cAAe,MAAOjP,GAAI,WAKhE,SAACkP,GAAD,WACE,UAACC,GAAD,WACG/C,EAAWgD,SAAS7N,KAAI,SAAC8N,EAAKC,GAC7B,OACE,SAACC,GAAD,CAEExT,QAAS,WACP,IAAMyT,EAAWhB,EAASnL,QAAQoM,IAAIJ,EAAI1C,KAElC,OAAR6C,QAAQ,IAARA,GAAAA,EAAUE,MAAM,CAAEC,eAAe,IAEzB,OAARH,QAAQ,IAARA,GAAAA,EAAUI,eAAe,CACvBC,SAAU,SACVC,MAAO,YAGX1T,IAAK,CACHb,KAAM8T,EAAIU,QAAQC,EAAI,EACtB/O,IAAKoO,EAAIU,QAAQE,EAAI,GAdzB,SAiBGZ,EAAI1C,KAjBP,UACU0C,EAAI1C,KADd,OACoB2C,QAoBxB,SAACY,GAAD,CAAclL,IAAKoH,EAAWjC,iBAIlC,SAACgG,GAAD,UACG/D,EAAWgE,MAAM7O,KAAI,SAACO,EAAGwN,GACxB,OACE,SAAC9C,EAAD,CACEC,OAAQ,SAAC4D,GAAD,OA7EV,SAACA,EAAIvO,EAAGwN,GAAO,IAAD,EACpBe,IAAgB,OAAVjE,QAAU,IAAVA,GAAA,UAAAA,EAAYgE,MAAMd,EAAI,UAAtB,eAA0B3C,OAAQ7K,EAAE6K,KAC5C6B,EAASnL,QAAQiN,IAAIxO,EAAE6K,IAAK0D,GA2EcE,CAAUF,EAAIvO,EAAGwN,IAEjD9L,KAAM1B,EACNyD,cAAeA,EACfZ,SAAUA,GAHL7C,EAAE+K,IAAMyC,eA1DH,yBA+JpBkB,GAAUpV,EAAAA,EAAAA,IAAO,MAAO,CAC5BmM,GAAI,EACJ,iBAAkB,CAChBjD,GAAI,GACJ7D,GAAI,MAIFqO,GAAY1T,EAAAA,EAAAA,IAAOqV,EAAAA,EAAS,CAChCpW,QAAS,OACTY,cAAe,YACfnB,MAAO,OACPuN,SAAU,MAGN6H,IAAmB9T,EAAAA,EAAAA,IAAO,MAAO,CACrCtB,MAAO,OACPsK,OAAQ,OACRzL,gBAAiB,OACjB8H,GAAI,KAGA0O,IAAiB/T,EAAAA,EAAAA,IAAO,MAAO,CACnCE,SAAU,WACVxB,MAAO,cACPwN,OAAQ,WAGJ4I,IAAe9U,EAAAA,EAAAA,IAAO,MAAO,CACjCsM,UAAW,QACXL,SAAU,UAGNkI,IAAanU,EAAAA,EAAAA,IAAO,SAAU,CAClCzC,gBAAiB,YACjB+X,aAAc,MACd5W,MAAO,GACPsK,OAAQ,GACRiH,SAAU,OACV/P,SAAU,WACV,iBAAkB,CAChBxB,MAAO,GACPsK,OAAQ,MAINyK,IAAmBzT,EAAAA,EAAAA,IAAO,MAAO,CACrCqF,GAAI,IAGA0P,IAAY/U,EAAAA,EAAAA,IAAO,MAAO,CAC9BqF,GAAI,KAGA2M,IAAOhS,EAAAA,EAAAA,IAAO,MAAO,CACzBE,SAAU,WACV3C,gBAAiB,YACjBmJ,EAAG,EACHzH,QAAS,OACTsW,SAAU,OACVpW,eAAgB,gBAChBqW,OAAQ,GACR,iBAAkB,CAChBrX,GAAI,EACJD,GAAI,GAENmH,GAAI,EACJoQ,YAAa,MACbC,YAAa,QACb3W,YAAa,cACbU,WAAY,2BACZ,UAAW,CACTV,YAAa,uBAIXkT,IAAgBjS,EAAAA,EAAAA,IAAOqV,EAAAA,EAAS,CACpChQ,GAAI,EACJ4K,SAAU,OACV3Q,WAAY,oBACZF,YAAa,EACbd,WAAY,SACZiB,GAAI,OACJsH,OAAQ,qBAGJsL,IAAcnS,EAAAA,EAAAA,IAAO,IAAK,CAC9B5B,GAAI,EACJE,WAAY,QACZgB,WAAY,oBACZO,cAAe,aACf,iBAAkB,CAChBzB,GAAI,MAIFgU,IAAOpS,EAAAA,EAAAA,IAAO,OAAQ,CAC1B5C,SAAU,CACRiV,UAAW,CACT5T,KAAM,CACJwI,eAAgB,QAElBzG,MAAO,CACLyG,eAAgB,uBAMlBkM,GAAgB,CACpBlU,QAAS,eACT0W,KAAM,WACN,iBAAkB,GAClB1J,SAAU,KAGNuG,IAAsBxS,EAAAA,EAAAA,IAAO,MAAO,CACxCoH,GAAI,EACJnI,QAAS,OACTC,WAAY,SACZ,iBAAkB,CAChBkI,GAAI,MAIFwL,IAAe5S,EAAAA,EAAAA,IAAO,OAAQ,CAClC5B,GAAI,EACJE,WAAY,QACZgB,WAAY,oBACZL,QAAS,eACTI,WAAY,SACZ,iBAAkB,CAChBjB,GAAI,MAIFkU,IAActS,EAAAA,EAAAA,IAAO,OAAQ,CACjC5B,GAAI,EACJE,WAAY,QACZgB,WAAY,oBACZ,iBAAkB,CAChBlB,GAAI,KAIF6U,IAAkBjT,EAAAA,EAAAA,IAAO,SAAU,CACvCzC,gBAAiB,8BACjBY,GAAI,EACJD,GAAI,EACJb,MAAO,cACPiB,WAAY,SACZW,QAAS,OACTC,WAAY,SACZC,eAAgB,SAChBH,OAAQ,UACR6D,KAAM,KAGK4P,IAAYzS,EAAAA,EAAAA,IAAO,OAAQ,CACtCf,QAAS,eACTqW,aAAc,MACdM,WAAY,oBACZrU,EAAG,EACHlD,EAAG,EACH+I,GAAI,EACJyM,cAAe,SACfzW,SAAU,CACRsV,QAAS,CACPjU,KAAM,CACJlB,gBAAiB,qBAEnBiD,MAAO,CACLjD,gBAAiB,SAIvB,iBAAkB,CAChB6J,GAAI,KAIFyI,IAAiB7P,EAAAA,EAAAA,IAAO,MAAO,CACnC2V,KAAM,WACN,iBAAkB,CAChBA,KAAM,aAIJpD,IAAavS,EAAAA,EAAAA,IAAO,MAAO,CAC/B2V,KAAM,WACN1W,QAAS,OACTE,eAAgB,gBAChBD,WAAY,SAEZ,iBAAkB,CAAEyW,KAAM,UAAWxW,eAAgB,cAGjD2D,IAAkB9C,EAAAA,EAAAA,IAAO,MAAO,CACpCoH,GAAI,EACJ,iBAAkB,CAChBA,GAAI,EACJuO,KAAM,WAERxW,eAAgB,WAChBD,WAAY,WClbyB,IAAI2W,gBAEpC,SAASvI,GAAekE,GAE7B,IAAMsE,GADY,IAAID,iBACSC,OAE/B,OAAOC,EAAAA,EAAAA,GAAcvE,EAAKsE,GAAQ,SAACE,EAAKC,GACtCA,EAAQD,MAIZ,SAASE,KAGP,OAFiB/K,IAATlB,MAGN,KAAK,EACH,OAAO,SAAC,EAAD,IACT,KAAK,EACH,OAAO,SAAC,EAAD,IACT,KAAK,EACH,OAAO,SAAC,EAAD,IACT,QACE,OAAO,yBAoBb,OAhBA,WACE,OAAsBtC,EAAAA,EAAAA,UAAiB,GAAvC,eAAOY,EAAP,KAAY4N,EAAZ,KAEM3I,GAAOhB,EAAAA,EAAAA,KAMb,OAJAf,EAAAA,EAAAA,YAAU,WACR0K,GAAO,SAAC5N,GAAD,OAASA,EAAM,OACrB,CAACiF,KAGF,SAACpC,EAAD,WACE,SAAC8K,GAAD,KADyB3N,K,gUCtC3B6N,EAAmC,IAAIP,gBACvCQ,GAAa,EACNC,EAAU,aAoBd,SAASC,EAAQpM,GACtB,OAAoCxC,EAAAA,EAAAA,UAAyB,CAC3D6O,KAAM,KACNjW,WAAW,EACXkW,aAAa,EACbC,eAAe,EACfC,oBAAqB,eALvB,eAAOC,EAAP,KAAmBC,EAAnB,KAOQC,GAAkBvL,EAAAA,EAAAA,KAAlBuL,cACR,GAAsCzJ,EAAAA,EAAAA,IACpC,UAAGiJ,EAAH,qBAAgCnM,GAChC,SAACqH,GACC,OAuLN,SAAmBA,GACjB4E,EAAgBW,QAEhB,IAAMjB,GADNM,EAAkB,IAAIP,iBACSC,OAE/B,OAAOC,EAAAA,EAAAA,GAA2BvE,EAAKsE,GAAQ,SAACtI,EAAMyI,GACpDA,EAAQzI,EAAKgJ,SA7LJQ,CAAUxF,KAEnB,CACEyF,kBAAcC,EACd3J,kBAAmB4J,EAAAA,GACnBC,iBAAkBN,IARRO,EAAd,EAAQ7J,KAAmB8J,EAA3B,EAA2BA,OA8B3B,OAlBA7L,EAAAA,EAAAA,YAAU,WAIY,IAAD,EAHd4K,EAGCgB,GACFR,EAAc,CACZL,KAAMa,EACN9W,WAAW,EACXkW,YAA2C,IAA9BY,EAAYE,cACzBb,gBAAgB,UAACW,EAAYG,iBAAb,QAAC,EAAuBC,MACtC,SAACrP,GAAD,OAAUA,EAAKsP,cAAgBpS,EAAAA,EAAAA,gBAEjCqR,oBAAqB,kBAAMW,EAAOD,MAVtChB,GAAa,IAcd,CAACgB,EAAaC,IAEVV,EAGF,SAAee,EAAtB,iDAAO,OAAP,oBAAO,WACLC,EACAzN,GAFK,sFASC0N,EAAc,IAAIC,gBALJ,CAClBC,SAAU5N,EACVjH,KAAM0U,IAG6CzW,WAThD,SAWa6W,MAAM,GAAD,OAAI1B,EAAJ,sBAAyBuB,GAAe,CAC7DI,OAAQ,SACRC,QAAS,CAAE,eAAgB,sBAbxB,YAWClC,EAXD,QAgBGmC,GAhBH,iCAiBkCnC,EAAIoC,OAjBtC,gBAiBK5B,EAjBL,EAiBKA,KAAM6B,EAjBX,EAiBWA,aACdC,EAAAA,GAAAA,SAAyBC,EAAAA,GAAeF,IACxCf,EAAAA,EAAAA,IAAO,UAAGhB,EAAH,qBAAgCnM,EAAeqM,GAAM,GAnBzD,mEAiDA,SAAetD,EAAtB,qDAAO,OAAP,oBAAO,WACL0E,EACAhG,EACAzH,EACAqO,GAJK,wFAMDC,EAAyC,CAC3CV,SAAU5N,EACVjH,KAAM0U,EACNhG,SAAUA,EAASzQ,YAGjBqX,IACFC,GAAW,kBAAQA,GAAR,IAAqBD,UAAAA,KAG5BX,EAAc,IAAIC,gBAAgBW,GAAatX,WAhBhD,SAkBa6W,MAAM,GAAD,OAAI1B,EAAJ,uBAA0BuB,GAAe,CAC9DI,OAAQ,OACRC,QAAS,CAAE,eAAgB,sBApBxB,YAkBClC,EAlBD,QAsBGmC,GAtBH,iCAuBkCnC,EAAIoC,OAvBtC,gBAuBK5B,EAvBL,EAuBKA,KAAM6B,EAvBX,EAuBWA,aACdC,EAAAA,GAAAA,SAAyBC,EAAAA,GAAeF,IACxCf,EAAAA,EAAAA,IAAO,UAAGhB,EAAH,qBAAgCnM,EAAeqM,GAAM,GAzBzD,mEA6BA,SAAekC,EAAtB,qDAAO,OAAP,oBAAO,WACLd,EACAhG,EACAzH,EACAqO,GAJK,wFAMDC,EAAyC,CAC3CV,SAAU5N,EACVjH,KAAM0U,EACNhG,SAAUA,EAASzQ,YAGjBqX,IACFC,GAAW,kBAAQA,GAAR,IAAqBD,UAAAA,KAG5BX,EAAc,IAAIC,gBAAgBW,GAAatX,WAhBhD,SAkBa6W,MAAM,GAAD,OAAI1B,EAAJ,kBAAqBuB,GAAe,CACzDI,OAAQ,MACRC,QAAS,CAAE,eAAgB,sBApBxB,YAkBClC,EAlBD,QAsBGmC,GAtBH,iCAuBkCnC,EAAIoC,OAvBtC,gBAuBK5B,EAvBL,EAuBKA,KAAM6B,EAvBX,EAuBWA,aACdC,EAAAA,GAAAA,SAAyBC,EAAAA,GAAeF,IACxCf,EAAAA,EAAAA,IAAO,UAAGhB,EAAH,qBAAgCnM,EAAeqM,GAAM,GAzBzD,mEA6BA,SAAemC,EAAtB,+CAAO,OAAP,oBAAO,WAAyBxO,GAAzB,oFACLmN,EAAAA,EAAAA,IAAO,GAAD,OAAIhB,EAAJ,WAAsB,CAAEiB,cAAe,IAAqB,GAD7D,SAGaS,MAAM,GAAD,OAAI1B,EAAJ,kBAA6B,CAClD2B,OAAQ,WAJL,YAGCjC,EAHD,QAOGmC,GAPH,iCAQkCnC,EAAIoC,OARtC,gBAQK5B,EARL,EAQKA,KAAM6B,EARX,EAQWA,aAEdC,EAAAA,GAAAA,SAAyBC,EAAAA,GAAeF,IAExCf,EAAAA,EAAAA,IAAO,UAAGhB,EAAH,qBAAgCnM,EAAeqM,GAAM,GAZzD,mEAgBA,SAAeoC,EAAtB,+CAAO,OAAP,oBAAO,WAAqCzO,GAArC,2FACa6N,MAAM,UAAG1B,EAAH,qBAAgCnM,EAAe,CACrE8N,OAAQ,MACRC,QAAS,CAAE,eAAgB,sBAHxB,YACClC,EADD,QAMGmC,GANH,gCAOoBnC,EAAIoC,OAPxB,gBAOK5B,EAPL,EAOKA,MACRc,EAAAA,EAAAA,IAAO,UAAGhB,EAAH,qBAAgCnM,EAAeqM,GAAM,GARzD,kEAYA,SAAeqC,EAAtB,iDAAO,OAAP,oBAAO,WACL1O,EACA2O,GAFK,2FAIad,MAAM,GAAD,OAClB1B,EADkB,qDACkCwC,EADlC,qBACsD3O,GAC3E,CACE8N,OAAQ,MACRC,QAAS,CAAE,eAAgB,sBAR1B,YAIClC,EAJD,QAYGmC,GAZH,gCAaoBnC,EAAIoC,OAbxB,gBAaK5B,EAbL,EAaKA,MACRc,EAAAA,EAAAA,IAAO,UAAGhB,EAAH,qBAAgCnM,EAAeqM,GAAM,GAdzD,oE,sGChNA,IAAM5G,EAAW,MACXmJ,EAAW,MACXC,EAAe,W,mCCiB5B,IAjBwB,SAACnR,EAA2BoR,GAClD,IAAM/J,EAAc,SAAC7G,GACfR,EAAII,UAAYJ,EAAII,QAAQiR,SAAS7Q,EAAE8Q,SACzCF,MAIJxN,EAAAA,EAAAA,YAAU,WAGR,OAFA2N,SAASvN,iBAAiB,YAAaqD,GACvCkK,SAASvN,iBAAiB,aAAcqD,GACjC,WACLkK,SAAStN,oBAAoB,YAAaoD,GAC1CkK,SAAStN,oBAAoB,aAAcoD","sources":["Shared/Images/brands/KTM.svg","Atoms/Buttons/BaseButtonStyle.ts","Atoms/Buttons/Button.tsx","Atoms/Loaders/LoadingCircle.tsx","Atoms/Quantity/QuantitySelector.tsx","Atoms/RadioButton/RadioButton.tsx","Atoms/Typography/SmallLabel/SmallLabel.tsx","Enums/ProductType.enum.ts","Molecules/Attributes/Attributes.tsx","Molecules/DropDowns/BaseDropDownStyle.tsx","Molecules/DropDowns/SingleSelectDropDown.tsx","Organisms/Blocks/SmallHeroBlock.tsx","Pages/ExplodedViewsPage/ExplodedViewProvider.tsx","Pages/ExplodedViewsPage/Steps/StepOne.tsx","Pages/ExplodedViewsPage/FitmentRibbon.tsx","Pages/ExplodedViewsPage/Steps/StepTwo.tsx","Pages/ExplodedViewsPage/Steps/StepThree.tsx","Pages/ExplodedViewsPage/ExplodedViewsPage.tsx","Shared/Cart/Cart.ts","Shared/Constants/brand.ts","Shared/Hooks/useOutsideClick.ts"],"sourcesContent":["var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _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\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; }\n\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; }\n\nimport * as React from \"react\";\nimport { forwardRef } from \"react\";\n\nvar SvgKtm = function SvgKtm(_ref, ref) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 64,\n height: 20,\n viewBox: \"0 0 64 20\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: ref,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M6.90527 18H14.0576L15.8565 13.5864L19.1647 18H34.5783L39.3465 13.5421L38.5518 18H44.5865L49.5715 13.5886L48.8895 18H55.4002L58.103 5.69409H51.5589L46.2554 10.3862L47.2798 5.69409H41.0046L34.1585 12.5847L37.0202 4.14987H47.4893L47.9691 2H20.5157L19.7116 4.14987H29.8065L25.5534 14.9739L22.199 10.5494L27.9953 5.69409H23.1447L17.1974 10.4682L19.1993 5.69409H12.1106L6.90527 18Z\",\n fill: \"#F0F0F1\"\n })));\n};\n\nvar ForwardRef = /*#__PURE__*/forwardRef(SvgKtm);\nexport { ForwardRef as ReactComponent };\nexport default __webpack_public_path__ + \"dist/build-client/static/media/KTM.4a9c49ba9f8e5716085ad3ed42f52f3d.svg\";","import { styled } from 'stitches.config';\r\nimport { timings, animation } from 'Theme/Settings/animation';\r\n\r\nconst hoverCondition = '&:hover:not([disabled])';\r\n\r\nexport const ButtonVariants = {\r\n variants: {\r\n color: {\r\n primary: {\r\n backgroundColor: '$buttonPrimary',\r\n color: '$textSecondary',\r\n [hoverCondition]: {\r\n backgroundColor: '$JE68GreenHover',\r\n },\r\n },\r\n primary2: {\r\n backgroundColor: '$buttonPrimary2',\r\n color: '$textPrimary',\r\n [hoverCondition]: {\r\n backgroundColor: '$buttonPrimary2',\r\n },\r\n },\r\n secondary: {\r\n backgroundColor: '$buttonSecondary',\r\n color: '$textSecondary',\r\n [hoverCondition]: {\r\n backgroundColor: '$primaryLight1',\r\n },\r\n },\r\n secondaryDark: {\r\n backgroundColor: '$buttonSecondaryDark',\r\n color: '$textPrimary',\r\n [hoverCondition]: {\r\n backgroundColor: '$primary4',\r\n },\r\n },\r\n tertiary: {\r\n backgroundColor: 'transparent',\r\n color: '$textPrimary',\r\n // using box shadow to create a border - this way hover doesn't affect layout\r\n boxShadow: '0 0 0 1px $colors$borderPrimary',\r\n [hoverCondition]: {\r\n boxShadow: '0 0 0 2px $colors$borderPrimary',\r\n },\r\n },\r\n quaternary: {\r\n backgroundColor: '$primary2',\r\n color: '$textPrimary',\r\n [hoverCondition]: {\r\n backgroundColor: '$primary1',\r\n },\r\n },\r\n outlined: {\r\n backgroundColor: 'transparent',\r\n border: '1px solid $secondary2',\r\n [hoverCondition]: {\r\n backgroundColor: '$primary2',\r\n },\r\n },\r\n },\r\n size: {\r\n s: {\r\n py: 3,\r\n px: 6,\r\n fs: 6,\r\n h: 10,\r\n lineHeight: '$lh133',\r\n },\r\n l: {\r\n py: 3.5,\r\n px: 6,\r\n fs: 8,\r\n h: 12,\r\n lineHeight: '$lh125',\r\n },\r\n },\r\n fullWidth: {\r\n true: {\r\n width: '100%',\r\n },\r\n },\r\n loading: {\r\n true: {\r\n opacity: 0.7,\r\n fs: 7,\r\n },\r\n },\r\n },\r\n defaultVariants: {\r\n color: 'primary',\r\n size: 'l',\r\n },\r\n};\r\n\r\nexport const ButtonBase = {\r\n borderColor: 'transparent',\r\n cursor: 'pointer',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n wordSpacing: '$wordSpacings$fontPrimary',\r\n whiteSpace: 'nowrap',\r\n fontFamily: 'fontPrimary500',\r\n ls: '$ls1',\r\n bw: 0.25,\r\n transition: `all ${timings.oneFifth} ${animation.timingFn}`,\r\n textAlign: 'center',\r\n textTransform: 'uppercase',\r\n '&:active': {\r\n outlineWidth: 0,\r\n },\r\n '&:focus': {},\r\n '&:disabled': {\r\n cursor: 'not-allowed',\r\n opacity: 0.5,\r\n },\r\n};\r\n\r\nconst BaseButtonStyled = styled('button', {\r\n ...ButtonBase,\r\n ...ButtonVariants,\r\n});\r\n\r\nexport default BaseButtonStyled;\r\n","import LoadingCircle from 'Atoms/Loaders/LoadingCircle';\r\nimport KexIconLoader from 'Kex/KexIconLoader';\r\nimport { styled } from 'stitches.config';\r\nimport BaseButtonStyled from './BaseButtonStyle';\r\nimport BaseButtonType from './BaseButtonType';\r\n\r\nfunction Button({\r\n onClick,\r\n children,\r\n icon,\r\n disabled,\r\n type,\r\n size,\r\n css,\r\n isLoading,\r\n fullWidth,\r\n}: BaseButtonType) {\r\n const Icon = icon && styled(KexIconLoader(icon.type));\r\n return (\r\n \r\n \r\n {Icon && (\r\n \r\n {' '}\r\n \r\n )}\r\n {children}\r\n \r\n\r\n {isLoading && (\r\n \r\n \r\n \r\n )}\r\n \r\n );\r\n}\r\n\r\nconst IconContainer = styled('div', {\r\n position: 'absolute',\r\n left: 24,\r\n});\r\n\r\nconst StyledLoadingCircle = styled('div', {\r\n position: 'absolute',\r\n});\r\n\r\nconst StyledButtonText = styled('div', {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n variants: {\r\n isLoading: {\r\n true: {\r\n opacity: 0,\r\n },\r\n false: {\r\n opacity: 1,\r\n },\r\n },\r\n },\r\n});\r\n\r\nconst StyledButton = styled(BaseButtonStyled, {\r\n position: 'relative',\r\n overflow: 'hidden',\r\n});\r\n\r\nexport default Button;\r\n","import IconBaseType from 'Atoms/Icons/IconBaseType';\r\nimport { styled } from 'stitches.config';\r\n\r\ntype LoadingCircleType = Omit & {\r\n isLoading?: boolean;\r\n size?: 's' | 'l' | 'xl';\r\n};\r\n\r\nfunction LoadingCircle({ size, isLoading }: LoadingCircleType) {\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 );\r\n}\r\n\r\nconst LoadingSvgStyles = styled('svg', {\r\n stroke: '$JE68GreenPrimary',\r\n overflow: 'visible',\r\n variants: {\r\n isLoading: {\r\n true: {\r\n display: 'initial',\r\n },\r\n false: {\r\n display: 'none',\r\n },\r\n },\r\n size: {\r\n s: {\r\n w: 6,\r\n h: 6,\r\n },\r\n l: {\r\n h: 12,\r\n w: 12,\r\n },\r\n xl: {\r\n h: 16,\r\n w: 16,\r\n },\r\n },\r\n },\r\n defaultVariants: {\r\n size: 's',\r\n },\r\n});\r\n\r\nconst LoadingCircleStyles = styled('circle', {\r\n stroke: '$JE68GreenBackground',\r\n});\r\n\r\nexport default LoadingCircle;\r\n","import KexIconLoader from 'Kex/KexIconLoader';\r\nimport { styled } from 'stitches.config';\r\nimport { timings, animation } from 'Theme/Settings/animation';\r\n\r\ntype PropTypes = {\r\n code: string;\r\n maxQuantity: number;\r\n minQuantity: number;\r\n currentQuantity: number;\r\n handleIncrement: (code: string) => void;\r\n handleDecrement: (code: string) => void;\r\n size?: 'xs' | 's' | 'l';\r\n disabled?: boolean;\r\n disabledMin?: boolean;\r\n};\r\n\r\nfunction QuantitySelector({\r\n code,\r\n maxQuantity,\r\n minQuantity,\r\n currentQuantity,\r\n size,\r\n disabled,\r\n disabledMin,\r\n handleIncrement,\r\n handleDecrement,\r\n}: PropTypes) {\r\n const hasReachedMaxQuantity = currentQuantity === maxQuantity;\r\n const hasReachedMinQuantity = currentQuantity === minQuantity;\r\n\r\n const SubtractIcon = KexIconLoader('Subtract');\r\n const AddIcon = KexIconLoader('Add');\r\n\r\n return (\r\n \r\n handleDecrement(code)}\r\n disabled={hasReachedMinQuantity || disabled || disabledMin}\r\n size={size}\r\n >\r\n \r\n \r\n \r\n {currentQuantity}\r\n \r\n handleIncrement(code)}\r\n disabled={hasReachedMaxQuantity || disabled}\r\n size={size}\r\n >\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nconst BaseQuantityStyle = {\r\n backgroundColor: 'rgba(255,255,255, 0.0263)',\r\n color: '$secondary2',\r\n lineHeight: '$lh125',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n border: '1px solid transparent',\r\n variants: {\r\n disabled: {\r\n true: {\r\n pointerEvents: 'none',\r\n },\r\n },\r\n size: {\r\n xs: {\r\n minW: 8,\r\n h: 8,\r\n },\r\n s: {\r\n minW: 8,\r\n h: 10,\r\n },\r\n l: {\r\n minW: 12,\r\n h: 12,\r\n },\r\n },\r\n },\r\n defaultVariants: {\r\n size: 'xs',\r\n },\r\n};\r\n\r\nconst QuantityWrapper = styled('div', {\r\n display: 'flex',\r\n});\r\n\r\nconst CurrentQuantityWrapper = styled('div', {\r\n ...BaseQuantityStyle,\r\n cursor: 'default',\r\n mx: 0.5,\r\n});\r\n\r\nconst IconWrapper = styled('button', {\r\n ...BaseQuantityStyle,\r\n transition: `all ${timings.oneFifth} ${animation.timingFn}`,\r\n cursor: 'pointer',\r\n '&:hover': {\r\n backgroundColor: 'rgba(255,255,255, 0.075)',\r\n },\r\n});\r\n\r\nexport default QuantitySelector;\r\n","import { styled } from 'stitches.config';\r\nimport { timings } from 'Theme/Settings/animation';\r\nimport { CSS } from '@stitches/react';\r\n\r\ntype PropType = {\r\n isChecked: boolean;\r\n onChange?: React.ChangeEventHandler;\r\n text?: string;\r\n value?: string | number;\r\n css?: CSS;\r\n useAbsolute?: true;\r\n radioBackgroundColor?: 'primary6' | 'primary3';\r\n};\r\n\r\nfunction RadioButton({\r\n isChecked,\r\n onChange,\r\n value,\r\n text,\r\n css,\r\n useAbsolute,\r\n radioBackgroundColor = 'primary6',\r\n}: PropType) {\r\n return (\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default RadioButton;\r\n\r\nconst RadioButtonWrapper = styled('div', {});\r\n\r\nconst Input = styled('input', {\r\n opacity: 0,\r\n wh: 0,\r\n});\r\n\r\nconst Label = styled('label', {\r\n display: 'flex',\r\n cursor: 'pointer',\r\n color: '$radioTextColor',\r\n alignItems: 'center',\r\n fs: 6,\r\n});\r\n\r\nconst RadioButtonText = styled('span', {\r\n position: 'relative',\r\n ml: 2.5,\r\n variants: {\r\n useAbsolute: {\r\n true: {\r\n position: 'absolute',\r\n ml: 6,\r\n },\r\n },\r\n },\r\n});\r\n\r\nconst Radio = styled('div', {\r\n cursor: 'pointer',\r\n\r\n tblr: 0,\r\n backgroundColor: '$radioIconColor',\r\n wh: 4,\r\n br: 34,\r\n position: 'relative',\r\n '&:before': {\r\n position: 'absolute',\r\n content: '\"\"',\r\n wh: 3,\r\n l: 0.5,\r\n b: 0.5,\r\n backgroundColor: '$radioBackground',\r\n br: '50%',\r\n transition: `background-color ${timings.threeTenths} ease-in-out`,\r\n },\r\n\r\n variants: {\r\n isChecked: {\r\n true: {\r\n '&:before': {\r\n backgroundColor: '$radioIconColor',\r\n bw: 0.5,\r\n borderColor: '$radioBackground',\r\n wh: 3,\r\n l: 0.5,\r\n b: 0.5,\r\n br: '50%',\r\n },\r\n },\r\n },\r\n radioBackgroundColor: {\r\n primary6: {\r\n isChecked: {\r\n false: {\r\n '&:before': {\r\n backgroundColor: '$radioBackground',\r\n },\r\n },\r\n },\r\n },\r\n primary3: {\r\n isChecked: {\r\n false: {\r\n '&:before': {\r\n backgroundColor: '$primary3',\r\n },\r\n },\r\n },\r\n },\r\n },\r\n },\r\n});\r\n","import React from 'react';\r\nimport { styled } from 'stitches.config';\r\n\r\ntype SmallLabelProps = {\r\n children: React.ReactNode;\r\n marginBottom?: number;\r\n};\r\n\r\nconst SmallLabel = ({ children, marginBottom = 2 }: SmallLabelProps) => (\r\n {children}\r\n);\r\n\r\nconst SmallLabelWrapper = styled('span', {\r\n color: '$secondary2',\r\n textTransform: 'uppercase',\r\n fs: 6,\r\n lineHeight: 'lh133',\r\n ls: '$ls1',\r\n fontFamily: '$fontPrimary400',\r\n wordSpacing: '$wordSpacings$fontPrimary',\r\n display: 'block',\r\n});\r\n\r\nexport default SmallLabel;\r\n","export enum ProductType {\r\n MOTORCYCLES = 'motorcycles',\r\n ACCESSORIES = 'accessories',\r\n CLOTHING = 'clothing',\r\n SPAREPARTS = 'spareparts',\r\n VENDORSPAREPARTS = 'vendorspareparts',\r\n}\r\n","import { styled } from 'stitches.config';\r\nimport SmallLabel from 'Atoms/Typography/SmallLabel/SmallLabel';\r\nimport { CSS } from '@stitches/react';\r\nimport { useMemo } from 'react';\r\n\r\ntype AttributeListType = {\r\n value: string | boolean | undefined;\r\n};\r\n\r\ntype PropTypes = {\r\n attributeList: AttributeListType[];\r\n marginBottom?: number;\r\n css?: CSS;\r\n};\r\n\r\nfunction Attributes({ attributeList, marginBottom = 2, css }: PropTypes) {\r\n const filteredList = useMemo(() => {\r\n return attributeList.filter((attribute) => attribute.value);\r\n }, [attributeList]);\r\n\r\n return (\r\n \r\n {filteredList.map((attribute, index) => {\r\n return (\r\n \r\n \r\n {attribute.value}\r\n \r\n {filteredList.length !== index + 1 && (\r\n \r\n )}\r\n \r\n );\r\n })}\r\n \r\n );\r\n}\r\n\r\nconst ProductAttributeList = styled('ul', {\r\n listStyle: 'initial',\r\n color: '$textPrimary',\r\n display: 'flex',\r\n listStyleType: 'none',\r\n gap: '8px',\r\n});\r\n\r\nconst AttributeItem = styled('div', {\r\n display: 'flex',\r\n alignItems: 'center',\r\n gap: '8px',\r\n});\r\n\r\nconst Dot = styled('span', {\r\n position: 'relative',\r\n '@mediaMinLarge': {\r\n top: '-1.5px',\r\n },\r\n});\r\n\r\nexport default Attributes;\r\n","import { styled } from 'stitches.config';\r\nimport { timings, animation } from 'Theme/Settings/animation';\r\n\r\nconst DropDownContainer = styled('div', {\r\n w: 'fit-content',\r\n position: 'relative',\r\n h: 'auto',\r\n display: 'block',\r\n textAlign: 'left',\r\n variants: {\r\n fullWidth: {\r\n true: {\r\n width: '100%',\r\n },\r\n },\r\n },\r\n});\r\n\r\nconst DropDownHeader = styled('button', {\r\n display: 'flex',\r\n position: 'relative',\r\n justifyContent: 'space-between',\r\n py: 2,\r\n px: 4,\r\n alignItems: 'center',\r\n cursor: 'pointer',\r\n backgroundColor: '$dropdownHeaderBackground',\r\n transition: `background-color ${timings.threeTenths} ${animation.timingFn}`,\r\n width: 'inherit',\r\n variants: {\r\n isOpen: {\r\n true: {\r\n backgroundColor: '$primary2',\r\n },\r\n },\r\n },\r\n});\r\n\r\nconst DropDownChildren = styled('ul', {\r\n lineHeight: '$lh133',\r\n p: 4,\r\n h: 'auto',\r\n maxHeight: 500,\r\n width: 'inherit',\r\n minWidth: '100%',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n border: '1px solid $dropdownBorder',\r\n backgroundColor: '$dropdownChildrenBackground',\r\n opacity: 0,\r\n transition: `all ${timings.threeTenths} ${animation.timingFn}`,\r\n overflow: 'auto',\r\n position: 'absolute',\r\n top: 40,\r\n left: 0,\r\n zIndex: '$DropDown',\r\n visibility: 'hidden',\r\n variants: {\r\n isOpen: {\r\n true: {\r\n opacity: 1,\r\n visibility: 'visible',\r\n },\r\n },\r\n },\r\n});\r\n\r\nconst DropDownItem = styled('li', {\r\n cursor: 'pointer',\r\n w: '-webkit-fill-available',\r\n h: '100%',\r\n textAlign: 'left',\r\n color: '$dropdownText',\r\n fs: 6,\r\n '&:not(:last-child)': {\r\n pb: 4,\r\n },\r\n display: 'flex',\r\n justifyContent: 'space-between',\r\n alignItems: 'center',\r\n '&:hover label': {\r\n textDecoration: 'underline',\r\n },\r\n});\r\n\r\nconst CurrentValue = styled('span', {\r\n color: '$dropdownText',\r\n fontFamily: '$fontPrimary400',\r\n wordSpacings: '$wordSpacings$fontPrimary',\r\n lineHeight: '$lh133',\r\n ls: '$lhn1',\r\n fs: 9,\r\n '@mediaMinMedium': {\r\n fs: 8,\r\n },\r\n mr: 3,\r\n whiteSpace: 'nowrap',\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n});\r\n\r\nexport {\r\n DropDownContainer,\r\n DropDownHeader,\r\n DropDownChildren,\r\n CurrentValue,\r\n DropDownItem,\r\n};\r\n","import { ChevronIcon } from 'Atoms/Icons';\r\nimport { useRef, useState } from 'react';\r\nimport { styled } from 'stitches.config';\r\nimport {\r\n DropDownContainer,\r\n DropDownHeader,\r\n DropDownChildren,\r\n DropDownItem,\r\n CurrentValue,\r\n} from './BaseDropDownStyle';\r\nimport useOutsideClick from '../../Shared/Hooks/useOutsideClick';\r\nimport RadioButton from '../../Atoms/RadioButton/RadioButton';\r\nimport { CSS } from '@stitches/react';\r\nimport { isEmpty } from 'Shared/Common/Helpers';\r\n\r\ntype Value = {\r\n key: number;\r\n value: string;\r\n};\r\n\r\ntype PropTypes = {\r\n values: Value[] | undefined;\r\n currentValue: string;\r\n placeholderLabel?: string;\r\n handleSelect: (key: number, value: string) => void;\r\n headerCSS?: CSS;\r\n childrenCSS?: CSS;\r\n fullWidth?: boolean;\r\n};\r\n\r\nexport function SingleSelectDropDown({\r\n values,\r\n currentValue,\r\n handleSelect,\r\n headerCSS,\r\n childrenCSS,\r\n fullWidth,\r\n}: PropTypes) {\r\n const [isOpen, setIsOpen] = useState(false);\r\n const ref = useRef(null);\r\n\r\n useOutsideClick(ref, () => setIsOpen(false));\r\n\r\n function onSetIsOpen() {\r\n setIsOpen(!isOpen);\r\n }\r\n\r\n return (\r\n \r\n \r\n {currentValue}\r\n \r\n \r\n\r\n \r\n {!isEmpty(values) &&\r\n values?.map((item: Value, index: number) => (\r\n {\r\n e.preventDefault();\r\n\r\n handleSelect(item.key, item.value);\r\n setIsOpen(false);\r\n }}\r\n tabIndex={0}\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\nexport default SingleSelectDropDown;\r\n\r\nconst DropDownItemLabel = styled('div', {\r\n display: 'flex',\r\n});\r\n","import { H1 } from 'Atoms/Typography/Headings/Heading';\r\nimport ImageModel from 'Models/Assets/ImageModel.interface';\r\nimport { applyEditModeAttr } from 'Shared/Common/Helpers';\r\nimport useMedia from 'Shared/Hooks/useMedia';\r\nimport { styled } from 'stitches.config';\r\nimport { mediaQueryTypes } from 'Theme/Settings/mediaQueries';\r\nimport ContentContainer from 'Molecules/ContentContainer/ContentContainer';\r\n\r\ntype HeroModuleType = {\r\n image: ImageModel;\r\n inEditMode?: boolean;\r\n header?: string;\r\n overlay?: boolean;\r\n};\r\n\r\nfunction SmallHeroBlock({\r\n header,\r\n inEditMode,\r\n image,\r\n overlay = false,\r\n}: HeroModuleType) {\r\n const isMobile = useMedia(mediaQueryTypes.mediaMaxMedium);\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n {header}\r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nconst ImageContainer = styled('div', {\r\n position: 'relative',\r\n display: 'flex',\r\n backgroundRepeat: 'no-repeat',\r\n backgroundSize: 'cover',\r\n color: '$heroTextPrimary',\r\n h: 54,\r\n '@mediaMinLarge': {\r\n h: 75,\r\n },\r\n variants: {\r\n overlay: {\r\n true: {\r\n '&:before': {\r\n position: 'absolute',\r\n content: '\"\"',\r\n top: 0,\r\n right: 0,\r\n bottom: 0,\r\n left: 0,\r\n backgroundColor: '$colors$backgroundPrimary',\r\n opacity: 0.4,\r\n },\r\n },\r\n },\r\n },\r\n});\r\n\r\nconst HeroWrapper = styled('div', {\r\n display: 'flex',\r\n height: '100%',\r\n alignItems: 'flex-end',\r\n});\r\n\r\nconst TextContainer = styled('div', {\r\n position: 'relative',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n w: '100%',\r\n justifyContent: 'end',\r\n mt: 11,\r\n mb: 8,\r\n maxW: '$maxWidthMobile',\r\n '@mediaMinLarge': {\r\n mx: 0,\r\n maxW: 187,\r\n mb: 16,\r\n },\r\n});\r\n\r\nexport default SmallHeroBlock;\r\n","import React, { useState, ReactNode, useEffect } from 'react';\r\nimport { getUrlParameter } from 'Shared/Common/Helpers';\r\nimport { useAppSettingsData } from 'Shared/Providers/AppSettingsProvider';\r\n\r\ntype SelectedModel = {\r\n id: number;\r\n name: string;\r\n};\r\n\r\ntype SelectedYear = {\r\n id: number;\r\n name: string;\r\n shouldFetch: boolean;\r\n};\r\n\r\ntype SelectedAssembly = {\r\n parentId: number;\r\n assemblyId: number;\r\n};\r\n\r\nexport const ExplodedViewContext = React.createContext({\r\n step: 1,\r\n setStep: (step: number) => {},\r\n languageRoute: '',\r\n selectedModel: {\r\n id: 0,\r\n name: '',\r\n },\r\n setSelectedModel: (modelObj: SelectedModel) => {},\r\n selectedYear: {\r\n id: 0,\r\n name: '',\r\n shouldFetch: false,\r\n },\r\n setSelectedYear: (yearObj: SelectedYear) => {},\r\n selectedAssembly: {\r\n parentId: 0,\r\n assemblyId: 0,\r\n },\r\n setSelectedAssembly: (assembly: SelectedAssembly) => {},\r\n setWindowHref: (href: string) => {},\r\n});\r\n\r\nexport const useExplodedViewData = () => {\r\n return React.useContext(ExplodedViewContext);\r\n};\r\n\r\ntype Props = {\r\n children: ReactNode;\r\n};\r\n\r\nexport const ExplodedViewProvider = ({ children }: Props) => {\r\n const [step, setStep] = useState(parseInt(getUrlParameter('step')));\r\n\r\n const [selectedYear, setSelectedYear] = useState({\r\n id: parseInt(getUrlParameter('selectedYear')),\r\n name: getUrlParameter('selectedYearName'),\r\n shouldFetch: false,\r\n });\r\n\r\n const [selectedModel, setSelectedModel] = useState({\r\n id: parseInt(getUrlParameter('selectedModel')),\r\n name: getUrlParameter('selectedModelName'),\r\n });\r\n\r\n const [selectedAssembly, setSelectedAssembly] = useState({\r\n parentId: parseInt(getUrlParameter('selectedAssemblyParentId')),\r\n assemblyId: parseInt(getUrlParameter('selectedAssemblyId')),\r\n });\r\n\r\n const { languageRoute } = useAppSettingsData();\r\n\r\n // window href state is for browser back button to work correctly\r\n const [windowHref, setWindowHref] = useState('');\r\n\r\n useEffect(() => {\r\n const listenToPopstate = () => {\r\n setWindowHref(window.location.href);\r\n };\r\n\r\n window.addEventListener('popstate', listenToPopstate);\r\n return () => {\r\n window.removeEventListener('popstate', listenToPopstate);\r\n };\r\n }, []);\r\n\r\n useEffect(() => {\r\n setStep(parseInt(getUrlParameter('step')) || 1);\r\n }, [windowHref]);\r\n\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n};\r\n","import useCurrentPage from 'Shared/Hooks/useCurrentPage';\r\nimport ExplodedViewsPageModel from 'Models/Pages/ExplodedViews/ExplodedViewsPageModel.interface';\r\nimport SmallHeroBlock from 'Organisms/Blocks/SmallHeroBlock';\r\nimport { styled } from 'stitches.config';\r\nimport Paragraph from 'Atoms/Typography/Paragraph/Paragraph';\r\nimport { H3 } from 'Atoms/Typography/Headings/Heading';\r\nimport KTM from '../../../Shared/Images/brands/KTM.svg';\r\nimport Button from 'Atoms/Buttons/Button';\r\nimport ExplodedViewNodeChild from 'ExplodedViews/ExplodedViewNodeChild.interface';\r\nimport useSWR from 'swr';\r\nimport SingleSelectDropDown from 'Molecules/DropDowns/SingleSelectDropDown';\r\nimport { useTranslationData } from 'Shared/Providers/TranslationProvider';\r\nimport { useMemo } from 'react';\r\nimport { useAppSettingsData } from 'Shared/Providers/AppSettingsProvider';\r\nimport { ExplodedAPI } from '../ExplodedViewsPage';\r\nimport { useExplodedViewData } from '../ExplodedViewProvider';\r\nimport { setUrlParametersWithHistory } from 'Shared/Common/Helpers';\r\n\r\nfunction StepOne() {\r\n const { heroImage, inEditMode, heroHeader } =\r\n useCurrentPage();\r\n\r\n const {\r\n motorcycleModelFinderLabels: { year, model },\r\n commonLabels: { search },\r\n explodedViews: {\r\n findForExplodedViewForMotorcycle,\r\n findForExplodedViewDescription,\r\n },\r\n } = useTranslationData();\r\n\r\n const {\r\n step,\r\n setStep,\r\n selectedModel,\r\n setSelectedModel,\r\n selectedYear,\r\n setSelectedYear,\r\n setWindowHref,\r\n } = useExplodedViewData();\r\n\r\n const { languageRoute } = useAppSettingsData();\r\n\r\n const { data: years } = useSWR(\r\n '/api/ExplodedViews/Years',\r\n ExplodedAPI,\r\n {\r\n revalidateOnFocus: false,\r\n }\r\n );\r\n\r\n const { data: models } = useSWR(\r\n selectedYear.shouldFetch\r\n ? `/api/ExplodedViews/Models?language=${languageRoute}&parentid=${selectedYear.id}`\r\n : null,\r\n ExplodedAPI,\r\n {\r\n revalidateOnFocus: false,\r\n }\r\n );\r\n\r\n const memoizedYears = useMemo(\r\n () =>\r\n years?.map((year: ExplodedViewNodeChild) => {\r\n return {\r\n key: year.id,\r\n value: year.name,\r\n };\r\n }),\r\n [years]\r\n );\r\n\r\n const memoizedModels = useMemo(\r\n () =>\r\n models?.map((year: ExplodedViewNodeChild) => {\r\n return {\r\n key: year.id,\r\n value: year.name,\r\n };\r\n }),\r\n [models]\r\n );\r\n\r\n return (\r\n <>\r\n {heroImage && (\r\n \r\n )}\r\n \r\n

{findForExplodedViewForMotorcycle}

\r\n {findForExplodedViewDescription}\r\n \r\n \r\n \r\n \r\n {\r\n let params: [string, string][] = [];\r\n\r\n params.push(['step', (step + 1).toString()]);\r\n params.push(['selectedModel', selectedModel.id.toString()]);\r\n params.push(['selectedModelName', selectedModel.name]);\r\n params.push(['selectedYear', selectedYear.id.toString()]);\r\n params.push(['selectedYearName', selectedYear.name.toString()]);\r\n\r\n setUrlParametersWithHistory(params);\r\n\r\n setWindowHref(window.location.href);\r\n\r\n setStep(step + 1);\r\n }}\r\n disabled={isNaN(selectedModel.id)}\r\n >\r\n {search}\r\n \r\n
\r\n \r\n );\r\n}\r\n\r\nconst Container = styled('div', {\r\n maxWidth: 640,\r\n backgroundColor: '$primary4',\r\n margin: '0 auto',\r\n p: 8,\r\n my: 16,\r\n});\r\n\r\nconst BrandItem = styled('div', {\r\n backgroundColor: '$primary2',\r\n border: '1px solid $JE68GreenPrimary',\r\n width: 152,\r\n height: 48,\r\n display: 'flex',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n mt: 16,\r\n mb: 12,\r\n});\r\n\r\nconst BrandImage = styled('img', {\r\n objectFit: 'contain',\r\n});\r\n\r\nconst Select = styled('div', {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n gap: 16,\r\n mb: 8,\r\n});\r\n\r\nexport default StepOne;\r\n","import ContentContainer from 'Molecules/ContentContainer/ContentContainer';\r\nimport { styled } from 'stitches.config';\r\n\r\ntype PropType = {\r\n bikeName: string;\r\n fitmentLabel: string;\r\n};\r\n\r\nconst FitmentRibbon = ({ bikeName, fitmentLabel }: PropType) => {\r\n return (\r\n \r\n \r\n \r\n
\r\n {fitmentLabel}: KTM {bikeName}\r\n
\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nconst FitmentContainer = styled('div', {\r\n backgroundColor: '$primaryLight2',\r\n position: 'sticky',\r\n fs: 6,\r\n lineHeight: '$lh133',\r\n color: '$primary6',\r\n py: 2,\r\n});\r\n\r\nconst FitmentWrapper = styled('div', {\r\n display: 'flex',\r\n justifyContent: 'space-between',\r\n});\r\n\r\nconst FitmentBike = styled('span', {});\r\n\r\nexport default FitmentRibbon;\r\n","import useSWR from 'swr';\r\nimport { ExplodedAPI } from '../ExplodedViewsPage';\r\nimport { useExplodedViewData } from '../ExplodedViewProvider';\r\nimport useCurrentPage from 'Shared/Hooks/useCurrentPage';\r\nimport ExplodedViewsPageModel from 'Models/Pages/ExplodedViews/ExplodedViewsPageModel.interface';\r\nimport SmallHeroBlock from 'Organisms/Blocks/SmallHeroBlock';\r\nimport { styled } from 'stitches.config';\r\nimport { timings } from 'Theme/Settings/animation';\r\nimport ContentContainer from 'Molecules/ContentContainer/ContentContainer';\r\nimport FitmentRibbon from '../FitmentRibbon';\r\nimport ExplodedViewNodeChild from 'ExplodedViews/ExplodedViewNodeChild.interface';\r\nimport ExplodedViewsTranslations from 'Models/Translations/ExplodedViewsTranslations.interface';\r\nimport { useTranslationData } from 'Shared/Providers/TranslationProvider';\r\nimport { canUseDOM, setUrlParametersWithHistory } from 'Shared/Common/Helpers';\r\nimport Attributes from 'Molecules/Attributes/Attributes';\r\nimport { useEffect, useState } from 'react';\r\nimport { useKexLoadingCircle } from 'Kex/KexLoadingCircle';\r\nimport { ENUM_KTM } from 'Shared/Constants/brand';\r\n\r\nconst StepTwo = () => {\r\n const { heroImage, inEditMode, heroHeader } =\r\n useCurrentPage();\r\n\r\n const { languageRoute, selectedModel, selectedYear } = useExplodedViewData();\r\n\r\n const { explodedViews } = useTranslationData();\r\n\r\n const [, kexLoadingCircleDispatch] = useKexLoadingCircle();\r\n\r\n const { data: assemblies, isValidating } = useSWR<\r\n ExplodedViewNodeChild[] | undefined\r\n >(\r\n `/api/ExplodedViews/Assemblies?language=${languageRoute}&parentid=${selectedModel.id}`,\r\n ExplodedAPI,\r\n {\r\n revalidateOnFocus: false,\r\n }\r\n );\r\n\r\n useEffect(() => {\r\n kexLoadingCircleDispatch({\r\n type: isValidating ? 'add' : 'remove',\r\n from: 'Exploded Views Step Two',\r\n });\r\n }, [isValidating, kexLoadingCircleDispatch]);\r\n\r\n return (\r\n <>\r\n \r\n {heroImage && (\r\n \r\n )}\r\n \r\n \r\n {assemblies?.map((a) => {\r\n return (\r\n \r\n );\r\n })}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\ntype ItemType = {\r\n item: ExplodedViewNodeChild;\r\n translations: ExplodedViewsTranslations;\r\n};\r\n\r\nconst AssemblyItem = ({ item, translations }: ItemType) => {\r\n const { id, name, imageUrl, parentId } = item;\r\n\r\n const { setSelectedAssembly, setStep, step, setWindowHref } =\r\n useExplodedViewData();\r\n\r\n const [isCardHovered, setIsCardHovered] = useState(false);\r\n\r\n function handleClick() {\r\n if (!canUseDOM()) return;\r\n\r\n setSelectedAssembly({\r\n parentId: parentId,\r\n assemblyId: id,\r\n });\r\n\r\n setStep(step + 1);\r\n\r\n let params: [string, string][] = [];\r\n\r\n params.push(['step', (step + 1).toString()]);\r\n params.push(['selectedAssemblyId', id.toString()]);\r\n params.push(['selectedAssemblyParentId', parentId.toString()]);\r\n\r\n setUrlParametersWithHistory(params);\r\n\r\n setWindowHref(window.location.href);\r\n }\r\n\r\n return (\r\n setIsCardHovered(true)}\r\n onMouseOut={() => setIsCardHovered(false)}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n {name.toLowerCase()}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nconst AssemblyList = styled('div', {\r\n display: 'grid',\r\n gridTemplateColumns: '1fr 1fr',\r\n gap: '16px',\r\n maxWidth: 'auto',\r\n '@media(min-width: 768px)': {\r\n gridTemplateColumns: '1fr 1fr 1fr',\r\n gap: '32px',\r\n },\r\n '@mediaMinLarge': {\r\n gridTemplateColumns: '1fr 1fr 1fr 1fr',\r\n gap: '32px',\r\n },\r\n my: 16,\r\n});\r\n\r\nconst Link = styled('div', {\r\n display: 'block',\r\n mb: 0,\r\n fontSize: '20px',\r\n fontFamily: '$fontSecondary400',\r\n wordSpacing: 0,\r\n lineHeight: '$lh120',\r\n ls: '$ls0',\r\n gridColumn: '1',\r\n gridRow: '1',\r\n zIndex: '$ProductCardMain',\r\n});\r\n\r\nconst Card = styled('div', {\r\n cursor: 'pointer',\r\n position: 'relative',\r\n});\r\n\r\nconst ProductImageWrapper = styled('div', {\r\n position: 'relative',\r\n overflow: 'hidden',\r\n display: 'grid',\r\n gridTemplate: '1fr / 1fr',\r\n});\r\n\r\nconst ProductImage = styled('img', {\r\n left: 0,\r\n height: '100%',\r\n transition: 'transform 0.2s ease',\r\n width: '100%',\r\n objectFit: 'contain',\r\n backgroundColor: '$pureWhite',\r\n p: 2,\r\n opacity: 1,\r\n aspectRatio: '16/10',\r\n '&:hover': {\r\n cursor: 'pointer',\r\n transform: 'scale(1.05)',\r\n },\r\n});\r\n\r\nconst ProductHeading = styled('h5', {\r\n fontFamily: '$fontSecondary400',\r\n textTransform: 'capitalize',\r\n fs: 7,\r\n fontWeight: 600,\r\n lineHeight: '18px',\r\n letterSpacing: '0px',\r\n height: '38px',\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n display: '-webkit-box',\r\n WebkitLineClamp: 2,\r\n WebkitBoxOrient: 'vertical',\r\n mt: 2,\r\n mb: 4,\r\n textDecoration: 'underline solid transparent',\r\n transitionDuration: timings.oneFifth,\r\n transitionProperty: 'all',\r\n textUnderlineOffset: '2px',\r\n transitionTimingFunction: 'ease-in-out',\r\n '@mediaMinLarge': {\r\n fontSize: '20px',\r\n fontWeight: 600,\r\n lineHeight: '24px',\r\n height: '48.7px',\r\n },\r\n variants: {\r\n isCardHovered: {\r\n true: {\r\n textDecoration: 'underline solid',\r\n },\r\n },\r\n },\r\n});\r\n\r\nexport default StepTwo;\r\n","import useSWR from 'swr';\r\nimport { ExplodedAPI } from '../ExplodedViewsPage';\r\nimport { useExplodedViewData } from '../ExplodedViewProvider';\r\nimport { styled } from 'stitches.config';\r\nimport KexLink from 'Kex/KexLink';\r\nimport ExplodedViewPart from 'ExplodedViews/ExplodedViewPart.interface';\r\nimport ExplodedViewAssemblyInfo from 'ExplodedViews/ExplodedViewAssemblyInfo.interface';\r\nimport ContentContainer from 'Molecules/ContentContainer/ContentContainer';\r\nimport Button from 'Atoms/Buttons/Button';\r\nimport { useEffect, useMemo, useRef, useState } from 'react';\r\nimport { SetQuantity } from 'Shared/Cart/Cart';\r\nimport FitmentRibbon from '../FitmentRibbon';\r\nimport { H2 } from 'Atoms/Typography/Headings/Heading';\r\nimport { useTranslationData } from 'Shared/Providers/TranslationProvider';\r\nimport { getUrlParameter } from 'Shared/Common/Helpers';\r\nimport { useKexLoadingCircle } from 'Kex/KexLoadingCircle';\r\nimport { ArrowIcon, CartIcon } from 'Atoms/Icons';\r\n// PrismaZoom doesn't have typescript support\r\n// @ts-ignore\r\nimport useMedia from 'Shared/Hooks/useMedia';\r\nimport { mediaQueryTypes } from 'Theme/Settings/mediaQueries';\r\nimport QuantitySelector from 'Atoms/Quantity/QuantitySelector';\r\n\r\nconst MOBILE_IMAGE_SIZE = 1;\r\nconst DESKTOP_IMAGE_SIZE = 3;\r\n\r\nconst StepThree = () => {\r\n const isMobile = useMedia(mediaQueryTypes.mediaMaxMedium);\r\n\r\n const { languageRoute, selectedModel, selectedAssembly } =\r\n useExplodedViewData();\r\n\r\n const { explodedViews } = useTranslationData();\r\n\r\n const [, kexLoadingCircleDispatch] = useKexLoadingCircle();\r\n\r\n const { data: assemblies, isValidating } = useSWR<\r\n ExplodedViewAssemblyInfo | undefined\r\n >(\r\n `/api/ExplodedViews/AssemblyInfo?language=${languageRoute}&parentid=${\r\n selectedAssembly.parentId\r\n }&assemblyId=${selectedAssembly.assemblyId}&zoomLevel=${\r\n isMobile ? MOBILE_IMAGE_SIZE : DESKTOP_IMAGE_SIZE\r\n }`,\r\n ExplodedAPI,\r\n {\r\n revalidateOnFocus: false,\r\n }\r\n );\r\n\r\n useEffect(() => {\r\n kexLoadingCircleDispatch({\r\n type: isValidating ? 'add' : 'remove',\r\n from: 'Exploded Views Step Three',\r\n });\r\n }, [isValidating, kexLoadingCircleDispatch]);\r\n\r\n const partsRef = useRef(new Map());\r\n const addToRefs: (\r\n el: HTMLDivElement,\r\n p: ExplodedViewPart,\r\n i: number\r\n ) => void = (el, p, i) => {\r\n if (el && assemblies?.parts[i - 1]?.tag !== p.tag) {\r\n partsRef.current.set(p.tag, el);\r\n }\r\n };\r\n\r\n const fullscreenImage = useMemo(() => {\r\n if (isMobile) {\r\n return assemblies?.imageUrl.replace(\r\n `ariz=${MOBILE_IMAGE_SIZE}`,\r\n 'ariz=3'\r\n );\r\n } else {\r\n return assemblies?.imageUrl.replace(\r\n `ariz=${DESKTOP_IMAGE_SIZE}`,\r\n 'ariz=5'\r\n );\r\n }\r\n }, [assemblies?.imageUrl, isMobile]);\r\n\r\n if (!assemblies) return <>;\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n

{assemblies.name}

\r\n
\r\n \r\n \r\n {explodedViews.openImageInFullScreen}\r\n \r\n \r\n \r\n\r\n \r\n \r\n {assemblies.hotSpots.map((hsp, i) => {\r\n return (\r\n {\r\n const matchRef = partsRef.current.get(hsp.tag);\r\n\r\n matchRef?.focus({ preventScroll: true });\r\n\r\n matchRef?.scrollIntoView({\r\n behavior: 'smooth',\r\n block: 'center',\r\n });\r\n }}\r\n css={{\r\n left: hsp.topLeft.x - 8,\r\n top: hsp.topLeft.y - 8,\r\n }}\r\n >\r\n {hsp.tag}\r\n \r\n );\r\n })}\r\n \r\n \r\n \r\n\r\n \r\n {assemblies.parts.map((p, i) => {\r\n return (\r\n addToRefs(el, p, i)}\r\n key={p.sku + i}\r\n item={p}\r\n languageRoute={languageRoute}\r\n isMobile={isMobile}\r\n />\r\n );\r\n })}\r\n \r\n
\r\n \r\n );\r\n};\r\n\r\ntype PartItemType = {\r\n item: ExplodedViewPart;\r\n languageRoute: string;\r\n isMobile: boolean;\r\n tagRef: (el: HTMLDivElement) => void;\r\n};\r\n\r\nconst PartItem = ({ item, languageRoute, isMobile, tagRef }: PartItemType) => {\r\n const { description, tag, url, sku, price, stock } = item;\r\n\r\n const [quantity, setQuantity] = useState(1);\r\n const [isShowStepper, setShowStepper] = useState(false);\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n {tag}. {description.toLowerCase()}\r\n \r\n\r\n {sku}\r\n \r\n \r\n \r\n {price.price !== 0 && (\r\n <>\r\n \r\n \r\n {price.priceRoundedAsString}\r\n \r\n \r\n )}\r\n
\r\n {isShowStepper || !isMobile ? (\r\n \r\n setQuantity(quantity + 1)}\r\n handleDecrement={() => setQuantity(quantity - 1)}\r\n currentQuantity={quantity}\r\n disabled={!stock.stockAvailableAtVendor}\r\n />\r\n \r\n ) : (\r\n {\r\n if (!stock.stockAvailableAtVendor) return;\r\n\r\n setShowStepper(true);\r\n }}\r\n >\r\n {quantity}\r\n \r\n )}\r\n\r\n SetQuantity(sku, quantity, languageRoute)}\r\n type=\"primary\"\r\n css={ProductButton}\r\n disabled={!stock.stockAvailableAtVendor}\r\n size={isMobile ? 's' : 'l'}\r\n >\r\n {stock.stockAvailableAtVendor ? (\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n
\r\n
\r\n
\r\n );\r\n};\r\nexport default StepThree;\r\n\r\nconst Heading = styled('div', {\r\n my: 8,\r\n '@mediaMinLarge': {\r\n mt: 16,\r\n mb: 12,\r\n },\r\n});\r\n\r\nconst Thumbnail = styled(KexLink, {\r\n display: 'flex',\r\n textTransform: 'uppercase',\r\n width: '100%',\r\n maxWidth: 500,\r\n});\r\n\r\nconst HotspotContainer = styled('div', {\r\n width: '100%',\r\n height: '100%',\r\n backgroundColor: '#fff',\r\n mb: 16,\r\n});\r\n\r\nconst HotspotWrapper = styled('div', {\r\n position: 'relative',\r\n width: 'fit-content',\r\n margin: '0 auto',\r\n});\r\n\r\nconst HotspotImage = styled('img', {\r\n objectFit: 'cover',\r\n maxWidth: 'unset',\r\n});\r\n\r\nconst HotspotTag = styled('button', {\r\n backgroundColor: '$primary6',\r\n borderRadius: '50%',\r\n width: 24,\r\n height: 24,\r\n fontSize: '12px',\r\n position: 'absolute',\r\n '@mediaMinLarge': {\r\n width: 32,\r\n height: 32,\r\n },\r\n});\r\n\r\nconst ThumbnailWrapper = styled('div', {\r\n mb: 4,\r\n});\r\n\r\nconst PartsList = styled('div', {\r\n mb: 24,\r\n});\r\n\r\nconst Part = styled('div', {\r\n position: 'relative',\r\n backgroundColor: '$primary3',\r\n p: 4,\r\n display: 'flex',\r\n flexWrap: 'wrap',\r\n justifyContent: 'space-between',\r\n rowGap: 24,\r\n '@mediaMinLarge': {\r\n px: 8,\r\n py: 7,\r\n },\r\n mb: 2,\r\n borderWidth: '1px',\r\n borderStyle: 'solid',\r\n borderColor: 'transparent',\r\n transition: 'border 0.30s ease-in-out',\r\n '&:focus': {\r\n borderColor: '$JE68GreenPrimary',\r\n },\r\n});\r\n\r\nconst StyledKexLink = styled(KexLink, {\r\n mb: 0,\r\n fontSize: '20px',\r\n fontFamily: '$fontSecondary400',\r\n wordSpacing: 0,\r\n lineHeight: '$lh120',\r\n ls: '$ls0',\r\n zIndex: '$ProductCardMain',\r\n});\r\n\r\nconst ProductName = styled('p', {\r\n fs: 7,\r\n lineHeight: '$lh12',\r\n fontFamily: '$fontSecondary600',\r\n textTransform: 'capitalize',\r\n '@mediaMinLarge': {\r\n fs: 10,\r\n },\r\n});\r\n\r\nconst Name = styled('span', {\r\n variants: {\r\n hasNoLink: {\r\n true: {\r\n textDecoration: 'none',\r\n },\r\n false: {\r\n textDecoration: 'solid underline',\r\n },\r\n },\r\n },\r\n});\r\n\r\nconst ProductButton = {\r\n display: 'inline-block',\r\n flex: '1 1 100%',\r\n '@mediaMinLarge': {},\r\n maxWidth: 233,\r\n};\r\n\r\nconst ProductPriceWrapper = styled('div', {\r\n mr: 2,\r\n display: 'flex',\r\n alignItems: 'center',\r\n '@mediaMinLarge': {\r\n mr: 16,\r\n },\r\n});\r\n\r\nconst ProductPrice = styled('span', {\r\n fs: 7,\r\n lineHeight: '$lh12',\r\n fontFamily: '$fontSecondary600',\r\n display: 'inline-block',\r\n whiteSpace: 'nowrap',\r\n '@mediaMinLarge': {\r\n fs: 10,\r\n },\r\n});\r\n\r\nconst ProductCode = styled('span', {\r\n fs: 6,\r\n lineHeight: '$lh15',\r\n fontFamily: '$fontSecondary400',\r\n '@mediaMinLarge': {\r\n fs: 8,\r\n },\r\n});\r\n\r\nconst CurrentQuantity = styled('button', {\r\n backgroundColor: 'rgba(255, 255, 255, 0.0263)',\r\n px: 6,\r\n py: 3,\r\n color: '$secondary2',\r\n lineHeight: '$lh125',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n cursor: 'default',\r\n minW: 12,\r\n});\r\n\r\nexport const Indicator = styled('span', {\r\n display: 'inline-block',\r\n borderRadius: '50%',\r\n background: '$JE68GreenPrimary',\r\n w: 2,\r\n h: 2,\r\n mr: 2,\r\n verticalAlign: 'middle',\r\n variants: {\r\n inStock: {\r\n true: {\r\n backgroundColor: '$JE68GreenPrimary',\r\n },\r\n false: {\r\n backgroundColor: 'red',\r\n },\r\n },\r\n },\r\n '@mediaMinLarge': {\r\n mr: 4,\r\n },\r\n});\r\n\r\nconst ProductHeading = styled('div', {\r\n flex: '1 0 100%',\r\n '@mediaMinLarge': {\r\n flex: '1 0 50%',\r\n },\r\n});\r\n\r\nconst ProductCTA = styled('div', {\r\n flex: '1 0 100%',\r\n display: 'flex',\r\n justifyContent: 'space-between',\r\n alignItems: 'center',\r\n\r\n '@mediaMinLarge': { flex: '1 0 50%', justifyContent: 'flex-end' },\r\n});\r\n\r\nconst QuantityWrapper = styled('div', {\r\n mr: 2,\r\n '@mediaMinLarge': {\r\n mr: 4,\r\n flex: '1 0 50%',\r\n },\r\n justifyContent: 'flex-end',\r\n alignItems: 'center',\r\n});\r\n","import StepOne from './Steps/StepOne';\r\nimport {\r\n ExplodedViewProvider,\r\n useExplodedViewData,\r\n} from './ExplodedViewProvider';\r\nimport Fetcher from '../../Shared/Common/Fetcher';\r\nimport StepTwo from './Steps/StepTwo';\r\nimport StepThree from './Steps/StepThree';\r\nimport { useEffect, useState } from 'react';\r\nimport useCurrentPage from 'Shared/Hooks/useCurrentPage';\r\n\r\nlet abortController: AbortController = new AbortController();\r\n\r\nexport function ExplodedAPI(url: string): Promise {\r\n abortController = new AbortController();\r\n const signal = abortController.signal;\r\n\r\n return Fetcher(url, signal, (res, resolve) => {\r\n resolve(res);\r\n });\r\n}\r\n\r\nfunction Steps() {\r\n const { step } = useExplodedViewData();\r\n\r\n switch (step) {\r\n case 1:\r\n return ;\r\n case 2:\r\n return ;\r\n case 3:\r\n return ;\r\n default:\r\n return <>;\r\n }\r\n}\r\n\r\nfunction ExplodedViewsPage() {\r\n const [key, setKey] = useState(0);\r\n\r\n const data = useCurrentPage();\r\n\r\n useEffect(() => {\r\n setKey((key) => key + 1);\r\n }, [data]);\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default ExplodedViewsPage;\r\n","import KexCartModel from 'Models/Cart/KexCartModel.interface';\r\nimport { useEffect, useState } from 'react';\r\nimport { EventDispatcher, NOTIFY_ACTION } from 'Shared/Common/EventDispatcher';\r\nimport Fetcher from 'Shared/Common/Fetcher';\r\nimport { IS_PRODUCTION_ENV } from 'Shared/Configs/EnvConfig';\r\nimport { useAppSettingsData } from 'Shared/Providers/AppSettingsProvider';\r\nimport useSWR, { mutate } from 'swr';\r\nimport { ProductType } from '../../Enums/ProductType.enum';\r\n\r\nlet abortController: AbortController = new AbortController();\r\nlet hasMounted = false;\r\nexport let cartUrl = '/api/cart/';\r\n\r\ntype CartLoading = {\r\n cart: KexCartModel | null;\r\n isLoading: true;\r\n isCartEmpty: true;\r\n hasMotorCycle: false;\r\n triggerRevalidation: () => void;\r\n};\r\n\r\ntype CartNotLoading = {\r\n cart: KexCartModel;\r\n isLoading: false;\r\n isCartEmpty: boolean;\r\n hasMotorCycle: boolean;\r\n triggerRevalidation: () => void;\r\n};\r\n\r\ntype CartReturnType = CartLoading | CartNotLoading;\r\n\r\nexport function GetCart(languageRoute: string): CartReturnType {\r\n const [returnType, setReturnType] = useState({\r\n cart: null,\r\n isLoading: true,\r\n isCartEmpty: true,\r\n hasMotorCycle: false,\r\n triggerRevalidation: () => {},\r\n });\r\n const { pageCacheTime } = useAppSettingsData();\r\n const { data: fetchedCart, mutate } = useSWR(\r\n `${cartUrl}GetCart?language=` + languageRoute,\r\n (url) => {\r\n return FetchCart(url);\r\n },\r\n {\r\n fallbackData: undefined,\r\n revalidateOnFocus: IS_PRODUCTION_ENV,\r\n dedupingInterval: pageCacheTime,\r\n }\r\n );\r\n\r\n useEffect(() => {\r\n if (!hasMounted) {\r\n hasMounted = true;\r\n } else {\r\n if (fetchedCart) {\r\n setReturnType({\r\n cart: fetchedCart,\r\n isLoading: false,\r\n isCartEmpty: fetchedCart.numberOfItems === 0,\r\n hasMotorCycle: !!fetchedCart.lineItems?.some(\r\n (item) => item.productType === ProductType.MOTORCYCLES\r\n ),\r\n triggerRevalidation: () => mutate(fetchedCart),\r\n });\r\n }\r\n }\r\n }, [fetchedCart, mutate]);\r\n\r\n return returnType;\r\n}\r\n\r\nexport async function RemoveFromCart(\r\n productCode: string,\r\n languageRoute: string\r\n) {\r\n const queryParams = {\r\n language: languageRoute,\r\n code: productCode,\r\n };\r\n\r\n const queryString = new URLSearchParams(queryParams).toString();\r\n\r\n const res = await fetch(`${cartUrl}RemoveItem?${queryString}`, {\r\n method: 'DELETE',\r\n headers: { 'Content-Type': 'application/json' },\r\n });\r\n\r\n if (res.ok) {\r\n const { cart, notification } = await res.json();\r\n EventDispatcher.dispatch(NOTIFY_ACTION, notification);\r\n mutate(`${cartUrl}GetCart?language=` + languageRoute, cart, false);\r\n }\r\n}\r\n\r\nexport async function UpdateCart(\r\n productCode: string,\r\n quantity: number,\r\n languageRoute: string\r\n) {\r\n const queryParams = {\r\n language: languageRoute,\r\n code: productCode,\r\n quantity: quantity.toString(),\r\n };\r\n\r\n const queryString = new URLSearchParams(queryParams).toString();\r\n\r\n const res = await fetch(`${cartUrl}Update?${queryString}`, {\r\n method: 'PUT',\r\n headers: { 'Content-Type': 'application/json' },\r\n });\r\n if (res.ok) {\r\n const { cart, notification } = await res.json();\r\n EventDispatcher.dispatch(NOTIFY_ACTION, notification);\r\n mutate(`${cartUrl}GetCart?language=` + languageRoute, cart, false);\r\n return true;\r\n }\r\n return false;\r\n}\r\n\r\nexport async function SetQuantity(\r\n productCode: string,\r\n quantity: number,\r\n languageRoute: string,\r\n belongsTo?: string\r\n) {\r\n let queryParams: { [key: string]: string } = {\r\n language: languageRoute,\r\n code: productCode,\r\n quantity: quantity.toString(),\r\n };\r\n\r\n if (belongsTo) {\r\n queryParams = { ...queryParams, belongsTo };\r\n }\r\n\r\n const queryString = new URLSearchParams(queryParams).toString();\r\n\r\n const res = await fetch(`${cartUrl}SetQuantity?${queryString}`, {\r\n method: 'POST',\r\n headers: { 'Content-Type': 'application/json' },\r\n });\r\n if (res.ok) {\r\n const { cart, notification } = await res.json();\r\n EventDispatcher.dispatch(NOTIFY_ACTION, notification);\r\n mutate(`${cartUrl}GetCart?language=` + languageRoute, cart, false);\r\n }\r\n}\r\n\r\nexport async function UpdateQuantity(\r\n productCode: string,\r\n quantity: number,\r\n languageRoute: string,\r\n belongsTo?: string\r\n) {\r\n let queryParams: { [key: string]: string } = {\r\n language: languageRoute,\r\n code: productCode,\r\n quantity: quantity.toString(),\r\n };\r\n\r\n if (belongsTo) {\r\n queryParams = { ...queryParams, belongsTo };\r\n }\r\n\r\n const queryString = new URLSearchParams(queryParams).toString();\r\n\r\n const res = await fetch(`${cartUrl}Update?${queryString}`, {\r\n method: 'PUT',\r\n headers: { 'Content-Type': 'application/json' },\r\n });\r\n if (res.ok) {\r\n const { cart, notification } = await res.json();\r\n EventDispatcher.dispatch(NOTIFY_ACTION, notification);\r\n mutate(`${cartUrl}GetCart?language=` + languageRoute, cart, false);\r\n }\r\n}\r\n\r\nexport async function EmptyCart(languageRoute: string) {\r\n mutate(`${cartUrl}GetCart`, { numberOfItems: 0 } as KexCartModel, false);\r\n\r\n const res = await fetch(`${cartUrl}RemoveAllItems`, {\r\n method: 'DELETE',\r\n });\r\n\r\n if (res.ok) {\r\n const { cart, notification } = await res.json();\r\n\r\n EventDispatcher.dispatch(NOTIFY_ACTION, notification);\r\n\r\n mutate(`${cartUrl}GetCart?language=` + languageRoute, cart, false);\r\n }\r\n}\r\n\r\nexport async function FetchCartAndNotifyAll(languageRoute: string) {\r\n const res = await fetch(`${cartUrl}GetCart?language=` + languageRoute, {\r\n method: 'GET',\r\n headers: { 'Content-Type': 'application/json' },\r\n });\r\n\r\n if (res.ok) {\r\n const { cart } = await res.json();\r\n mutate(`${cartUrl}GetCart?language=` + languageRoute, cart, false);\r\n }\r\n}\r\n\r\nexport async function ApplyMountingCost(\r\n languageRoute: string,\r\n isApply: boolean\r\n) {\r\n const res = await fetch(\r\n `${cartUrl}ApplyMountingCosts?cartName=Default&apply=${isApply}&language=${languageRoute}`,\r\n {\r\n method: 'PUT',\r\n headers: { 'Content-Type': 'application/json' },\r\n }\r\n );\r\n\r\n if (res.ok) {\r\n const { cart } = await res.json();\r\n mutate(`${cartUrl}GetCart?language=` + languageRoute, cart, false);\r\n }\r\n}\r\n\r\nfunction FetchCart(url: string) {\r\n abortController.abort();\r\n abortController = new AbortController();\r\n const signal = abortController.signal;\r\n\r\n return Fetcher(url, signal, (data, resolve) => {\r\n resolve(data.cart);\r\n });\r\n}\r\n","export const ENUM_KTM = 'KTM';\r\nexport const ENUM_BMW = 'BMW';\r\nexport const ENUM_TRIUMPH = 'Triumph';\r\n","import { useEffect } from 'react';\r\n\r\nconst useOutsideClick = (ref: React.RefObject, callback: () => void) => {\r\n const handleClick = (e: MouseEvent | TouchEvent) => {\r\n if (ref.current && !ref.current.contains(e.target)) {\r\n callback();\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n document.addEventListener('mousedown', handleClick);\r\n document.addEventListener('touchstart', handleClick);\r\n return () => {\r\n document.removeEventListener('mousedown', handleClick);\r\n document.removeEventListener('touchstart', handleClick);\r\n };\r\n });\r\n};\r\n\r\nexport default useOutsideClick;\r\n"],"names":["hoverCondition","ButtonVariants","variants","color","primary","backgroundColor","primary2","secondary","secondaryDark","tertiary","boxShadow","quaternary","outlined","border","size","s","py","px","fs","h","lineHeight","l","fullWidth","true","width","loading","opacity","defaultVariants","ButtonBase","borderColor","cursor","display","alignItems","justifyContent","wordSpacing","whiteSpace","fontFamily","ls","bw","transition","timings","animation","textAlign","textTransform","outlineWidth","BaseButtonStyled","styled","IconContainer","position","left","StyledLoadingCircle","StyledButtonText","flexDirection","isLoading","false","StyledButton","overflow","onClick","children","icon","disabled","type","css","Icon","KexIconLoader","toString","onBackground","LoadingSvgStyles","stroke","w","xl","LoadingCircleStyles","viewBox","xmlns","fill","fillRule","transform","strokeWidth","strokeOpacity","cx","cy","r","d","attributeName","from","to","dur","repeatCount","BaseQuantityStyle","pointerEvents","xs","minW","QuantityWrapper","CurrentQuantityWrapper","mx","IconWrapper","code","maxQuantity","minQuantity","currentQuantity","disabledMin","handleIncrement","handleDecrement","hasReachedMaxQuantity","hasReachedMinQuantity","SubtractIcon","AddIcon","isChecked","onChange","value","text","useAbsolute","radioBackgroundColor","RadioButtonWrapper","Label","Input","id","checked","tabIndex","Radio","RadioButtonText","wh","ml","tblr","br","content","b","primary6","primary3","SmallLabelWrapper","marginBottom","mb","ProductType","ProductAttributeList","listStyle","listStyleType","gap","AttributeItem","Dot","top","attributeList","filteredList","useMemo","filter","attribute","map","index","length","DropDownContainer","DropDownHeader","isOpen","DropDownChildren","p","maxHeight","minWidth","zIndex","visibility","DropDownItem","pb","textDecoration","CurrentValue","wordSpacings","mr","textOverflow","values","currentValue","handleSelect","headerCSS","childrenCSS","useState","setIsOpen","ref","useRef","useOutsideClick","m","current","offsetHeight","isEmpty","item","e","preventDefault","key","DropDownItemLabel","ImageContainer","backgroundRepeat","backgroundSize","overlay","right","bottom","HeroWrapper","height","TextContainer","mt","maxW","header","inEditMode","image","isMobile","useMedia","mediaQueryTypes","backgroundImage","mobileSrc","src","H1","applyEditModeAttr","ExplodedViewContext","React","step","setStep","languageRoute","selectedModel","name","setSelectedModel","modelObj","selectedYear","shouldFetch","setSelectedYear","yearObj","selectedAssembly","parentId","assemblyId","setSelectedAssembly","assembly","setWindowHref","href","useExplodedViewData","ExplodedViewProvider","parseInt","getUrlParameter","useAppSettingsData","windowHref","useEffect","listenToPopstate","window","location","addEventListener","removeEventListener","Provider","Container","maxWidth","margin","my","BrandItem","BrandImage","objectFit","Select","useCurrentPage","heroImage","heroHeader","useTranslationData","motorcycleModelFinderLabels","year","model","search","commonLabels","explodedViews","findForExplodedViewForMotorcycle","findForExplodedViewDescription","years","useSWR","ExplodedAPI","revalidateOnFocus","data","models","memoizedYears","memoizedModels","SmallHeroBlock","H3","Paragraph","KTM","alt","SingleSelectDropDown","Button","params","push","setUrlParametersWithHistory","isNaN","FitmentContainer","FitmentWrapper","FitmentBike","bikeName","fitmentLabel","ContentContainer","AssemblyItem","translations","imageUrl","isCardHovered","setIsCardHovered","handleClick","canUseDOM","Card","onMouseOver","onMouseOut","ProductImageWrapper","Link","ProductImage","Attributes","explodedView","ENUM_KTM","ProductHeading","toLowerCase","AssemblyList","gridTemplateColumns","fontSize","gridColumn","gridRow","gridTemplate","aspectRatio","fontWeight","letterSpacing","WebkitLineClamp","WebkitBoxOrient","transitionDuration","transitionProperty","textUnderlineOffset","transitionTimingFunction","useKexLoadingCircle","kexLoadingCircleDispatch","assemblies","isValidating","showingExplodedViewsFor","a","PartItem","tagRef","description","tag","url","sku","price","stock","quantity","setQuantity","isShowStepper","setShowStepper","Part","StyledKexLink","underlined","ProductName","Name","hasNoLink","ProductCode","ProductCTA","ProductPriceWrapper","Indicator","inStock","stockAvailableAtVendor","ProductPrice","priceRoundedAsString","style","QuantitySelector","stockQuantity","CurrentQuantity","SetQuantity","ProductButton","partsRef","Map","fullscreenImage","replace","H2","ThumbnailWrapper","Thumbnail","openImageInFullScreen","rotateLeft","verticalAlign","HotspotContainer","HotspotWrapper","hotSpots","hsp","i","HotspotTag","matchRef","get","focus","preventScroll","scrollIntoView","behavior","block","topLeft","x","y","HotspotImage","PartsList","parts","el","set","addToRefs","Heading","KexLink","borderRadius","flexWrap","rowGap","borderWidth","borderStyle","flex","background","AbortController","signal","Fetcher","res","resolve","Steps","setKey","abortController","hasMounted","cartUrl","GetCart","cart","isCartEmpty","hasMotorCycle","triggerRevalidation","returnType","setReturnType","pageCacheTime","abort","FetchCart","fallbackData","undefined","IS_PRODUCTION_ENV","dedupingInterval","fetchedCart","mutate","numberOfItems","lineItems","some","productType","RemoveFromCart","productCode","queryString","URLSearchParams","language","fetch","method","headers","ok","json","notification","EventDispatcher","NOTIFY_ACTION","belongsTo","queryParams","UpdateQuantity","EmptyCart","FetchCartAndNotifyAll","ApplyMountingCost","isApply","ENUM_BMW","ENUM_TRIUMPH","callback","contains","target","document"],"sourceRoot":""}